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(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(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(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( 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) ] )