private string PrintLift(Lift lift, int floor) { if (lift.DoorsOpen) { if (lift.HasRequestForFloor(floor)) { return("]*" + lift.Id + "["); } else { return(" ]" + lift.Id + "["); } } else { if (lift.HasRequestForFloor(floor)) { return("[*" + lift.Id + "]"); } else { return(" [" + lift.Id + "]"); } } }
public void SampleLiftSystem() { var liftA = new Lift("A", 3, new List <int>() { 0 }); var liftB = new Lift("B", 2); var liftC = new Lift("C", 2, true); var liftD = new Lift("D", 0, new List <int>() { 0 }, false); var liftSystem = new LiftSystem( new List <int>() { 0, 1, 2, 3 }, new List <Lift>() { liftA, liftB, liftC, liftD }, new List <Call>() { new Call(1, Direction.Down) } ); Approvals.Verify(new LiftSystemPrinter().Print(liftSystem)); }
public void IfMoreCallsThanLifts_LastCallsGetProcessedEventually() { var liftA = new Lift("A", 0, new List <int> { }, false); var liftB = new Lift("B", 1, new List <int> { }, false); var callList = new List <Call> { new Call(1, Direction.Down), new Call(3, Direction.Down), new Call(2, Direction.Up), }; var lifts = new LiftSystem(new List <int>() { 0, 1, 2, 3 }, new List <Lift> { liftA, liftB }, callList); lifts.Tick(); lifts.Tick(); Approvals.Verify(new LiftSystemPrinter().Print(lifts)); }
public void Tick() { if (((Calls == null) || Calls.Count < 1)) { return; } Lift elevator = new Lift(Lifts[0].Id, Lifts[0].Floor, doorsOpen: true); Lifts.Remove(Lifts[0]); Lifts.Add(elevator); Calls.Remove(Calls[0]); }
// TODO: enable this test and finish writing it // [Fact] public void Something() { var liftA = new Lift("A", 0); var lifts = new LiftSystem(new List <int>() { 0, 1 }, new List <Lift> { liftA }, new List <Call>()); lifts.Tick(); }
public void IfNoCallsNoRequest_DoNothing() { var liftA = new Lift("A", 0); var lifts = new LiftSystem(new List <int>() { 0, 1 }, new List <Lift> { liftA }, new List <Call>()); lifts.Tick(); Approvals.Verify(new LiftSystemPrinter().Print(lifts)); }
public void IfNoCallOrRequest_NoChangeToState() { var liftA = new Lift("A", 0); var lifts = new LiftSystem(new List <int>() { 0, 1, 2, 3 }, new List <Lift> { liftA }, new List <Call>()); lifts.Tick(); Approvals.Verify(new LiftSystemPrinter().Print(lifts)); }
public void IfCurrentFloorIsRequestedAndDoorsClosed_OpensDoors() { var liftA = new Lift("A", 0, new List <int> { 0 }, false); var lifts = new LiftSystem(new List <int>() { 0, 1, 2, 3 }, new List <Lift> { liftA }, new List <Call>()); lifts.Tick(); Approvals.Verify(new LiftSystemPrinter().Print(lifts)); }
public void IfAnotherFloorIsRequestedAndDoorsOpen_CloseDoors() { var liftA = new Lift("A", 0, new List <int> { 1 }, true); var lifts = new LiftSystem(new List <int>() { 0, 1, 2, 3 }, new List <Lift> { liftA }, new List <Call>()); lifts.Tick(); Approvals.Verify(new LiftSystemPrinter().Print(lifts)); }
static void Main(string[] args) { LiftConfig liftConfig = new LiftConfig(); liftConfig.MaxFloors = 11; liftConfig.Floors = GetFloors(); liftConfig.Capacity = 5; Lift lift = new Lift(liftConfig); lift.Move(0); var floorHistory = string.Join("-", lift.GetFloorHistory()); Console.WriteLine($"The visited floors in order: {floorHistory}"); }
public void IfTwoRequests_GoToClosestFloor() { var liftA = new Lift("A", 1, new List <int> { 3, 2 }, false); var lifts = new LiftSystem(new List <int>() { 0, 1, 2, 3 }, new List <Lift> { liftA }, new List <Call> { }); lifts.Tick(); Approvals.Verify(new LiftSystemPrinter().Print(lifts)); }
public void IfCurrentFloorHasACallAndDoorsClosed_OpensDoorsAndClearsCall() { var liftA = new Lift("A", 0, new List <int> { }, false); var lifts = new LiftSystem(new List <int>() { 0, 1, 2, 3 }, new List <Lift> { liftA }, new List <Call> { new Call(0, Direction.Up) }); lifts.Tick(); Approvals.Verify(new LiftSystemPrinter().Print(lifts)); }
public void Passengers_NotArrivedAtDestination_False() { // Arrange var floorList = GetFloors(); LiftConfig liftConfig = new LiftConfig(); liftConfig.MaxFloors = 11; liftConfig.Floors = GetFloors(); liftConfig.Capacity = 5; Lift.Lift lift = new Lift.Lift(liftConfig); // Act lift.Move(0); // Assert Assert.IsFalse(lift.GetFloors().Any(f => f.Passengers.Any(p => p.CurrentFloor != p.Destination))); }
public void LiftSystemAcceptsCalls() { var liftA = new Lift("A", 0, new List <int> { }, false); var lifts = new LiftSystem(new List <int>() { 0, 1, 2, 3 }, new List <Lift> { liftA }, new List <Call>()); lifts.Call(new List <Call> { new Call(3, Direction.Down) }); Approvals.Verify(new LiftSystemPrinter().Print(lifts)); }
public void IfThereIsCallFromAnotherFloorAndDoorsClosed_MoveLift() { var liftA = new Lift("A", 0, new List <int> { }, false); var lifts = new LiftSystem(new List <int>() { 0, 1, 2, 3 }, new List <Lift> { liftA }, new List <Call> { new Call(1, Direction.Up) }); lifts.Tick(); Approvals.Verify(new LiftSystemPrinter().Print(lifts)); }
public void IfCallFromLowerFloor_AndDoorsClosed_MoveDown() { var liftA = new Lift("A", 1); var newCall = new Call(0, Direction.Up); var callList = new List <Call>(); callList.Add(newCall); var lifts = new LiftSystem(new List <int>() { 0, 1 }, new List <Lift> { liftA }, callList); lifts.Tick(); Approvals.Verify(new LiftSystemPrinter().Print(lifts)); }
public void TwoLiftsInSystem_IfThereIsCall_MoveTheFirstLiftInTheList() { var liftA = new Lift("A", 3, new List <int> { }, false); var liftB = new Lift("B", 0, new List <int> { }, false); var lifts = new LiftSystem(new List <int>() { 0, 1, 2, 3 }, new List <Lift> { liftA, liftB }, new List <Call> { new Call(1, Direction.Up) }); lifts.Tick(); Approvals.Verify(new LiftSystemPrinter().Print(lifts)); }
public void OneLiftNoDoors() { var liftA = new Lift("A", 0, new List <int>() { 2, 3 }); var liftSystem = new LiftSystem( new List <int>() { 0, 1, 2, 3 }, new List <Lift>() { liftA }, new List <Call>()); Approvals.Verify(new LiftSystemPrinter().PrintWithoutDoors(liftSystem)); }
public void FloorHistory_Matches_False() { // Arrange var floorList = GetFloors(); LiftConfig liftConfig = new LiftConfig(); liftConfig.MaxFloors = 11; liftConfig.Floors = GetFloors(); liftConfig.Capacity = 5; Lift.Lift lift = new Lift.Lift(liftConfig); // Act lift.Move(0); var floorHistory = string.Join("-", lift.GetFloorHistory()); // Assert Assert.IsTrue(floorHistory != "1-0-5-6-7-8-7-6-5-4-3-2-4-0-10-9-4-3-2-1-9-10-2"); }
public string PrintLiftForFloor(Lift lift, int floor) { if (lift.Floor == floor) { return(PrintLift(lift, floor)); } else { String padding = LiftSystemPrinter.GetWhitespace(lift.Id.Length); if (lift.HasRequestForFloor(floor)) { return(" *" + padding); } else { return(" " + padding); } } }
public void Mechanics_OverrodeDiraction_True() { // Arrange var floorList = GetFloors(); LiftConfig liftConfig = new LiftConfig(); liftConfig.MaxFloors = 11; liftConfig.Floors = GetFloors(); liftConfig.Capacity = 5; Lift.Lift lift = new Lift.Lift(liftConfig); // Act lift.Move(0); // Assert var history = lift.GetFloorHistory(); Assert.IsTrue(history[0] > history[1]); Assert.IsTrue(history[1] == 0); }
public void LargeLiftSystem() { var liftA = new Lift("A", 3, new List <int>() { 3, 5, 7 }, false); var liftB = new Lift("B", 2, true); var liftC = new Lift("C", -2, new List <int>() { -2, 0 }, false); var liftD = new Lift("D", 8, new List <int>() { 0, -1, -2 }, true); var liftSVC = new Lift("SVC", 10, new List <int>() { 0, -1 }, false); var liftF = new Lift("F", 8, false); LiftSystem liftSystem = new LiftSystem( new List <int>() { -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, new List <Lift>() { liftA, liftB, liftC, liftD, liftSVC, liftF }, new List <Call>() { new Call(1, Direction.Down), new Call(6, Direction.Down), new Call(5, Direction.Up), new Call(5, Direction.Down), new Call(-1, Direction.Up) }); Approvals.Verify(new LiftSystemPrinter().Print(liftSystem)); }