private void testGettingDevice(Func <PlmNetwork, DeviceBase> testFunc) { using (var scenario = new SerialPortScenario()) { const byte RECV_MESSAGE_FLAGS_SB = Constants.MSG_FLAGS_BROADCAST; scenario.SetupSendStandardCommandReceiveAck(0x10, 0x00); scenario .WaitsForMessageOfType(0x50) .AndReceives(0x02, 0x50, TestDeviceHelper.PEER_ID_HI, TestDeviceHelper.PEER_ID_MI, TestDeviceHelper.PEER_ID_LO, PEER_DEVCAT, PEER_DEVSUB, PEER_FIRMWARE, RECV_MESSAGE_FLAGS_SB, 0x01, 0xFF); var plm = buildPlmForTest(scenario.Playback()); var test = plm.Network; var device = testFunc(test); Assert.IsNotNull(device); Assert.AreEqual(TestDeviceHelper.PEER_ID_STRING, device.DeviceId.ToString()); string devCat = Constants.DeviceCategoryLookup[PEER_DEVCAT]; string devSubcat = Constants.DeviceSubcategoryLookup[PEER_DEVCAT][PEER_DEVSUB]; Assert.AreEqual(devCat, device.DeviceCategory); Assert.AreEqual(devSubcat, device.DeviceSubcategory); Assert.IsInstanceOf <LightingControl>(device); Assert.IsInstanceOf <DimmableLightingControl>(device); } }
public void Can_get_a_database_with_one_record() { using (var scenario = new SerialPortScenario()) { scenario .ShouldSend(0x02, 0x69) .AndReceive(0x02, 0x69, 0x06); // has at least one record scenario .WaitsForMessageOfType(0x57) .AndReceives(0x02, 0x57, FLAGS_NOT_MASTER, ALL_LINK_GROUP, ID1_HI, ID1_MIDDLE, ID1_LO, 0xAA, 0xBB, 0xCC); scenario .ShouldSend(0x02, 0x6A) .AndReceive(0x02, 0x6A, 0x15); // no more var test = buildObjectForTest(scenario.Playback()); Assert.AreEqual(1, test.Records.Count); var record = test.Records[0]; Assert.IsFalse(record.PlmIsMaster); Assert.AreEqual(0xAA, record.LinkSpecificData(0)); Assert.AreEqual(0xBB, record.LinkSpecificData(1)); Assert.AreEqual(0xCC, record.LinkSpecificData(2)); } }
public void Can_get_a_database_with_one_record() { using (var scenario = new SerialPortScenario()) { scenario .ShouldSend(0x02, 0x69) .AndReceive(0x02, 0x69, 0x06); // has at least one record scenario .WaitsForMessageOfType(0x57) .AndReceives(0x02, 0x57, FLAGS_NOT_MASTER, ALL_LINK_GROUP, ID1_HI, ID1_MIDDLE, ID1_LO, 0xAA, 0xBB, 0xCC); scenario .ShouldSend(0x02, 0x6A) .AndReceive(0x02, 0x6A, 0x15); // no more var test = buildObjectForTest(scenario.Playback()); Assert.AreEqual(1, test.Records.Count); var record = test.Records[0]; Assert.IsFalse(record.PlmIsMaster); Assert.AreEqual(0xAA, record.LinkSpecificData(0)); Assert.AreEqual(0xBB, record.LinkSpecificData(1)); Assert.AreEqual(0xCC, record.LinkSpecificData(2)); } }
public void Can_get_a_database_with_two_records() { using (var scenario = new SerialPortScenario()) { scenario .ShouldSend(0x02, 0x69) .AndReceive(0x02, 0x69, 0x06); // has at least one record scenario .WaitsForMessageOfType(0x57) .AndReceives(0x02, 0x57, FLAGS, ALL_LINK_GROUP, ID1_HI, ID1_MIDDLE, ID1_LO, 0, 0, 0); scenario .ShouldSend(0x02, 0x6A) .AndReceive(0x02, 0x6A, 0x06); // more scenario .WaitsForMessageOfType(0x57) .AndReceives(0x02, 0x57, FLAGS_NOT_IN_USE, ALL_LINK_GROUP, ID2_HI, ID2_MIDDLE, ID2_LO, 0, 0, 0); scenario .ShouldSend(0x02, 0x6A) .AndReceive(0x02, 0x6A, 0x15); // no more var test = buildObjectForTest(scenario.Playback()); Assert.AreEqual(2, test.Records.Count); var record1 = test.Records[0]; Assert.AreEqual(ID1, record1.DeviceId.ToString()); Assert.AreEqual(ALL_LINK_GROUP, record1.AllLinkGroup); Assert.IsTrue(record1.InUse); Assert.IsTrue(record1.PlmIsMaster); var record2 = test.Records[1]; Assert.AreEqual(ID2, record2.DeviceId.ToString()); Assert.AreEqual(ALL_LINK_GROUP, record2.AllLinkGroup); Assert.IsFalse(record2.InUse); Assert.IsTrue(record2.PlmIsMaster); } }
public void Caches_devices_and_returns_same_object_if_called_twice() { using (var scenario = new SerialPortScenario()) { const byte RECV_MESSAGE_FLAGS_SB = Constants.MSG_FLAGS_BROADCAST; scenario.SetupSendStandardCommandReceiveAck(0x10, 0x00); scenario .WaitsForMessageOfType(0x50) .AndReceives(0x02, 0x50, TestDeviceHelper.PEER_ID_HI, TestDeviceHelper.PEER_ID_MI, TestDeviceHelper.PEER_ID_LO, PEER_DEVCAT, PEER_DEVSUB, PEER_FIRMWARE, RECV_MESSAGE_FLAGS_SB, 0x01, 0xFF); var plm = buildPlmForTest(scenario.Playback()); var test = plm.Network; DeviceBase firstDevice; DeviceBase secondDevice; Assert.IsTrue(test.TryConnectToDevice(TestDeviceHelper.PEER_ID_STRING, out firstDevice)); Assert.IsTrue(test.TryConnectToDevice(TestDeviceHelper.PEER_ID_STRING, out secondDevice)); Assert.AreSame(firstDevice, secondDevice); } }
public void Caches_devices_and_returns_same_object_if_called_twice() { using (var scenario = new SerialPortScenario()) { const byte RECV_MESSAGE_FLAGS_SB = Constants.MSG_FLAGS_BROADCAST; scenario.SetupSendStandardCommandReceiveAck(0x10, 0x00); scenario .WaitsForMessageOfType(0x50) .AndReceives(0x02, 0x50, TestDeviceHelper.PEER_ID_HI, TestDeviceHelper.PEER_ID_MI, TestDeviceHelper.PEER_ID_LO, PEER_DEVCAT, PEER_DEVSUB, PEER_FIRMWARE, RECV_MESSAGE_FLAGS_SB, 0x01, 0xFF); var plm = buildPlmForTest(scenario.Playback()); var test = plm.Network; DeviceBase firstDevice; DeviceBase secondDevice; Assert.IsTrue(test.TryConnectToDevice(TestDeviceHelper.PEER_ID_STRING, out firstDevice)); Assert.IsTrue(test.TryConnectToDevice(TestDeviceHelper.PEER_ID_STRING, out secondDevice)); Assert.AreSame(firstDevice, secondDevice); } }
public void Can_get_a_database_with_two_records() { using (var scenario = new SerialPortScenario()) { scenario .ShouldSend(0x02, 0x69) .AndReceive(0x02, 0x69, 0x06); // has at least one record scenario .WaitsForMessageOfType(0x57) .AndReceives(0x02, 0x57, FLAGS, ALL_LINK_GROUP, ID1_HI, ID1_MIDDLE, ID1_LO, 0, 0, 0); scenario .ShouldSend(0x02, 0x6A) .AndReceive(0x02, 0x6A, 0x06); // more scenario .WaitsForMessageOfType(0x57) .AndReceives(0x02, 0x57, FLAGS_NOT_IN_USE, ALL_LINK_GROUP, ID2_HI, ID2_MIDDLE, ID2_LO, 0, 0, 0); scenario .ShouldSend(0x02, 0x6A) .AndReceive(0x02, 0x6A, 0x15); // no more var test = buildObjectForTest(scenario.Playback()); Assert.AreEqual(2, test.Records.Count); var record1 = test.Records[0]; Assert.AreEqual(ID1, record1.DeviceId.ToString()); Assert.AreEqual(ALL_LINK_GROUP, record1.AllLinkGroup); Assert.IsTrue(record1.InUse); Assert.IsTrue(record1.PlmIsMaster); var record2 = test.Records[1]; Assert.AreEqual(ID2, record2.DeviceId.ToString()); Assert.AreEqual(ALL_LINK_GROUP, record2.AllLinkGroup); Assert.IsFalse(record2.InUse); Assert.IsTrue(record2.PlmIsMaster); } }
private void testGettingDevice(Func<PlmNetwork, DeviceBase> testFunc) { using (var scenario = new SerialPortScenario()) { const byte RECV_MESSAGE_FLAGS_SB = Constants.MSG_FLAGS_BROADCAST; scenario.SetupSendStandardCommandReceiveAck(0x10, 0x00); scenario .WaitsForMessageOfType(0x50) .AndReceives(0x02, 0x50, TestDeviceHelper.PEER_ID_HI, TestDeviceHelper.PEER_ID_MI, TestDeviceHelper.PEER_ID_LO, PEER_DEVCAT, PEER_DEVSUB, PEER_FIRMWARE, RECV_MESSAGE_FLAGS_SB, 0x01, 0xFF); var plm = buildPlmForTest(scenario.Playback()); var test = plm.Network; var device = testFunc(test); Assert.IsNotNull(device); Assert.AreEqual(TestDeviceHelper.PEER_ID_STRING, device.DeviceId.ToString()); string devCat = Constants.DeviceCategoryLookup[PEER_DEVCAT]; string devSubcat = Constants.DeviceSubcategoryLookup[PEER_DEVCAT][PEER_DEVSUB]; Assert.AreEqual(devCat, device.DeviceCategory); Assert.AreEqual(devSubcat, device.DeviceSubcategory); Assert.IsInstanceOf<LightingControl>(device); Assert.IsInstanceOf<DimmableLightingControl>(device); } }