39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
from services.control.exporter_monolith import (
|
||
REG178_PASSIVE,
|
||
_drop_registers_matching_last_verified,
|
||
)
|
||
|
||
|
||
def test_drop_registers_skips_reg178_when_mask_matches():
|
||
# last_verified contains extra bits beyond 0x0030; we still want to skip if bits 4–5 match.
|
||
registers = [(178, "grid_peak_shaving_switch", REG178_PASSIVE)]
|
||
last_verified = {178: 12030} # real-world example from home-01 (bits4-5 still == 0b11)
|
||
out, skipped = _drop_registers_matching_last_verified(registers, last_verified)
|
||
assert out == []
|
||
assert skipped == [178]
|
||
|
||
|
||
def test_drop_registers_keeps_reg178_when_mask_differs():
|
||
registers = [(178, "grid_peak_shaving_switch", REG178_PASSIVE)]
|
||
last_verified = {178: 32} # SELL mask 0b10
|
||
out, skipped = _drop_registers_matching_last_verified(registers, last_verified)
|
||
assert out == registers
|
||
assert skipped == []
|
||
|
||
|
||
def test_drop_registers_skips_reg179_when_mask_matches():
|
||
registers = [(179, "control_board_special_1", 2)] # bits0–1 = 2 (cutoff ON)
|
||
last_verified = {179: 0x1236} # ...0110b => bits0–1 still == 2
|
||
out, skipped = _drop_registers_matching_last_verified(registers, last_verified)
|
||
assert out == []
|
||
assert skipped == [179]
|
||
|
||
|
||
def test_drop_registers_keeps_reg179_when_mask_differs():
|
||
registers = [(179, "control_board_special_1", 2)] # want cutoff ON
|
||
last_verified = {179: 0x1237} # ...0111b => bits0–1 == 3 (cutoff OFF)
|
||
out, skipped = _drop_registers_matching_last_verified(registers, last_verified)
|
||
assert out == registers
|
||
assert skipped == []
|
||
|