コード例 #1
0
 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 + "]");
         }
     }
 }
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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]);
        }
コード例 #5
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();
        }
コード例 #6
0
ファイル: LiftSystemTest.cs プロジェクト: nikbakhts/Lift-Kata
        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));
        }
コード例 #7
0
        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));
        }
コード例 #8
0
        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));
        }
コード例 #9
0
        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));
        }
コード例 #10
0
        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}");
        }
コード例 #11
0
        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));
        }
コード例 #12
0
        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));
        }
コード例 #13
0
        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)));
        }
コード例 #14
0
        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));
        }
コード例 #15
0
        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));
        }
コード例 #16
0
ファイル: LiftSystemTest.cs プロジェクト: nikbakhts/Lift-Kata
        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));
        }
コード例 #17
0
        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));
        }
コード例 #18
0
        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));
        }
コード例 #19
0
        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");
        }
コード例 #20
0
 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);
         }
     }
 }
コード例 #21
0
        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);
        }
コード例 #22
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));
        }