1 /* 2 * Copyright (c) 2017 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.Model; 10 import de.neemann.digital.core.ObservableValue; 11 import de.neemann.digital.core.element.ElementAttributes; 12 import de.neemann.digital.core.element.Keys; 13 import junit.framework.TestCase; 14 15 import static de.neemann.digital.core.ObservableValues.ovs; 16 17 public class PriorityEncoderTest extends TestCase { 18 testEncoder2()19 public void testEncoder2() throws Exception { 20 Model model = new Model(); 21 ObservableValue d0 = new ObservableValue("d0", 1); 22 ObservableValue d1 = new ObservableValue("d1", 1); 23 PriorityEncoder out = model.add(new PriorityEncoder( 24 new ElementAttributes() 25 .set(Keys.SELECTOR_BITS, 1))); 26 out.setInputs(ovs(d0, d1)); 27 28 TestExecuter te = new TestExecuter(model).setInputs(d1, d0).setOutputs(out.getOutputs()); 29 te.check(0, 0, 0, 0); 30 te.check(0, 1, 0, 1); 31 te.check(1, 0, 1, 1); 32 te.check(1, 1, 1, 1); 33 } 34 testEncoder4()35 public void testEncoder4() throws Exception { 36 Model model = new Model(); 37 ObservableValue d0 = new ObservableValue("d0", 1); 38 ObservableValue d1 = new ObservableValue("d1", 1); 39 ObservableValue d2 = new ObservableValue("d2", 1); 40 ObservableValue d3 = new ObservableValue("d3", 1); 41 PriorityEncoder out = model.add(new PriorityEncoder( 42 new ElementAttributes() 43 .set(Keys.SELECTOR_BITS, 2))); 44 out.setInputs(ovs(d0, d1, d2, d3)); 45 46 TestExecuter te = new TestExecuter(model).setInputs(d3, d2, d1, d0).setOutputs(out.getOutputs()); 47 te.check(0, 0, 0, 0, 0, 0); 48 te.check(0, 0, 0, 1, 0, 1); 49 te.check(0, 0, 1, 0, 1, 1); 50 te.check(0, 0, 1, 1, 1, 1); 51 te.check(0, 1, 0, 0, 2, 1); 52 te.check(0, 1, 0, 1, 2, 1); 53 te.check(0, 1, 1, 0, 2, 1); 54 te.check(0, 1, 1, 1, 2, 1); 55 te.check(1, 0, 0, 0, 3, 1); 56 te.check(1, 0, 0, 1, 3, 1); 57 te.check(1, 0, 1, 0, 3, 1); 58 te.check(1, 0, 1, 1, 3, 1); 59 te.check(1, 1, 0, 0, 3, 1); 60 te.check(1, 1, 0, 1, 3, 1); 61 te.check(1, 1, 1, 0, 3, 1); 62 te.check(1, 1, 1, 1, 3, 1); 63 } 64 65 } 66