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, });
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); }
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 };
public static void ShouldBe(this ManagedDoorSettings settings, ManagedDoorSettings expected) { settings.AutoCloseInterval.ShouldBe(expected.AutoCloseInterval); }