def test_charge_cross_threshold(self): self.batt = Linear2StageBattery(100, 79.9, 7.68) rate = self.batt.charge(32, 240, 5) self.assertAlmostEqual(rate, 31.63875847566334) self.assertAlmostEqual(self.batt.current_charging_power, 7.5933020341592) self.assertAlmostEqual(self.batt._current_charge, 80.5327751695133)
def test_valid_charge_negative_noise_tail(self): self.batt = Linear2StageBattery(100, 85, 7.68, 1) with patch('numpy.random.normal', return_value=-0.288): rate = self.batt.charge(32, 240, 5) self.assertAlmostEqual(rate, 22.8) self.assertAlmostEqual(self.batt.current_charging_power, 5.472) self.assertAlmostEqual(self.batt._current_charge, 85.456)
def test_valid_charge_no_noise_not_tail(self): self.batt = Linear2StageBattery(100, 0, 7.68, 0) with patch('numpy.random.normal', return_value=1.2): rate = self.batt.charge(16, 240, 5) self.assertAlmostEqual(rate, 16) self.assertAlmostEqual(self.batt.current_charging_power, 3.84) self.assertAlmostEqual(self.batt._current_charge, 0.32)
def test_charge_over_capacity(self): self.batt = Linear2StageBattery(100, 99, 7.68) rate = self.batt.charge(32, 240, 5) self.assertAlmostEqual(rate, 1.574670896040131) self.assertAlmostEqual(self.batt.current_charging_power, 0.3779210150496315) self.assertAlmostEqual(self.batt._current_charge, 99.0314934179208)
def test_charge_at_threshold(self): self.batt = Linear2StageBattery(100, 80, 7.68) rate = self.batt.charge(32, 240, 5) self.assertAlmostEqual(rate, 31.49341792080207) self.assertAlmostEqual(self.batt.current_charging_power, 7.558420300992497) self.assertAlmostEqual(self.batt._current_charge, 80.629868358416)
def test_valid_charge_no_noise_tail(self): self.batt = Linear2StageBattery(100, 85, 7.68) rate = self.batt.charge(32, 240, 5) self.assertAlmostEqual(rate, 23.62006344060197) self.assertAlmostEqual(self.batt.current_charging_power, 5.668815225744472) self.assertAlmostEqual(self.batt._current_charge, 85.472401268812)
def test_valid_charge_negative_noise_not_tail(self): self.batt = Linear2StageBattery(100, 0, 7.68, 1) with patch('numpy.random.normal', return_value=-0.288): rate = self.batt.charge(16, 240, 5) self.assertAlmostEqual(rate, 14.8) self.assertAlmostEqual(self.batt.current_charging_power, 3.552) self.assertAlmostEqual(self.batt._current_charge, 0.296)
def test_over_one_transitions_soc(self): with self.assertRaises(ValueError): self.batt = Linear2StageBattery(100, 0, 7.68, transition_soc=1.1, charge_calculation="stepwise")
def battery_feasible(self, request, duration, voltage, period): cap, init = batt_cap_fn(request, duration, voltage, period) batt = Linear2StageBattery(cap, init, 32 * voltage / 1000) rates = [batt.charge(32, voltage, period) for _ in range(duration)] self.assertAlmostEqual((batt._current_charge - init), request) self.assertAlmostEqual(request, sum(rates) * voltage / 1000 * (period / 60))
def test_valid_charge_negative_noise_tail(self): self.batt = Linear2StageBattery(100, 85, 7.68, noise_level=1) with patch("numpy.random.normal", return_value=-0.288): rate = self.batt.charge(32, 240, 5) self.assertAlmostEqual(rate, 22.42006344060197) self.assertAlmostEqual(self.batt.current_charging_power, 5.380815225744472) self.assertAlmostEqual(self.batt._current_charge, 85.448401268812)
def test_charge_over_capacity(self): self.batt = Linear2StageBattery(100, 99, 7.68, charge_calculation="stepwise") rate = self.batt.charge(32, 240, 5) self.assertAlmostEqual(rate, 1.6) self.assertAlmostEqual(self.batt.current_charging_power, 0.384) self.assertAlmostEqual(self.batt._current_charge, 99.032)
def test_valid_charge_no_noise_tail(self): self.batt = Linear2StageBattery(100, 85, 7.68, charge_calculation="stepwise") rate = self.batt.charge(32, 240, 5) self.assertAlmostEqual(rate, 24) self.assertAlmostEqual(self.batt.current_charging_power, 5.76) self.assertAlmostEqual(self.batt._current_charge, 85.48)
def test_charge_over_max_rate_not_tail(self): self.batt = Linear2StageBattery(100, 0, 7.68, charge_calculation="stepwise") rate = self.batt.charge(40, 240, 5) self.assertAlmostEqual(rate, 32) self.assertAlmostEqual(self.batt.current_charging_power, 7.68) self.assertAlmostEqual(self.batt._current_charge, 0.64)
def test_zero_pilot_charge(self): self.batt = Linear2StageBattery(100, 0, 7.68, charge_calculation="stepwise") with patch("numpy.random.normal", return_value=1.2): rate = self.batt.charge(0, 240, 5) self.assertAlmostEqual(rate, 0) self.assertAlmostEqual(self.batt.current_charging_power, 0) self.assertAlmostEqual(self.batt._current_charge, 0)
def test_valid_charge_positive_noise_tail(self): self.batt = Linear2StageBattery(100, 85, 7.68, noise_level=1, charge_calculation="stepwise") with patch("numpy.random.normal", return_value=0.288): rate = self.batt.charge(32, 240, 5) self.assertAlmostEqual(rate, 25.2) self.assertAlmostEqual(self.batt.current_charging_power, 6.048) self.assertAlmostEqual(self.batt._current_charge, 85.504)
def setUp(self): self.init_charge = 0 self.batt = Linear2StageBattery(100, self.init_charge, 7.68)
def setUp(self): self.batt = Linear2StageBattery(100, 0, 7.68, 0)
def setUp(self): self.init_charge = 0 self.batt = Linear2StageBattery(100, self.init_charge, 7.68, charge_calculation="stepwise")
def test_invalid_charge_calculation_method(self): with self.assertRaises(ValueError): self.batt = Linear2StageBattery( 100, 0, 7.6, charge_calculation="invalid_method")