public void TurnOnAndTurnOff_Socket()
        {
            var endpoint = new TestBinaryStateEndpoint();
            var socket   = new Socket(ComponentIdFactory.EmptyId, endpoint);

            endpoint.TurnOnCalledCount.ShouldBeEquivalentTo(0);
            endpoint.TurnOffCalledCount.ShouldBeEquivalentTo(1);
            socket.GetState().ShouldBeEquivalentTo(BinaryStateId.Off);

            socket.TryTurnOn();
            endpoint.TurnOnCalledCount.ShouldBeEquivalentTo(1);
            endpoint.TurnOffCalledCount.ShouldBeEquivalentTo(1);
            socket.GetState().ShouldBeEquivalentTo(BinaryStateId.On);

            socket.TryTurnOn();
            endpoint.TurnOnCalledCount.ShouldBeEquivalentTo(1);
            endpoint.TurnOffCalledCount.ShouldBeEquivalentTo(1);
            socket.GetState().ShouldBeEquivalentTo(BinaryStateId.On);

            socket.TryTurnOff();
            endpoint.TurnOnCalledCount.ShouldBeEquivalentTo(1);
            endpoint.TurnOffCalledCount.ShouldBeEquivalentTo(2);
            socket.GetState().ShouldBeEquivalentTo(BinaryStateId.Off);

            socket.TryTurnOff();
            endpoint.TurnOnCalledCount.ShouldBeEquivalentTo(1);
            endpoint.TurnOffCalledCount.ShouldBeEquivalentTo(2);
            socket.GetState().ShouldBeEquivalentTo(BinaryStateId.Off);

            socket.TryTurnOn();
            endpoint.TurnOnCalledCount.ShouldBeEquivalentTo(2);
            endpoint.TurnOffCalledCount.ShouldBeEquivalentTo(2);
            socket.GetState().ShouldBeEquivalentTo(BinaryStateId.On);
        }
        public void StateAlias_Lamp()
        {
            var endpoint = new TestBinaryStateEndpoint();
            var lamp     = new Lamp(ComponentIdFactory.EmptyId, endpoint);

            lamp.SetStateIdAlias(BinaryStateId.On, LevelStateId.Level1);

            endpoint.TurnOnCalledCount.ShouldBeEquivalentTo(0);
            endpoint.TurnOffCalledCount.ShouldBeEquivalentTo(1);
            lamp.GetState().ShouldBeEquivalentTo(BinaryStateId.Off);

            lamp.SetState(LevelStateId.Level1);
            endpoint.TurnOnCalledCount.ShouldBeEquivalentTo(1);
            endpoint.TurnOffCalledCount.ShouldBeEquivalentTo(1);
            lamp.GetState().ShouldBeEquivalentTo(BinaryStateId.On);
        }
        public void Toggle_Lamp()
        {
            var endpoint = new TestBinaryStateEndpoint();
            var lamp     = new Lamp(ComponentIdFactory.EmptyId, endpoint);

            endpoint.TurnOnCalledCount.ShouldBeEquivalentTo(0);
            endpoint.TurnOffCalledCount.ShouldBeEquivalentTo(1);
            lamp.GetState().ShouldBeEquivalentTo(BinaryStateId.Off);

            lamp.SetNextState();
            endpoint.TurnOnCalledCount.ShouldBeEquivalentTo(1);
            endpoint.TurnOffCalledCount.ShouldBeEquivalentTo(1);
            lamp.GetState().ShouldBeEquivalentTo(BinaryStateId.On);

            lamp.SetNextState();
            endpoint.TurnOnCalledCount.ShouldBeEquivalentTo(1);
            endpoint.TurnOffCalledCount.ShouldBeEquivalentTo(2);
            lamp.GetState().ShouldBeEquivalentTo(BinaryStateId.Off);
        }