public void PacActOnPerson_NoPerson()
        {
            var deviceMock = new Mock <IDevice>();

            deviceMock.Setup(foo => foo.On()).Verifiable();
            deviceMock.Setup(foo => foo.Off()).Verifiable();
            deviceMock.Setup(foo => foo.Restore()).Verifiable();

            var deivce = deviceMock.Object;


            var zoneMock = new Mock <Zone>();

            zoneMock.Setup(foo => foo.InZone(It.IsAny <Person>())).Returns(false).Verifiable();

            var zone = zoneMock.Object;

            var cal = new Cal();

            cal.AddScenario(new Scenario
            {
                Devices = new HashSet <IDevice> {
                    deivce
                },
                Identifier = "mock1",
                Zone       = zone
            });

            cal.ActOnPeoplePresent(new List <Person>());

            deviceMock.Verify(t => t.Restore(), Times.Never);
            deviceMock.Verify(t => t.Off(), Times.Once);
            deviceMock.Verify(t => t.On(), Times.Never);
            zoneMock.Verify(t => t.InZone(It.IsAny <Person>()), Times.Never);
        }
        public void PacActOnPerson_TwoPerson_InNoZones()
        {
            var deviceMock1 = new Mock <IDevice>();

            deviceMock1.Setup(foo => foo.On()).Verifiable();
            deviceMock1.Setup(foo => foo.Off()).Verifiable();
            deviceMock1.Setup(foo => foo.Restore()).Verifiable();
            var deivce1 = deviceMock1.Object;

            var deviceMock2 = new Mock <IDevice>();

            deviceMock2.Setup(foo => foo.On()).Verifiable();
            deviceMock2.Setup(foo => foo.Off()).Verifiable();
            deviceMock2.Setup(foo => foo.Restore()).Verifiable();
            var deivce2 = deviceMock2.Object;


            var p1 = new Person();
            var p2 = new Person();

            var zoneMock1 = new Mock <Zone>();

            zoneMock1.Setup(foo => foo.InZone(p1)).Returns(false);
            zoneMock1.Setup(foo => foo.InZone(p2)).Returns(false);
            var zone1 = zoneMock1.Object;

            var zoneMock2 = new Mock <Zone>();

            zoneMock2.Setup(foo => foo.InZone(p1)).Returns(false);
            zoneMock2.Setup(foo => foo.InZone(p2)).Returns(false);
            var zone2 = zoneMock2.Object;

            var cal = new Cal();

            cal.AddScenario(new Scenario
            {
                Devices = new HashSet <IDevice> {
                    deivce1
                },
                Identifier = "mock1",
                Zone       = zone1
            });

            cal.AddScenario(new Scenario
            {
                Devices = new HashSet <IDevice> {
                    deivce2
                },
                Identifier = "mock2",
                Zone       = zone2
            });

            cal.ActOnPeoplePresent(new List <Person> {
                p1, p2
            });

            deviceMock1.Verify(t => t.Restore(), Times.Never);
            deviceMock1.Verify(t => t.Off(), Times.Once);
            deviceMock1.Verify(t => t.On(), Times.Never);

            deviceMock2.Verify(t => t.Restore(), Times.Never);
            deviceMock2.Verify(t => t.Off(), Times.Once);
            deviceMock2.Verify(t => t.On(), Times.Never);
        }