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 RegisterTest extends TestCase {
19 
testRegister()20     public void testRegister() throws Exception {
21         ObservableValue d = new ObservableValue("s", 8);
22         ObservableValue c = new ObservableValue("c", 1);
23         ObservableValue en = new ObservableValue("en", 1);
24 
25         Model model = new Model();
26         Register out = model.add(new Register(new ElementAttributes().setBits(8)));
27         out.setInputs(ovs(d, c, en));
28 
29         TestExecuter sc = new TestExecuter(model).setInputs(d, c, en).setOutputs(out.getOutputs());
30         //       D  C  en  Q
31         sc.check(0, 0, 0, 0);
32         sc.check(7, 1, 1, 7);
33         sc.check(9, 1, 1, 7);
34         sc.check(9, 1, 0, 7);
35         sc.check(9, 0, 0, 7);
36         sc.check(9, 0, 1, 7);
37         sc.check(9, 1, 1, 9);
38         sc.check(0, 0, 0, 9);
39         sc.check(0, 1, 0, 9);
40         sc.check(0, 1, 1, 9);
41         sc.check(0, 0, 0, 9);
42         sc.check(0, 1, 0, 9);
43         sc.check(0, 0, 1, 9);
44     }
45 
46 
47 }
48