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); } }
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()); }
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()); }
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)); }