mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-27 06:51:37 -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() {
|
||||
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 {
|
||||
Model model = new ToBreakRunner("dig/analyze/multiBitCounter.dig", false).getModel();
|
||||
TruthTable tt = new ModelAnalyser(model).analyse();
|
||||
assertEquals("Q0n+1",tt.getResultName(0));
|
||||
assertEquals("Q0n+1", tt.getResultName(0));
|
||||
final BoolTable r0 = tt.getResult(0);
|
||||
assertEquals(4,r0.size());
|
||||
assertEquals(one,r0.get(0));
|
||||
assertEquals(one,r0.get(1));
|
||||
assertEquals(zero,r0.get(2));
|
||||
assertEquals(zero,r0.get(3));
|
||||
assertEquals(4, r0.size());
|
||||
assertEquals(one, r0.get(0));
|
||||
assertEquals(one, r0.get(1));
|
||||
assertEquals(zero, r0.get(2));
|
||||
assertEquals(zero, r0.get(3));
|
||||
|
||||
assertEquals("Q1n+1",tt.getResultName(1));
|
||||
assertEquals("Q1n+1", tt.getResultName(1));
|
||||
final BoolTable r1 = tt.getResult(1);
|
||||
assertEquals(4,r1.size());
|
||||
assertEquals(zero,r1.get(0));
|
||||
assertEquals(one,r1.get(1));
|
||||
assertEquals(one,r1.get(2));
|
||||
assertEquals(zero,r1.get(3));
|
||||
assertEquals(4, r1.size());
|
||||
assertEquals(zero, r1.get(0));
|
||||
assertEquals(one, r1.get(1));
|
||||
assertEquals(one, r1.get(2));
|
||||
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 {
|
||||
Model model = new ToBreakRunner("dig/analyze/multiBitInOut.dig", false).getModel();
|
||||
TruthTable tt = new ModelAnalyser(model).analyse();
|
||||
@ -128,21 +138,21 @@ public class ModelAnalyserTest extends TestCase {
|
||||
}
|
||||
|
||||
private void checkIdent(TruthTable tt) {
|
||||
assertEquals("B0",tt.getResultName(0));
|
||||
assertEquals("B0", tt.getResultName(0));
|
||||
final BoolTable r0 = tt.getResult(0);
|
||||
assertEquals(4,r0.size());
|
||||
assertEquals(zero,r0.get(0));
|
||||
assertEquals(zero,r0.get(1));
|
||||
assertEquals(one,r0.get(2));
|
||||
assertEquals(one,r0.get(3));
|
||||
assertEquals(4, r0.size());
|
||||
assertEquals(zero, r0.get(0));
|
||||
assertEquals(zero, r0.get(1));
|
||||
assertEquals(one, r0.get(2));
|
||||
assertEquals(one, r0.get(3));
|
||||
|
||||
assertEquals("B1",tt.getResultName(1));
|
||||
assertEquals("B1", tt.getResultName(1));
|
||||
final BoolTable r1 = tt.getResult(1);
|
||||
assertEquals(4,r1.size());
|
||||
assertEquals(zero,r1.get(0));
|
||||
assertEquals(one,r1.get(1));
|
||||
assertEquals(zero,r1.get(2));
|
||||
assertEquals(one,r1.get(3));
|
||||
assertEquals(4, r1.size());
|
||||
assertEquals(zero, r1.get(0));
|
||||
assertEquals(one, r1.get(1));
|
||||
assertEquals(zero, r1.get(2));
|
||||
assertEquals(one, r1.get(3));
|
||||
}
|
||||
|
||||
}
|
@ -56,6 +56,20 @@
|
||||
</elementAttributes>
|
||||
<pos x="400" y="280"/>
|
||||
</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>
|
||||
<wires>
|
||||
<wire>
|
||||
@ -82,6 +96,10 @@
|
||||
<p1 x="480" y="200"/>
|
||||
<p2 x="500" y="200"/>
|
||||
</wire>
|
||||
<wire>
|
||||
<p1 x="560" y="200"/>
|
||||
<p2 x="600" y="200"/>
|
||||
</wire>
|
||||
<wire>
|
||||
<p1 x="380" y="220"/>
|
||||
<p2 x="400" y="220"/>
|
||||
|
Loading…
x
Reference in New Issue
Block a user