def test_num_floors_traveled_up_down(): """should keep track of the number of floors traveled going up then down""" elevator = Elevator(num_floors=5, starting_floor=3) elevator.request_floor(5) elevator.request_floor(1) elevator.travel() nose.assert_equal(elevator.num_floors_traveled, 6)
def test_current_floor_after_travel(): """should set current floor to last visited floor""" elevator = Elevator(num_floors=6, starting_floor=4) elevator.request_floor(5) elevator.request_floor(2) elevator.travel() nose.assert_equal(elevator.current_floor, 2)
def test_visited_floors(): """should register visited floors in order""" elevator = Elevator(num_floors=5, starting_floor=5) elevator.request_floor(4) elevator.request_floor(2) elevator.travel() nose.assert_list_equal(elevator.visited_floors, [4, 2])
def test_duplicate_floor_requests(): """should gracefully ignore duplicate floor requests""" elevator = Elevator(num_floors=5, starting_floor=1) elevator.request_floor(3) elevator.request_floor(3) nose.assert_set_equal(elevator.requested_floors, {3}) elevator.travel() nose.assert_list_equal(elevator.visited_floors, [3])
def test_init_params(): """should store correct initial parameters when elevator is initalized""" elevator = Elevator(num_floors=5, starting_floor=2) nose.assert_equal(elevator.num_floors, 5) nose.assert_equal(elevator.current_floor, 2) nose.assert_set_equal(elevator.requested_floors, set()) nose.assert_list_equal(elevator.visited_floors, []) nose.assert_equal(elevator.num_floors_traveled, 0)
def test_minimize_retrace(): """should minimize the retracing of the elevator's path""" elevator = Elevator(num_floors=5, starting_floor=1) elevator.request_floor(4) elevator.request_floor(5) elevator.request_floor(3) elevator.request_floor(2) elevator.travel() nose.assert_list_equal(elevator.visited_floors, [2, 3, 4, 5])
def __init__(self, simulation_filename, algo_class, elevator_config_filename): with open(elevator_config_filename, 'rb') as f: self.conf = yaml.load(f, Loader=yaml.FullLoader) elevator_conf = self.conf["ELEVATOR"] self.elevator = Elevator(elevator_conf) self.simulation_events = load_simulation_events(simulation_filename) self.max_floor = max( set([a["source_floor"] for a in self.simulation_events] + [a["destination_floor"] for a in self.simulation_events])) self.algo_class = algo_class self.algo = BaseAlgoInterface.get_algo(self.algo_class, elevator_conf, self.max_floor) self.performance_monitor = PerformanceMonitor(self.max_floor) self.current_ts = 0 self.current_location = None self.rider_id_to_dropoff_location_map = {} self.active_riders_pickup_map = {} self.active_riders_dropoff_map = {} self.next_event_index = 0
def main(): elevator = Elevator(num_floors=5, starting_floor=1) elevator.request_floor(5) test(elevator) elevator = Elevator(num_floors=5, starting_floor=1) elevator.request_floor(5) elevator.request_floor(3) elevator.request_floor(4) test(elevator) elevator = Elevator(num_floors=5, starting_floor=2) elevator.request_floor(5) elevator.request_floor(4) elevator.request_floor(1) test(elevator) elevator = Elevator(num_floors=6, starting_floor=1) elevator.request_floor(6) elevator.request_floor(5) elevator.request_floor(1) test(elevator) elevator = Elevator(num_floors=5, starting_floor=3) elevator.request_floor(1) elevator.request_floor(2) elevator.request_floor(4) elevator.request_floor(5) test(elevator) elevator = Elevator(num_floors=5, starting_floor=1) elevator.request_floor(2) elevator.request_floor(3) elevator.request_floor(4) elevator.request_floor(5) test(elevator)
def test_request_floor(): """should register requested floors""" elevator = Elevator(num_floors=5, starting_floor=1) elevator.request_floor(3) elevator.request_floor(5) nose.assert_set_equal(elevator.requested_floors, {3, 5})