def Mock_LoadHoursStrategy(self, avg_power_W, hrs_per_day, hrs_of_day): strategy = LoadHoursStrategy(avg_power_W=avg_power_W, hrs_per_day=hrs_per_day, hrs_of_day=hrs_of_day) strategy.area = self.area_test() strategy.owner = self.area_test() strategy.event_activate() return strategy
def test_use_market_maker_rate_parameter_is_respected(use_mmr, expected_rate): GlobalConfig.market_maker_rate = 9 load = LoadHoursStrategy(200, final_buying_rate=33, use_market_maker_rate=use_mmr) load.area = FakeArea() load.event_activate() assert all(v == expected_rate for v in load.bid_update.final_rate.values())
def test_load_hour_strategy_increases_rate_when_fit_to_limit_is_false(): load = LoadHoursStrategy(avg_power_W=100, initial_buying_rate=0, final_buying_rate=30, fit_to_limit=False, energy_rate_increase_per_update=10, update_interval=5) load.area = FakeArea() load.event_activate() assert all([ rate == -10 for rate in load.bid_update.energy_rate_change_per_update.values() ])
def test_load_constructor_rejects_incorrect_rate_parameters(): load = LoadHoursStrategy(avg_power_W=100, initial_buying_rate=10, final_buying_rate=5) load.area = FakeArea() load.owner = load.area with pytest.raises(D3ADeviceException): load.event_activate() with pytest.raises(D3ADeviceException): LoadHoursStrategy(avg_power_W=100, fit_to_limit=True, energy_rate_increase_per_update=1) with pytest.raises(D3ADeviceException): LoadHoursStrategy(avg_power_W=100, fit_to_limit=False, energy_rate_increase_per_update=-1)
def test_load_hour_strategy_increases_rate_when_fit_to_limit_is_false( market_test1): load = LoadHoursStrategy(avg_power_W=100, initial_buying_rate=0, final_buying_rate=30, fit_to_limit=False, energy_rate_increase_per_update=10, update_interval=5) load.area = FakeArea() load.owner = load.area load.event_activate() assert load.state._energy_requirement_Wh[TIME] == 25.0 offer = Offer('id', now(), 1, (MIN_BUY_ENERGY / 500), 'A', market_test1) load._one_sided_market_event_tick(market_test1, offer) assert load.bid_update.get_updated_rate(TIME) == 0 assert load.state._energy_requirement_Wh[TIME] == 25.0 load.event_tick() assert load.bid_update.get_updated_rate(TIME) == 10 load._one_sided_market_event_tick(market_test1, offer) assert load.state._energy_requirement_Wh[TIME] == 0 assert all([ rate == -10 for rate in load.bid_update.energy_rate_change_per_update.values() ])
def load_hours_strategy_test3(area_test1): load = LoadHoursStrategy(avg_power_W=100) load.area = area_test1 load.owner = area_test1 return load