Files
ems/backend/tests/test_drop_registers_matching_last_verified.py
Dusan Vojacek 89fb4f1924
Some checks failed
CI and deploy / migration-check (push) Failing after 19s
CI and deploy / deploy (push) Has been skipped
fix idempotency gne port uctoff
2026-04-29 13:09:43 +02:00

47 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 45 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_keeps_reg179_when_mask_matches_but_not_clean():
registers = [(179, "control_board_special_1", 2)] # want cutoff ON (clean value)
last_verified = {179: 0x1236} # bits01 still == 2, but not a clean 2/3 value
out, skipped = _drop_registers_matching_last_verified(registers, last_verified)
assert out == registers
assert skipped == []
def test_drop_registers_skips_reg179_when_clean_value_matches():
registers = [(179, "control_board_special_1", 2)] # want cutoff ON (clean value)
last_verified = {179: 2} # already clean cutoff ON
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 => bits01 == 3 (cutoff OFF)
out, skipped = _drop_registers_matching_last_verified(registers, last_verified)
assert out == registers
assert skipped == []