// here is the request from people that want to go up to a floor X public Elevator AssignElevator(int RequestedFloor) { Thread.Sleep(200); Console.WriteLine("Requested floor : " + RequestedFloor); Thread.Sleep(200); Console.WriteLine("Call Button Light On"); Column column = battery.Find_best_column(RequestedFloor); user_direction = "up"; var FloorNumber = 1; Elevator elevator = column.Find_Assign_elevator(RequestedFloor, FloorNumber, user_direction); elevator.Send_request(FloorNumber, column.column_no); elevator.Send_request(RequestedFloor, column.column_no); return(elevator); }
public static void Main(string[] args) { //// Initialization BatteryController controller = new BatteryController(66, 4, 5); //// Columns Variables var ColumnOne = controller.battery.columnsList[0]; var ColumnTwo = controller.battery.columnsList[1]; var ColumnThree = controller.battery.columnsList[2]; var ColumnFour = controller.battery.columnsList[3]; // while (true) { Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); Console.WriteLine(""); Console.WriteLine(" ---Senarios Testing--- "); Console.WriteLine(""); Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); Console.WriteLine(""); Console.WriteLine("Want you test a scenario? y/n (yes/No)"); string continueTesting = Console.ReadLine(); while (continueTesting != "y" && continueTesting != "n") { Console.WriteLine("Please choose y for Yes or n for No."); continueTesting = Console.ReadLine(); } if (continueTesting == "n") { Console.WriteLine("You choose to leave the test!"); Console.WriteLine("The test is done."); Console.WriteLine("Thank you!"); break; } Console.WriteLine(""); Console.WriteLine("Please choose a scenario: 1, 2, 3 or 4"); string scenario = Console.ReadLine(); while (scenario != "1" && scenario != "2" && scenario != "3" && scenario != "4") { Console.WriteLine("Please choose a scenario: 1, 2, 3 or 4"); scenario = Console.ReadLine(); } //--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if (scenario == "1") { Console.WriteLine(""); Console.WriteLine("---Testing scenario 1 "); Console.WriteLine(""); Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); // // Scenario 1: // // With second column (or column B) serving floors from 2 to 20, // // with elevator B1 at 20th floor going to 5th, B2 at 3rd floor going to 15th, // // B3 at 13th floor going to 1st, B4 at 15th floor going to 2nd, // // and B5 at 6th floor going to 1st, someone is at 1st floor and // // requests the 20th floor, elevator B5 is expected to be sent //Elevator # 1 // with elevator B1 at 20th floor going to 5th ColumnTwo.elevatorsList[0].ElevCurrentFloor = 20; ColumnTwo.elevatorsList[0].elevDirection = "Up"; ColumnTwo.elevatorsList[0].status = "Moving"; ColumnTwo.elevatorsList[0].elevFloorsList.Add(5); //Elevator # 2 // B2 at 3rd floor going to 15th, ColumnTwo.elevatorsList[1].ElevCurrentFloor = 3; ColumnTwo.elevatorsList[1].elevDirection = "Up"; ColumnTwo.elevatorsList[1].status = "Moving"; ColumnTwo.elevatorsList[1].elevFloorsList.Add(15); //Elevator # 3 // B3 at 13th floor going to 1st, ColumnTwo.elevatorsList[2].ElevCurrentFloor = 13; ColumnTwo.elevatorsList[2].elevDirection = "Down"; ColumnTwo.elevatorsList[2].status = "Moving"; ColumnTwo.elevatorsList[2].elevFloorsList.Add(1); //Elevator # 4 // B4 at 15th floor going to 2nd ColumnTwo.elevatorsList[3].ElevCurrentFloor = 15; ColumnTwo.elevatorsList[3].elevDirection = "Down"; ColumnTwo.elevatorsList[3].status = "Moving"; ColumnTwo.elevatorsList[3].elevFloorsList.Add(2); //Elevator # 5 // B5 at 6th floor going to 1st ColumnTwo.elevatorsList[4].ElevCurrentFloor = 6; ColumnTwo.elevatorsList[4].elevDirection = "Down"; ColumnTwo.elevatorsList[4].status = "Moving"; ColumnTwo.elevatorsList[4].elevFloorsList.Add(1); // someone is at 1st floor and // requests the 20th floor, elevator B5 is expected to be sent //Request: controller.AssignElevator_ToFloors(20); Console.WriteLine(""); Console.WriteLine("---Test scenario 1 : Ok++"); Console.WriteLine(""); Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ } else if (scenario == "2") { Console.WriteLine(""); Console.WriteLine("---Testing scenario 2 "); Console.WriteLine(""); Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); // // Scenario # 2: // //With third column (or column C) serving floors from 21 to 40, // // with elevator C1 at 1st floor going to 21th, C2 at 23st floor going to 28th, // //C3 at 33rd floor going to 1st, C4 at 40th floor going to 24th, // //and C5 at 39nd floor going to 1st, someone is at 1st floor // //and requests the 36th floor, elevator C1 is expected to be sent //Elevator # 1 // C1 at 1st floor going to 21th ColumnThree.elevatorsList[0].ElevCurrentFloor = 1; ColumnThree.elevatorsList[0].elevDirection = "Up"; ColumnThree.elevatorsList[0].status = "Stopped"; ColumnThree.elevatorsList[0].elevFloorsList.Add(21); //Elevator # 2 // C2 at 23st floor going to 28th, ColumnThree.elevatorsList[1].ElevCurrentFloor = 23; ColumnThree.elevatorsList[1].elevDirection = "Up"; ColumnThree.elevatorsList[1].status = "Moving"; ColumnThree.elevatorsList[1].elevFloorsList.Add(28); //Elevator # 3 // C3 at 33rd floor going to 1st, ColumnThree.elevatorsList[2].ElevCurrentFloor = 33; ColumnThree.elevatorsList[2].elevDirection = "Down"; ColumnThree.elevatorsList[2].status = "Moving"; ColumnThree.elevatorsList[2].elevFloorsList.Add(1); //Elevator # 4 // C4 at 40th floor going to 24th, ColumnThree.elevatorsList[3].ElevCurrentFloor = 40; ColumnThree.elevatorsList[3].elevDirection = "Down"; ColumnThree.elevatorsList[3].status = "Moving"; ColumnThree.elevatorsList[3].elevFloorsList.Add(24); //Elevator # 5 // and C5 at 39nd floor going to 1st ColumnThree.elevatorsList[4].ElevCurrentFloor = 39; ColumnThree.elevatorsList[4].elevDirection = "Down"; ColumnThree.elevatorsList[4].status = "Moving"; ColumnThree.elevatorsList[4].elevFloorsList.Add(1); //someone is at 1st floor // and requests the 36th floor, elevator C1 is expected to be sent // Request controller.AssignElevator_ToFloors(36); Console.WriteLine(""); Console.WriteLine("---Test scenario 2 : Ok++"); Console.WriteLine(""); Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ } else if (scenario == "3") { Console.WriteLine(""); Console.WriteLine("---Testing scenario 3 "); Console.WriteLine(""); Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); // //Scénario 3: // //With fourth column (or column D) serving floors from 41 to 60, // //with elevator D1 at 58th floor going to 1st, D2 at 50th floor going to 60th, // //D3 at 46th floor going to 58th, D4 at 1st floor going to 54th, // //and D5 at 60th floor going to 1st, someone is at 54th floor and requests the 1st floor, // //elevator D1 is expected to pick him up //Elevator # 1 //D1 at floor 58 ColumnFour.elevatorsList[0].ElevCurrentFloor = 58; ColumnFour.elevatorsList[0].elevDirection = "Down"; ColumnFour.elevatorsList[0].status = "Moving"; ColumnFour.elevatorsList[0].elevFloorsList.Add(1); //Elvator # 2 //D2 at 50th floor ColumnFour.elevatorsList[1].ElevCurrentFloor = 50; ColumnFour.elevatorsList[1].elevDirection = "Up"; ColumnFour.elevatorsList[1].status = "Moving"; ColumnFour.elevatorsList[1].elevFloorsList.Add(60); //Elevator # 3 //D3 at 46th ColumnFour.elevatorsList[2].ElevCurrentFloor = 46; ColumnFour.elevatorsList[2].elevDirection = "Up"; ColumnFour.elevatorsList[2].status = "Moving"; ColumnFour.elevatorsList[2].elevFloorsList.Add(58); //Elevator # 4 //D4 at 1st floor going to 54th ColumnFour.elevatorsList[3].ElevCurrentFloor = 1; ColumnFour.elevatorsList[3].elevDirection = "Up"; ColumnFour.elevatorsList[3].status = "Moving"; ColumnFour.elevatorsList[3].elevFloorsList.Add(54); //Elevator # 5 //D5 at 60th floor going to 1st ColumnFour.elevatorsList[4].ElevCurrentFloor = 60; ColumnFour.elevatorsList[4].elevDirection = "Down"; ColumnFour.elevatorsList[4].status = "Moving"; ColumnFour.elevatorsList[4].elevFloorsList.Add(1); // someone is at 54th floor and requests the 1st floor, // elevator D1 is expected to pick him up //Request Elevator elevator = controller.RequestElevator_ToGround(54, 1); Console.WriteLine(""); Console.WriteLine("---Test scenario 3 : Ok++"); Console.WriteLine(""); Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); //-------------------------------------------------------------------------------------------------- } else if (scenario == "4") { Console.WriteLine(""); Console.WriteLine("---Testing scenario 4 "); Console.WriteLine(""); Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); // Scenario 4: // With first column (or Column A) serving the basements B1 to B6, // with elevator A1 idle at B4, A2 idle at 1st floor, A3 at B3 and going to B5, // A4 at B6 and going to 1st floor, and A5 at B1 going to B6, // someone is at B3 and requests the 1st floor. // Elevator A4 is expected to be sent. // For the test: // B6 = -6, B5 = -5 ... , B1 = -1 and 0 the first floor. //Elevator # 1 //A1 idle at B4 = -4 ColumnOne.elevatorsList[0].ElevCurrentFloor = -4; ColumnOne.elevatorsList[0].elevDirection = " "; ColumnOne.elevatorsList[0].status = "Idle"; ColumnOne.elevatorsList[0].elevFloorsList.Add(-4); //Elevator # 2 //A2 idle at 1st floor, ColumnOne.elevatorsList[1].ElevCurrentFloor = 0; ColumnOne.elevatorsList[1].elevDirection = " "; ColumnOne.elevatorsList[1].status = "Idle"; ColumnOne.elevatorsList[1].elevFloorsList.Add(0); //Elevator # 3 //A3 at B3 = -3 and going to B5 = -5, ColumnOne.elevatorsList[2].ElevCurrentFloor = -3; ColumnOne.elevatorsList[2].elevDirection = "Up"; ColumnOne.elevatorsList[2].status = "Moving"; ColumnOne.elevatorsList[2].elevFloorsList.Add(-5); //Elevator # 4 //A4 at B6 = -6 and going to 1st floor ColumnOne.elevatorsList[3].ElevCurrentFloor = -6; ColumnOne.elevatorsList[3].elevDirection = "Up"; ColumnOne.elevatorsList[3].status = "Moving"; ColumnOne.elevatorsList[3].elevFloorsList.Add(0); //Elevator # 5 //and A5 at B1 = -1 going to B6 = -6, ColumnOne.elevatorsList[3].ElevCurrentFloor = -1; ColumnOne.elevatorsList[3].elevDirection = "Down"; ColumnOne.elevatorsList[3].status = "Moving"; ColumnOne.elevatorsList[3].elevFloorsList.Add(-5); // someone is at B3 = -3 and requests the 1st floor. // Elevator A4 is expected to be sent. Elevator elevator = controller.RequestElevator_upToGround(-3, 0); //controller.AssignElevator_ToBasements(1); Console.WriteLine(""); Console.WriteLine("---Test scenario 1 : Ending"); Console.WriteLine(""); Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"); } } }
public static void Main(string[] args) { ElevatorController controller = new ElevatorController(66, 4, 5, "stop"); // Test // Column A controller.battery.column_list[0].eleList[0].currentFloor = 3; controller.battery.column_list[0].eleList[0].Direction = "stop"; controller.battery.column_list[0].eleList[0].status = "idle"; controller.battery.column_list[0].eleList[0].floorList.Add(3); controller.battery.column_list[0].eleList[1].currentFloor = 7; controller.battery.column_list[0].eleList[1].Direction = "stop"; controller.battery.column_list[0].eleList[1].status = "idle"; controller.battery.column_list[0].eleList[1].floorList.Add(7); controller.battery.column_list[0].eleList[2].currentFloor = 4; controller.battery.column_list[0].eleList[2].Direction = "down"; controller.battery.column_list[0].eleList[2].status = "moving"; controller.battery.column_list[0].eleList[2].floorList.Add(2); controller.battery.column_list[0].eleList[3].currentFloor = 1; controller.battery.column_list[0].eleList[3].Direction = "up"; controller.battery.column_list[0].eleList[3].status = "moving"; controller.battery.column_list[0].eleList[3].floorList.Add(7); controller.battery.column_list[0].eleList[4].currentFloor = 6; controller.battery.column_list[0].eleList[4].Direction = "down"; controller.battery.column_list[0].eleList[4].status = "moving"; controller.battery.column_list[0].eleList[4].floorList.Add(1); // controller.assignElevator(1); Elevator elevator = controller.RequestElevator(4, 7); // Column B // controller.battery.column_list[1].eleList[0].currentFloor = 25; // controller.battery.column_list[1].eleList[0].Direction = "down"; // controller.battery.column_list[1].eleList[0].status = "moving"; // controller.battery.column_list[1].eleList[0].floorList.Add(12); // controller.battery.column_list[1].eleList[1].currentFloor = 10; // controller.battery.column_list[1].eleList[1].Direction = "up"; // controller.battery.column_list[1].eleList[1].status = "moving"; // controller.battery.column_list[1].eleList[1].floorList.Add(13); // controller.battery.column_list[1].eleList[2].currentFloor = 20; // controller.battery.column_list[1].eleList[2].Direction = "down"; // controller.battery.column_list[1].eleList[2].status = "moving"; // controller.battery.column_list[1].eleList[2].floorList.Add(7); // controller.battery.column_list[1].eleList[3].currentFloor = 22; // controller.battery.column_list[1].eleList[3].Direction = "down"; // controller.battery.column_list[1].eleList[3].status = "moving"; // controller.battery.column_list[1].eleList[3].floorList.Add(9); // controller.battery.column_list[1].eleList[4].currentFloor = 13; // controller.battery.column_list[1].eleList[4].Direction = "down"; // controller.battery.column_list[1].eleList[4].status = "moving"; // controller.battery.column_list[1].eleList[4].floorList.Add(7); // controller.assignElevator(27); // //Elevator elevator = controller.RequestElevator(7, 27); // Column C // controller.battery.column_list[2].eleList[0].currentFloor = 7; // controller.battery.column_list[2].eleList[0].Direction = "up"; // controller.battery.column_list[2].eleList[0].status = "moving"; // controller.battery.column_list[2].eleList[0].floorList.Add(28); // controller.battery.column_list[2].eleList[1].currentFloor = 30; // controller.battery.column_list[2].eleList[1].Direction = "up"; // controller.battery.column_list[2].eleList[1].status = "moving"; // controller.battery.column_list[2].eleList[1].floorList.Add(35); // controller.battery.column_list[2].eleList[2].currentFloor = 47; // controller.battery.column_list[2].eleList[2].Direction = "down"; // controller.battery.column_list[2].eleList[2].status = "moving"; // controller.battery.column_list[2].eleList[2].floorList.Add(31); // controller.battery.column_list[2].eleList[3].currentFloor = 46; // controller.battery.column_list[2].eleList[3].Direction = "down"; // controller.battery.column_list[2].eleList[3].status = "moving"; // controller.battery.column_list[2].eleList[3].floorList.Add(7); // controller.battery.column_list[2].eleList[4].currentFloor = 47; // controller.battery.column_list[2].eleList[4].Direction = "down"; // controller.battery.column_list[2].eleList[4].status = "moving"; // controller.battery.column_list[2].eleList[4].floorList.Add(31); // controller.assignElevator(43); // // Elevator elevator = controller.RequestElevator(7, 43); // Column D // controller.battery.column_list[3].eleList[0].currentFloor = 64; // controller.battery.column_list[3].eleList[0].Direction = "down"; // controller.battery.column_list[3].eleList[0].status = "moving"; // controller.battery.column_list[3].eleList[0].floorList.Add(7); // controller.battery.column_list[3].eleList[1].currentFloor = 57; // controller.battery.column_list[3].eleList[1].Direction = "up"; // controller.battery.column_list[3].eleList[1].status = "moving"; // controller.battery.column_list[3].eleList[1].floorList.Add(66); // controller.battery.column_list[3].eleList[2].currentFloor = 53; // controller.battery.column_list[3].eleList[2].Direction = "up"; // controller.battery.column_list[3].eleList[2].status = "moving"; // controller.battery.column_list[3].eleList[2].floorList.Add(64); // controller.battery.column_list[3].eleList[3].currentFloor = 7; // controller.battery.column_list[3].eleList[3].Direction = "up"; // controller.battery.column_list[3].eleList[3].status = "moving"; // controller.battery.column_list[3].eleList[3].floorList.Add(60); // controller.battery.column_list[3].eleList[4].currentFloor = 66; // controller.battery.column_list[3].eleList[4].Direction = "down"; // controller.battery.column_list[3].eleList[4].status = "moving"; // controller.battery.column_list[3].eleList[4].floorList.Add(7); // // controller.assignElevator(54); // Elevator elevator = controller.RequestElevator(54, 7); }