@@ -75,81 +75,6 @@ def test_build_trigger_module_pgm_pulse_on():
7575 assert raw == unhexlify ("a4170004000000000004000000000000000000000000c3" )
7676
7777
78- def test_build_deactivate_pgm1_steady_off ():
79- """Deactivate PGM 1 steady off (off=1): byte 6 = 0x01, checksum = 0xC0"""
80- raw = _build (4 , ["off" , "release" , "release" , "release" ])
81-
82- assert raw [0 ] == 0xA4
83- assert raw [6 ] == 0x01 # off
84- assert raw [7 ] == 0x00
85- assert raw [8 ] == 0x00
86- assert raw [9 ] == 0x00
87- assert raw [- 1 ] == _checksum (raw [:- 1 ])
88-
89-
90- def test_build_activate_pgm2_steady_on ():
91- """Activate PGM 2 steady on (on=3): byte 7 = 0x03"""
92- raw = _build (4 , ["release" , "on" , "release" , "release" ])
93-
94- assert raw [6 ] == 0x00
95- assert raw [7 ] == 0x03 # on
96- assert raw [8 ] == 0x00
97- assert raw [9 ] == 0x00
98- assert raw [- 1 ] == _checksum (raw [:- 1 ])
99-
100-
101- def test_build_packet_length_always_23 ():
102- """Packet length byte is always 23 (0x17) regardless of command."""
103- for pgm_idx in range (4 ):
104- commands = ["release" ] * 4
105- commands [pgm_idx ] = "on"
106- raw = _build (4 , commands )
107- assert len (raw ) == 23
108- assert raw [1 ] == 0x17
109-
110-
111- def test_build_command_byte_is_0xa4 ():
112- """First byte is always 0xA4."""
113- raw = _build (4 , ["on" , "release" , "release" , "release" ])
114- assert raw [0 ] == 0xA4
115-
116-
117- def test_build_module_address_at_byte3 ():
118- """Module address is encoded at byte 3."""
119- raw = _build (4 , ["on" , "release" , "release" , "release" ])
120- assert raw [3 ] == 0x04
121-
122- raw2 = _build (7 , ["on" , "release" , "release" , "release" ])
123- assert raw2 [3 ] == 0x07
124-
125-
126- def test_build_non_command_bytes_are_zero ():
127- """Bytes 2, 4, 5 and the 12 trailing padding bytes are always zero."""
128- raw = _build (4 , ["on" , "release" , "release" , "release" ])
129- assert raw [2 ] == 0x00 # _not_used0
130- assert raw [4 :6 ] == b"\x00 \x00 " # _not_used1
131- assert raw [10 :22 ] == b"\x00 " * 12 # _not_used2
132-
133-
134- def test_build_only_target_pgm_byte_nonzero ():
135- """Only the byte for the targeted PGM output is non-zero."""
136- for pgm_idx in range (4 ):
137- commands = ["release" ] * 4
138- commands [pgm_idx ] = "on"
139- raw = _build (4 , commands )
140- for i , cmd_byte in enumerate (raw [6 :10 ]):
141- if i == pgm_idx :
142- assert cmd_byte == 3 # on
143- else :
144- assert cmd_byte == 0 # release
145-
146-
147- def test_build_checksum_correct ():
148- """Checksum is sum of all preceding bytes mod 256."""
149- raw = _build (4 , ["on_override" , "release" , "release" , "release" ])
150- assert raw [- 1 ] == _checksum (raw [:- 1 ])
151-
152-
15378# ---------------------------------------------------------------------------
15479# PerformModulePGMActionResponse — PARSE tests
15580# ---------------------------------------------------------------------------
0 commit comments