2 * Copyright (c) 2010-2022 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() {
84 Map<String, Object> deviceVariables = Collections.emptyMap();
86 // test invalid missing element
87 String transformation = "getJsonElement";
88 JsonElement value = new JsonPrimitive("");
89 JsonElement resp = Conversions.execute(transformation, value, deviceVariables);
91 assertEquals(value, resp);
93 // test invalid missing element
94 value = new JsonPrimitive("{\"test\": \"testresponse\"}");
95 resp = Conversions.execute(transformation, value, deviceVariables);
97 assertEquals(value, resp);
99 transformation = "getJsonElement-test";
102 value = new JsonPrimitive("some non json value");
103 resp = Conversions.execute(transformation, value, deviceVariables);
105 assertEquals(value, resp);
107 // test non json empty string
108 value = new JsonPrimitive("");
109 resp = Conversions.execute(transformation, value, deviceVariables);
111 assertEquals(value, resp);
113 // test input as jsonString
114 value = new JsonPrimitive("{\"test\": \"testresponse\"}");
115 resp = Conversions.execute(transformation, value, deviceVariables);
117 assertEquals(new JsonPrimitive("testresponse"), resp);
119 // test input as jsonObject
120 value = JsonParser.parseString("{\"test\": \"testresponse\"}");
121 resp = Conversions.execute(transformation, value, deviceVariables);
123 assertEquals(new JsonPrimitive("testresponse"), resp);
125 // test input as jsonString for a number
126 value = new JsonPrimitive("{\"test\": 3}");
127 resp = Conversions.execute(transformation, value, deviceVariables);
129 assertEquals(new JsonPrimitive(3), resp);
131 // test input as jsonString for a array
132 value = new JsonPrimitive("{\"test\": []}");
133 resp = Conversions.execute(transformation, value, deviceVariables);
135 assertEquals(new JsonArray(), resp);
137 // test input as jsonString for a boolean
138 value = new JsonPrimitive("{\"test\": false}");
139 resp = Conversions.execute(transformation, value, deviceVariables);
141 assertEquals(new JsonPrimitive(false), resp);
143 // test input as jsonObject for a number
144 value = JsonParser.parseString("{\"test\": 3}");
145 resp = Conversions.execute(transformation, value, deviceVariables);
147 assertEquals(new JsonPrimitive(3), resp);
149 // test input as jsonString for non-existing element
150 value = new JsonPrimitive("{\"nottest\": \"testresponse\"}");
151 resp = Conversions.execute(transformation, value, deviceVariables);
153 assertEquals(value, resp);
155 // test input as jsonString for non-existing element
156 value = JsonParser.parseString("{\"nottest\": \"testresponse\"}");
157 resp = Conversions.execute(transformation, value, deviceVariables);
159 assertEquals(value, resp);