2 * Copyright (c) 2010-2023 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.miio.internal;
15 import static org.junit.jupiter.api.Assertions.*;
17 import java.util.Collections;
18 import java.util.HashMap;
21 import org.eclipse.jdt.annotation.NonNullByDefault;
22 import org.junit.jupiter.api.Test;
23 import org.openhab.binding.miio.internal.basic.Conversions;
25 import com.google.gson.JsonArray;
26 import com.google.gson.JsonElement;
27 import com.google.gson.JsonParser;
28 import com.google.gson.JsonPrimitive;
31 * Test case for {@link ConversionsTest}
33 * @author Marcel Verpaalen - Initial contribution
37 public class ConversionsTest {
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\\\"}\"}");
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);
52 // test valid input & response
53 deviceVariables.put("deviceId", "361185596");
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\"}"),
62 value = new JsonPrimitive("some non json value");
63 transformedResponse = Conversions.execute(transformation, value, deviceVariables);
64 assertNotNull(transformedResponse);
65 assertEquals(value, transformedResponse);
67 // test different did in deviceVariables
68 deviceVariables.put("deviceId", "ABC185596");
70 transformedResponse = Conversions.execute(transformation, value, deviceVariables);
71 assertNotNull(transformedResponse);
72 assertEquals(value, transformedResponse);
75 value = new JsonPrimitive("");
76 transformedResponse = Conversions.execute(transformation, value, deviceVariables);
77 assertNotNull(transformedResponse);
78 assertEquals(value, transformedResponse);
82 public void getJsonElementTest() {
83 Map<String, Object> deviceVariables = Collections.emptyMap();
85 // test invalid missing element
86 String transformation = "getJsonElement";
87 JsonElement value = new JsonPrimitive("");
88 JsonElement resp = Conversions.execute(transformation, value, deviceVariables);
90 assertEquals(value, resp);
92 // test invalid missing element
93 value = new JsonPrimitive("{\"test\": \"testresponse\"}");
94 resp = Conversions.execute(transformation, value, deviceVariables);
96 assertEquals(value, resp);
98 transformation = "getJsonElement-test";
101 value = new JsonPrimitive("some non json value");
102 resp = Conversions.execute(transformation, value, deviceVariables);
104 assertEquals(value, resp);
106 // test non json empty string
107 value = new JsonPrimitive("");
108 resp = Conversions.execute(transformation, value, deviceVariables);
110 assertEquals(value, resp);
112 // test input as jsonString
113 value = new JsonPrimitive("{\"test\": \"testresponse\"}");
114 resp = Conversions.execute(transformation, value, deviceVariables);
116 assertEquals(new JsonPrimitive("testresponse"), resp);
118 // test input as jsonObject
119 value = JsonParser.parseString("{\"test\": \"testresponse\"}");
120 resp = Conversions.execute(transformation, value, deviceVariables);
122 assertEquals(new JsonPrimitive("testresponse"), resp);
124 // test input as jsonString for a number
125 value = new JsonPrimitive("{\"test\": 3}");
126 resp = Conversions.execute(transformation, value, deviceVariables);
128 assertEquals(new JsonPrimitive(3), resp);
130 // test input as jsonString for an array
131 value = new JsonPrimitive("{\"test\": []}");
132 resp = Conversions.execute(transformation, value, deviceVariables);
134 assertEquals(new JsonArray(), resp);
136 // test input as jsonString for a boolean
137 value = new JsonPrimitive("{\"test\": false}");
138 resp = Conversions.execute(transformation, value, deviceVariables);
140 assertEquals(new JsonPrimitive(false), resp);
142 // test input as jsonObject for a number
143 value = JsonParser.parseString("{\"test\": 3}");
144 resp = Conversions.execute(transformation, value, deviceVariables);
146 assertEquals(new JsonPrimitive(3), resp);
148 // test input as jsonString for non-existing element
149 value = new JsonPrimitive("{\"nottest\": \"testresponse\"}");
150 resp = Conversions.execute(transformation, value, deviceVariables);
152 assertEquals(value, resp);
154 // test input as jsonString for non-existing element
155 value = JsonParser.parseString("{\"nottest\": \"testresponse\"}");
156 resp = Conversions.execute(transformation, value, deviceVariables);
158 assertEquals(value, resp);