Exemplo n.º 1
0
        //Response to service by sending elevator
        public Elevator ServiceRequest(Floor floor)
        {
            Elevator returnElevator = new Elevator();

              foreach (Elevator elevator in elevators)
              {
            if (elevator.Status == Utility.Status_Dormant)
            {
              elevator.CureentFloor = floor.CureentFloor;
              returnElevator = elevator;
              return returnElevator;
            }
              }
              //If all above elevators are busy then add in pending
              foreach (Elevator elevator in elevators)
              {
            if (elevator.Status != Utility.Status_Disabled)
            {
              //all elevators are busy store in pending request;
              if (!returnElevator.PendingRequests.ContainsKey(floor.CureentFloor))
              {
            returnElevator = elevator;
            //add pending request
            returnElevator.PendingRequests.Add(floor.CureentFloor, floor.Direction);
            return returnElevator;
              }
            }
              }

              return returnElevator;
        }
Exemplo n.º 2
0
 public void ControllerConfigureElevatorFloor()
 {
     Floor floor50 = new Floor(50);
       //Get first elevator
       elevator1 = _controller.elevators[0];
       elevator1.CureentFloor = 48;
       floor50.CureentFloor = 50;
       _controller.ConfigureElevatorForFloor(elevator1, floor50);
       //wait for 10 secs = 2 floors 6 seconds + 4 for door open and close
       System.Threading.Thread.Sleep(10500);
       Assert.AreEqual(elevator1.CureentFloor, 50);
 }
Exemplo n.º 3
0
        //send particular elevator to floor request
        public Elevator ConfigureElevatorForFloor(Elevator elevator, Floor floor)
        {
            int floorcount = (elevator.CureentFloor - floor.CureentFloor) * -1;
              int direction = 0;

              if (floor.CureentFloor >= elevator.CureentFloor)
              {
            direction = 1;
              }
              else
              {
            direction = 0;
              }

              elevator.Direction = direction;
              elevator.FloorCount = floorcount;
              this.StartService(elevator);

              return elevator;
        }
Exemplo n.º 4
0
 //Start floor request Service
 public void StartService(Elevator elevator)
 {
     try
       {
     if (elevator.Direction == 1)
     {
       elevator.DestinationFloor = elevator.CureentFloor + elevator.FloorCount;
     }
     else
     {
       elevator.DestinationFloor = elevator.CureentFloor - elevator.FloorCount;
     }
     elevator.StartFloor = elevator.CureentFloor;
     elevator.FloorCount = elevator.FloorCount;
     elevator.StartTime = DateTime.Now;
     elevator.EndTime = getEndTime(elevator.FloorCount, elevator);
     elevator.IsRunning = 1;
     setStatus(elevator);
       }
       catch (Exception ex)
       {
     _errorMessage = ex.Message;
       }
 }
Exemplo n.º 5
0
        //start timer and initialise elevator
        public void StartController()
        {
            elevators[0] = new Elevator();
              elevators[1] = new Elevator();
              elevators[2] = new Elevator();
              elevators[3] = new Elevator();

              if (_timerStatus == false)
              {
            _timer = new Timer(1000);
            _timer.Interval = 1000;
            _timer.Enabled = true;
            _timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
            _timerStatus = true;

            foreach (Elevator elevator in elevators)
            {
              elevator.Status = Utility.Status_Dormant;
              elevator.IsRunning = 0;
            }
              }
        }
Exemplo n.º 6
0
 public void ElevatorCheckDoorClosing()
 {
     //This method request from floor and returns elevator
       elevator1 = _controller.ServiceRequest(floor30);
       //Elevator1 requests: From floor 30, direction up, up 2 floors
       elevator1.CureentFloor = 30;
       elevator1.Direction = 1;
       elevator1.FloorCount = 2;
       _controller.StartService(elevator1);
       //2 floors wait for 6 +2 8 secs for door close
       System.Threading.Thread.Sleep(8500);
       Assert.AreEqual(elevator1.Status, Utility.Status_Door_Closing);
 }
Exemplo n.º 7
0
 public void ElevatorCheckMovingDown1Floor()
 {
     elevator1 = _controller.ServiceRequest(floor30);
       //Elevator1 requests: From floor 70, direction down, down 3 floors
       elevator1.CureentFloor = 70;
       elevator1.Direction = 0;
       elevator1.FloorCount = 3;
       _controller.StartService(elevator1);
       //1 floor wait for 3 secs for status of next floor
       System.Threading.Thread.Sleep(3500);
       Assert.AreEqual(elevator1.CureentFloor, 69);
 }
