1 /* 2 * Copyright (c) 2016 Helmut Neemann 3 * Use of this source code is governed by the GPL v3 license 4 * that can be found in the LICENSE file. 5 */ 6 package de.neemann.digital.core.wiring; 7 8 import de.neemann.digital.TestExecuter; 9 import de.neemann.digital.core.NodeException; 10 import de.neemann.digital.core.ObservableValue; 11 import de.neemann.digital.core.ObservableValues; 12 import de.neemann.digital.core.element.ElementAttributes; 13 import de.neemann.digital.core.element.Keys; 14 import de.neemann.digital.draw.elements.PinException; 15 import junit.framework.TestCase; 16 17 import static de.neemann.digital.TestExecuter.HIGHZ; 18 import static de.neemann.digital.core.ObservableValues.ovs; 19 20 /** 21 */ 22 public class SplitterHighZTest extends TestCase { 23 testHighZError()24 public void testHighZError() throws NodeException, PinException { 25 ObservableValue a = new ObservableValue("a", 1) 26 .setToHighZ(); 27 ObservableValue b = new ObservableValue("b", 1); 28 29 Splitter splitter = new Splitter(new ElementAttributes() 30 .set(Keys.INPUT_SPLIT, "1,1") 31 .set(Keys.OUTPUT_SPLIT, "2")); 32 33 splitter.setInputs(ovs(a, b)); 34 35 ObservableValues outputs = splitter.getOutputs(); 36 assertEquals(1, outputs.size()); 37 38 TestExecuter sc = new TestExecuter().setInputs(a, b).setOutputsOf(splitter); 39 sc.check(0, 0, 0); 40 sc.check(0, 1, 2); 41 sc.check(1, 0, 1); 42 sc.check(1, 1, 3); 43 sc.checkZ(HIGHZ, HIGHZ, HIGHZ); 44 } 45 testHighZEnabled()46 public void testHighZEnabled() throws NodeException, PinException { 47 ObservableValue a = new ObservableValue("a", 2) 48 .setToHighZ(); 49 50 Splitter splitter = new Splitter(new ElementAttributes() 51 .set(Keys.INPUT_SPLIT, "2") 52 .set(Keys.OUTPUT_SPLIT, "1,1")); 53 54 splitter.setInputs(ovs(a)); 55 56 ObservableValues outputs = splitter.getOutputs(); 57 assertEquals(2, outputs.size()); 58 59 TestExecuter sc = new TestExecuter().setInputs(a).setOutputsOf(splitter); 60 sc.check(0, 0, 0); 61 sc.check(1, 1, 0); 62 sc.check(2, 0, 1); 63 sc.check(3, 1, 1); 64 sc.checkZ(HIGHZ, HIGHZ, HIGHZ); 65 } 66 67 } 68