]> git.basschouten.com Git - openhab-addons.git/blob
a568224866415a12575fece455d6c7ca96583614
[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.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         Map<String, Object> deviceVariables = Collections.emptyMap();
84
85         // test invalid missing element
86         String transformation = "getJsonElement";
87         JsonElement value = new JsonPrimitive("");
88         JsonElement resp = Conversions.execute(transformation, value, deviceVariables);
89         assertNotNull(resp);
90         assertEquals(value, resp);
91
92         // test invalid missing element
93         value = new JsonPrimitive("{\"test\": \"testresponse\"}");
94         resp = Conversions.execute(transformation, value, deviceVariables);
95         assertNotNull(resp);
96         assertEquals(value, resp);
97
98         transformation = "getJsonElement-test";
99
100         // test non json
101         value = new JsonPrimitive("some non json value");
102         resp = Conversions.execute(transformation, value, deviceVariables);
103         assertNotNull(resp);
104         assertEquals(value, resp);
105
106         // test non json empty string
107         value = new JsonPrimitive("");
108         resp = Conversions.execute(transformation, value, deviceVariables);
109         assertNotNull(resp);
110         assertEquals(value, resp);
111
112         // test input as jsonString
113         value = new JsonPrimitive("{\"test\": \"testresponse\"}");
114         resp = Conversions.execute(transformation, value, deviceVariables);
115         assertNotNull(resp);
116         assertEquals(new JsonPrimitive("testresponse"), resp);
117
118         // test input as jsonObject
119         value = JsonParser.parseString("{\"test\": \"testresponse\"}");
120         resp = Conversions.execute(transformation, value, deviceVariables);
121         assertNotNull(resp);
122         assertEquals(new JsonPrimitive("testresponse"), resp);
123
124         // test input as jsonString for a number
125         value = new JsonPrimitive("{\"test\": 3}");
126         resp = Conversions.execute(transformation, value, deviceVariables);
127         assertNotNull(resp);
128         assertEquals(new JsonPrimitive(3), resp);
129
130         // test input as jsonString for an array
131         value = new JsonPrimitive("{\"test\": []}");
132         resp = Conversions.execute(transformation, value, deviceVariables);
133         assertNotNull(resp);
134         assertEquals(new JsonArray(), resp);
135
136         // test input as jsonString for a boolean
137         value = new JsonPrimitive("{\"test\": false}");
138         resp = Conversions.execute(transformation, value, deviceVariables);
139         assertNotNull(resp);
140         assertEquals(new JsonPrimitive(false), resp);
141
142         // test input as jsonObject for a number
143         value = JsonParser.parseString("{\"test\": 3}");
144         resp = Conversions.execute(transformation, value, deviceVariables);
145         assertNotNull(resp);
146         assertEquals(new JsonPrimitive(3), resp);
147
148         // test input as jsonString for non-existing element
149         value = new JsonPrimitive("{\"nottest\": \"testresponse\"}");
150         resp = Conversions.execute(transformation, value, deviceVariables);
151         assertNotNull(resp);
152         assertEquals(value, resp);
153
154         // test input as jsonString for non-existing element
155         value = JsonParser.parseString("{\"nottest\": \"testresponse\"}");
156         resp = Conversions.execute(transformation, value, deviceVariables);
157         assertNotNull(resp);
158         assertEquals(value, resp);
159     }
160 }