Skip to content

Commit 3f403e7

Browse files
committed
Add tests for battery_power and pv_power formulas
Signed-off-by: Sahas Subramanian <[email protected]>
1 parent ee08d95 commit 3f403e7

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

tests/timeseries/test_logical_meter.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,3 +124,75 @@ async def test_grid_power_2(
124124

125125
assert len(results) == 10
126126
assert results == meter_sums
127+
128+
async def test_battery_and_pv_power( # pylint: disable=too-many-locals
129+
self,
130+
mocker: MockerFixture,
131+
) -> None:
132+
"""Test the battery power and pv power formulas."""
133+
mockgrid = await MockMicrogrid.new(mocker)
134+
mockgrid.add_batteries(3)
135+
mockgrid.add_solar_inverters(2)
136+
request_sender, channel_registry = await mockgrid.start()
137+
logical_meter = LogicalMeter(
138+
channel_registry,
139+
request_sender,
140+
microgrid.get().component_graph,
141+
)
142+
143+
battery_power_recv = await logical_meter.battery_power()
144+
pv_power_recv = await logical_meter.pv_power()
145+
146+
bat_inv_receivers = [
147+
await self._get_resampled_stream(
148+
logical_meter,
149+
channel_registry,
150+
request_sender,
151+
meter_id,
152+
)
153+
for meter_id in mockgrid.battery_inverter_ids
154+
]
155+
156+
pv_inv_receivers = [
157+
await self._get_resampled_stream(
158+
logical_meter,
159+
channel_registry,
160+
request_sender,
161+
meter_id,
162+
)
163+
for meter_id in mockgrid.pv_inverter_ids
164+
]
165+
166+
battery_results = []
167+
pv_results = []
168+
battery_inv_sums = []
169+
pv_inv_sums = []
170+
for _ in range(10):
171+
bat_inv_sum = 0.0
172+
pv_inv_sum = 0.0
173+
for recv in bat_inv_receivers:
174+
val = await recv.receive()
175+
assert val is not None and val.value is not None and val.value > 0.0
176+
bat_inv_sum += val.value
177+
battery_inv_sums.append(bat_inv_sum)
178+
179+
for recv in pv_inv_receivers:
180+
val = await recv.receive()
181+
assert val is not None and val.value is not None and val.value > 0.0
182+
pv_inv_sum += val.value
183+
pv_inv_sums.append(pv_inv_sum)
184+
185+
val = await battery_power_recv.receive()
186+
assert val is not None and val.value is not None
187+
battery_results.append(val.value)
188+
189+
val = await pv_power_recv.receive()
190+
assert val is not None and val.value is not None
191+
pv_results.append(val.value)
192+
193+
await mockgrid.cleanup()
194+
195+
assert len(battery_results) == 10
196+
assert battery_results == battery_inv_sums
197+
assert len(pv_results) == 10
198+
assert pv_results == pv_inv_sums

0 commit comments

Comments
 (0)