Esempio n. 1
0
        public void Read_one_byte_register()
        {
            // ARRANGE
            _mockSpiDevice.WriteAction = buffer =>
            {
                Assert.AreEqual(1, buffer.Length);
                Assert.AreEqual(0x42, buffer[0]);
            };

            _mockSpiDevice.ReadAction = buffer =>
            {
                Assert.AreEqual(1, _mockSpiDevice.WriteActionCount, "The Write must come before the Read");
                Assert.AreEqual(1, buffer.Length);
                buffer[0] = 0x99;
            };

            // ACT
            MockRegister readRegister = _registerManager.Read <MockRegister>();

            // ASSERT
            Assert.AreEqual(1, _mockSpiDevice.ReadActionCount);
            Assert.AreEqual(1, _mockSpiDevice.WriteActionCount);

            Assert.AreEqual(1, readRegister.RegisterValues.Length);
            Assert.AreEqual(0x99, readRegister.RegisterValues[0]);
        }
Esempio n. 2
0
        public void Write_one_byte_register()
        {
            // ARRANGE
            var mockRegister = new MockRegister(0x42, 1, new byte[] { 0x99 });

            _mockSpiDevice.WriteAction = buffer =>
            {
                Assert.AreEqual(2, buffer.Length);
                Assert.AreEqual(0x42 | 0x80, buffer[0]);
                Assert.AreEqual(0x99, buffer[1]);
            };

            // ACT
            _registerManager.Write(mockRegister);

            // ASSERT
            Assert.AreEqual(0, _mockSpiDevice.ReadActionCount);
            Assert.AreEqual(1, _mockSpiDevice.WriteActionCount);
        }
Esempio n. 3
0
        public void Write_three_bytes_register()
        {
            // ARRANGE
            var mockRegister = new MockRegister(0x42, 1, new byte[] { 0x12, 0x34, 0x56 });

            _mockSpiDevice.WriteAction = buffer =>
            {
                Assert.AreEqual(2, buffer.Length);

                switch (_mockSpiDevice.WriteActionCount)
                {
                case 0:
                    Assert.AreEqual(0x42 | 0x80, buffer[0]);
                    Assert.AreEqual(0x12, buffer[1]);
                    break;

                case 1:
                    Assert.AreEqual(0x43 | 0x80, buffer[0]);
                    Assert.AreEqual(0x34, buffer[1]);
                    break;

                case 2:
                    Assert.AreEqual(0x44 | 0x80, buffer[0]);
                    Assert.AreEqual(0x56, buffer[1]);
                    break;

                default:
                    Assert.Fail("Too many writes!");
                    break;
                }
            };

            // ACT
            _registerManager.Write(mockRegister);

            // ASSERT
            Assert.AreEqual(0, _mockSpiDevice.ReadActionCount);
            Assert.AreEqual(3, _mockSpiDevice.WriteActionCount);
        }
Esempio n. 4
0
        public void Read_three_bytes_register()
        {
            // ARRANGE
            _mockSpiDevice.WriteAction = buffer =>
            {
                Assert.AreEqual(1, buffer.Length);
                switch (_mockSpiDevice.WriteActionCount)
                {
                case 0:
                    Assert.AreEqual(0x42, buffer[0]);
                    break;

                case 1:
                    Assert.AreEqual(0x43, buffer[0]);
                    break;

                case 2:
                    Assert.AreEqual(0x44, buffer[0]);
                    break;

                default:
                    Assert.Fail("Too many writes!");
                    break;
                }
            };

            _mockSpiDevice.ReadAction = buffer =>
            {
                Assert.AreEqual(_mockSpiDevice.ReadActionCount + 1, _mockSpiDevice.WriteActionCount, "The Write must come before the Read");
                Assert.AreEqual(1, buffer.Length);
                switch (_mockSpiDevice.ReadActionCount)
                {
                case 0:
                    buffer[0] = 0x12;
                    break;

                case 1:
                    buffer[0] = 0x34;
                    break;

                case 2:
                    buffer[0] = 0x56;
                    break;

                default:
                    Assert.Fail("Too many reads!");
                    break;
                }
            };

            // ACT
            MockRegister readRegister = _registerManager.Read <MockRegister>();

            // ASSERT
            Assert.AreEqual(3, _mockSpiDevice.ReadActionCount);
            Assert.AreEqual(3, _mockSpiDevice.WriteActionCount);

            Assert.AreEqual(3, readRegister.RegisterValues.Length);
            Assert.AreEqual(0x12, readRegister.RegisterValues[0]);
            Assert.AreEqual(0x34, readRegister.RegisterValues[1]);
            Assert.AreEqual(0x56, readRegister.RegisterValues[2]);
        }