public void RemoteReceiver_CHANNEL_DOWN_request_success()
        {
            MockRepository mocks = new MockRepository();
            ITelevision televisionMock = mocks.StrictMock<ITelevision>();

            using (mocks.Record())
            {
                Expect.Call(televisionMock.State).Return(TelevisionStateEnum.ON);
                Expect.Call(televisionMock.Channel).Return(10);
                Expect.Call(televisionMock.Channel).SetPropertyWithArgument(9);
            }

            Television.Models.RemoteReceiver m_Receiver = new Models.RemoteReceiver(televisionMock);

            Messenger.Default.Send<RemoteControlCommand>(
                   new RemoteControlCommand()
                   {
                       Command = RemoteCommandsEnum.CHANNEL_DOWN,
                       Value = null
                   }, CONTROL_CODE);

            mocks.VerifyAll();

            // Cleanup
            m_Receiver.Dispose();
        }
        public void RemoteReceiver_responds_CONTROL_CODE_request_success()
        {
            MockRepository mocks = new MockRepository();
            ITelevision televisionMock = mocks.StrictMock<ITelevision>();

            Television.Models.RemoteReceiver m_Receiver = new Models.RemoteReceiver(televisionMock);

            RemoteControlCommand message = null;
            Messenger.Default.Register<RemoteControlCommand>(this, (m) =>
            {
                if(m.Command == RemoteCommandsEnum.CONTROL_CODE)
                    message = m;
            });

            Messenger.Default.Send<RemoteControlCommand>(
                   new RemoteControlCommand()
                   {
                       Command = RemoteCommandsEnum.REQUEST_CONTROL_CODE,
                       Value = null
                   });

            //System.Threading.Thread.Yield();    // Let me message be processed async

            // Verify we received a CONTROL_CODE message
            Assert.IsTrue(message.Command == RemoteCommandsEnum.CONTROL_CODE);

            // Verify we received a Guid
            Guid value = (Guid)message.Value;
            Assert.IsNotNull(value);

            // Verify the RemoteReceiver is still using the expected UnitTest control code
            Assert.IsTrue(CONTROL_CODE.Equals(value));

            // Cleanup
            m_Receiver.Dispose();
            Messenger.Default.Unregister<RemoteControlCommand>(this);
        }
        public void RemoteReceiver_STATE_ON_request_success()
        {
            MockRepository mocks = new MockRepository();
            ITelevision televisionMock = mocks.StrictMock<ITelevision>();

            using (mocks.Record())
            {
                Expect.Call(televisionMock.State).Return(TelevisionStateEnum.OFF);
                Expect.Call(televisionMock.State = TelevisionStateEnum.ON);
            }

            Television.Models.RemoteReceiver m_Receiver = new Models.RemoteReceiver(televisionMock);

            Messenger.Default.Send<RemoteControlCommand>(
                   new RemoteControlCommand()
                   {
                       Command = RemoteCommandsEnum.STATE,
                       Value = TelevisionStateEnum.ON
                   }, CONTROL_CODE);

            mocks.VerifyAll();

            // Cleanup
            m_Receiver.Dispose();
        }
        public void RemoteReceiver_create_success()
        {
            MockRepository mocks = new MockRepository();
            ITelevision televisionMock = mocks.StrictMock<ITelevision>();

            Television.Models.RemoteReceiver m_Receiver = new Models.RemoteReceiver(televisionMock);

            Assert.IsNotNull(m_Receiver);  //  This would probably never be hit if creation failed, but it is good to be through

            m_Receiver.Dispose();
        }