2 * Copyright (c) 2010-2024 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.shelly.internal.api;
15 import static org.hamcrest.CoreMatchers.*;
16 import static org.hamcrest.MatcherAssert.assertThat;
17 import static org.openhab.binding.shelly.internal.discovery.ShellyThingCreator.*;
19 import java.util.stream.Stream;
21 import org.eclipse.jdt.annotation.NonNullByDefault;
22 import org.junit.jupiter.params.ParameterizedTest;
23 import org.junit.jupiter.params.provider.Arguments;
24 import org.junit.jupiter.params.provider.MethodSource;
27 * Tests for {@link ShellyDeviceProfile}.
29 * @author Jacob Laursen - Initial contribution
32 public class ShellyDeviceProfileTest {
35 @MethodSource("provideTestCasesForApiDetermination")
36 void determineApi(String thingTypeId, boolean expectedIsGeneration2, boolean expectedIsBlu) {
37 boolean actualIsGeneration2 = ShellyDeviceProfile.isGeneration2(thingTypeId);
38 assertThat(actualIsGeneration2, is(equalTo(expectedIsGeneration2)));
40 boolean actualIsBlue = ShellyDeviceProfile.isBluSeries(thingTypeId);
41 assertThat(actualIsBlue, is(equalTo(expectedIsBlu)));
44 private static Stream<Arguments> provideTestCasesForApiDetermination() {
47 Arguments.of(THING_TYPE_SHELLYBLUBUTTON_STR, true, true), //
48 Arguments.of(THING_TYPE_SHELLYBLUDW_STR, true, true), //
49 Arguments.of(THING_TYPE_SHELLYBLUMOTION_STR, true, true), //
50 Arguments.of(THING_TYPE_SHELLYBLUHT_STR, true, true), //
51 Arguments.of(THING_TYPE_SHELLYBLUGW_STR, false, false), //
53 Arguments.of(THING_TYPE_SHELLYBULB_STR, false, false), //
55 Arguments.of(THING_TYPE_SHELLYDUO_STR, false, false), //
56 Arguments.of(THING_TYPE_SHELLYDUORGBW_STR, false, false), //
57 Arguments.of(THING_TYPE_SHELLYVINTAGE_STR, false, false), //
58 Arguments.of("shellyrgbw2-color", false, false), //
59 Arguments.of("shellyrgbw2-white", false, false), //
60 Arguments.of(THING_TYPE_SHELLY1_STR, false, false), //
61 Arguments.of(THING_TYPE_SHELLY1L_STR, false, false), //
62 Arguments.of(THING_TYPE_SHELLY1PM_STR, false, false), //
63 Arguments.of(THING_TYPE_SHELLYEM_STR, false, false), //
64 Arguments.of(THING_TYPE_SHELLY3EM_STR, false, false), //
65 Arguments.of(THING_TYPE_SHELLY2_RELAY_STR, false, false), //
66 Arguments.of(THING_TYPE_SHELLY2_ROLLER_STR, false, false), //
67 Arguments.of(THING_TYPE_SHELLY25_RELAY_STR, false, false), //
68 Arguments.of(THING_TYPE_SHELLY25_ROLLER_STR, false, false), //
69 Arguments.of(THING_TYPE_SHELLY4PRO_STR, false, false), //
70 Arguments.of(THING_TYPE_SHELLYPLUG_STR, false, false), //
71 Arguments.of(THING_TYPE_SHELLYPLUGS_STR, false, false), //
72 Arguments.of(THING_TYPE_SHELLYPLUGU1_STR, false, false), //
73 Arguments.of(THING_TYPE_SHELLYUNI_STR, false, false), //
74 Arguments.of(THING_TYPE_SHELLYDIMMER_STR, false, false), //
75 Arguments.of(THING_TYPE_SHELLYDIMMER2_STR, false, false), //
76 Arguments.of(THING_TYPE_SHELLYIX3_STR, false, false), //
77 Arguments.of(THING_TYPE_SHELLYHT_STR, false, false), //
78 Arguments.of(THING_TYPE_SHELLYSMOKE_STR, false, false), //
79 Arguments.of(THING_TYPE_SHELLYGAS_STR, false, false), //
80 Arguments.of(THING_TYPE_SHELLYFLOOD_STR, false, false), //
81 Arguments.of(THING_TYPE_SHELLYDOORWIN_STR, false, false), //
82 Arguments.of(THING_TYPE_SHELLYDOORWIN2_STR, false, false), //
83 Arguments.of(THING_TYPE_SHELLYSENSE_STR, false, false), //
84 Arguments.of(THING_TYPE_SHELLYBUTTON1_STR, false, false), //
85 Arguments.of(THING_TYPE_SHELLYBUTTON2_STR, false, false), //
86 Arguments.of(THING_TYPE_SHELLYMOTION_STR, false, false), //
87 Arguments.of(THING_TYPE_SHELLYTRV_STR, false, false), //
88 // Generation 2 Plus series
89 Arguments.of(THING_TYPE_SHELLYPLUS1_STR, true, false), //
90 Arguments.of(THING_TYPE_SHELLYPLUS1PM_STR, true, false), //
91 Arguments.of(THING_TYPE_SHELLYPLUS2PM_RELAY_STR, true, false), //
92 Arguments.of(THING_TYPE_SHELLYPLUS2PM_ROLLER_STR, true, false), //
93 Arguments.of(THING_TYPE_SHELLYPLUSPLUGS_STR, true, false), //
94 Arguments.of(THING_TYPE_SHELLYPLUSI4_STR, true, false), //
95 Arguments.of(THING_TYPE_SHELLYPLUSI4DC_STR, true, false), //
96 Arguments.of(THING_TYPE_SHELLY1MINI_STR, true, false), //
97 Arguments.of(THING_TYPE_SHELLYPMMINI_STR, true, false), //
98 Arguments.of(THING_TYPE_SHELLY1PMMINI_STR, true, false), //
99 // Generation 2 Pro series
100 Arguments.of(THING_TYPE_SHELLYPRO1_STR, true, false), //
101 Arguments.of(THING_TYPE_SHELLYPRO1PM_STR, true, false), //
102 Arguments.of(THING_TYPE_SHELLYPRO2_RELAY_STR, true, false), //
103 Arguments.of(THING_TYPE_SHELLYPRO2PM_RELAY_STR, true, false), //
104 Arguments.of(THING_TYPE_SHELLYPRO2PM_ROLLER_STR, true, false), //
105 Arguments.of(THING_TYPE_SHELLYPRO3_STR, true, false), //
106 Arguments.of(THING_TYPE_SHELLYPRO3EM_STR, true, false), //
107 Arguments.of(THING_TYPE_SHELLYPROEM50_STR, true, false), //
108 Arguments.of(THING_TYPE_SHELLYPRO4PM_STR, true, false), //
109 Arguments.of(THING_TYPE_SHELLYPLUSDIMMERUS_STR, true, false), //
110 Arguments.of(THING_TYPE_SHELLYPLUSDIMMER10V_STR, true, false), //
111 Arguments.of(THING_TYPE_SHELLYPLUSHTG3_STR, true, false), //
112 Arguments.of(THING_TYPE_SHELLYPLUSSMOKE_STR, true, false), //
113 Arguments.of(THING_TYPE_SHELLYPLUSWALLDISPLAY_STR, true, false), //
114 Arguments.of(THING_TYPE_SHELLYPROTECTED_STR, false, false), //
115 Arguments.of(THING_TYPE_SHELLYUNKNOWN_STR, false, false));