@@ -185,3 +185,51 @@ async def test_consumer_power_no_grid_meter(self, mocker: MockerFixture) -> None
185185
186186 await mockgrid .mock_data .send_meter_power ([20.0 , 2.0 , 3.0 , 4.0 , 5.0 ])
187187 assert (await consumer_power_receiver .receive ()).value == 20.0
188+
189+ async def test_producer_power (self , mocker : MockerFixture ) -> None :
190+ """Test the producer power formula."""
191+ mockgrid = MockMicrogrid (grid_side_meter = False )
192+ mockgrid .add_solar_inverters (2 )
193+ mockgrid .add_chps (2 )
194+ await mockgrid .start_mock_datapipeline (mocker )
195+
196+ logical_meter = microgrid .logical_meter ()
197+ producer_power_receiver = logical_meter .producer_power .new_receiver ()
198+
199+ await mockgrid .mock_data .send_meter_power ([20.0 , 2.0 , 3.0 , 4.0 , 5.0 ])
200+ assert (await producer_power_receiver .receive ()).value == 14.0
201+
202+ async def test_producer_power_no_chp (self , mocker : MockerFixture ) -> None :
203+ """Test the producer power formula without a chp."""
204+ mockgrid = MockMicrogrid (grid_side_meter = False )
205+ mockgrid .add_solar_inverters (2 )
206+ await mockgrid .start_mock_datapipeline (mocker )
207+
208+ logical_meter = microgrid .logical_meter ()
209+ producer_power_receiver = logical_meter .producer_power .new_receiver ()
210+
211+ await mockgrid .mock_data .send_meter_power ([20.0 , 2.0 , 3.0 ])
212+ assert (await producer_power_receiver .receive ()).value == 5.0
213+
214+ async def test_producer_power_no_pv (self , mocker : MockerFixture ) -> None :
215+ """Test the producer power formula without pv."""
216+ mockgrid = MockMicrogrid (grid_side_meter = False )
217+ mockgrid .add_chps (1 )
218+ await mockgrid .start_mock_datapipeline (mocker )
219+
220+ logical_meter = microgrid .logical_meter ()
221+ producer_power_receiver = logical_meter .producer_power .new_receiver ()
222+
223+ await mockgrid .mock_data .send_meter_power ([20.0 , 2.0 ])
224+ assert (await producer_power_receiver .receive ()).value == 2.0
225+
226+ async def test_no_producer_power (self , mocker : MockerFixture ) -> None :
227+ """Test the producer power formula without producers."""
228+ mockgrid = MockMicrogrid (grid_side_meter = False )
229+ await mockgrid .start_mock_datapipeline (mocker )
230+
231+ logical_meter = microgrid .logical_meter ()
232+ producer_power_receiver = logical_meter .producer_power .new_receiver ()
233+
234+ await mockgrid .mock_data .send_non_existing_component_value ()
235+ assert (await producer_power_receiver .receive ()).value == 0.0
0 commit comments