Exemplo n.º 8
0
        //Set status of elevator
        private void setStatus(Elevator elevator)
        {
            //check time and set floor number
              TimeSpan span = DateTime.Now.Subtract(elevator.StartTime);
              Int32 spanDoors = DateTime.Now.Subtract(elevator.EndTime).Seconds * -1;
              double noOfSeconds = Math.Round(span.Seconds / (double)elevator.SpeedBetweenFloors, 2);
              int FloorCount = (int)noOfSeconds;

              if (elevator.Direction == 1)
              {
            elevator.Status = Utility.Status_Moving_Up;
            elevator.CureentFloor = elevator.StartFloor + FloorCount;
              }
              else
              {
            elevator.Status = Utility.Status_Moving_Down;
            elevator.CureentFloor = elevator.StartFloor - FloorCount;
              }
              if (spanDoors <= 4 && spanDoors > 2)
              {
            elevator.Status = Utility.Status_Door_Opening;
            elevator.CureentFloor = elevator.DestinationFloor;
              }
              else if (spanDoors <= 2)
              {
            elevator.Status = Utility.Status_Door_Closing;
            elevator.CureentFloor = elevator.DestinationFloor;
              }
        }
Exemplo n.º 9
0
 public void TopFloorCheckDownButtonEnabled()
 {
     elevator1 = _controller.ServiceRequest(floor100);
       Assert.AreEqual(floor100.ButtonDown, true);
 }
Exemplo n.º 10
0
        public void OutstandingRequestCheckFloorNo()
        {
            Elevator elevator3 = new Elevator();
              Elevator elevator4 = new Elevator();
              Floor floor10 = new Floor(10);
              Floor floor70 = new Floor(70);

              elevator1 = _controller.ServiceRequest(floor30);
              elevator1.CureentFloor = 30;
              elevator1.Direction = 1;
              elevator1.FloorCount = 2;
              _controller.StartService(elevator1);

              elevator2 = _controller.ServiceRequest(floor80);
              elevator2.CureentFloor = 30;
              elevator2.Direction = 1;
              elevator2.FloorCount = 2;
              _controller.StartService(elevator2);

              elevator3 = _controller.ServiceRequest(floor100);
              elevator3.CureentFloor = 30;
              elevator3.Direction = 1;
              elevator3.FloorCount = 2;
              _controller.StartService(elevator3);

              elevator4 = _controller.ServiceRequest(floor0);
              elevator4.CureentFloor = 30;
              elevator4.Direction = 1;
              elevator4.FloorCount = 2;
              _controller.StartService(elevator4);

              //Fifth request outstanding
              elevator1 = _controller.ServiceRequest(floor70);

              string floorNumber = "";
              string direction;
              //loop through all pending request
              foreach (DictionaryEntry entry in elevator1.PendingRequests)
              {
            floorNumber = entry.Key.ToString();
            direction = entry.Value.ToString();
            if (direction == "1")
            {
              direction = Utility.Status_Moving_Up;
            }
            else
            {
              direction = Utility.Status_Moving_Down;
            }
              }
              Assert.AreEqual(floorNumber, "70");
        }
Exemplo n.º 11
0
        public void OutstandingRequestCheck()
        {
            Elevator elevator3 = new Elevator();
              Elevator elevator4 = new Elevator();
              Floor floor10 = new Floor(10);
              Floor floor70 = new Floor(70);

              elevator1 = _controller.ServiceRequest(floor30);
              elevator1.CureentFloor = 30;
              elevator1.Direction = 1;
              elevator1.FloorCount = 2;
              _controller.StartService(elevator1);

              elevator2 = _controller.ServiceRequest(floor80);
              elevator2.CureentFloor = 30;
              elevator2.Direction = 1;
              elevator2.FloorCount = 2;
              _controller.StartService(elevator2);

              elevator3 = _controller.ServiceRequest(floor100);
              elevator3.CureentFloor = 30;
              elevator3.Direction = 1;
              elevator3.FloorCount = 2;
              _controller.StartService(elevator3);

              elevator4 = _controller.ServiceRequest(floor0);
              elevator4.CureentFloor = 30;
              elevator4.Direction = 1;
              elevator4.FloorCount = 2;
              _controller.StartService(elevator4);

              //Fifth outstanding request
              elevator1 = _controller.ServiceRequest(floor70);

              //total number of outstanding is one
              int pendReqCount = elevator1.PendingRequests.Count;

              Assert.AreEqual(1, pendReqCount);
        }
