2 * Copyright (c) 2010-2022 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.lcn.internal.subhandler;
15 import static org.mockito.Mockito.verify;
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.junit.jupiter.api.BeforeEach;
19 import org.junit.jupiter.api.Test;
20 import org.openhab.binding.lcn.internal.common.LcnChannelGroup;
21 import org.openhab.core.library.types.StringType;
26 * @author Fabian Wolter - Initial contribution
29 public class LcnModuleLogicSubHandlerTest extends AbstractTestLcnModuleSubHandler {
30 private static final StringType ON = new StringType("ON");
31 private static final StringType OFF = new StringType("OFF");
32 private static final StringType BLINK = new StringType("BLINK");
33 private static final StringType FLICKER = new StringType("FLICKER");
34 private static final StringType NOT = new StringType("NOT");
35 private static final StringType OR = new StringType("OR");
36 private static final StringType AND = new StringType("AND");
37 private @NonNullByDefault({}) LcnModuleLogicSubHandler l;
44 l = new LcnModuleLogicSubHandler(handler, info);
48 public void testStatusLedOffLogicNot() {
49 l.tryParse("=M000005.TLAAAAAAAAAAAANNNN");
50 verify(handler).updateChannel(LcnChannelGroup.LED, "1", OFF);
51 verify(handler).updateChannel(LcnChannelGroup.LED, "2", OFF);
52 verify(handler).updateChannel(LcnChannelGroup.LED, "3", OFF);
53 verify(handler).updateChannel(LcnChannelGroup.LED, "4", OFF);
54 verify(handler).updateChannel(LcnChannelGroup.LED, "5", OFF);
55 verify(handler).updateChannel(LcnChannelGroup.LED, "6", OFF);
56 verify(handler).updateChannel(LcnChannelGroup.LED, "7", OFF);
57 verify(handler).updateChannel(LcnChannelGroup.LED, "8", OFF);
58 verify(handler).updateChannel(LcnChannelGroup.LED, "9", OFF);
59 verify(handler).updateChannel(LcnChannelGroup.LED, "10", OFF);
60 verify(handler).updateChannel(LcnChannelGroup.LED, "11", OFF);
61 verify(handler).updateChannel(LcnChannelGroup.LED, "12", OFF);
62 verify(handler).updateChannel(LcnChannelGroup.LOGIC, "1", NOT);
63 verify(handler).updateChannel(LcnChannelGroup.LOGIC, "2", NOT);
64 verify(handler).updateChannel(LcnChannelGroup.LOGIC, "3", NOT);
65 verify(handler).updateChannel(LcnChannelGroup.LOGIC, "4", NOT);
69 public void testStatusMixed() {
70 l.tryParse("=M000005.TLAEBFAAAAAAAFNVNT");
71 verify(handler).updateChannel(LcnChannelGroup.LED, "1", OFF);
72 verify(handler).updateChannel(LcnChannelGroup.LED, "2", ON);
73 verify(handler).updateChannel(LcnChannelGroup.LED, "3", BLINK);
74 verify(handler).updateChannel(LcnChannelGroup.LED, "4", FLICKER);
75 verify(handler).updateChannel(LcnChannelGroup.LED, "5", OFF);
76 verify(handler).updateChannel(LcnChannelGroup.LED, "6", OFF);
77 verify(handler).updateChannel(LcnChannelGroup.LED, "7", OFF);
78 verify(handler).updateChannel(LcnChannelGroup.LED, "8", OFF);
79 verify(handler).updateChannel(LcnChannelGroup.LED, "9", OFF);
80 verify(handler).updateChannel(LcnChannelGroup.LED, "10", OFF);
81 verify(handler).updateChannel(LcnChannelGroup.LED, "11", OFF);
82 verify(handler).updateChannel(LcnChannelGroup.LED, "12", FLICKER);
83 verify(handler).updateChannel(LcnChannelGroup.LOGIC, "1", NOT);
84 verify(handler).updateChannel(LcnChannelGroup.LOGIC, "2", AND);
85 verify(handler).updateChannel(LcnChannelGroup.LOGIC, "3", NOT);
86 verify(handler).updateChannel(LcnChannelGroup.LOGIC, "4", OR);
90 public void testStatusSingleLogic1Not() {
91 l.tryParse("=M000005S1000");
92 verify(handler).updateChannel(LcnChannelGroup.LOGIC, "1", NOT);
96 public void testStatusSingleLogic4Or() {
97 l.tryParse("=M000005S4025");
98 verify(handler).updateChannel(LcnChannelGroup.LOGIC, "4", OR);
102 public void testStatusSingleLogic3And() {
103 l.tryParse("=M000005S3050");
104 verify(handler).updateChannel(LcnChannelGroup.LOGIC, "3", AND);