def test_null(self): """Test a null or None result.""" sens = Sensor("6100_40263F00", "s_null", "kWh") assert sens.extract_value({"6100_40263F00": {"val": None}}) is False assert sens.value is None assert sens.extract_value({"6100_40263F00": { "1": [{ "val": None }] }}) is False assert sens.value is None assert sens.extract_value({}) is False assert sens.value is None # For "W" sensors we will set it to 0 by default. sens = Sensor("6100_40263F00", "s_null", "W") assert sens.extract_value({"6100_40263F00": {"val": None}}) is True assert sens.value == 0 assert sens.extract_value({"6100_40263F00": { "1": [{ "val": None }] }}) is False assert sens.value == 0 assert sens.extract_value({}) is True assert sens.value is None
def sensors(): """Fixture to create some sensors.""" yield [ (402, True, Sensor("6400_00262200", "s_402", "W")), (3514, True, Sensor("6400_00260100", "s_3514", "W", 1000)), (448, True, Sensor("6380_40251E00_0", "pv_power_a", unit="W")), ]
def test_null(self): """Test a null or None result.""" sens = Sensor("6100_40263F00", "s_null", "W") assert (sens.extract_value( {"result": { "_": { "6100_40263F00": { "val": None } } }}) is False) assert sens.value is None assert (sens.extract_value( {"result": { "_": { "6100_40263F00": { "1": [{ "val": None }] } } }}) is False) assert sens.value is None assert sens.extract_value({"result": {"_": {}}}) is False assert sens.value is None
def test_default_no_duplicates(self, mock_warn): """Ensure warning on duplicates.""" sen = Sensors(sensor_map[DEVCLASS_INVERTER]) assert len(sen) > 20 assert len(sen) < 50 assert mock_warn.call_count == 0 # Add duplicate frequency news = Sensor("key1", "frequency", "") sen.add(news) assert mock_warn.call_count == 1 assert sen[news.name] == news # Add duplicate freq, key should not be raised sen.add(Sensor("6100_00465700", "frequency", "")) assert mock_warn.call_count == 2 # Add duplicate freq key only sen.add(Sensor("6100_00465700", "f001", "")) assert mock_warn.call_count == 3 # Test different key_idx only sen.add(Sensor("key1_0", "frequency_0", "")) assert mock_warn.call_count == 3 sen.add(Sensor("key1_1", "frequency_1", "")) assert mock_warn.call_count == 3
def test_no_value_decoded(self): sens = Sensor("6100_40263F00", "s_null", "W") assert sens.extract_value({"6100_40263F00": None}) is True sens = Sensor("6100_40263F00", "s_null", "kWh") assert sens.extract_value({"6100_40263F00": None}) is False
def sensors(): """Fixture to create some sensors.""" yield [ (402, True, Sensor("6400_00262200", "s_402", "W")), (3514, True, Sensor("6400_00260100", "s_3514", "W", 1000)), ]