]> git.basschouten.com Git - openhab-addons.git/blob
5149a918e149a9d9acd0ec75905f64c7c76bd580
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2020 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.dto.Frame;
22 import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIccBaseOption;
23 import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIccHcOption;
24 import org.openhab.binding.teleinfo.internal.dto.cbemm.evoicc.FrameCbemmEvolutionIccTempoOption;
25 import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLongBaseOption;
26 import org.openhab.binding.teleinfo.internal.dto.cbetm.FrameCbetmLongEjpOption;
27 import org.openhab.binding.teleinfo.internal.dto.common.FrameTempoOption.ProgrammeCircuit1;
28 import org.openhab.binding.teleinfo.internal.dto.common.FrameTempoOption.ProgrammeCircuit2;
29 import org.openhab.binding.teleinfo.internal.dto.common.Hhphc;
30 import org.openhab.binding.teleinfo.internal.dto.common.Ptec;
31 import org.openhab.binding.teleinfo.util.TestUtils;
32
33 /**
34  *
35  * @author Nicolas SIBERIL - Initial contribution
36  */
37 @NonNullByDefault
38 public class TeleinfoInputStreamTest {
39     private static final int TIMEOUT_US = 5000000;
40
41     @Test
42     public void testReadNextFrameCbetmBase1() throws Exception {
43         try (TeleinfoInputStream in = new TeleinfoInputStream(
44                 new FileInputStream(TestUtils.getTestFile("cbetm-base-option-1.raw")), TIMEOUT_US, TIMEOUT_US, false)) {
45             Frame frame = in.readNextFrame();
46
47             assertNotNull(frame);
48             assertEquals(FrameCbetmLongBaseOption.class, frame.getClass());
49             FrameCbetmLongBaseOption frameCbetmLongBaseOption = (FrameCbetmLongBaseOption) frame;
50             assertEquals("XXXXXXXXXXXX", frameCbetmLongBaseOption.getAdco());
51             assertEquals(20, frameCbetmLongBaseOption.getIsousc());
52             assertEquals(1181243, frameCbetmLongBaseOption.getBase());
53             assertEquals(Ptec.TH, frameCbetmLongBaseOption.getPtec());
54             assertEquals(0, frameCbetmLongBaseOption.getIinst1());
55             assertEquals(2, frameCbetmLongBaseOption.getIinst2());
56             assertEquals(0, frameCbetmLongBaseOption.getIinst3());
57             assertEquals(26, frameCbetmLongBaseOption.getImax1().intValue());
58             assertEquals(18, frameCbetmLongBaseOption.getImax2().intValue());
59             assertEquals(27, frameCbetmLongBaseOption.getImax3().intValue());
60             assertEquals(7990, frameCbetmLongBaseOption.getPmax());
61             assertEquals(540, frameCbetmLongBaseOption.getPapp());
62             assertEquals("00", frameCbetmLongBaseOption.getPpot());
63         }
64     }
65
66     @Test
67     public void testReadNextFrameCbemmEvoIccHc1() throws Exception {
68         try (TeleinfoInputStream in = new TeleinfoInputStream(
69                 new FileInputStream(TestUtils.getTestFile("cbemm-evo-icc-hc-option-1.raw")), TIMEOUT_US, TIMEOUT_US,
70                 false)) {
71             Frame frame = in.readNextFrame();
72
73             assertNotNull(frame);
74             assertEquals(FrameCbemmEvolutionIccHcOption.class, frame.getClass());
75             FrameCbemmEvolutionIccHcOption frameCbemmEvolutionIccHcOption = (FrameCbemmEvolutionIccHcOption) frame;
76             assertEquals("XXXXXXXXXXXX", frameCbemmEvolutionIccHcOption.getAdco());
77             assertEquals(30, frameCbemmEvolutionIccHcOption.getIsousc());
78             assertEquals(6906827, frameCbemmEvolutionIccHcOption.getHchc());
79             assertEquals(7617931, frameCbemmEvolutionIccHcOption.getHchp());
80             assertEquals(Ptec.HP, frameCbemmEvolutionIccHcOption.getPtec());
81             assertEquals(3, frameCbemmEvolutionIccHcOption.getIinst());
82             assertEquals(44, frameCbemmEvolutionIccHcOption.getImax().intValue());
83             assertEquals(680, frameCbemmEvolutionIccHcOption.getPapp());
84             assertNull(frameCbemmEvolutionIccHcOption.getAdps());
85             assertEquals(Hhphc.A, frameCbemmEvolutionIccHcOption.getHhphc());
86         }
87     }
88
89     @Test
90     public void testReadNextFrameCbetmEjp1() throws Exception {
91         try (TeleinfoInputStream in = new TeleinfoInputStream(
92                 new FileInputStream(TestUtils.getTestFile("cbetm-ejp-option-1.raw")), TIMEOUT_US, TIMEOUT_US, false)) {
93             Frame frame = in.readNextFrame();
94
95             assertNotNull(frame);
96             assertEquals(FrameCbetmLongEjpOption.class, frame.getClass());
97             FrameCbetmLongEjpOption frameCbetmLongEjpOption = (FrameCbetmLongEjpOption) frame;
98             assertEquals("XXXXXXXXXX", frameCbetmLongEjpOption.getAdco());
99             assertEquals(30, frameCbetmLongEjpOption.getIsousc());
100             assertEquals(1111111, frameCbetmLongEjpOption.getEjphn());
101             assertEquals(2222222, frameCbetmLongEjpOption.getEjphpm());
102             assertNull(frameCbetmLongEjpOption.getPejp());
103             assertEquals(Ptec.HN, frameCbetmLongEjpOption.getPtec());
104             assertEquals(10, frameCbetmLongEjpOption.getIinst1());
105             assertEquals(5, frameCbetmLongEjpOption.getIinst2());
106             assertEquals(8, frameCbetmLongEjpOption.getIinst3());
107             assertEquals(38, frameCbetmLongEjpOption.getImax1().intValue());
108             assertEquals(42, frameCbetmLongEjpOption.getImax2().intValue());
109             assertEquals(44, frameCbetmLongEjpOption.getImax3().intValue());
110             assertEquals(17480, frameCbetmLongEjpOption.getPmax());
111             assertEquals(5800, frameCbetmLongEjpOption.getPapp());
112             assertEquals("00", frameCbetmLongEjpOption.getPpot());
113         }
114     }
115
116     @Test
117     public void testReadNextFrameCbemmEvoIccTempo1() throws Exception {
118         try (TeleinfoInputStream in = new TeleinfoInputStream(
119                 new FileInputStream(TestUtils.getTestFile("cbemm-evo-icc-tempo-option-1.raw")), TIMEOUT_US, TIMEOUT_US,
120                 false)) {
121             Frame frame = in.readNextFrame();
122
123             assertNotNull(frame);
124             assertEquals(FrameCbemmEvolutionIccTempoOption.class, frame.getClass());
125             FrameCbemmEvolutionIccTempoOption frameCbemmEvolutionIccTempoOption = (FrameCbemmEvolutionIccTempoOption) frame;
126             assertEquals("XXXXXXXXXXXX", frameCbemmEvolutionIccTempoOption.getAdco());
127             assertEquals(45, frameCbemmEvolutionIccTempoOption.getIsousc());
128             assertEquals(2697099, frameCbemmEvolutionIccTempoOption.getBbrhcjb());
129             assertEquals(3494559, frameCbemmEvolutionIccTempoOption.getBbrhpjb());
130             assertEquals(41241, frameCbemmEvolutionIccTempoOption.getBbrhcjw());
131             assertEquals(194168, frameCbemmEvolutionIccTempoOption.getBbrhpjw());
132             assertEquals(0, frameCbemmEvolutionIccTempoOption.getBbrhcjr());
133             assertEquals(89736, frameCbemmEvolutionIccTempoOption.getBbrhpjr());
134             assertEquals(Ptec.HPJR, frameCbemmEvolutionIccTempoOption.getPtec());
135             assertNull(frameCbemmEvolutionIccTempoOption.getDemain());
136             assertEquals(3, frameCbemmEvolutionIccTempoOption.getIinst());
137             assertEquals(37, frameCbemmEvolutionIccTempoOption.getImax().intValue());
138             assertEquals(620, frameCbemmEvolutionIccTempoOption.getPapp());
139             assertNull(frameCbemmEvolutionIccTempoOption.getAdps());
140             assertEquals(Hhphc.Y, frameCbemmEvolutionIccTempoOption.getHhphc());
141             assertEquals(ProgrammeCircuit1.B, frameCbemmEvolutionIccTempoOption.getProgrammeCircuit1());
142             assertEquals(ProgrammeCircuit2.P2, frameCbemmEvolutionIccTempoOption.getProgrammeCircuit2());
143         }
144     }
145
146     @Test
147     public void testReadNextFrameCbemmEvoIccBase1() throws Exception {
148         try (TeleinfoInputStream in = new TeleinfoInputStream(
149                 new FileInputStream(TestUtils.getTestFile("cbemm-evo-icc-base-option-1.raw")), TIMEOUT_US, TIMEOUT_US,
150                 false)) {
151             Frame frame = in.readNextFrame();
152             assertNotNull(frame);
153             assertEquals(FrameCbemmEvolutionIccBaseOption.class, frame.getClass());
154             FrameCbemmEvolutionIccBaseOption frameCbemmEvolutionIccBaseOption = (FrameCbemmEvolutionIccBaseOption) frame;
155             assertEquals("031762120162", frameCbemmEvolutionIccBaseOption.getAdco());
156             assertEquals(30, frameCbemmEvolutionIccBaseOption.getIsousc());
157             assertEquals(190575, frameCbemmEvolutionIccBaseOption.getBase());
158             assertEquals(Ptec.TH, frameCbemmEvolutionIccBaseOption.getPtec());
159             assertEquals(1, frameCbemmEvolutionIccBaseOption.getIinst());
160             assertEquals(90, frameCbemmEvolutionIccBaseOption.getImax().intValue());
161             assertEquals(270, frameCbemmEvolutionIccBaseOption.getPapp());
162             assertNull(frameCbemmEvolutionIccBaseOption.getAdps());
163         }
164     }
165
166     @Test
167     public void testInvalidADPSgrouplineWithAutoRepairActivated() throws Exception {
168         try (TeleinfoInputStream in = new TeleinfoInputStream(
169                 new FileInputStream(TestUtils.getTestFile("invalid-adps-groupline.raw")), TIMEOUT_US, TIMEOUT_US,
170                 true)) {
171             Frame frame = in.readNextFrame();
172
173             assertNotNull(frame);
174             assertEquals(FrameCbemmEvolutionIccBaseOption.class, frame.getClass());
175             FrameCbemmEvolutionIccBaseOption frameCbemmEvolutionIccBaseOption = (FrameCbemmEvolutionIccBaseOption) frame;
176             assertEquals(37, frameCbemmEvolutionIccBaseOption.getAdps().intValue());
177         }
178     }
179 }