Esempio n. 1
0
        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));
            }
        }
Esempio n. 3
0
        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));
            }
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 6
0
        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);
            }
        }