|
8 | 8 | # EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED |
9 | 9 | # WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. |
10 | 10 |
|
11 | | -from sbp.msg import SBP |
12 | | -from sbp.table import _SBP_TABLE, dispatch |
| 11 | +import warnings |
| 12 | + |
13 | 13 | from sbp import acquisition as acq |
14 | 14 | from sbp import bootload as boot |
| 15 | +from sbp import ext_events as ext_events |
15 | 16 | from sbp import file_io as file_io |
16 | 17 | from sbp import flash as flash |
| 18 | +from sbp import imu as imu |
| 19 | +from sbp import integrity as integrity |
17 | 20 | from sbp import linux as linux |
18 | 21 | from sbp import logging as log |
| 22 | +from sbp import mag as mag |
19 | 23 | from sbp import navigation as nav |
| 24 | +from sbp import ndb as ndb |
20 | 25 | from sbp import observation as obs |
| 26 | +from sbp import orientation as orientation |
21 | 27 | from sbp import piksi as piksi |
| 28 | +from sbp import profiling as profiling |
| 29 | +from sbp import sbas as sbas |
22 | 30 | from sbp import settings as settings |
| 31 | +from sbp import signing as signing |
| 32 | +from sbp import solution_meta as solmeta |
| 33 | +from sbp import ssr as ssr |
23 | 34 | from sbp import system as sys |
| 35 | +from sbp import telemetry as telemetry |
24 | 36 | from sbp import tracking as trac |
25 | 37 | from sbp import user as user |
26 | | -from sbp import imu as imu |
27 | | -from sbp import integrity as integrity |
28 | | -from sbp import ext_events as ext_events |
29 | | -from sbp import ndb as ndb |
30 | | -from sbp import mag as mag |
31 | 38 | from sbp import vehicle as vehicle |
32 | | -from sbp import orientation as orientation |
33 | | -from sbp import sbas as sbas |
34 | | -from sbp import ssr as ssr |
35 | | -from sbp import solution_meta as solmeta |
36 | | -from sbp import signing as signing |
37 | | -from sbp import telemetry as telemetry |
38 | | -from sbp import profiling as profiling |
| 39 | +from sbp.msg import SBP |
| 40 | +from sbp.table import _SBP_TABLE, dispatch |
39 | 41 |
|
40 | | -import warnings |
41 | 42 |
|
42 | 43 | def test_table_count(): |
43 | | - """ |
44 | | - Test number of available messages to deserialize. |
| 44 | + """ |
| 45 | + Test number of available messages to deserialize. |
| 46 | +
|
| 47 | + """ |
| 48 | + number_of_messages = 240 |
| 49 | + assert len(_SBP_TABLE) == number_of_messages |
| 50 | + |
45 | 51 |
|
46 | | - """ |
47 | | - number_of_messages = 239 |
48 | | - assert len(_SBP_TABLE) == number_of_messages |
| 52 | +def test_table_unique_count(): |
| 53 | + """ |
| 54 | + Test number of messages in packages equals total number of messages. |
| 55 | + """ |
| 56 | + number_of_messages = ( |
| 57 | + len(acq.msg_classes) |
| 58 | + + len(boot.msg_classes) |
| 59 | + + len(file_io.msg_classes) |
| 60 | + + len(flash.msg_classes) |
| 61 | + + len(linux.msg_classes) |
| 62 | + + len(log.msg_classes) |
| 63 | + + len(nav.msg_classes) |
| 64 | + + len(obs.msg_classes) |
| 65 | + + len(piksi.msg_classes) |
| 66 | + + len(settings.msg_classes) |
| 67 | + + len(sys.msg_classes) |
| 68 | + + len(trac.msg_classes) |
| 69 | + + len(user.msg_classes) |
| 70 | + + len(imu.msg_classes) |
| 71 | + + len(integrity.msg_classes) |
| 72 | + + len(ext_events.msg_classes) |
| 73 | + + len(ndb.msg_classes) |
| 74 | + + len(mag.msg_classes) |
| 75 | + + len(vehicle.msg_classes) |
| 76 | + + len(orientation.msg_classes) |
| 77 | + + len(sbas.msg_classes) |
| 78 | + + len(ssr.msg_classes) |
| 79 | + + len(solmeta.msg_classes) |
| 80 | + + len(signing.msg_classes) |
| 81 | + + len(telemetry.msg_classes) |
| 82 | + + len(profiling.msg_classes) |
| 83 | + ) |
| 84 | + assert len(_SBP_TABLE) == number_of_messages |
49 | 85 |
|
50 | | -def test_table_unqiue_count(): |
51 | | - """ |
52 | | - Test number of messages in packages equals total number of messages. |
53 | | - """ |
54 | | - number_of_messages = (len(acq.msg_classes) |
55 | | - + len(boot.msg_classes) |
56 | | - + len(file_io.msg_classes) |
57 | | - + len(flash.msg_classes) |
58 | | - + len(linux.msg_classes) |
59 | | - + len(log.msg_classes) |
60 | | - + len(nav.msg_classes) |
61 | | - + len(obs.msg_classes) |
62 | | - + len(piksi.msg_classes) |
63 | | - + len(settings.msg_classes) |
64 | | - + len(sys.msg_classes) |
65 | | - + len(trac.msg_classes) |
66 | | - + len(user.msg_classes) |
67 | | - + len(imu.msg_classes) |
68 | | - + len(integrity.msg_classes) |
69 | | - + len(ext_events.msg_classes) |
70 | | - + len(ndb.msg_classes) |
71 | | - + len(mag.msg_classes) |
72 | | - + len(vehicle.msg_classes) |
73 | | - + len(orientation.msg_classes) |
74 | | - + len(sbas.msg_classes) |
75 | | - + len(ssr.msg_classes) |
76 | | - + len(solmeta.msg_classes) |
77 | | - + len(signing.msg_classes) |
78 | | - + len(telemetry.msg_classes) |
79 | | - + len(profiling.msg_classes) |
80 | | - ) |
81 | | - assert len(_SBP_TABLE) == number_of_messages |
82 | 86 |
|
83 | 87 | def test_available_messages(): |
84 | | - """ |
85 | | - Simple example with a limited dispatch table. |
| 88 | + """ |
| 89 | + Simple example with a limited dispatch table. |
86 | 90 |
|
87 | | - """ |
88 | | - table = {acq.SBP_MSG_ACQ_RESULT_DEP_A: acq.MsgAcqResultDepA, |
89 | | - log.SBP_MSG_PRINT_DEP: log.MsgPrintDep} |
90 | | - msg = SBP(msg_type=0x15, sender=1219, length=13, |
91 | | - payload=b'\x92$yA\x00\x00\xbcC\x81\xc1\xf9\xc5\x1d') |
92 | | - # TODO (Buro): Replace this message constructor once generated SBP |
93 | | - # can support kwargs for constructor, instead of requiring SBP |
94 | | - # object. |
95 | | - assert dispatch(msg, table) == acq.MsgAcqResultDepA(msg) |
96 | | - msg = SBP(msg_type=0xB0, sender=1219, length=4, payload='v1.2', crc=0xCE01) |
97 | | - with warnings.catch_warnings(record=True) as w: |
98 | | - dispatch(msg, table) |
99 | | - warnings.simplefilter("always") |
100 | | - assert len(w) == 1 |
101 | | - assert issubclass(w[0].category, RuntimeWarning) |
102 | | - assert str(w[0].message).find("No message found for msg_type id 176 for msg*") |
| 91 | + """ |
| 92 | + table = { |
| 93 | + acq.SBP_MSG_ACQ_RESULT_DEP_A: acq.MsgAcqResultDepA, |
| 94 | + log.SBP_MSG_PRINT_DEP: log.MsgPrintDep, |
| 95 | + } |
| 96 | + msg = SBP( |
| 97 | + msg_type=0x15, |
| 98 | + sender=1219, |
| 99 | + length=13, |
| 100 | + payload=b"\x92$yA\x00\x00\xbcC\x81\xc1\xf9\xc5\x1d", |
| 101 | + ) |
| 102 | + # TODO (Buro): Replace this message constructor once generated SBP |
| 103 | + # can support kwargs for constructor, instead of requiring SBP |
| 104 | + # object. |
| 105 | + assert dispatch(msg, table) == acq.MsgAcqResultDepA(msg) |
| 106 | + msg = SBP(msg_type=0xB0, sender=1219, length=4, payload="v1.2", crc=0xCE01) |
| 107 | + with warnings.catch_warnings(record=True) as w: |
| 108 | + dispatch(msg, table) |
| 109 | + warnings.simplefilter("always") |
| 110 | + assert len(w) == 1 |
| 111 | + assert issubclass(w[0].category, RuntimeWarning) |
| 112 | + assert str(w[0].message).find("No message found for msg_type id 176 for msg*") |
0 commit comments