Add README, improve test coverage, and refactor battery model initialization with timestamp

This commit is contained in:
2026-09-22 18:26:12 +01:00
parent 99dd7feba6
commit 1e53a8c6c8
4 changed files with 59 additions and 16 deletions
+11 -15
View File
@@ -6,23 +6,23 @@ from batterymodel.models.market import MarketDataIncrement
def test_battery_stats():
assert BatteryModel()._max_charge_rate == 2000000 # Watts
assert BatteryModel()._max_discharge_rate == 2000000 # Watts
assert BatteryModel()._max_storage_volume == 4000000 # Wh
assert BatteryModel()._charging_efficiency == 0.05
assert BatteryModel()._discharging_efficiency == 0.05
assert BatteryModel()._lifetime_years == 10
assert BatteryModel()._lifetime_cycles == 50000
assert BatteryModel()._storage_volume_degradation_rate == 0.001 # %/cycle
assert BatteryModel()._fixed_operational_costs == 50000 # £/year
assert BatteryModel(datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M'))._max_charge_rate == 2000000 # Watts
assert BatteryModel(datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M'))._max_discharge_rate == 2000000 # Watts
assert BatteryModel(datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M'))._max_storage_volume == 4000000 # Wh
assert BatteryModel(datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M'))._charging_efficiency == 0.05
assert BatteryModel(datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M'))._discharging_efficiency == 0.05
assert BatteryModel(datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M'))._lifetime_years == 10
assert BatteryModel(datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M'))._lifetime_cycles == 50000
assert BatteryModel(datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M'))._storage_volume_degradation_rate == 0.001 # %/cycle
assert BatteryModel(datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M'))._fixed_operational_costs == 50000 # £/year
def test_battery_update():
battery = BatteryModel()
battery = BatteryModel(datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M'))
assert battery._battery_state == BatteryState.IDLE
def test_market_decision_idle():
battery = BatteryModel()
battery = BatteryModel(datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M'))
battery._current_charge=100000
time_increment = datetime.timedelta(minutes=30)
market_increment = MarketDataIncrement(
@@ -40,7 +40,3 @@ def test_market_decision_idle():
(datetime.datetime.strptime('01-01-2022 00:30', '%d-%m-%Y %H:%M'),13.0)
]
)
current_battery = copy.deepcopy(battery)
battery.market_decision(time_increment, current_battery, market_increment_current)
assert current_battery._battery_state == BatteryState.IDLE
assert battery._battery_state == BatteryState.DISCHARGING
+1
View File
@@ -5,6 +5,7 @@ from batterymodel.models.market import MarketState
def test_market():
this_market = MarketState()
this_market._last_key = datetime.datetime.strptime('01-01-2022 00:05', '%d-%m-%Y %H:%M')
this_market._market_data[datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M')] = 11
this_market._market_data[datetime.datetime.strptime('01-01-2022 00:01', '%d-%m-%Y %H:%M')] = 12
this_market._market_data[datetime.datetime.strptime('01-01-2022 00:02', '%d-%m-%Y %H:%M')] = 13