Esempio n. 1
0
        public void LeController_DeviceAddressReceived()
        {
            var transportMock = new Mock <FakeCommandTransport> {
                CallBase = true
            };

            transportMock
            .Setup(x => x.GetCommandCompletePayload(It.IsAny <byte[]>(), It.IsAny <DataType>()))
            .Returns(new Func <byte[], DataType, byte[]>((data, dataType) =>
            {
                var readBdAddrData = new ReadBdAddrCommand().ToByteArray();
                if (!Enumerable.SequenceEqual(data, readBdAddrData))
                {
                    return(null);
                }
                return(new byte[] { 0x60, 0x50, 0x40, 0x30, 0x20, 0x10 });
            }));

            using (var controller = new LeController(transportMock.Object))
            {
                DeviceAddress deviceAddress = null;
                var           done          = new ManualResetEvent(false);
                controller.DeviceAddressReceived += (sender, e) =>
                {
                    deviceAddress = e.DeviceAddress;
                    done.Set();
                };

                controller.Open();
                Assert.IsTrue(done.WaitOne(1000, false));
                Assert.AreEqual(new byte[] { 0x10, 0x20, 0x30, 0x40, 0x50, 0x60 }, deviceAddress.Address);
            }
        }
Esempio n. 2
0
        public void LeController_Dispose()
        {
            var transportMock = new Mock <ITransport>();

            using (var controller = new LeController(transportMock.Object))
                controller.Open();
            transportMock.Verify(x => x.Open(), Times.Once());
            transportMock.Verify(x => x.Close(), Times.Once());
        }
Esempio n. 3
0
        public void LeController_OpenUnderlyingTransport()
        {
            var transportMock = new Mock <ITransport>();
            var controller    = new LeController(transportMock.Object);

            controller.Open();
            transportMock.Verify(x => x.Open(), Times.Once());
            transportMock.Verify(x => x.Close(), Times.Never());
        }
Esempio n. 4
0
        public void LeController_InitCommands()
        {
            var transportMock = new Mock <FakeCommandTransport> {
                CallBase = true
            };

            using (var controller = new LeController(transportMock.Object))
            {
                controller.Open();
                Thread.Sleep(10);
            }
            transportMock.Verify(
                transport => transport.Send(
                    It.Is <byte[]>(x => x.SequenceEqual(new ResetCommand().ToByteArray())),
                    It.Is <DataType>(x => x == DataType.Command)),
                Times.Exactly(1));
            transportMock.Verify(
                transport => transport.Send(It.IsAny <byte[]>(), It.Is <DataType>(x => x == DataType.Command)),
                Times.Exactly(7));
        }