1+ """Test the status register decoding."""
2+
3+ from custom_components .linkytic .status_register import (
4+ StatusRegister ,
5+ etat_euridis ,
6+ organe_coupure ,
7+ pointe_mobile ,
8+ preavis_pm ,
9+ statut_cpl ,
10+ tarif_en_cours ,
11+ tempo_color ,
12+ )
13+
14+
15+ def test_parse ():
16+ STGE = "013AC501"
17+
18+ EXPECTED = {
19+ StatusRegister .CONTACT_SEC : 1 ,
20+ StatusRegister .ORGANE_DE_COUPURE : organe_coupure [0 ],
21+ StatusRegister .ETAT_DU_CACHE_BORNE_DISTRIBUTEUR : 0 ,
22+ StatusRegister .SURTENSION_SUR_UNE_DES_PHASES : 0 ,
23+ StatusRegister .DEPASSEMENT_PUISSANCE_REFERENCE : 0 ,
24+ StatusRegister .PRODUCTEUR_CONSOMMATEUR : 1 ,
25+ StatusRegister .SENS_ENERGIE_ACTIVE : 0 ,
26+ StatusRegister .TARIF_CONTRAT_FOURNITURE : tarif_en_cours [1 ],
27+ StatusRegister .TARIF_CONTRAT_DISTRIBUTEUR : tarif_en_cours [3 ],
28+ StatusRegister .MODE_DEGRADE_HORLOGE : 0 ,
29+ StatusRegister .MODE_TIC : 1 ,
30+ StatusRegister .ETAT_SORTIE_COMMUNICATION_EURIDIS : etat_euridis [3 ],
31+ StatusRegister .STATUS_CPL : statut_cpl [1 ],
32+ StatusRegister .SYNCHRO_CPL : 0 ,
33+ StatusRegister .COULEUR_JOUR_CONTRAT_TEMPO : tempo_color [1 ],
34+ StatusRegister .COULEUR_LENDEMAIN_CONTRAT_TEMPO : tempo_color [0 ],
35+ StatusRegister .PREAVIS_POINTES_MOBILES : preavis_pm [0 ],
36+ StatusRegister .POINTE_MOBILE : pointe_mobile [0 ],
37+ }
38+
39+ for element in StatusRegister :
40+ assert EXPECTED [element ] == element .value .get_status (STGE )
41+
42+ STGE = "003AC000"
43+
44+ EXPECTED = {
45+ StatusRegister .CONTACT_SEC : 0 ,
46+ StatusRegister .ORGANE_DE_COUPURE : organe_coupure [0 ],
47+ StatusRegister .ETAT_DU_CACHE_BORNE_DISTRIBUTEUR : 0 ,
48+ StatusRegister .SURTENSION_SUR_UNE_DES_PHASES : 0 ,
49+ StatusRegister .DEPASSEMENT_PUISSANCE_REFERENCE : 0 ,
50+ StatusRegister .PRODUCTEUR_CONSOMMATEUR : 0 ,
51+ StatusRegister .SENS_ENERGIE_ACTIVE : 0 ,
52+ StatusRegister .TARIF_CONTRAT_FOURNITURE : tarif_en_cours [0 ],
53+ StatusRegister .TARIF_CONTRAT_DISTRIBUTEUR : tarif_en_cours [3 ],
54+ StatusRegister .MODE_DEGRADE_HORLOGE : 0 ,
55+ StatusRegister .MODE_TIC : 1 ,
56+ StatusRegister .ETAT_SORTIE_COMMUNICATION_EURIDIS : etat_euridis [3 ],
57+ StatusRegister .STATUS_CPL : statut_cpl [1 ],
58+ StatusRegister .SYNCHRO_CPL : 0 ,
59+ StatusRegister .COULEUR_JOUR_CONTRAT_TEMPO : tempo_color [0 ],
60+ StatusRegister .COULEUR_LENDEMAIN_CONTRAT_TEMPO : tempo_color [0 ],
61+ StatusRegister .PREAVIS_POINTES_MOBILES : preavis_pm [0 ],
62+ StatusRegister .POINTE_MOBILE : pointe_mobile [0 ],
63+ }
64+
65+ for element in StatusRegister :
66+ assert EXPECTED [element ] == element .value .get_status (STGE )
67+
68+ STGE = "FFDFE7FD"
69+
70+ EXPECTED = {
71+ StatusRegister .CONTACT_SEC : 1 ,
72+ StatusRegister .ORGANE_DE_COUPURE : organe_coupure [6 ],
73+ StatusRegister .ETAT_DU_CACHE_BORNE_DISTRIBUTEUR : 1 ,
74+ StatusRegister .SURTENSION_SUR_UNE_DES_PHASES : 1 ,
75+ StatusRegister .DEPASSEMENT_PUISSANCE_REFERENCE : 1 ,
76+ StatusRegister .PRODUCTEUR_CONSOMMATEUR : 1 ,
77+ StatusRegister .SENS_ENERGIE_ACTIVE : 1 ,
78+ StatusRegister .TARIF_CONTRAT_FOURNITURE : tarif_en_cours [9 ],
79+ StatusRegister .TARIF_CONTRAT_DISTRIBUTEUR : tarif_en_cours [3 ],
80+ StatusRegister .MODE_DEGRADE_HORLOGE : 1 ,
81+ StatusRegister .MODE_TIC : 1 ,
82+ StatusRegister .ETAT_SORTIE_COMMUNICATION_EURIDIS : etat_euridis [3 ],
83+ StatusRegister .STATUS_CPL : statut_cpl [2 ],
84+ StatusRegister .SYNCHRO_CPL : 1 ,
85+ StatusRegister .COULEUR_JOUR_CONTRAT_TEMPO : tempo_color [3 ],
86+ StatusRegister .COULEUR_LENDEMAIN_CONTRAT_TEMPO : tempo_color [3 ],
87+ StatusRegister .PREAVIS_POINTES_MOBILES : preavis_pm [3 ],
88+ StatusRegister .POINTE_MOBILE : pointe_mobile [3 ],
89+ }
90+
91+ for element in StatusRegister :
92+ assert EXPECTED [element ] == element .value .get_status (STGE )
93+
94+ def parse_stge (stge : str ):
95+ for element in StatusRegister :
96+ print (element .name , element .value .get_status (stge ))
97+
98+ if __name__ == "__main__" :
99+ # Parse STGE, call this file as a module (python -m tests.test_status_register <STGE>)
100+ import sys
101+ if len (sys .argv ) <= 1 :
102+ print ("No stge to parse." )
103+ sys .exit (1 )
104+ parse_stge (sys .argv [1 ])
0 commit comments