Exemplo n.º 12
0
 public void FloorRequestReturnElevator()
 {
     //This method request from floor and returns elevator
       elevator1 = _controller.ServiceRequest(floor30);
       Assert.AreEqual(elevator1.CureentFloor, 30);
 }
Exemplo n.º 13
0
 public void Floor30CheckUpDownButtonEnabled()
 {
     elevator1 = _controller.ServiceRequest(floor30);
       bool upButton = floor30.ButtonUp;
       bool downButton = floor30.ButtonDown;
       bool expectedresult = true;
       bool finalResult = false;
       if (upButton && downButton)
       {
     finalResult = true;
       }
       Assert.AreEqual(finalResult, expectedresult);
 }
Exemplo n.º 14
0
 public void ElevatorCheckMovingUp2Floor()
 {
     elevator1 = _controller.ServiceRequest(floor30);
       //Elevator1 requests: From floor 30, direction up, up 3 floors
       elevator1.CureentFloor = 30;
       elevator1.Direction = 1;
       elevator1.FloorCount = 3;
       _controller.StartService(elevator1);
       //2 floors wait for 6 secs for status of 2nd floor
       System.Threading.Thread.Sleep(6500);
       Assert.AreEqual(elevator1.CureentFloor, 32);
 }
Exemplo n.º 15
0
 public void ElevatorCheckMovingUp()
 {
     //This method request from floor and returns elevator
       elevator1 = _controller.ServiceRequest(floor30);
       //Elevator1 requests: From floor 30, direction up, up 2 floors
       elevator1.CureentFloor = 30;
       elevator1.Direction = 1;
       elevator1.FloorCount = 2;
       _controller.StartService(elevator1);
       Assert.AreEqual(elevator1.Status, Utility.Status_Moving_Up);
 }
Exemplo n.º 16
0
 //get expected end time based on speed between the floors,  door open time and door close time
 private DateTime getEndTime(Int32 floorcount, Elevator elevator)
 {
     DateTime returnDatetime;
       returnDatetime = DateTime.Now.AddSeconds((floorcount * elevator.SpeedBetweenFloors) + elevator.DoorOpenTime + elevator.DoorCloseTime);
       return returnDatetime;
 }
Exemplo n.º 17
0
 //Process request for each timer tick
 private void ProcessRequest(Elevator elevator)
 {
     if (elevator.EndTime > DateTime.Now && elevator.IsRunning == 1)
       {
     setStatus(elevator);
       }
       else
       {
     elevator.Status = Utility.Status_Dormant;
     elevator.CureentFloor = elevator.DestinationFloor;
     elevator.IsRunning = 0;
       }
 }
Exemplo n.º 18
0
 public void TopFloorCheckUpButtonDisabled()
 {
     elevator1 = _controller.ServiceRequest(floor100);
       Assert.AreEqual(floor100.ButtonUp, false);
 }
Exemplo n.º 19
0
 public void BottomFloorCheckDownButtonDisabled()
 {
     elevator1 = _controller.ServiceRequest(floor0);
       Assert.AreEqual(floor0.ButtonDown, false);
 }
Exemplo n.º 20
0
 public void BottomFloorCheckUpButtonEnabled()
 {
     elevator1 = _controller.ServiceRequest(floor0);
       Assert.AreEqual(floor0.ButtonUp, true);
 }
Exemplo n.º 21
0
 //enable disable elevator by chaing the new status
 //new status Status_Dormant equal to enable.
 //new status Status_Disabled equal to disabled.
 public void SetElevatorStatus(Elevator elevator, string newStatus)
 {
     elevator.Status = newStatus;
 }
Exemplo n.º 22
0
 public void ElevatorCheckMovingDown()
 {
     //This method request from floor and returns elevator
       elevator2 = _controller.ServiceRequest(floor80);
       //Elevator2 requests: From floor 30, direction down, down 5 floors
       elevator2.CureentFloor = 80;
       elevator2.Direction = 0;
       elevator2.FloorCount = 5;
       _controller.StartService(elevator2);
       Assert.AreEqual(elevator2.Status, Utility.Status_Moving_Down);
 }