123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- """Tests for helper functions."""
- import pytest
- from switchbot.helpers import parse_power_data
- def test_parse_power_data_basic():
- """Test basic power data parsing."""
-
- data = b"\x12\x34\x56\x78"
-
- assert parse_power_data(data, 0) == 4660
-
- assert parse_power_data(data, 0, 10.0) == 466.0
-
- assert parse_power_data(data, 0, 100.0) == 46.6
- def test_parse_power_data_with_offset():
- """Test power data parsing with different offsets."""
- data = b"\x00\x00\x12\x34\x56\x78"
-
- assert parse_power_data(data, 2, 10.0) == 466.0
-
- assert parse_power_data(data, 4, 10.0) == 2213.6
- def test_parse_power_data_with_mask():
- """Test power data parsing with bitmask."""
-
- data = b"\xff\xff"
-
- assert parse_power_data(data, 0, 10.0) == 6553.5
-
- assert parse_power_data(data, 0, 10.0, 0x7FFF) == 3276.7
- def test_parse_power_data_insufficient_data():
- """Test error handling for insufficient data."""
- data = b"\x12"
-
- with pytest.raises(ValueError, match="Insufficient data"):
- parse_power_data(data, 0)
-
- data = b"\x12\x34"
- with pytest.raises(ValueError, match="Insufficient data"):
- parse_power_data(data, 1)
- def test_parse_power_data_real_world_examples():
- """Test with real-world examples from relay switch."""
-
- raw_data = b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x0f\x00\xe8"
-
- assert parse_power_data(raw_data, 9, 10.0) == 22.0
-
- assert parse_power_data(raw_data, 11, 1000.0) == 0.015
-
- assert parse_power_data(raw_data, 13, 10.0) == 23.2
|