2 * Copyright (c) 2010-2023 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.anthem.internal.handler;
15 import static org.junit.jupiter.api.Assertions.*;
16 import static org.openhab.binding.anthem.internal.AnthemBindingConstants.*;
18 import org.eclipse.jdt.annotation.NonNullByDefault;
19 import org.eclipse.jdt.annotation.Nullable;
20 import org.junit.jupiter.api.Test;
21 import org.openhab.core.library.types.DecimalType;
22 import org.openhab.core.library.types.OnOffType;
23 import org.openhab.core.thing.Thing;
26 * The {@link AnthemCommandParserTest} is responsible for testing the functionality
27 * of the Anthem command parser.
29 * @author Mark Hilbush - Initial contribution
32 public class AnthemCommandParserTest {
34 AnthemCommandParser parser = new AnthemCommandParser();
37 public void testInvalidCommands() {
41 update = parser.parseCommand("BOGUS_COMMAND;");
42 assertEquals(null, update);
44 update = parser.parseCommand("UNTERMINATED_COMMAND");
45 assertEquals(null, update);
47 update = parser.parseCommand("Z1POW0");
48 assertEquals(null, update);
50 update = parser.parseCommand("X");
51 assertEquals(null, update);
53 update = parser.parseCommand("Y;");
54 assertEquals(null, update);
56 update = parser.parseCommand("Z1POW67;");
57 assertEquals(null, update);
59 update = parser.parseCommand("POW0;");
60 assertEquals(null, update);
64 public void testPowerCommands() {
68 update = parser.parseCommand("Z1POW1;");
69 assertNotEquals(null, update);
71 assertTrue(update.isStateUpdate());
72 assertFalse(update.isPropertyUpdate());
73 assertEquals("1", update.getStateUpdate().getGroupId());
74 assertEquals(CHANNEL_POWER, update.getStateUpdate().getChannelId());
75 assertEquals(OnOffType.ON, update.getStateUpdate().getState());
78 update = parser.parseCommand("Z2POW0;");
79 assertNotEquals(null, update);
81 assertEquals("2", update.getStateUpdate().getGroupId());
82 assertEquals(CHANNEL_POWER, update.getStateUpdate().getChannelId());
83 assertEquals(OnOffType.OFF, update.getStateUpdate().getState());
88 public void testVolumeCommands() {
92 update = parser.parseCommand("Z1VOL55;");
93 assertNotEquals(null, update);
95 assertEquals("1", update.getStateUpdate().getGroupId());
96 assertEquals(CHANNEL_VOLUME_DB, update.getStateUpdate().getChannelId());
97 assertEquals(new DecimalType(55), update.getStateUpdate().getState());
100 update = parser.parseCommand("Z2VOL99;");
101 assertNotEquals(null, update);
102 if (update != null) {
103 assertEquals("2", update.getStateUpdate().getGroupId());
104 assertEquals(CHANNEL_VOLUME_DB, update.getStateUpdate().getChannelId());
105 assertEquals(new DecimalType(99), update.getStateUpdate().getState());
110 public void testMuteCommands() {
114 update = parser.parseCommand("Z1MUT1;");
115 assertNotEquals(null, update);
116 if (update != null) {
117 assertEquals("1", update.getStateUpdate().getGroupId());
118 assertEquals(CHANNEL_MUTE, update.getStateUpdate().getChannelId());
119 assertEquals(OnOffType.ON, update.getStateUpdate().getState());
122 update = parser.parseCommand("Z2MUT0;");
123 assertNotEquals(null, update);
124 if (update != null) {
125 assertTrue(update.isStateUpdate());
126 assertEquals("2", update.getStateUpdate().getGroupId());
127 assertEquals(CHANNEL_MUTE, update.getStateUpdate().getChannelId());
128 assertEquals(OnOffType.OFF, update.getStateUpdate().getState());
133 public void testNumInputsCommand() {
137 update = parser.parseCommand("ICN8;");
138 assertNotEquals(null, update);
139 if (update != null) {
140 assertTrue(update.isPropertyUpdate());
141 assertEquals(PROPERTY_NUM_AVAILABLE_INPUTS, update.getPropertyUpdate().getName());
142 assertEquals("8", update.getPropertyUpdate().getValue());
145 update = parser.parseCommand("ICN15;");
146 assertNotEquals(null, update);
147 if (update != null) {
148 assertTrue(update.isPropertyUpdate());
149 assertEquals(PROPERTY_NUM_AVAILABLE_INPUTS, update.getPropertyUpdate().getName());
150 assertEquals("15", update.getPropertyUpdate().getValue());
155 public void testRegionProperty() {
159 update = parser.parseCommand("IDRUS;");
160 assertNotEquals(null, update);
161 if (update != null) {
162 assertTrue(update.isPropertyUpdate());
163 assertFalse(update.isStateUpdate());
164 assertEquals(PROPERTY_REGION, update.getPropertyUpdate().getName());
165 assertEquals("US", update.getPropertyUpdate().getValue());
170 public void testSoftwareVersionProperty() {
174 update = parser.parseCommand("IDS1.2.3.4;");
175 assertNotEquals(null, update);
176 if (update != null) {
177 assertTrue(update.isPropertyUpdate());
178 assertEquals(Thing.PROPERTY_FIRMWARE_VERSION, update.getPropertyUpdate().getName());
179 assertEquals("1.2.3.4", update.getPropertyUpdate().getValue());