mirror of
https://github.com/home-assistant/core.git
synced 2025-08-05 05:35:11 +02:00
added test, reformulated filter tests
This commit is contained in:
@@ -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)
|
|
||||||
|
Reference in New Issue
Block a user