]> git.basschouten.com Git - openhab-addons.git/blob
1f977c8d1cfb1bb868817f8d1d6e77cb71c41549
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2022 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.miio.internal;
14
15 import static org.junit.jupiter.api.Assertions.*;
16
17 import java.util.Collections;
18 import java.util.HashMap;
19 import java.util.Map;
20
21 import org.eclipse.jdt.annotation.NonNullByDefault;
22 import org.junit.jupiter.api.Test;
23 import org.openhab.binding.miio.internal.basic.Conversions;
24
25 import com.google.gson.JsonArray;
26 import com.google.gson.JsonElement;
27 import com.google.gson.JsonParser;
28 import com.google.gson.JsonPrimitive;
29
30 /**
31  * Test case for {@link ConversionsTest}
32  *
33  * @author Marcel Verpaalen - Initial contribution
34  *
35  */
36 @NonNullByDefault
37 public class ConversionsTest {
38
39     @Test
40     public void getDidElementTest() {
41         Map<String, Object> deviceVariables = new HashMap<>();
42         String transformation = "getDidElement";
43         JsonElement validInput = new JsonPrimitive(
44                 "{\"361185596\":\"{\\\"C812105B04000400\\\":\\\"-92\\\",\\\"blt.3.17q3si5345k00\\\":\\\"-54\\\",\\\"blt.4.10heul64og400\\\":\\\"-73\\\"}\"}");
45
46         // test no did in deviceVariables
47         JsonElement value = validInput;
48         JsonElement transformedResponse = Conversions.execute(transformation, value, deviceVariables);
49         assertNotNull(transformedResponse);
50         assertEquals(value, transformedResponse);
51
52         // test valid input & response
53         deviceVariables.put("deviceId", "361185596");
54         value = validInput;
55         transformedResponse = Conversions.execute(transformation, value, deviceVariables);
56         assertNotNull(transformedResponse);
57         assertEquals(new JsonPrimitive(
58                 "{\"C812105B04000400\":\"-92\",\"blt.3.17q3si5345k00\":\"-54\",\"blt.4.10heul64og400\":\"-73\"}"),
59                 transformedResponse);
60
61         // test non json
62         value = new JsonPrimitive("some non json value");
63         transformedResponse = Conversions.execute(transformation, value, deviceVariables);
64         assertNotNull(transformedResponse);
65         assertEquals(value, transformedResponse);
66
67         // test different did in deviceVariables
68         deviceVariables.put("deviceId", "ABC185596");
69         value = validInput;
70         transformedResponse = Conversions.execute(transformation, value, deviceVariables);
71         assertNotNull(transformedResponse);
72         assertEquals(value, transformedResponse);
73
74         // test empty input
75         value = new JsonPrimitive("");
76         transformedResponse = Conversions.execute(transformation, value, deviceVariables);
77         assertNotNull(transformedResponse);
78         assertEquals(value, transformedResponse);
79     }
80
81     @Test
82     public void getJsonElementTest() {
83
84         Map<String, Object> deviceVariables = Collections.emptyMap();
85
86         // test invalid missing element
87         String transformation = "getJsonElement";
88         JsonElement value = new JsonPrimitive("");
89         JsonElement resp = Conversions.execute(transformation, value, deviceVariables);
90         assertNotNull(resp);
91         assertEquals(value, resp);
92
93         // test invalid missing element
94         value = new JsonPrimitive("{\"test\": \"testresponse\"}");
95         resp = Conversions.execute(transformation, value, deviceVariables);
96         assertNotNull(resp);
97         assertEquals(value, resp);
98
99         transformation = "getJsonElement-test";
100
101         // test non json
102         value = new JsonPrimitive("some non json value");
103         resp = Conversions.execute(transformation, value, deviceVariables);
104         assertNotNull(resp);
105         assertEquals(value, resp);
106
107         // test non json empty string
108         value = new JsonPrimitive("");
109         resp = Conversions.execute(transformation, value, deviceVariables);
110         assertNotNull(resp);
111         assertEquals(value, resp);
112
113         // test input as jsonString
114         value = new JsonPrimitive("{\"test\": \"testresponse\"}");
115         resp = Conversions.execute(transformation, value, deviceVariables);
116         assertNotNull(resp);
117         assertEquals(new JsonPrimitive("testresponse"), resp);
118
119         // test input as jsonObject
120         value = JsonParser.parseString("{\"test\": \"testresponse\"}");
121         resp = Conversions.execute(transformation, value, deviceVariables);
122         assertNotNull(resp);
123         assertEquals(new JsonPrimitive("testresponse"), resp);
124
125         // test input as jsonString for a number
126         value = new JsonPrimitive("{\"test\": 3}");
127         resp = Conversions.execute(transformation, value, deviceVariables);
128         assertNotNull(resp);
129         assertEquals(new JsonPrimitive(3), resp);
130
131         // test input as jsonString for a array
132         value = new JsonPrimitive("{\"test\": []}");
133         resp = Conversions.execute(transformation, value, deviceVariables);
134         assertNotNull(resp);
135         assertEquals(new JsonArray(), resp);
136
137         // test input as jsonString for a boolean
138         value = new JsonPrimitive("{\"test\": false}");
139         resp = Conversions.execute(transformation, value, deviceVariables);
140         assertNotNull(resp);
141         assertEquals(new JsonPrimitive(false), resp);
142
143         // test input as jsonObject for a number
144         value = JsonParser.parseString("{\"test\": 3}");
145         resp = Conversions.execute(transformation, value, deviceVariables);
146         assertNotNull(resp);
147         assertEquals(new JsonPrimitive(3), resp);
148
149         // test input as jsonString for non-existing element
150         value = new JsonPrimitive("{\"nottest\": \"testresponse\"}");
151         resp = Conversions.execute(transformation, value, deviceVariables);
152         assertNotNull(resp);
153         assertEquals(value, resp);
154
155         // test input as jsonString for non-existing element
156         value = JsonParser.parseString("{\"nottest\": \"testresponse\"}");
157         resp = Conversions.execute(transformation, value, deviceVariables);
158         assertNotNull(resp);
159         assertEquals(value, resp);
160     }
161 }