Exemple #1
0
    def _unplug_test_setup_helper(self, real_session_id: str) -> EVSE:
        evse = EVSE("PS-001")
        ev = create_autospec(EV)
        ev.station_id = "PS-001"
        ev.session_id = real_session_id
        evse.plugin(ev)

        self.network.register_evse(evse, 240, 0)
        return evse
Exemple #2
0
    def test_plugin_station_exists(self):
        evse = EVSE("PS-001")
        evse.plugin = Mock(evse.plugin)
        self.network.register_evse(evse, 240, 0)
        ev = create_autospec(EV)

        self.network.plugin(ev, "PS-001")
        evse.plugin.assert_called_once()
Exemple #3
0
 def test_plugin_station_exists(self) -> None:
     evse = EVSE("PS-001")
     evse.plugin = Mock(evse.plugin)
     self.network.register_evse(evse, 240, 0)
     ev = create_autospec(EV)
     ev.station_id = "PS-001"
     self.network.plugin(ev)
     # noinspection PyUnresolvedReferences
     evse.plugin.assert_called_once()
Exemple #4
0
class TestEVSE(TestCase):
    def setUp(self):
        self.evse = EVSE('0001')

    def test_allowable_pilot_signals(self):
        self.assertEqual(self.evse.allowable_pilot_signals, [0, float('inf')])

    def test_plugin_unoccupied(self):
        ev = create_autospec(EV)
        self.evse.plugin(ev)
        self.assertEqual(self.evse.ev, ev)

    def test_plugin_occupied(self):
        ev = create_autospec(EV)
        ev2 = create_autospec(EV)
        self.evse.plugin(ev)
        self.assertEqual(self.evse.ev, ev)
        with self.assertRaises(StationOccupiedError):
            self.evse.plugin(ev2)

    def test_unplug_occupied(self):
        ev = create_autospec(EV)
        self.evse.plugin(ev)
        self.evse.unplug()
        self.assertIsNone(self.evse.ev)

    def test_unplug_unoccupied(self):
        self.evse.unplug()
        self.assertIsNone(self.evse.ev)

    def test_set_pilot_has_ev_valid_rate(self):
        ev = create_autospec(EV)
        self.evse.plugin(ev)
        self.evse.set_pilot(16, 240, 5)
        self.assertEqual(self.evse.current_pilot, 16)
        self.evse.ev.charge.assert_called_once()

    def test_set_pilot_has_ev_negative_rate(self):
        ev = create_autospec(EV)
        self.evse.plugin(ev)
        with self.assertRaises(InvalidRateError):
            self.evse.set_pilot(-1, 240, 5)

    def test_set_pilot_no_ev_negative_rate(self):
        with self.assertRaises(InvalidRateError):
            self.evse.set_pilot(-1, 240, 5)
Exemple #5
0
class TestEVSE(TestCase):
    def setUp(self):
        self.max_rate = 32
        self.mid_rate = 16
        self.atol = 1e-3
        self.evse = EVSE("0001", max_rate=self.max_rate)

    def test_allowable_pilot_signals_default(self):
        inf_evse = EVSE("0001")
        self.assertEqual(inf_evse.allowable_pilot_signals, [0, float("inf")])

    def test_allowable_pilot_signals(self):
        self.assertEqual(self.evse.allowable_pilot_signals, [0, self.max_rate])

    def test_plugin_unoccupied(self):
        ev = create_autospec(EV)
        self.evse.plugin(ev)
        self.assertEqual(self.evse.ev, ev)

    def test_plugin_occupied(self):
        ev = create_autospec(EV)
        ev2 = create_autospec(EV)
        self.evse.plugin(ev)
        self.assertEqual(self.evse.ev, ev)
        with self.assertRaises(StationOccupiedError):
            self.evse.plugin(ev2)

    def test_unplug_occupied(self):
        ev = create_autospec(EV)
        self.evse.plugin(ev)
        self.evse.unplug()
        self.assertIsNone(self.evse.ev)

    def test_unplug_unoccupied(self):
        self.evse.unplug()
        self.assertIsNone(self.evse.ev)

    def _set_pilot_has_ev_valid_rate_helper(self, pilot):
        ev = create_autospec(EV)
        self.evse.plugin(ev)
        self.evse.set_pilot(pilot, 240, 5)
        self.assertEqual(self.evse.current_pilot, pilot)
        self.evse.ev.charge.assert_called_once()

    def test_set_pilot_has_ev_valid_rate(self):
        self._set_pilot_has_ev_valid_rate_helper(self.mid_rate)

    def test_set_pilot_has_ev_almost_large_rate(self):
        self._set_pilot_has_ev_valid_rate_helper(
            self.max_rate + self.atol - self.atol / 1e2
        )

    def test_set_pilot_has_ev_almost_small_rate(self):
        self._set_pilot_has_ev_valid_rate_helper(-self.atol + self.atol / 1e2)

    def test_set_pilot_has_ev_negative_rate(self):
        ev = create_autospec(EV)
        self.evse.plugin(ev)
        with self.assertRaises(InvalidRateError):
            self.evse.set_pilot(-1, 240, 5)

    def _set_pilot_no_ev_invalid_rate_helper(self, pilot):
        with self.assertRaises(InvalidRateError):
            self.evse.set_pilot(pilot, 240, 5)

    def test_set_pilot_no_ev_negative_rate(self):
        self._set_pilot_no_ev_invalid_rate_helper(-1)

    def test_set_pilot_no_ev_large_rate(self):
        self._set_pilot_no_ev_invalid_rate_helper(self.max_rate + 1)

    def test_set_pilot_no_ev_barely_large_rate(self):
        self._set_pilot_no_ev_invalid_rate_helper(
            self.max_rate + self.atol + self.atol / 1e2
        )

    def test_set_pilot_no_ev_barely_small_rate(self):
        self._set_pilot_no_ev_invalid_rate_helper(-self.atol - self.atol / 1e2)
Exemple #6
0
 def test_get_ev_station_exists(self):
     evse = EVSE("PS-001")
     ev = Mock(EV)
     evse.plugin(ev)
     self.network.register_evse(evse, 240, 0)
     self.assertIs(self.network.get_ev("PS-001"), ev)