]> git.basschouten.com Git - openhab-addons.git/blob
e5d5bd4af6c0b6c4427c85b6c98a4fef012527cb
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 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.hue.internal.clip2;
14
15 import static org.hamcrest.CoreMatchers.*;
16 import static org.hamcrest.MatcherAssert.assertThat;
17
18 import java.math.BigDecimal;
19
20 import org.eclipse.jdt.annotation.NonNullByDefault;
21 import org.eclipse.jdt.annotation.Nullable;
22 import org.junit.jupiter.api.Test;
23 import org.openhab.binding.hue.internal.api.dto.clip2.Dimming;
24 import org.openhab.binding.hue.internal.api.dto.clip2.OnState;
25 import org.openhab.binding.hue.internal.api.dto.clip2.Resource;
26 import org.openhab.binding.hue.internal.api.dto.clip2.enums.ResourceType;
27 import org.openhab.core.library.types.PercentType;
28 import org.openhab.core.types.UnDefType;
29
30 /**
31  * JUnit test for edge cases of OnState and Dimming event and cache resources.
32  *
33  * @author Jacob Laursen - Initial contribution
34  */
35 @NonNullByDefault
36 class OnStateDimmingEdgeCaseTest {
37
38     @Test
39     void getBrightnessStateWhenDimmingMissingReturnNull() {
40         assertThat(createLightResource(true, null).getBrightnessState(), is(equalTo(UnDefType.NULL)));
41     }
42
43     @Test
44     void getBrightnessStateWhenOnAndDimming75ReturnBrightness75() {
45         assertThat(createLightResource(true, 75.0).getBrightnessState(), is(equalTo(new PercentType(75))));
46     }
47
48     @Test
49     void getBrightnessStateWhenOnAndDimming125ReturnBrightness100() {
50         assertThat(createLightResource(true, 125.0).getBrightnessState(), is(equalTo(new PercentType(100))));
51     }
52
53     @Test
54     void getBrightnessStateWhenOffAndDimming100ReturnBrightness0() {
55         assertThat(createLightResource(false, 100.0).getBrightnessState(), is(equalTo(new PercentType(0))));
56     }
57
58     @Test
59     void getBrightnessStateWhenOnStateMissingAndDimming0ReturnMinimumBrightness0() {
60         assertThat(createLightResource(null, 0.0).getBrightnessState(),
61                 is(equalTo(new PercentType(new BigDecimal(Dimming.DEFAULT_MINIMUM_DIMMIMG_LEVEL)))));
62     }
63
64     @Test
65     void getBrightnessStateWhenOnStateMissingAndDimming100ReturnBrightness100() {
66         assertThat(createLightResource(null, 100.0).getBrightnessState(), is(equalTo(new PercentType(100))));
67     }
68
69     @Test
70     void getBrightnessStateWhenOnStateMissingAndDimmingMinus1ReturnMinimumBrightness() {
71         assertThat(createLightResource(null, -1.0).getBrightnessState(),
72                 is(equalTo(new PercentType(new BigDecimal(Dimming.DEFAULT_MINIMUM_DIMMIMG_LEVEL)))));
73     }
74
75     @Test
76     void getBrightnessStateWhenOnAndDimmingMinus1ReturnMinimumBrightness() {
77         assertThat(createLightResource(true, -1.0).getBrightnessState(),
78                 is(equalTo(new PercentType(new BigDecimal(Dimming.DEFAULT_MINIMUM_DIMMIMG_LEVEL)))));
79     }
80
81     @Test
82     void getBrightnessStateWhenOnAndDimming0ReturnMinimumBrightness() {
83         assertThat(createLightResource(true, 0.0).getBrightnessState(),
84                 is(equalTo(new PercentType(new BigDecimal(Dimming.DEFAULT_MINIMUM_DIMMIMG_LEVEL)))));
85     }
86
87     @Test
88     void getBrightnessStateWhenOnAndDimming0ReturnCustomMinimumBrightness() {
89         assertThat(createLightResource(true, 0.0, 2.0).getBrightnessState(), is(equalTo(new PercentType(2))));
90     }
91
92     private Resource createLightResource(@Nullable Boolean on, @Nullable Double brightness) {
93         return createLightResource(on, brightness, null);
94     }
95
96     private Resource createLightResource(@Nullable Boolean on, @Nullable Double brightness,
97             @Nullable Double minimumDimmingLevel) {
98         Resource resource = new Resource(ResourceType.LIGHT);
99
100         if (on != null) {
101             OnState onState = new OnState();
102             onState.setOn(on);
103             resource.setOnState(onState);
104         }
105
106         if (brightness != null) {
107             Dimming dimming = new Dimming();
108             dimming.setBrightness(brightness);
109
110             if (minimumDimmingLevel != null) {
111                 dimming.setMinimumDimmingLevel(minimumDimmingLevel);
112             }
113
114             resource.setDimming(dimming);
115         }
116
117         return resource;
118     }
119 }