ha_xiaomi_home/test/test_common.py
Paul Shawn 045528fbf2
style: using logging for test case log print (#636)
* style: using logging for test case log print

* fix: fix miot cloud test case resource error
2025-01-13 10:54:18 +08:00

33 lines
1.1 KiB
Python

# -*- 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] = 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/#'])