def test_update_schedules_infeasible_schedule(self): network = ChargingNetwork() network.register_evse(EVSE("PS-001"), 240, 0) network.register_evse(EVSE("PS-004"), 240, 0) network.register_evse(EVSE("PS-003"), 240, 0) network.register_evse(EVSE("PS-002"), 240, 0) network.register_evse(EVSE("PS-006"), 240, 0) curr_dict1 = {"PS-001": 0.25, "PS-002": 0.50, "PS-003": -0.25} current1 = Current(curr_dict1) curr_dict2 = {"PS-006": 0.30, "PS-004": -0.60, "PS-002": 0.50} current2 = Current(curr_dict2) network.add_constraint(current1, 50, name="first_constraint") network.add_constraint(current2, 10) start = Mock(datetime) scheduler = create_autospec(BaseAlgorithm) scheduler.max_recompute = None events = EventQueue(events=[Event(1), Event(2)]) simulator = Simulator(network, scheduler, events, start) bad_schedule = { "PS-001": [200, 0, 160, 0], "PS-004": [0, 0, 0, 0], "PS-003": [0, 0, 0, 0], "PS-002": [0, 0, 26, 0], "PS-006": [0, 0, 0, 40], } with self.assertWarnsRegex( UserWarning, r"Invalid schedule provided at iteration 0. " r"Max violation is 2.9999\d+? A on _const_1 at time index 2.", ): simulator._update_schedules(bad_schedule)
def test_get_last_timestamp(self): events = [Event(i) for i in range(1, 6)] self.events.add_events(events) self.assertEqual(5, self.events.get_last_timestamp()) self.events.add_event(Event(8)) self.assertEqual(8, self.events.get_last_timestamp()) curr_events = self.events.get_current_events(3) self.assertEqual(8, self.events.get_last_timestamp())
def test_get_last_timestamp(self): events = [Event(i) for i in range(1, 6)] self.events.add_events(events) self.assertEqual(5, self.events.get_last_timestamp()) self.events.add_event(Event(8)) self.assertEqual(8, self.events.get_last_timestamp()) # Check that the last timestamp is unaltered from a call to # get_current_events at an earlier timestamp. _ = self.events.get_current_events(3) self.assertEqual(8, self.events.get_last_timestamp())
def setUp(self): start = Mock(datetime) network = ChargingNetwork() evse1 = EVSE("PS-001", max_rate=32) network.register_evse(evse1, 240, 0) evse2 = EVSE("PS-002", max_rate=32) network.register_evse(evse2, 240, 0) evse3 = EVSE("PS-003", max_rate=32) network.register_evse(evse3, 240, 0) self.scheduler = BaseAlgorithm() self.scheduler.max_recompute = None events = EventQueue(events=[Event(1), Event(2)]) self.simulator = Simulator(network, self.scheduler, events, start)
def test_get_current_events(self): events = [Event(i) for i in range(1, 6)] self.events.add_events(events) curr_events = self.events.get_current_events(3) self.assertEqual(len(curr_events), 3) for event, timestamp in zip(curr_events, [1, 2, 3]): self.assertEqual(event.timestamp, timestamp)
def test_type_deprecation_warning(self): self.event = Event(5) with self.assertWarns(DeprecationWarning): self.assertEqual(self.event.type, '')
def setUp(self): self.event = Event(5) self.assertEqual(self.event.event_type, '')
def test_get_current_events(self): events = [Event(i) for i in range(1, 6)] self.events.add_events(events) curr_events = self.events.get_current_events(3) self.assertEqual(len(curr_events), 3)
def test_get_event(self): self.events.add_event(Event(5)) self.assertEqual(len(self.events._queue), 1) e = self.events.get_event() self.assertTrue(self.events.empty()) self.assertEqual(5, e.timestamp)
def test_len(self): events = [Event(i) for i in range(1, 6)] self.events.add_events(events) self.assertEqual(5, len(self.events))
def test_add_events(self): events = [Event(i) for i in range(1, 6)] self.events.add_events(events) self.assertFalse(self.events.empty()) self.assertEqual(5, len(self.events._queue))
def test_add_event(self): self.events.add_event(Event(5)) self.assertFalse(self.events.empty()) self.assertEqual(len(self.events._queue), 1)