mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-16 16:34:47 -04:00
moves the Testdata key to the Keys class
This commit is contained in:
parent
989ee5e732
commit
ce864cc231
@ -10,11 +10,11 @@ import de.neemann.digital.cli.cli.BasicCommand;
|
|||||||
import de.neemann.digital.cli.cli.CLIException;
|
import de.neemann.digital.cli.cli.CLIException;
|
||||||
import de.neemann.digital.core.ErrorDetector;
|
import de.neemann.digital.core.ErrorDetector;
|
||||||
import de.neemann.digital.core.Model;
|
import de.neemann.digital.core.Model;
|
||||||
|
import de.neemann.digital.core.element.Keys;
|
||||||
import de.neemann.digital.draw.elements.Circuit;
|
import de.neemann.digital.draw.elements.Circuit;
|
||||||
import de.neemann.digital.draw.elements.VisualElement;
|
import de.neemann.digital.draw.elements.VisualElement;
|
||||||
import de.neemann.digital.lang.Lang;
|
import de.neemann.digital.lang.Lang;
|
||||||
import de.neemann.digital.testing.TestCaseDescription;
|
import de.neemann.digital.testing.TestCaseDescription;
|
||||||
import de.neemann.digital.testing.TestCaseElement;
|
|
||||||
import de.neemann.digital.testing.TestExecutor;
|
import de.neemann.digital.testing.TestExecutor;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -59,7 +59,7 @@ public class CommandLineTester {
|
|||||||
ArrayList<TestCase> tsl = new ArrayList<>();
|
ArrayList<TestCase> tsl = new ArrayList<>();
|
||||||
for (VisualElement el : circuit.getTestCases())
|
for (VisualElement el : circuit.getTestCases())
|
||||||
tsl.add(new TestCase(
|
tsl.add(new TestCase(
|
||||||
el.getElementAttributes().get(TestCaseElement.TESTDATA),
|
el.getElementAttributes().get(Keys.TESTDATA),
|
||||||
el.getElementAttributes().getLabel()));
|
el.getElementAttributes().getLabel()));
|
||||||
return tsl;
|
return tsl;
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ import de.neemann.digital.draw.library.ElementLibrary;
|
|||||||
import de.neemann.digital.draw.model.InverterConfig;
|
import de.neemann.digital.draw.model.InverterConfig;
|
||||||
import de.neemann.digital.draw.shapes.CustomCircuitShapeType;
|
import de.neemann.digital.draw.shapes.CustomCircuitShapeType;
|
||||||
import de.neemann.digital.draw.shapes.custom.CustomShapeDescription;
|
import de.neemann.digital.draw.shapes.custom.CustomShapeDescription;
|
||||||
|
import de.neemann.digital.testing.TestCaseDescription;
|
||||||
import de.neemann.gui.Screen;
|
import de.neemann.gui.Screen;
|
||||||
import de.neemann.gui.language.Language;
|
import de.neemann.gui.language.Language;
|
||||||
|
|
||||||
@ -869,4 +870,10 @@ public final class Keys {
|
|||||||
public static final Key<Boolean> MIRROR =
|
public static final Key<Boolean> MIRROR =
|
||||||
new Key<>("mirror", false).allowGroupEdit().setSecondary();
|
new Key<>("mirror", false).allowGroupEdit().setSecondary();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The test data
|
||||||
|
*/
|
||||||
|
public static final Key<TestCaseDescription> TESTDATA =
|
||||||
|
new Key<>("Testdata", () -> new TestCaseDescription(""));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,6 @@ import de.neemann.digital.hdl.printer.CodePrinter;
|
|||||||
import de.neemann.digital.hdl.verilog2.VerilogGenerator;
|
import de.neemann.digital.hdl.verilog2.VerilogGenerator;
|
||||||
import de.neemann.digital.hdl.vhdl2.VHDLGenerator;
|
import de.neemann.digital.hdl.vhdl2.VHDLGenerator;
|
||||||
import de.neemann.digital.lang.Lang;
|
import de.neemann.digital.lang.Lang;
|
||||||
import de.neemann.digital.testing.TestCaseElement;
|
|
||||||
import de.neemann.digital.testing.TestingDataException;
|
import de.neemann.digital.testing.TestingDataException;
|
||||||
import de.neemann.digital.toolchain.Configuration;
|
import de.neemann.digital.toolchain.Configuration;
|
||||||
import de.neemann.digital.undo.ChangedListener;
|
import de.neemann.digital.undo.ChangedListener;
|
||||||
@ -1131,7 +1130,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS
|
|||||||
ArrayList<ValueTableDialog.TestSet> tsl = new ArrayList<>();
|
ArrayList<ValueTableDialog.TestSet> tsl = new ArrayList<>();
|
||||||
for (VisualElement el : circuitComponent.getCircuit().getTestCases())
|
for (VisualElement el : circuitComponent.getCircuit().getTestCases())
|
||||||
tsl.add(new ValueTableDialog.TestSet(
|
tsl.add(new ValueTableDialog.TestSet(
|
||||||
el.getElementAttributes().get(TestCaseElement.TESTDATA),
|
el.getElementAttributes().get(Keys.TESTDATA),
|
||||||
el.getElementAttributes().getLabel()));
|
el.getElementAttributes().getLabel()));
|
||||||
|
|
||||||
if (tsl.isEmpty())
|
if (tsl.isEmpty())
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
*/
|
*/
|
||||||
package de.neemann.digital.gui.components.testing;
|
package de.neemann.digital.gui.components.testing;
|
||||||
|
|
||||||
|
import de.neemann.digital.core.element.Keys;
|
||||||
import de.neemann.digital.draw.elements.PinException;
|
import de.neemann.digital.draw.elements.PinException;
|
||||||
import de.neemann.digital.draw.elements.VisualElement;
|
import de.neemann.digital.draw.elements.VisualElement;
|
||||||
import de.neemann.digital.gui.Main;
|
import de.neemann.digital.gui.Main;
|
||||||
@ -14,7 +15,6 @@ import de.neemann.digital.gui.components.modification.ModifyAttribute;
|
|||||||
import de.neemann.digital.gui.components.table.ShowStringDialog;
|
import de.neemann.digital.gui.components.table.ShowStringDialog;
|
||||||
import de.neemann.digital.lang.Lang;
|
import de.neemann.digital.lang.Lang;
|
||||||
import de.neemann.digital.testing.TestCaseDescription;
|
import de.neemann.digital.testing.TestCaseDescription;
|
||||||
import de.neemann.digital.testing.TestCaseElement;
|
|
||||||
import de.neemann.digital.testing.Transitions;
|
import de.neemann.digital.testing.Transitions;
|
||||||
import de.neemann.digital.testing.parser.ParserException;
|
import de.neemann.digital.testing.parser.ParserException;
|
||||||
import de.neemann.gui.ErrorMessage;
|
import de.neemann.gui.ErrorMessage;
|
||||||
@ -103,7 +103,7 @@ public class TestCaseDescriptionDialog extends JDialog {
|
|||||||
data.setDataString(text.getText());
|
data.setDataString(text.getText());
|
||||||
if (parent instanceof Main) {
|
if (parent instanceof Main) {
|
||||||
CircuitComponent cc = ((Main) parent).getCircuitComponent();
|
CircuitComponent cc = ((Main) parent).getCircuitComponent();
|
||||||
element.getElementAttributes().set(TestCaseElement.TESTDATA, data);
|
element.getElementAttributes().set(Keys.TESTDATA, data);
|
||||||
cc.getMain().startTests();
|
cc.getMain().startTests();
|
||||||
}
|
}
|
||||||
} catch (ParserException | IOException e1) {
|
} catch (ParserException | IOException e1) {
|
||||||
@ -122,7 +122,7 @@ public class TestCaseDescriptionDialog extends JDialog {
|
|||||||
&& !initialDataString.equals(data.getDataString())
|
&& !initialDataString.equals(data.getDataString())
|
||||||
&& parent instanceof Main) {
|
&& parent instanceof Main) {
|
||||||
CircuitComponent cc = ((Main) parent).getCircuitComponent();
|
CircuitComponent cc = ((Main) parent).getCircuitComponent();
|
||||||
cc.modify(new ModifyAttribute<>(element, TestCaseElement.TESTDATA, new TestCaseDescription(data)));
|
cc.modify(new ModifyAttribute<>(element, Keys.TESTDATA, new TestCaseDescription(data)));
|
||||||
}
|
}
|
||||||
dispose();
|
dispose();
|
||||||
} catch (ParserException | IOException e1) {
|
} catch (ParserException | IOException e1) {
|
||||||
|
@ -28,7 +28,7 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import static de.neemann.digital.testing.TestCaseElement.TESTDATA;
|
import static de.neemann.digital.core.element.Keys.TESTDATA;
|
||||||
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
@ -26,7 +26,7 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import static de.neemann.digital.testing.TestCaseElement.TESTDATA;
|
import static de.neemann.digital.core.element.Keys.TESTDATA;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a test bench for a model.
|
* Creates a test bench for a model.
|
||||||
|
@ -7,6 +7,7 @@ package de.neemann.digital.testing;
|
|||||||
|
|
||||||
import de.neemann.digital.core.Model;
|
import de.neemann.digital.core.Model;
|
||||||
import de.neemann.digital.core.NodeException;
|
import de.neemann.digital.core.NodeException;
|
||||||
|
import de.neemann.digital.core.element.Keys;
|
||||||
import de.neemann.digital.draw.elements.Circuit;
|
import de.neemann.digital.draw.elements.Circuit;
|
||||||
import de.neemann.digital.draw.elements.PinException;
|
import de.neemann.digital.draw.elements.PinException;
|
||||||
import de.neemann.digital.draw.elements.VisualElement;
|
import de.neemann.digital.draw.elements.VisualElement;
|
||||||
@ -188,7 +189,7 @@ public class FolderTestRunner {
|
|||||||
ArrayList<TestCase> testCases = new ArrayList<>();
|
ArrayList<TestCase> testCases = new ArrayList<>();
|
||||||
for (VisualElement el : circuit.getTestCases()) {
|
for (VisualElement el : circuit.getTestCases()) {
|
||||||
String label = el.getElementAttributes().getLabel();
|
String label = el.getElementAttributes().getLabel();
|
||||||
TestCaseDescription testData = el.getElementAttributes().get(TestCaseElement.TESTDATA);
|
TestCaseDescription testData = el.getElementAttributes().get(Keys.TESTDATA);
|
||||||
testCases.add(new TestCase(label, testData));
|
testCases.add(new TestCase(label, testData));
|
||||||
}
|
}
|
||||||
if (testCases.isEmpty()) {
|
if (testCases.isEmpty()) {
|
||||||
|
@ -106,4 +106,9 @@ public class TestCaseDescription {
|
|||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return dataString != null ? dataString.hashCode() : 0;
|
return dataString != null ? dataString.hashCode() : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return dataString;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,18 +15,13 @@ import de.neemann.digital.core.element.*;
|
|||||||
*/
|
*/
|
||||||
public class TestCaseElement implements Element {
|
public class TestCaseElement implements Element {
|
||||||
|
|
||||||
/**
|
|
||||||
* the used {@link ElementAttributes} key
|
|
||||||
*/
|
|
||||||
public static final Key<TestCaseDescription> TESTDATA = new Key<>("Testdata", () -> new TestCaseDescription(""));
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The TestCaseElement description
|
* The TestCaseElement description
|
||||||
*/
|
*/
|
||||||
public static final ElementTypeDescription TESTCASEDESCRIPTION
|
public static final ElementTypeDescription TESTCASEDESCRIPTION
|
||||||
= new ElementTypeDescription("Testcase", TestCaseElement.class)
|
= new ElementTypeDescription("Testcase", TestCaseElement.class)
|
||||||
.addAttribute(Keys.LABEL)
|
.addAttribute(Keys.LABEL)
|
||||||
.addAttribute(TESTDATA)
|
.addAttribute(Keys.TESTDATA)
|
||||||
.addAttribute(Keys.ENABLED)
|
.addAttribute(Keys.ENABLED)
|
||||||
.supportsHDL();
|
.supportsHDL();
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
*/
|
*/
|
||||||
package de.neemann.digital.draw.library;
|
package de.neemann.digital.draw.library;
|
||||||
|
|
||||||
|
import de.neemann.digital.core.element.Keys;
|
||||||
import de.neemann.digital.draw.elements.VisualElement;
|
import de.neemann.digital.draw.elements.VisualElement;
|
||||||
import de.neemann.digital.integration.Resources;
|
import de.neemann.digital.integration.Resources;
|
||||||
import de.neemann.digital.integration.ToBreakRunner;
|
import de.neemann.digital.integration.ToBreakRunner;
|
||||||
@ -37,7 +38,7 @@ public class JarComponentManagerTest extends TestCase {
|
|||||||
|
|
||||||
for (VisualElement ve : br.getCircuit().getElements()) {
|
for (VisualElement ve : br.getCircuit().getElements()) {
|
||||||
if (ve.equalsDescription(TestCaseElement.TESTCASEDESCRIPTION)) {
|
if (ve.equalsDescription(TestCaseElement.TESTCASEDESCRIPTION)) {
|
||||||
TestCaseDescription td = ve.getElementAttributes().get(TestCaseElement.TESTDATA);
|
TestCaseDescription td = ve.getElementAttributes().get(Keys.TESTDATA);
|
||||||
TestExecutor tr = new TestExecutor(td).create(br.getModel());
|
TestExecutor tr = new TestExecutor(td).create(br.getModel());
|
||||||
assertTrue(tr.allPassed());
|
assertTrue(tr.allPassed());
|
||||||
}
|
}
|
||||||
|
@ -375,6 +375,19 @@ public class ParserTest extends TestCase {
|
|||||||
assertEquals("false;", c.toString());
|
assertEquals("false;", c.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testStringCreation() throws IOException, ParserException, HGSEvalException {
|
||||||
|
String code = "?>Test:<? print(n); str:=output();";
|
||||||
|
Statement s = new Parser(code).parse(false);
|
||||||
|
|
||||||
|
Context c = new Context().declareVar("n", 3);
|
||||||
|
s.execute(c);
|
||||||
|
assertEquals("Test:3", c.getVar("str"));
|
||||||
|
|
||||||
|
c = new Context().declareVar("n", 12);
|
||||||
|
s.execute(c);
|
||||||
|
assertEquals("Test:12", c.getVar("str"));
|
||||||
|
}
|
||||||
|
|
||||||
public void testAddFunction() throws IOException, ParserException, HGSEvalException {
|
public void testAddFunction() throws IOException, ParserException, HGSEvalException {
|
||||||
Statement s = new Parser("a : in <?=type(Bits)?>;").parse();
|
Statement s = new Parser("a : in <?=type(Bits)?>;").parse();
|
||||||
Context funcs = new Context().declareVar("type", new Function(1) {
|
Context funcs = new Context().declareVar("type", new Function(1) {
|
||||||
|
@ -84,7 +84,7 @@ public class TestExamples extends TestCase {
|
|||||||
testCasesInFiles++;
|
testCasesInFiles++;
|
||||||
|
|
||||||
String label = el.getElementAttributes().getLabel();
|
String label = el.getElementAttributes().getLabel();
|
||||||
TestCaseDescription td = el.getElementAttributes().get(TestCaseElement.TESTDATA);
|
TestCaseDescription td = el.getElementAttributes().get(Keys.TESTDATA);
|
||||||
|
|
||||||
Model model = new ModelCreator(br.getCircuit(), br.getLibrary()).createModel(false);
|
Model model = new ModelCreator(br.getCircuit(), br.getLibrary()).createModel(false);
|
||||||
ErrorDetector ed = new ErrorDetector();
|
ErrorDetector ed = new ErrorDetector();
|
||||||
|
@ -61,7 +61,7 @@ import java.util.List;
|
|||||||
import static de.neemann.digital.draw.shapes.GenericShape.SIZE;
|
import static de.neemann.digital.draw.shapes.GenericShape.SIZE;
|
||||||
import static de.neemann.digital.draw.shapes.GenericShape.SIZE2;
|
import static de.neemann.digital.draw.shapes.GenericShape.SIZE2;
|
||||||
import static de.neemann.digital.integration.GuiTester.getBaseContainer;
|
import static de.neemann.digital.integration.GuiTester.getBaseContainer;
|
||||||
import static de.neemann.digital.testing.TestCaseElement.TESTDATA;
|
import static de.neemann.digital.core.element.Keys.TESTDATA;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* These tests are excluded from the maven build because gui tests are sometimes fragile.
|
* These tests are excluded from the maven build because gui tests are sometimes fragile.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user