Something is slow, I suspect its the logging, but time is tight, so I'm going to wrap up to make it at least useable
46 lines
1.9 KiB
Python
46 lines
1.9 KiB
Python
import datetime
|
|
import copy
|
|
from batterymodel import BatteryModel
|
|
from batterymodel.models.battery import BatteryState
|
|
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
|
|
|
|
def test_battery_update():
|
|
battery = BatteryModel()
|
|
assert battery._battery_state == BatteryState.IDLE
|
|
|
|
|
|
def test_market_decision_idle():
|
|
battery = BatteryModel()
|
|
battery._current_charge=100000
|
|
time_increment = datetime.timedelta(minutes=30)
|
|
market_increment = MarketDataIncrement(
|
|
datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M'),
|
|
[
|
|
(datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M'),43.0),
|
|
(datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M'),14.0)
|
|
]
|
|
)
|
|
|
|
market_increment_current = MarketDataIncrement(
|
|
datetime.datetime.strptime('01-01-2022 00:30', '%d-%m-%Y %H:%M'),
|
|
[
|
|
(datetime.datetime.strptime('01-01-2022 00:00', '%d-%m-%Y %H:%M'),43.0),
|
|
(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 |