mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-29 16:01:19 -04:00
added some more test cases for model analyser
This commit is contained in:
parent
11aba9f471
commit
ac0e9cf891
@ -58,4 +58,32 @@ public enum ThreeStateValue {
|
|||||||
public int asInt() {
|
public int asInt() {
|
||||||
return ordinal();
|
return ordinal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the inverted value; DC remains DC
|
||||||
|
*/
|
||||||
|
public ThreeStateValue invert() {
|
||||||
|
switch (this) {
|
||||||
|
case zero:
|
||||||
|
return one;
|
||||||
|
case one:
|
||||||
|
return zero;
|
||||||
|
default:
|
||||||
|
return dontCare;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return returns the value as a bool
|
||||||
|
*/
|
||||||
|
public boolean bool() {
|
||||||
|
switch (this) {
|
||||||
|
case zero:
|
||||||
|
return false;
|
||||||
|
case one:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
throw new RuntimeException("don't care not allowed");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -97,23 +97,33 @@ public class ModelAnalyserTest extends TestCase {
|
|||||||
public void testAnalyzerMultiBit() throws Exception {
|
public void testAnalyzerMultiBit() throws Exception {
|
||||||
Model model = new ToBreakRunner("dig/analyze/multiBitCounter.dig", false).getModel();
|
Model model = new ToBreakRunner("dig/analyze/multiBitCounter.dig", false).getModel();
|
||||||
TruthTable tt = new ModelAnalyser(model).analyse();
|
TruthTable tt = new ModelAnalyser(model).analyse();
|
||||||
assertEquals("Q0n+1",tt.getResultName(0));
|
assertEquals("Q0n+1", tt.getResultName(0));
|
||||||
final BoolTable r0 = tt.getResult(0);
|
final BoolTable r0 = tt.getResult(0);
|
||||||
assertEquals(4,r0.size());
|
assertEquals(4, r0.size());
|
||||||
assertEquals(one,r0.get(0));
|
assertEquals(one, r0.get(0));
|
||||||
assertEquals(one,r0.get(1));
|
assertEquals(one, r0.get(1));
|
||||||
assertEquals(zero,r0.get(2));
|
assertEquals(zero, r0.get(2));
|
||||||
assertEquals(zero,r0.get(3));
|
assertEquals(zero, r0.get(3));
|
||||||
|
|
||||||
assertEquals("Q1n+1",tt.getResultName(1));
|
assertEquals("Q1n+1", tt.getResultName(1));
|
||||||
final BoolTable r1 = tt.getResult(1);
|
final BoolTable r1 = tt.getResult(1);
|
||||||
assertEquals(4,r1.size());
|
assertEquals(4, r1.size());
|
||||||
assertEquals(zero,r1.get(0));
|
assertEquals(zero, r1.get(0));
|
||||||
assertEquals(one,r1.get(1));
|
assertEquals(one, r1.get(1));
|
||||||
assertEquals(one,r1.get(2));
|
assertEquals(one, r1.get(2));
|
||||||
assertEquals(zero,r1.get(3));
|
assertEquals(zero, r1.get(3));
|
||||||
|
|
||||||
|
assertEquals("Y0", tt.getResultName(2));
|
||||||
|
assertEquals("Y1", tt.getResultName(3));
|
||||||
|
final BoolTable y0 = tt.getResult(2);
|
||||||
|
final BoolTable y1 = tt.getResult(3);
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
assertEquals((i & 2) > 0, y0.get(i).invert().bool());
|
||||||
|
assertEquals((i & 1) > 0, y1.get(i).invert().bool());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void testAnalyzerMultiBit2() throws Exception {
|
public void testAnalyzerMultiBit2() throws Exception {
|
||||||
Model model = new ToBreakRunner("dig/analyze/multiBitInOut.dig", false).getModel();
|
Model model = new ToBreakRunner("dig/analyze/multiBitInOut.dig", false).getModel();
|
||||||
TruthTable tt = new ModelAnalyser(model).analyse();
|
TruthTable tt = new ModelAnalyser(model).analyse();
|
||||||
@ -128,21 +138,21 @@ public class ModelAnalyserTest extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void checkIdent(TruthTable tt) {
|
private void checkIdent(TruthTable tt) {
|
||||||
assertEquals("B0",tt.getResultName(0));
|
assertEquals("B0", tt.getResultName(0));
|
||||||
final BoolTable r0 = tt.getResult(0);
|
final BoolTable r0 = tt.getResult(0);
|
||||||
assertEquals(4,r0.size());
|
assertEquals(4, r0.size());
|
||||||
assertEquals(zero,r0.get(0));
|
assertEquals(zero, r0.get(0));
|
||||||
assertEquals(zero,r0.get(1));
|
assertEquals(zero, r0.get(1));
|
||||||
assertEquals(one,r0.get(2));
|
assertEquals(one, r0.get(2));
|
||||||
assertEquals(one,r0.get(3));
|
assertEquals(one, r0.get(3));
|
||||||
|
|
||||||
assertEquals("B1",tt.getResultName(1));
|
assertEquals("B1", tt.getResultName(1));
|
||||||
final BoolTable r1 = tt.getResult(1);
|
final BoolTable r1 = tt.getResult(1);
|
||||||
assertEquals(4,r1.size());
|
assertEquals(4, r1.size());
|
||||||
assertEquals(zero,r1.get(0));
|
assertEquals(zero, r1.get(0));
|
||||||
assertEquals(one,r1.get(1));
|
assertEquals(one, r1.get(1));
|
||||||
assertEquals(zero,r1.get(2));
|
assertEquals(zero, r1.get(2));
|
||||||
assertEquals(one,r1.get(3));
|
assertEquals(one, r1.get(3));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -56,6 +56,20 @@
|
|||||||
</elementAttributes>
|
</elementAttributes>
|
||||||
<pos x="400" y="280"/>
|
<pos x="400" y="280"/>
|
||||||
</visualElement>
|
</visualElement>
|
||||||
|
<visualElement>
|
||||||
|
<elementName>Out</elementName>
|
||||||
|
<elementAttributes>
|
||||||
|
<entry>
|
||||||
|
<string>Label</string>
|
||||||
|
<string>Y</string>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>Bits</string>
|
||||||
|
<int>2</int>
|
||||||
|
</entry>
|
||||||
|
</elementAttributes>
|
||||||
|
<pos x="600" y="200"/>
|
||||||
|
</visualElement>
|
||||||
</visualElements>
|
</visualElements>
|
||||||
<wires>
|
<wires>
|
||||||
<wire>
|
<wire>
|
||||||
@ -82,6 +96,10 @@
|
|||||||
<p1 x="480" y="200"/>
|
<p1 x="480" y="200"/>
|
||||||
<p2 x="500" y="200"/>
|
<p2 x="500" y="200"/>
|
||||||
</wire>
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="560" y="200"/>
|
||||||
|
<p2 x="600" y="200"/>
|
||||||
|
</wire>
|
||||||
<wire>
|
<wire>
|
||||||
<p1 x="380" y="220"/>
|
<p1 x="380" y="220"/>
|
||||||
<p2 x="400" y="220"/>
|
<p2 x="400" y="220"/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user