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