added test, reformulated filter tests

This commit is contained in:
Diogo Gomes
2018-02-26 20:50:07 +00:00
parent 5a728c6078
commit e4461aaf96

View File

@@ -1,6 +1,8 @@
"""The test for the data filter sensor platform.""" """The test for the data filter sensor platform."""
import unittest import unittest
from homeassistant.components.sensor.filter import (
LowPassFilter, OutlierFilter, ThrottleFilter)
from homeassistant.setup import setup_component from homeassistant.setup import setup_component
from tests.common import get_test_home_assistant, assert_setup_component from tests.common import get_test_home_assistant, assert_setup_component
@@ -29,8 +31,8 @@ class TestFilterSensor(unittest.TestCase):
with assert_setup_component(0): with assert_setup_component(0):
assert setup_component(self.hass, 'sensor', config) assert setup_component(self.hass, 'sensor', config)
def test_outlier(self): def test_chain(self):
"""Test if filter outlier works.""" """Test if filter chaining works."""
config = { config = {
'sensor': { 'sensor': {
'platform': 'filter', 'platform': 'filter',
@@ -39,6 +41,10 @@ class TestFilterSensor(unittest.TestCase):
'filters': [{ 'filters': [{
'filter': 'outlier', 'filter': 'outlier',
'radius': 4.0 'radius': 4.0
}, {
'filter': 'lowpass',
'time_constant': 10,
'precision': 2
}] }]
} }
} }
@@ -50,51 +56,36 @@ class TestFilterSensor(unittest.TestCase):
self.hass.block_till_done() self.hass.block_till_done()
state = self.hass.states.get('sensor.test') state = self.hass.states.get('sensor.test')
self.assertEqual('22.0', state.state) self.assertEqual('20.25', state.state)
def test_outlier(self):
"""Test if outlier filter works."""
filt = OutlierFilter(window_size=10,
precision=2,
entity=None,
radius=4.0)
for state in self.values:
filtered = filt.filter_state(state)
self.assertEqual(22, filtered)
def test_lowpass(self): def test_lowpass(self):
"""Test if filter lowpass works.""" """Test if lowpass filter works."""
config = { filt = LowPassFilter(window_size=10,
'sensor': { precision=2,
'platform': 'filter', entity=None,
'name': 'test', time_constant=10)
'entity_id': 'sensor.test_monitored', for state in self.values:
'filters': [{ filtered = filt.filter_state(state)
'filter': 'lowpass', self.assertEqual(18.05, filtered)
'time_constant': 10,
'precision': 2
}]
}
}
with assert_setup_component(1):
assert setup_component(self.hass, 'sensor', config)
for value in self.values:
self.hass.states.set(config['sensor']['entity_id'], value)
self.hass.block_till_done()
state = self.hass.states.get('sensor.test')
self.assertEqual(18.05, round(float(state.state), 2))
def test_throttle(self): def test_throttle(self):
"""Test if filter throttle works.""" """Test if lowpass filter works."""
config = { filt = ThrottleFilter(window_size=3,
'sensor': { precision=2,
'platform': 'filter', entity=None)
'name': 'test', filtered = []
'entity_id': 'sensor.test_monitored', for state in self.values:
'filters': [{ new_state = filt.filter_state(state)
'filter': 'throttle', if not filt.skip:
'window_size': 3, filtered.append(new_state)
}] self.assertEqual([20, 21], filtered)
}
}
with assert_setup_component(1):
assert setup_component(self.hass, 'sensor', config)
for value in self.values:
self.hass.states.set(config['sensor']['entity_id'], value)
self.hass.block_till_done()
state = self.hass.states.get('sensor.test')
self.assertEqual('21', state.state)