]> git.basschouten.com Git - openhab-addons.git/blob
d17f77c9d25a1be15b43c39af442be3e3802d095
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2021 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.teleinfo.internal.reader.io;
14
15 import static org.junit.jupiter.api.Assertions.*;
16
17 import java.io.FileInputStream;
18
19 import org.eclipse.jdt.annotation.NonNullByDefault;
20 import org.junit.jupiter.api.Test;
21 import org.openhab.binding.teleinfo.internal.data.Frame;
22 import org.openhab.binding.teleinfo.internal.data.FrameType;
23 import org.openhab.binding.teleinfo.internal.reader.io.serialport.Label;
24 import org.openhab.binding.teleinfo.util.TestUtils;
25
26 /**
27  *
28  * @author Nicolas SIBERIL - Initial contribution
29  */
30 @NonNullByDefault
31 public class TeleinfoInputStreamTest {
32
33     @Test
34     public void testReadNextFrameCbetmBase1() throws Exception {
35         try (TeleinfoInputStream in = new TeleinfoInputStream(
36                 new FileInputStream(TestUtils.getTestFile("cbetm-base-option-1.raw")), false)) {
37             Frame frame = in.readNextFrame();
38
39             assertNotNull(frame);
40             assertEquals(FrameType.CBETM_LONG_BASE, frame.getType());
41             assertEquals("XXXXXXXXXXXX", frame.get(Label.ADCO));
42             assertEquals(20, frame.getAsInt(Label.ISOUSC));
43             assertEquals(1181243, frame.getAsInt(Label.BASE));
44             assertEquals("TH..", frame.get(Label.PTEC));
45             assertEquals(0, frame.getAsInt(Label.IINST1));
46             assertEquals(2, frame.getAsInt(Label.IINST2));
47             assertEquals(0, frame.getAsInt(Label.IINST3));
48             assertEquals(26, frame.getAsInt(Label.IMAX1));
49             assertEquals(18, frame.getAsInt(Label.IMAX2));
50             assertEquals(27, frame.getAsInt(Label.IMAX3));
51             assertEquals(7990, frame.getAsInt(Label.PMAX));
52             assertEquals(540, frame.getAsInt(Label.PAPP));
53             assertEquals("00", frame.get(Label.PPOT));
54         }
55     }
56
57     @Test
58     public void testReadNextFrameCbemmEvoIccHc1() throws Exception {
59         try (TeleinfoInputStream in = new TeleinfoInputStream(
60                 new FileInputStream(TestUtils.getTestFile("cbemm-evo-icc-hc-option-1.raw")), false)) {
61             Frame frame = in.readNextFrame();
62
63             assertNotNull(frame);
64             assertEquals(FrameType.CBEMM_ICC_HC, frame.getType());
65             assertEquals("XXXXXXXXXXXX", frame.get(Label.ADCO));
66             assertEquals(30, frame.getAsInt(Label.ISOUSC));
67             assertEquals(6906827, frame.getAsInt(Label.HCHC));
68             assertEquals(7617931, frame.getAsInt(Label.HCHP));
69             assertEquals("HP..", frame.get(Label.PTEC));
70             assertEquals(3, frame.getAsInt(Label.IINST));
71             assertEquals(44, frame.getAsInt(Label.IMAX));
72             assertEquals(680, frame.getAsInt(Label.PAPP));
73             assertNull(frame.get(Label.ADPS));
74             assertEquals("A", frame.get(Label.HHPHC));
75         }
76     }
77
78     @Test
79     public void testReadNextFrameCbetmEjp1() throws Exception {
80         try (TeleinfoInputStream in = new TeleinfoInputStream(
81                 new FileInputStream(TestUtils.getTestFile("cbetm-ejp-option-1.raw")), false)) {
82             Frame frame = in.readNextFrame();
83
84             assertNotNull(frame);
85             assertEquals(FrameType.CBETM_LONG_EJP, frame.getType());
86             assertEquals("XXXXXXXXXX", frame.get(Label.ADCO));
87             assertEquals(30, frame.getAsInt(Label.ISOUSC));
88             assertEquals(1111111, frame.getAsInt(Label.EJPHN));
89             assertEquals(2222222, frame.getAsInt(Label.EJPHPM));
90             assertNull(frame.get(Label.PEJP));
91             assertEquals("HN..", frame.get(Label.PTEC));
92             assertEquals(10, frame.getAsInt(Label.IINST1));
93             assertEquals(5, frame.getAsInt(Label.IINST2));
94             assertEquals(8, frame.getAsInt(Label.IINST3));
95             assertEquals(38, frame.getAsInt(Label.IMAX1));
96             assertEquals(42, frame.getAsInt(Label.IMAX2));
97             assertEquals(44, frame.getAsInt(Label.IMAX3));
98             assertEquals(17480, frame.getAsInt(Label.PMAX));
99             assertEquals(5800, frame.getAsInt(Label.PAPP));
100             assertEquals("00", frame.get(Label.PPOT));
101         }
102     }
103
104     @Test
105     public void testReadNextFrameCbemmEvoIccTempo1() throws Exception {
106         try (TeleinfoInputStream in = new TeleinfoInputStream(
107                 new FileInputStream(TestUtils.getTestFile("cbemm-evo-icc-tempo-option-1.raw")), false)) {
108             Frame frame = in.readNextFrame();
109
110             assertNotNull(frame);
111             assertEquals(FrameType.CBEMM_ICC_TEMPO, frame.getType());
112             assertEquals("XXXXXXXXXXXX", frame.get(Label.ADCO));
113             assertEquals(45, frame.getAsInt(Label.ISOUSC));
114             assertEquals(2697099, frame.getAsInt(Label.BBRHCJB));
115             assertEquals(3494559, frame.getAsInt(Label.BBRHPJB));
116             assertEquals(41241, frame.getAsInt(Label.BBRHCJW));
117             assertEquals(194168, frame.getAsInt(Label.BBRHPJW));
118             assertEquals(0, frame.getAsInt(Label.BBRHCJR));
119             assertEquals(89736, frame.getAsInt(Label.BBRHPJR));
120             assertEquals("HPJR", frame.get(Label.PTEC));
121             assertEquals("----", frame.get(Label.DEMAIN));
122             assertEquals(3, frame.getAsInt(Label.IINST));
123             assertEquals(37, frame.getAsInt(Label.IMAX));
124             assertEquals(620, frame.getAsInt(Label.PAPP));
125             assertFalse(frame.getLabelToValues().containsKey(Label.ADPS));
126             assertNull(frame.get(Label.ADPS));
127             assertEquals("Y", frame.get(Label.HHPHC));
128             assertEquals("B", frame.getProgrammeCircuit1());
129             assertEquals("P2", frame.getProgrammeCircuit2());
130         }
131     }
132
133     @Test
134     public void testReadNextFrameCbemmEvoIccBase1() throws Exception {
135         try (TeleinfoInputStream in = new TeleinfoInputStream(
136                 new FileInputStream(TestUtils.getTestFile("cbemm-evo-icc-base-option-1.raw")), false)) {
137             Frame frame = in.readNextFrame();
138             assertNotNull(frame);
139             assertEquals(FrameType.CBEMM_ICC_BASE, frame.getType());
140             assertEquals("031762120162", frame.get(Label.ADCO));
141             assertEquals(30, frame.getAsInt(Label.ISOUSC));
142             assertEquals(190575, frame.getAsInt(Label.BASE));
143             assertEquals("TH..", frame.get(Label.PTEC));
144             assertEquals(1, frame.getAsInt(Label.IINST));
145             assertEquals(90, frame.getAsInt(Label.IMAX));
146             assertEquals(270, frame.getAsInt(Label.PAPP));
147             assertNull(frame.get(Label.ADPS));
148         }
149     }
150
151     @Test
152     public void testInvalidADPSgrouplineWithAutoRepairActivated() throws Exception {
153         try (TeleinfoInputStream in = new TeleinfoInputStream(
154                 new FileInputStream(TestUtils.getTestFile("invalid-adps-groupline.raw")), true)) {
155             Frame frame = in.readNextFrame();
156
157             assertNotNull(frame);
158             assertEquals(Frame.class, frame.getClass());
159             assertEquals(37, frame.getAsInt(Label.ADPS));
160         }
161     }
162 }