public void Constructor()
        {
            // arrange, act
            var latch = new LatchEdge8("test");

            Assert.AreEqual(VoltageSignal.LOW, latch.V.V, "Constructor: Voltage");
            Assert.AreEqual(VoltageSignal.LOW, latch.Clk.V, "Constructor: Clk");
            Assert.AreEqual(VoltageSignal.LOW, latch.Din0.V, "Constructor: Din0");
            Assert.AreEqual(VoltageSignal.LOW, latch.Din1.V, "Constructor: Din1");
            Assert.AreEqual(VoltageSignal.LOW, latch.Din2.V, "Constructor: Din2");
            Assert.AreEqual(VoltageSignal.LOW, latch.Din3.V, "Constructor: Din3");
            Assert.AreEqual(VoltageSignal.LOW, latch.Din4.V, "Constructor: Din4");
            Assert.AreEqual(VoltageSignal.LOW, latch.Din5.V, "Constructor: Din5");
            Assert.AreEqual(VoltageSignal.LOW, latch.Din6.V, "Constructor: Din6");
            Assert.AreEqual(VoltageSignal.LOW, latch.Din7.V, "Constructor: Din7");
            Assert.AreEqual(VoltageSignal.LOW, latch.Dout0.V, "Constructor: Dout0");
            Assert.AreEqual(VoltageSignal.LOW, latch.Dout1.V, "Constructor: Dout1");
            Assert.AreEqual(VoltageSignal.LOW, latch.Dout2.V, "Constructor: Dout2");
            Assert.AreEqual(VoltageSignal.LOW, latch.Dout3.V, "Constructor: Dout3");
            Assert.AreEqual(VoltageSignal.LOW, latch.Dout4.V, "Constructor: Dout4");
            Assert.AreEqual(VoltageSignal.LOW, latch.Dout5.V, "Constructor: Dout5");
            Assert.AreEqual(VoltageSignal.LOW, latch.Dout6.V, "Constructor: Dout6");
            Assert.AreEqual(VoltageSignal.LOW, latch.Dout7.V, "Constructor: Dout7");
            Assert.AreEqual("00000000", latch.ToString(), "Constructor: ToString()");
        }
        public void OutputEvent()
        {
            // arrange
            var latch = new LatchEdge8("test");

            latch.V.V = VoltageSignal.HIGH;

            latch.Dout0.Changed += _ => fired = true;
            latch.Dout1.Changed += _ => fired = true;
            latch.Dout2.Changed += _ => fired = true;
            latch.Dout3.Changed += _ => fired = true;
            latch.Dout4.Changed += _ => fired = true;
            latch.Dout5.Changed += _ => fired = true;
            latch.Dout6.Changed += _ => fired = true;
            latch.Dout7.Changed += _ => fired = true;

            ushort oldData = 0;

            for (ushort data = 0; data < 0x100; ++data)
            {
                LatchEdge8_Event_TestHelper(latch, (byte)oldData, (byte)data);

                oldData = data;
            }
        }
        private static void LatchEdge8_TestHelper(LatchEdge8 latch, byte oldData, byte newData)
        {
            SetData(latch, newData);

            TestData(latch, oldData);

            latch.Clk.V = VoltageSignal.HIGH;
            latch.Clk.V = VoltageSignal.LOW;

            TestData(latch, newData);
        }
 private static void TestData(LatchEdge8 latch, byte data)
 {
     Assert.IsTrue((latch.Dout0.V == ((data & 0x01) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW)));
     Assert.IsTrue((latch.Dout1.V == ((data & 0x02) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW)));
     Assert.IsTrue((latch.Dout2.V == ((data & 0x04) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW)));
     Assert.IsTrue((latch.Dout3.V == ((data & 0x08) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW)));
     Assert.IsTrue((latch.Dout4.V == ((data & 0x10) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW)));
     Assert.IsTrue((latch.Dout5.V == ((data & 0x20) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW)));
     Assert.IsTrue((latch.Dout6.V == ((data & 0x40) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW)));
     Assert.IsTrue((latch.Dout7.V == ((data & 0x80) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW)));
 }
 private static void SetData(LatchEdge8 latch, byte data)
 {
     latch.Din0.V = ((data & 0x01) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
     latch.Din1.V = ((data & 0x02) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
     latch.Din2.V = ((data & 0x04) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
     latch.Din3.V = ((data & 0x08) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
     latch.Din4.V = ((data & 0x10) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
     latch.Din5.V = ((data & 0x20) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
     latch.Din6.V = ((data & 0x40) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
     latch.Din7.V = ((data & 0x80) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
 }
        public void Clear()
        {
            // arrange
            var latch = new LatchEdge8("test");

            latch.V.V   = VoltageSignal.HIGH;
            latch.Clr.V = VoltageSignal.HIGH;

            SetData(latch, 0xAA);
            latch.Clk.V = VoltageSignal.HIGH;
            latch.Clk.V = VoltageSignal.LOW;
            TestData(latch, 0x00);
        }
        private static byte GetOutput(LatchEdge8 latch)
        {
            byte output = 0x00;

            output |= (latch.Dout0.V == VoltageSignal.HIGH ? (byte)0x01 : (byte)0x00);
            output |= (latch.Dout1.V == VoltageSignal.HIGH ? (byte)0x02 : (byte)0x00);
            output |= (latch.Dout2.V == VoltageSignal.HIGH ? (byte)0x04 : (byte)0x00);
            output |= (latch.Dout3.V == VoltageSignal.HIGH ? (byte)0x08 : (byte)0x00);
            output |= (latch.Dout4.V == VoltageSignal.HIGH ? (byte)0x10 : (byte)0x00);
            output |= (latch.Dout5.V == VoltageSignal.HIGH ? (byte)0x20 : (byte)0x00);
            output |= (latch.Dout6.V == VoltageSignal.HIGH ? (byte)0x40 : (byte)0x00);
            output |= (latch.Dout7.V == VoltageSignal.HIGH ? (byte)0x80 : (byte)0x00);

            return(output);
        }
        public void Preset()
        {
            // arrange
            var latch = new LatchEdge8("test");

            latch.V.V   = VoltageSignal.HIGH;
            latch.Pre.V = VoltageSignal.HIGH;

            // act
            SetData(latch, 0xAA);
            latch.Clk.V = VoltageSignal.HIGH;
            latch.Clk.V = VoltageSignal.LOW;

            // assert
            TestData(latch, 0xFF);
        }
        public void DataAndClock()
        {
            // arrange
            var latch = new LatchEdge8("test");

            latch.V.V = VoltageSignal.HIGH;

            // act, assert
            ushort oldData = 0;

            for (ushort data = 0; data < 0x100; ++data)
            {
                LatchEdge8_TestHelper(latch, (byte)oldData, (byte)data);

                oldData = data;
            }
        }
示例#10
0
        private void LatchEdge8_Event_TestHelper(LatchEdge8 latch, byte oldData, byte newData)
        {
            latch.Din0.V = ((newData & 0x01) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
            Assert.IsFalse(fired, "Din0; no event");
            latch.Din1.V = ((newData & 0x02) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
            Assert.IsFalse(fired, "Din1; no event");
            latch.Din2.V = ((newData & 0x04) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
            Assert.IsFalse(fired, "Din2; no event");
            latch.Din3.V = ((newData & 0x08) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
            Assert.IsFalse(fired, "Din3; no event");
            latch.Din4.V = ((newData & 0x10) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
            Assert.IsFalse(fired, "Din4; no event");
            latch.Din5.V = ((newData & 0x20) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
            Assert.IsFalse(fired, "Din5; no event");
            latch.Din6.V = ((newData & 0x40) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
            Assert.IsFalse(fired, "Din6; no event");
            latch.Din7.V = ((newData & 0x80) > 0 ? VoltageSignal.HIGH : VoltageSignal.LOW);
            Assert.IsFalse(fired, "Din7; no event");

            TestData(latch, oldData);

            byte oldOutput = GetOutput(latch);

            latch.Clk.V = VoltageSignal.HIGH;
            if (oldOutput != GetOutput(latch))
            {
                Assert.IsTrue(fired, "Clk ^ with different output; event");
                fired = false;
            }
            else
            {
                Assert.IsFalse(fired, "Clk ^ with same output; no event");
            }
            latch.Clk.V = VoltageSignal.LOW;
            Assert.IsFalse(fired, "Clk v; no event");

            TestData(latch, newData);
        }