def test_charge(self): bat = Battery(3.0, cells=4) # Can't charge a battery if voltage under battery's current voltage bat.charge(volts=14.0, amps=3, seconds=60) self.assertEqual(bat.charge_state, 1.5) self.assertEqual(bat.voltage, 14.4) # Can charge battery if voltage over battery's current voltage bat.charge(volts=16.6, amps=3, seconds=60) # Basic properties haven't changed: self.assertEqual(bat.capacity, 3.0) self.assertEqual(bat.cells, 4) self.assertEqual(bat.minimum_voltage, 3.0) self.assertEqual(bat.maximum_voltage, 4.2) # Charge state has changed self.assertEqual(bat.charge_state, 1.55) # Voltage has risen slightly self.assertGreater(bat.voltage, 14.4) # At this stage we can push a battery beyond the charge voltage if we # give a long enough duration, but we can't go over the battery's # capacity. bat.charge(volts=16.6, amps=3, seconds=3600) # Should be well over # But capacity is limited to self.assertEqual(bat.charge_state, bat.capacity) # And voltage is maxed out self.assertEqual(bat.voltage, 16.8)
from battery import Battery bat_deep = Battery() bat_norm = Battery() bat_shallow = Battery() bat_shallow_mid = Battery() bat_shallow_mid.charge = 0.5 bat_shallow_mid.start_charge = 0.5 for i in range(0, 900): bat_deep.run((-1, 270)) bat_deep.recharge_update_health(1) bat_norm.run((-0.5, 135)) bat_norm.recharge_update_health(0.5) bat_norm.run((-0.5, 135)) bat_norm.recharge_update_health(0.5) for j in range(0, 5): bat_shallow.run((-0.1, 30)) bat_shallow.recharge_update_health(0.1) for j in range(0, 5): bat_shallow_mid.run((-0.1, 30)) bat_shallow_mid.recharge_update_health(0.1) print("900 Full Discharges: " + str(bat_deep.lost_capacity)) print("1800 Half Discharges: " + str(bat_norm.lost_capacity)) print("4500 100-90 Discharges: " + str(bat_shallow.lost_capacity)) print("4500 50-40 Discharges: " + str(bat_shallow_mid.lost_capacity))