forked from XiaoMi/ha_xiaomi_home
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_common.py
32 lines (28 loc) · 1.13 KB
/
test_common.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# -*- coding: utf-8 -*-
"""Unit test for miot_common.py."""
import pytest
# pylint: disable=import-outside-toplevel, unused-argument
@pytest.mark.github
def test_miot_matcher():
from miot.common import MIoTMatcher
matcher: MIoTMatcher = MIoTMatcher()
# Add
for l1 in range(1, 11):
matcher[f'test/{l1}/#'] = f'test/{l1}/#'
for l2 in range(1, 11):
matcher[f'test/{l1}/{l2}'] = f'test/{l1}/{l2}'
if not matcher.get(topic=f'test/+/{l2}'):
matcher[f'test/+/{l2}'] = f'test/+/{l2}'
# Match
match_result: list[(str, dict)] = list(matcher.iter_all_nodes())
assert len(match_result) == 120
match_result: list[str] = list(matcher.iter_match(topic='test/1/1'))
assert len(match_result) == 3
assert set(match_result) == set(['test/1/1', 'test/+/1', 'test/1/#'])
# Delete
if matcher.get(topic='test/1/1'):
del matcher['test/1/1']
assert len(list(matcher.iter_all_nodes())) == 119
match_result: list[str] = list(matcher.iter_match(topic='test/1/1'))
assert len(match_result) == 2
assert set(match_result) == set(['test/+/1', 'test/1/#'])