]> git.basschouten.com Git - openhab-addons.git/blob
6d640bf483f55fe4a6d6658b6623375e48398d3b
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2024 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
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
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.shelly.internal.api;
14
15 import static org.hamcrest.CoreMatchers.*;
16 import static org.hamcrest.MatcherAssert.assertThat;
17 import static org.openhab.binding.shelly.internal.discovery.ShellyThingCreator.*;
18
19 import java.util.stream.Stream;
20
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;
25
26 /**
27  * Tests for {@link ShellyDeviceProfile}.
28  * 
29  * @author Jacob Laursen - Initial contribution
30  */
31 @NonNullByDefault
32 public class ShellyDeviceProfileTest {
33
34     @ParameterizedTest
35     @MethodSource("provideTestCasesForApiDetermination")
36     void determineApi(String thingTypeId, boolean expectedIsGeneration2, boolean expectedIsBlu) {
37         boolean actualIsGeneration2 = ShellyDeviceProfile.isGeneration2(thingTypeId);
38         assertThat(actualIsGeneration2, is(equalTo(expectedIsGeneration2)));
39
40         boolean actualIsBlue = ShellyDeviceProfile.isBluSeries(thingTypeId);
41         assertThat(actualIsBlue, is(equalTo(expectedIsBlu)));
42     }
43
44     private static Stream<Arguments> provideTestCasesForApiDetermination() {
45         return Stream.of( //
46                 // Shelly BLU
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), //
52                 // Shelly Bulb
53                 Arguments.of(THING_TYPE_SHELLYBULB_STR, false, false), //
54                 // Generation 1
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));
116     }
117 }