2 * Copyright (c) 2010-2020 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.teleinfo.internal.reader.io;
15 import static org.junit.jupiter.api.Assertions.*;
17 import java.io.FileInputStream;
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;
35 * @author Nicolas SIBERIL - Initial contribution
38 public class TeleinfoInputStreamTest {
39 private static final int TIMEOUT_US = 5000000;
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();
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());
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,
71 Frame frame = in.readNextFrame();
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());
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();
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());
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,
121 Frame frame = in.readNextFrame();
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());
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,
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());
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,
171 Frame frame = in.readNextFrame();
173 assertNotNull(frame);
174 assertEquals(FrameCbemmEvolutionIccBaseOption.class, frame.getClass());
175 FrameCbemmEvolutionIccBaseOption frameCbemmEvolutionIccBaseOption = (FrameCbemmEvolutionIccBaseOption) frame;
176 assertEquals(37, frameCbemmEvolutionIccBaseOption.getAdps().intValue());