public void Relay1Test()
 {
     bool sendCommandCalled = false;
     bool propertyChangedCalled = false;
     RelayViewModel relay = new RelayViewModel();
     relay.SendCommand += (sender, args) =>
         {
             sendCommandCalled = true;
             Assert.AreEqual(CommandType.Set, args.Type, "args.Type");
             Assert.AreEqual(Command.Command.Relay, args.Command, "args.Command");
             Assert.IsNotNull(args.Value, "args.Value");
             Assert.AreEqual(1, args.Value.Length, "args.Value.Length");
             Assert.AreEqual(17, args.Value[0], "args.Value[0]");
         };
     relay.PropertyChanged += (sender, args) => // Ensure that I'm sending the correct name of the property
         {
             propertyChangedCalled = true;
             Assert.AreEqual("Relay1", args.PropertyName, "args.PropertyName");
         };
     Assert.IsFalse(sendCommandCalled, "called");
     relay.Relay1 = true;
     Assert.IsTrue(relay.Relay1, "relay.Relay1");
     Assert.IsTrue(sendCommandCalled, "sendCommandCalled");
     Assert.IsTrue(propertyChangedCalled, "propertyChangedCalled");
 }
        public void OnCommandRecivedTest()
        {
            // relay1
            CommandArgs args = new CommandArgs();
            args.Type = CommandType.Set;
            args.Command = Command.Command.Relay;
            args.Value = new byte[] { 17 };
            RelayViewModel relay = new RelayViewModel();
            relay.SendCommand += (sender, a) =>
                {
                    Assert.Fail("This method should not be called");
                };
            bool called = false;
            PropertyChangedEventHandler relay1 = (sender, a) =>
                {
                    called = true;
                    Assert.AreEqual("Relay1", a.PropertyName, "PropertyName");
                };
            relay.PropertyChanged += relay1;
            relay.OnCommandRecived(this, args);
            Assert.IsTrue(called, "called");
            Assert.IsTrue(relay.Relay1, "relay.Relay1");
            relay.PropertyChanged -= relay1;

            // relay2
            called = false;
            PropertyChangedEventHandler relay2 = (sender, a) =>
                {
                    called = true;
                    Assert.AreEqual("Relay2", a.PropertyName, "PropertyName");
                };
            args.Value[0] = 33;
            relay.PropertyChanged += relay2;
            Assert.IsFalse(called, "called");
            relay.OnCommandRecived(this, args);
            Assert.IsTrue(called, "called");
            relay.PropertyChanged -= relay2;

            //relay3
            called = false;
            PropertyChangedEventHandler relay3 = (sender, a) =>
                {
                    called = true;
                    Assert.AreEqual("Relay3", a.PropertyName, "PropertyName");
                };
            args.Value[0] = 49;
            relay.PropertyChanged += relay3;
            Assert.IsFalse(called, "called");
            relay.OnCommandRecived(this, args);
            Assert.IsTrue(called, "called");
            relay.PropertyChanged -= relay3;

            //relay4
            called = false;
            PropertyChangedEventHandler relay4 = (sender, a) =>
                {
                    called = true;
                    Assert.AreEqual("Relay4", a.PropertyName, "PropertyName");
                };
            args.Value[0] = 65;
            relay.PropertyChanged += relay4;
            Assert.IsFalse(called, "called");
            relay.OnCommandRecived(this, args);
            Assert.IsTrue(called, "called");
            relay.PropertyChanged -= relay4;
        }