public void Setup()
 {
     _byteFactory       = new ByteFactory(new Base10Converter());
     _and               = new And();
     _memoryGateFactory = new MemoryGateFactory(new NAnd(new Not(), _and));
     _byteMemoryGate    = new ByteMemoryGate(_memoryGateFactory, _byteFactory);
     _byteEnabler       = new ByteEnabler(_and, _byteFactory);
     _sut               = new ByteRegister(_byteMemoryGate, _byteEnabler, _byteFactory, wire => {});
 }
        public void CanStoreAByte(bool expected)
        {
            var sut = new ByteMemoryGate(new MemoryGateFactory(new NAnd(new Not(), new And())),
                                         new ByteFactory(new Base10Converter()));

            var input = new Byte(Enumerable.Range(0, 8).Select(s => expected).ToArray());

            var result = sut.Apply(input, true);

            for (var i = 0; i < input.Count; i++)
            {
                Assert.AreEqual(input[i], result[i]);
            }
        }
        public void CanKeepTheValueOfAByte()
        {
            var sut = new ByteMemoryGate(new MemoryGateFactory(new NAnd(new Not(), new And())),
                                         new ByteFactory(new Base10Converter()));

            var input = new Byte(Enumerable.Range(0, 8).Select(s => true).ToArray());

            var result = sut.Apply(input, true);

            for (var i = 0; i < input.Count; i++)
            {
                Assert.AreEqual(input[i], result[i]);
            }

            input = new Byte(Enumerable.Range(0, 8).Select(s => false).ToArray());

            result = sut.Apply(input, false);

            for (var i = 0; i < input.Count; i++)
            {
                Assert.AreEqual(true, result[i]);
            }
        }