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.memory; 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 junit.framework.TestCase; 13 14 import static de.neemann.digital.core.ObservableValues.ovs; 15 16 /** 17 */ 18 public class CounterTest extends TestCase { 19 testCounter()20 public void testCounter() throws Exception { 21 ObservableValue clk = new ObservableValue("clk", 1); 22 ObservableValue en = new ObservableValue("en", 1); 23 ObservableValue clr = new ObservableValue("clr", 1); 24 25 Model model = new Model(); 26 Counter out = model.add(new Counter( 27 new ElementAttributes() 28 .setBits(8))); 29 out.setInputs(ovs(en, clk, clr)); 30 31 TestExecuter sc = new TestExecuter(model).setInputs(en, clk, clr).setOutputs(out.getOutputs()); 32 sc.check(1, 0, 0, 0, 0); 33 sc.check(1, 1, 0, 1, 0); 34 sc.check(1, 0, 0, 1, 0); 35 sc.check(1, 1, 0, 2, 0); 36 sc.check(1, 0, 0, 2, 0); 37 sc.check(1, 1, 0, 3, 0); 38 sc.check(1, 0, 0, 3, 0); 39 sc.check(0, 0, 1, 3, 0); 40 sc.check(0, 1, 1, 0, 0); 41 sc.check(0, 0, 1, 0, 0); 42 43 sc.check(1, 0, 0, 0, 0); 44 for (int i = 1; i <= 254; i++) { 45 sc.check(1, 0, 0, i - 1, 0); 46 sc.check(1, 1, 0, i, 0); 47 } 48 sc.check(1, 0, 0, 254, 0); 49 sc.check(1, 1, 0, 255, 1); 50 sc.check(1, 0, 0, 255, 1); 51 sc.check(1, 1, 0, 0, 0); 52 sc.check(1, 0, 0, 0, 0); 53 sc.check(1, 1, 0, 1, 0); 54 } 55 56 57 } 58