38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
from netatmo_service.data import Sample
|
|
from netatmo_service.rrd import RRDStore, rainbow
|
|
|
|
|
|
def test_wind_rainbow_uses_compass_angle():
|
|
assert rainbow(0) == (0, 255, 255)
|
|
assert rainbow(90) == (128, 0, 255)
|
|
assert rainbow(180) == (255, 0, 0)
|
|
assert rainbow(270) == (128, 255, 0)
|
|
|
|
|
|
def test_each_wind_angle_has_an_unlabelled_color():
|
|
drawings = RRDStore._wind_drawings()
|
|
assert len(drawings) == 722
|
|
assert sum(item.startswith("AREA:dir") for item in drawings) == 360
|
|
assert not any("degrees" in item for item in drawings)
|
|
|
|
|
|
def test_rrd_files_have_netatmo_prefix(tmp_path):
|
|
store = RRDStore(tmp_path)
|
|
assert store.path("outdoor") == tmp_path / "netatmo_outdoor.rrd"
|
|
assert store.path("wind") == tmp_path / "netatmo_wind.rrd"
|
|
assert store.path("rain") == tmp_path / "netatmo_rain.rrd"
|
|
assert store.path("pressure") == tmp_path / "netatmo_pressure.rrd"
|
|
|
|
|
|
def test_rrd_is_updated_only_once_per_collection_interval(tmp_path):
|
|
store = RRDStore(tmp_path)
|
|
store.ensure_all()
|
|
now = int(__import__("time").time())
|
|
timestamp = ((now // 600) - 1) * 600 + 100
|
|
first = Sample(timestamp, {"temperature": 20, "co2": 500, "humidity": 50})
|
|
same_interval = Sample(timestamp + 1, {"temperature": 21, "co2": 510, "humidity": 51})
|
|
|
|
assert store.update("study", first) is True
|
|
assert store.update("study", first) is False
|
|
assert store.update("study", same_interval) is False
|