示例#1
0
    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)
示例#2
0
 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())
示例#3
0
 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())
示例#4
0
 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)
示例#5
0
 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)
示例#6
0
 def test_type_deprecation_warning(self):
     self.event = Event(5)
     with self.assertWarns(DeprecationWarning):
         self.assertEqual(self.event.type, '')
示例#7
0
 def setUp(self):
     self.event = Event(5)
     self.assertEqual(self.event.event_type, '')
示例#8
0
 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)
示例#9
0
 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)
示例#10
0
 def test_len(self):
     events = [Event(i) for i in range(1, 6)]
     self.events.add_events(events)
     self.assertEqual(5, len(self.events))
示例#11
0
 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))
示例#12
0
 def test_add_event(self):
     self.events.add_event(Event(5))
     self.assertFalse(self.events.empty())
     self.assertEqual(len(self.events._queue), 1)