public void MakeManageDoorsOperation_DoorNeedsClosed_ClosesDoor(int doorCount, DoorStatus doorStatus, int autoCloseIntervalMilliseconds)
        {
            var testContext = new TestContext();

            var autoCloseInterval = TimeSpan.FromMilliseconds(autoCloseIntervalMilliseconds);
            var settings          = new ManagedDoorSettings()
            {
                AutoCloseInterval = autoCloseInterval
            };

            var mockDoors = Enumerable.Repeat(0, doorCount)
                            .Select(x => testContext.MakeFakeDoor(doorStatus))
                            .ToArray();

            foreach (var mockDoor in mockDoors)
            {
                testContext.Uut.AddDoor(mockDoor.Object, settings);
            }

            testContext.Now += TimeSpan.FromMilliseconds(autoCloseIntervalMilliseconds + 1);

            testContext.Uut.MakeManageDoorsOperation()
            .ShouldRunToCompletion();

            foreach (var mockDoor in mockDoors)
            {
                mockDoor.ShouldHaveReceivedSet(x => x.Enabled = true);
                mockDoor.ShouldHaveReceived(x => x.CloseDoor());
            }
        }
        public void AddDoor_Always_AddsToManagedDoors(int doorCount, int autoCloseIntervalMilliseconds)
        {
            var testContext = new TestContext();

            var autoCloseInterval = TimeSpan.FromMilliseconds(autoCloseIntervalMilliseconds);
            var settings          = new ManagedDoorSettings()
            {
                AutoCloseInterval = autoCloseInterval
            };

            var mockDoors = Enumerable.Repeat(0, doorCount)
                            .Select(x => testContext.MakeFakeDoor(DoorStatus.Closed))
                            .ToArray();

            foreach (var mockDoor in mockDoors)
            {
                testContext.Uut.AddDoor(mockDoor.Object, settings);
            }

            foreach (var mockDoor in mockDoors)
            {
                testContext.Uut.ManagedDoors.ShouldContain(managedDoor =>
                                                           ReferenceEquals(managedDoor.Door, mockDoor.Object) &&
                                                           (managedDoor.Settings.AutoCloseInterval == autoCloseInterval));
            }
        }
 public void AddDoor(IMyDoor door, ManagedDoorSettings settings)
 => _managedDoors.Add(new ManagedDoor()
 {
     Door       = door,
     Settings   = settings,
     LastStatus = door.Status,
     CloseAfter = _dateTimeProvider.Now + settings.AutoCloseInterval,
 });
Ejemplo n.º 4
0
        public void Settings_Always_SavesValue(int autoCloseIntervalMilliseconds)
        {
            var testContext = new TestContext();

            var settings = new ManagedDoorSettings()
            {
                AutoCloseInterval = TimeSpan.FromMilliseconds(autoCloseIntervalMilliseconds)
            };

            testContext.Uut.Settings = settings;

            testContext.Uut.Settings.ShouldBe(settings);
        }
Ejemplo n.º 5
0
        public void OnCompleted_Always_DoesNothing(int autoCloseIntervalMilliseconds)
        {
            var testContext = new TestContext();

            var settings = new ManagedDoorSettings()
            {
                AutoCloseInterval = TimeSpan.FromMilliseconds(autoCloseIntervalMilliseconds)
            };

            testContext.Uut.Settings = settings;

            testContext.Uut.OnCompleted();

            testContext.Uut.Settings.ShouldBe(settings);
        }
 public void OnStarting()
 => _settings = new ManagedDoorSettings()
 {
     AutoCloseInterval = _doorManagerSettingsProvider.Settings.AutoCloseInterval
 };
Ejemplo n.º 7
0
 public static void ShouldBe(this ManagedDoorSettings settings, ManagedDoorSettings expected)
 {
     settings.AutoCloseInterval.ShouldBe(expected.AutoCloseInterval);
 }