File: test_types.py

package info (click to toggle)
zigpy-xbee 0.21.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 308 kB
  • sloc: python: 2,445; makefile: 6; sh: 5
file content (90 lines) | stat: -rw-r--r-- 1,950 bytes parent folder | download | duplicates (2)
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
"""Tests for types module."""

import pytest
import zigpy.types as t

import zigpy_xbee.types as xbee_t


def test_bytes_serialize():
    """Test Bytes.serialize()."""
    data = 0x89AB.to_bytes(4, "big")
    result = xbee_t.Bytes(data).serialize()
    assert result == data


def test_bytes_deserialize():
    """Test Bytes.deserialize()."""
    data, rest = xbee_t.Bytes.deserialize(0x89AB.to_bytes(3, "big"))
    assert data == b"\x00\x89\xAB"
    assert rest == b""


def test_atcommand():
    """Test ATCommand class."""
    cmd = b"AI"
    data = 0x06.to_bytes(4, "big")
    r_cmd, r_data = xbee_t.ATCommand.deserialize(cmd + data)

    assert r_cmd == cmd
    assert r_data == data


def test_undefined_enum_undefined_value():
    """Test UndefinedEnum class."""

    class undEnum(t.uint8_t, xbee_t.UndefinedEnum):
        OK = 0
        ERROR = 2
        UNDEFINED_VALUE = 0xFF
        _UNDEFINED = 0xFF

    i = undEnum(0)
    assert i == 0
    assert i.name == "OK"

    i = undEnum(2)
    assert i == 2
    assert i.name == "ERROR"

    i = undEnum(0xEE)
    assert i.name == "UNDEFINED_VALUE"

    i = undEnum()
    assert i is undEnum.OK


def test_undefined_enum_undefinede():
    """Test UndefinedEnum undefined member."""

    class undEnum(t.uint8_t, xbee_t.UndefinedEnum):
        OK = 0
        ERROR = 2
        UNDEFINED_VALUE = 0xFF

    with pytest.raises(ValueError):
        undEnum(0xEE)


def test_nwk():
    """Test NWK class."""
    nwk = xbee_t.NWK(0x1234)

    assert str(nwk) == "0x1234"
    assert repr(nwk) == "0x1234"


def test_eui64():
    """Test EUI64 class."""
    extra = b"\xBE\xEF"
    data = b"01234567"

    result, rest = xbee_t.EUI64.deserialize(data + extra)

    assert rest == extra
    assert result == xbee_t.EUI64((0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30))

    data = xbee_t.EUI64([t.uint8_t(i) for i in range(0x30, 0x38)])
    result = data.serialize()

    assert result == b"76543210"