improves the variable naming in the ModelAnalyser

This commit is contained in:
hneemann 2019-07-27 22:14:54 +02:00
parent 7f69dcda70
commit 395c04daef
3 changed files with 16 additions and 10 deletions

View File

@ -12,6 +12,7 @@ public class LabelNumbering {
private final String name;
private int pos;
private boolean useIndex = false;
/**
* Creates a new instance
@ -21,9 +22,10 @@ public class LabelNumbering {
public LabelNumbering(String name) {
this.name = name;
pos = name.length();
if (name.endsWith("_n"))
if (name.endsWith("^n")) {
pos = name.length() - 2;
else if (name.endsWith("n"))
useIndex = true;
} else if (name.endsWith("n"))
pos = name.length() - 1;
}
@ -48,7 +50,10 @@ public class LabelNumbering {
}
private String addNumber(int n) {
return name.substring(0, pos) + n + name.substring(pos);
if (useIndex)
return name.substring(0, pos) + "_" + n + name.substring(pos);
else
return name.substring(0, pos) + n + name.substring(pos);
}
/**

View File

@ -13,7 +13,8 @@ public class LabelNumberingTest extends TestCase {
assertEquals("test", new LabelNumbering("test").create(name -> false));
assertEquals("test2", new LabelNumbering("test").create(new TestCheck()));
assertEquals("test2n", new LabelNumbering("testn").create(new TestCheck()));
assertEquals("test2_n", new LabelNumbering("test_n").create(new TestCheck()));
assertEquals("test_2^n", new LabelNumbering("test^n").create(new TestCheck()));
assertEquals("test_2n", new LabelNumbering("test_n").create(new TestCheck()));
}
private class TestCheck implements LabelNumbering.Exists {

View File

@ -170,23 +170,23 @@ public class ModelAnalyserTest extends TestCase {
Model model = createModel("dig/analyze/uniqueNames3.dig");
ArrayList<Signal> ins = new ModelAnalyser(model).getInputs();
assertEquals(2,ins.size());
assertEquals("Zn",ins.get(0).getName());
assertEquals("Z1n",ins.get(1).getName());
assertEquals("Z^n",ins.get(0).getName());
assertEquals("Z_1^n",ins.get(1).getName());
}
public void testAnalyzerUniqueNames4() throws Exception {
Model model = createModel("dig/analyze/uniqueNames4.dig");
ArrayList<Signal> ins = new ModelAnalyser(model).getInputs();
assertEquals(2,ins.size());
assertEquals("Bn",ins.get(0).getName());
assertEquals("An",ins.get(1).getName());
assertEquals("B^n",ins.get(0).getName());
assertEquals("A^n",ins.get(1).getName());
}
public void testAnalyzerMultiBit() throws Exception {
Model model = createModel("dig/analyze/multiBitCounter.dig");
TruthTable tt = new ModelAnalyser(model).analyse();
checkTable(tt.getResult("Q0n+1"), one, zero, one, zero);
checkTable(tt.getResult("Q1n+1"), zero, one, one, zero);
checkTable(tt.getResult("Q0^{n+1}"), one, zero, one, zero);
checkTable(tt.getResult("Q1^{n+1}"), zero, one, one, zero);
assertEquals("Y1", tt.getResultName(2));
assertEquals("Y0", tt.getResultName(3));