mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-29 16:01:19 -04:00
fixed a testing bug which causes two HighZ values to be not equal.
This commit is contained in:
parent
b92a96b15e
commit
c53c522a71
@ -12,7 +12,24 @@ public class Value {
|
|||||||
/**
|
/**
|
||||||
* Types of values
|
* Types of values
|
||||||
*/
|
*/
|
||||||
public enum Type {NORMAL, DONTCARE, HIGHZ, CLOCK}
|
public enum Type {
|
||||||
|
/**
|
||||||
|
* normal value, value is stored in member variable value
|
||||||
|
*/
|
||||||
|
NORMAL,
|
||||||
|
/**
|
||||||
|
* Value don't care in test
|
||||||
|
*/
|
||||||
|
DONTCARE,
|
||||||
|
/**
|
||||||
|
* value is "high impedance"
|
||||||
|
*/
|
||||||
|
HIGHZ,
|
||||||
|
/**
|
||||||
|
* its a clock value which is handled as a 0-1-0 sequence
|
||||||
|
*/
|
||||||
|
CLOCK
|
||||||
|
}
|
||||||
|
|
||||||
private final long value;
|
private final long value;
|
||||||
private final Type type;
|
private final Type type;
|
||||||
@ -71,6 +88,9 @@ public class Value {
|
|||||||
|
|
||||||
if (v.type != type) return false;
|
if (v.type != type) return false;
|
||||||
|
|
||||||
|
// both types are equal!
|
||||||
|
if (type == Type.HIGHZ) return true;
|
||||||
|
|
||||||
return value == v.value;
|
return value == v.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ public class TestResultTest extends TestCase {
|
|||||||
assertEquals(false, ((MatchedValue)tr.getValue(3,2)).isPassed());
|
assertEquals(false, ((MatchedValue)tr.getValue(3,2)).isPassed());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testResultErrorDC() throws Exception {
|
public void testResultDontCare() throws Exception {
|
||||||
Model model = getModel("A+B");
|
Model model = getModel("A+B");
|
||||||
TestData data = new TestData(
|
TestData data = new TestData(
|
||||||
"A B Y\n"
|
"A B Y\n"
|
||||||
@ -73,4 +73,16 @@ public class TestResultTest extends TestCase {
|
|||||||
assertTrue(tr.allPassed());
|
assertTrue(tr.allPassed());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testResultDontCare2() throws Exception {
|
||||||
|
Model model = getModel("A+B");
|
||||||
|
TestData data = new TestData(
|
||||||
|
"A B Y\n"
|
||||||
|
+ "0 0 x\n"
|
||||||
|
+ "0 1 1\n"
|
||||||
|
+ "1 0 1\n"
|
||||||
|
+ "1 1 1\n");
|
||||||
|
TestResult tr = new TestResult(data).create(model);
|
||||||
|
assertTrue(tr.allPassed());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -24,9 +24,13 @@ public class TestTestableExamples extends TestCase {
|
|||||||
|
|
||||||
public void testTestableTest() throws Exception {
|
public void testTestableTest() throws Exception {
|
||||||
File examples = new File(Resources.getRoot(), "/dig/test");
|
File examples = new File(Resources.getRoot(), "/dig/test");
|
||||||
assertEquals(2, new FileScanner(this::check).scan(examples));
|
assertEquals(3, new FileScanner(this::check).scan(examples));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// public void testFile() throws Exception {
|
||||||
|
// check(new File(Resources.getRoot(), "/dig/test/highz.dig"));
|
||||||
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the model and initializes and tests it
|
* Loads the model and initializes and tests it
|
||||||
*
|
*
|
||||||
|
87
src/test/resources/dig/test/highz.dig
Normal file
87
src/test/resources/dig/test/highz.dig
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<circuit>
|
||||||
|
<version>1</version>
|
||||||
|
<visualElements>
|
||||||
|
<visualElement>
|
||||||
|
<elementName>Driver</elementName>
|
||||||
|
<elementAttributes>
|
||||||
|
<entry>
|
||||||
|
<string>flipSelPos</string>
|
||||||
|
<boolean>true</boolean>
|
||||||
|
</entry>
|
||||||
|
</elementAttributes>
|
||||||
|
<pos x="360" y="300"/>
|
||||||
|
</visualElement>
|
||||||
|
<visualElement>
|
||||||
|
<elementName>In</elementName>
|
||||||
|
<elementAttributes>
|
||||||
|
<entry>
|
||||||
|
<string>Label</string>
|
||||||
|
<string>I</string>
|
||||||
|
</entry>
|
||||||
|
</elementAttributes>
|
||||||
|
<pos x="300" y="300"/>
|
||||||
|
</visualElement>
|
||||||
|
<visualElement>
|
||||||
|
<elementName>In</elementName>
|
||||||
|
<elementAttributes>
|
||||||
|
<entry>
|
||||||
|
<string>Label</string>
|
||||||
|
<string>en</string>
|
||||||
|
</entry>
|
||||||
|
</elementAttributes>
|
||||||
|
<pos x="300" y="340"/>
|
||||||
|
</visualElement>
|
||||||
|
<visualElement>
|
||||||
|
<elementName>Out</elementName>
|
||||||
|
<elementAttributes>
|
||||||
|
<entry>
|
||||||
|
<string>Label</string>
|
||||||
|
<string>O</string>
|
||||||
|
</entry>
|
||||||
|
</elementAttributes>
|
||||||
|
<pos x="420" y="300"/>
|
||||||
|
</visualElement>
|
||||||
|
<visualElement>
|
||||||
|
<elementName>Testcase</elementName>
|
||||||
|
<elementAttributes>
|
||||||
|
<entry>
|
||||||
|
<string>Label</string>
|
||||||
|
<string>High Z</string>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
<string>Testdata</string>
|
||||||
|
<testData>
|
||||||
|
<dataString>I en O
|
||||||
|
1 1 1
|
||||||
|
0 1 0
|
||||||
|
1 0 Z
|
||||||
|
0 0 Z
|
||||||
|
1 0 X
|
||||||
|
0 0 X
|
||||||
|
</dataString>
|
||||||
|
</testData>
|
||||||
|
</entry>
|
||||||
|
</elementAttributes>
|
||||||
|
<pos x="320" y="420"/>
|
||||||
|
</visualElement>
|
||||||
|
</visualElements>
|
||||||
|
<wires>
|
||||||
|
<wire>
|
||||||
|
<p1 x="300" y="340"/>
|
||||||
|
<p2 x="360" y="340"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="300" y="300"/>
|
||||||
|
<p2 x="340" y="300"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="380" y="300"/>
|
||||||
|
<p2 x="420" y="300"/>
|
||||||
|
</wire>
|
||||||
|
<wire>
|
||||||
|
<p1 x="360" y="320"/>
|
||||||
|
<p2 x="360" y="340"/>
|
||||||
|
</wire>
|
||||||
|
</wires>
|
||||||
|
</circuit>
|
Loading…
x
Reference in New Issue
Block a user