From b0efe643cca0ee9671ab010c17c0db4e753b5047 Mon Sep 17 00:00:00 2001 From: hneemann Date: Tue, 23 Jan 2018 14:39:02 +0100 Subject: [PATCH] reversed order of multi-bit inputs and outputs in TableDialog. See #108 --- .../de/neemann/digital/analyse/ModelAnalyser.java | 14 +++++++------- .../de/neemann/digital/core/ObservableValues.java | 15 +++++++++++---- .../digital/analyse/ModelAnalyserTest.java | 12 ++++++------ 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/main/java/de/neemann/digital/analyse/ModelAnalyser.java b/src/main/java/de/neemann/digital/analyse/ModelAnalyser.java index 461916301..fa574ee51 100644 --- a/src/main/java/de/neemann/digital/analyse/ModelAnalyser.java +++ b/src/main/java/de/neemann/digital/analyse/ModelAnalyser.java @@ -130,11 +130,11 @@ public class ModelAnalyser { try { Splitter sp = Splitter.createOneToN(bits); sp.setInputs(s.getValue().asList()); - int i = 0; - for (ObservableValue out : sp.getOutputs()) { - outputs.add(new Signal(s.getName() + i, out)); - i++; - } + + final ObservableValues spOutputs = sp.getOutputs(); + for (int i = spOutputs.size() - 1; i >= 0; i--) + outputs.add(new Signal(s.getName() + i, spOutputs.get(i))); + s.getValue().fireHasChanged(); } catch (NodeException e) { throw new AnalyseException(e); @@ -163,12 +163,12 @@ public class ModelAnalyser { out.fireHasChanged(); ObservableValues.Builder builder = new ObservableValues.Builder(); - for (int i = 0; i < bits; i++) { + for (int i = bits - 1; i >= 0; i--) { ObservableValue o = new ObservableValue(s.getName() + i, 1); builder.add(o); inputs.add(new Signal(s.getName() + i, o)); } - sp.setInputs(builder.build()); + sp.setInputs(builder.reverse().build()); } catch (NodeException e) { throw new AnalyseException(e); } diff --git a/src/main/java/de/neemann/digital/core/ObservableValues.java b/src/main/java/de/neemann/digital/core/ObservableValues.java index 928923cc3..9457b73f0 100644 --- a/src/main/java/de/neemann/digital/core/ObservableValues.java +++ b/src/main/java/de/neemann/digital/core/ObservableValues.java @@ -2,10 +2,7 @@ package de.neemann.digital.core; import de.neemann.digital.core.element.ImmutableList; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Iterator; +import java.util.*; /** * @author hneemann @@ -58,6 +55,16 @@ public class ObservableValues extends ImmutableList { return this; } + /** + * Reverses the order of the values + * + * @return the builder + */ + public Builder reverse() { + Collections.reverse(values); + return this; + } + /** * @return the {@link ObservableValues} instance */ diff --git a/src/test/java/de/neemann/digital/analyse/ModelAnalyserTest.java b/src/test/java/de/neemann/digital/analyse/ModelAnalyserTest.java index 440ea3dd5..ac0e38029 100644 --- a/src/test/java/de/neemann/digital/analyse/ModelAnalyserTest.java +++ b/src/test/java/de/neemann/digital/analyse/ModelAnalyserTest.java @@ -111,10 +111,10 @@ public class ModelAnalyserTest extends TestCase { checkTable(tt.getResult("Q0n+1"), one, zero, one, zero); checkTable(tt.getResult("Q1n+1"), zero, one, one, zero); - assertEquals("Y0", tt.getResultName(2)); - assertEquals("Y1", tt.getResultName(3)); - final BoolTable y0 = tt.getResult(2); - final BoolTable y1 = tt.getResult(3); + assertEquals("Y1", tt.getResultName(2)); + assertEquals("Y0", tt.getResultName(3)); + final BoolTable y1 = tt.getResult(2); + final BoolTable y0 = tt.getResult(3); for (int i = 0; i < 4; i++) { assertEquals((i & 1) > 0, y0.get(i).invert().bool()); assertEquals((i & 2) > 0, y1.get(i).invert().bool()); @@ -136,8 +136,8 @@ public class ModelAnalyserTest extends TestCase { } private void checkIdent(TruthTable tt) { - checkTable(tt.getResult("B0"), zero, zero, one, one); - checkTable(tt.getResult("B1"), zero, one, zero, one); + checkTable(tt.getResult("B1"), zero, zero, one, one); + checkTable(tt.getResult("B0"), zero, one, zero, one); } private void checkTable(BoolTable table, ThreeStateValue... expected) {