+ @Test
+ public void testJsonStringToCtxToplevelArray() throws Exception {
+ String path = "src/test/resources/ArrayMenu.json";
+ String content = new String(Files.readAllBytes(Paths.get(path)));
+ Map<String, String> mm = JsonParser.convertToProperties(content);
+ assertEquals("plain", mm.get("name"));
+ assertEquals("true", mm.get("vegetarian"));
+ assertEquals("1", mm.get("id"));
+ assertEquals("1000", mm.get("calories"));
+ assertEquals("pizza", mm.get("type"));
+
+ // The below statements are how I expected it to work, but it does not work this way
+/*
+ assertEquals("1000", mm.get("[0].calories"));
+ assertEquals("1", mm.get("[0].id"));
+ assertEquals("plain", mm.get("[0].name"));
+ assertEquals("pizza", mm.get("[0].type"));
+ assertEquals("true", mm.get("[0].vegetarian"));
+ assertEquals("2000", mm.get("[1].calories"));
+ assertEquals("2", mm.get("[1].id"));
+ assertEquals("Tuesday Special", mm.get("[1].name"));
+ assertEquals("1", mm.get("[1].topping[0].id"));
+ assertEquals("onion", mm.get("[1].topping[0].name"));
+ assertEquals("2", mm.get("[1].topping[1].id"));
+ assertEquals("pepperoni", mm.get("[1].topping[1].name"));
+ assertEquals("2", mm.get("[1].topping_length"));
+ assertEquals("pizza", mm.get("[1].type"));
+ assertEquals("false", mm.get("[1].vegetarian"));
+ assertEquals("1500", mm.get("[2].calories"));
+ assertEquals("3", mm.get("[2].id"));
+ assertEquals("House Special", mm.get("[2].name"));
+ assertEquals("3", mm.get("[2].topping[0].id"));
+ assertEquals("basil", mm.get("[2].topping[0].name"));
+ assertEquals("4", mm.get("[2].topping[1].id"));
+ assertEquals("fresh mozzarella", mm.get("[2].topping[1].name"));
+ assertEquals("5", mm.get("[2].topping[2].id"));
+ assertEquals("tomato", mm.get("[2].topping[2].name"));
+ assertEquals("3", mm.get("[2].topping_length"));
+ assertEquals("pizza", mm.get("[2].type"));
+ assertEquals("true", mm.get("[2].vegetarian"));
+ assertEquals("3", mm.get("_length"));
+*/
+ }
+
+ @Test
+ public void testJsonStringToCtx() throws Exception {
+ String path = "src/test/resources/ObjectMenu.json";
+ String content = new String(Files.readAllBytes(Paths.get(path)));
+ Map<String, String> mm = JsonParser.convertToProperties(content);
+ assertEquals("1000", mm.get("menu[0].calories"));
+ assertEquals("1", mm.get("menu[0].id"));
+ assertEquals("plain", mm.get("menu[0].name"));
+ assertEquals("pizza", mm.get("menu[0].type"));
+ assertEquals("true", mm.get("menu[0].vegetarian"));
+ assertEquals("2000", mm.get("menu[1].calories"));
+ assertEquals("2", mm.get("menu[1].id"));
+ assertEquals("Tuesday Special", mm.get("menu[1].name"));
+ assertEquals("1", mm.get("menu[1].topping[0].id"));
+ assertEquals("onion", mm.get("menu[1].topping[0].name"));
+ assertEquals("2", mm.get("menu[1].topping[1].id"));
+ assertEquals("pepperoni", mm.get("menu[1].topping[1].name"));
+ assertEquals("2", mm.get("menu[1].topping_length"));
+ assertEquals("pizza", mm.get("menu[1].type"));
+ assertEquals("false", mm.get("menu[1].vegetarian"));
+ assertEquals("1500", mm.get("menu[2].calories"));
+ assertEquals("3", mm.get("menu[2].id"));
+ assertEquals("House Special", mm.get("menu[2].name"));
+ assertEquals("3", mm.get("menu[2].topping[0].id"));
+ assertEquals("basil", mm.get("menu[2].topping[0].name"));
+ assertEquals("4", mm.get("menu[2].topping[1].id"));
+ assertEquals("fresh mozzarella", mm.get("menu[2].topping[1].name"));
+ assertEquals("5", mm.get("menu[2].topping[2].id"));
+ assertEquals("tomato", mm.get("menu[2].topping[2].name"));
+ assertEquals("3", mm.get("menu[2].topping_length"));
+ assertEquals("pizza", mm.get("menu[2].type"));
+ assertEquals("true", mm.get("menu[2].vegetarian"));
+ assertEquals("3", mm.get("menu_length"));
+ }
+
+ @Test(expected = SvcLogicException.class) // current behavior is multidimensional arrays are not supported
+ public void test2dJsonStringToCtx() throws Exception {
+ String path = "src/test/resources/2dArray.json";
+ String content = new String(Files.readAllBytes(Paths.get(path)));
+ Map<String, String> mm = JsonParser.convertToProperties(content);
+
+ // code will crash before these tests
+ assertEquals("apple", mm.get("[0][0]"));
+ assertEquals("orange", mm.get("[0][1]"));
+ assertEquals("banana", mm.get("[0][2]"));
+ assertEquals("3", mm.get("[0]_length"));
+ assertEquals("squash", mm.get("[1][0]"));
+ assertEquals("broccoli", mm.get("[1][1]"));
+ assertEquals("cauliflower", mm.get("[1][2]"));
+ assertEquals("3", mm.get("[1]_length"));
+ assertEquals("2", mm.get("_length"));
+ }
+
+ @Test(expected = SvcLogicException.class) // current behavior is multidimensional arrays are not supported
+ public void test3dJsonStringToCtx() throws Exception {
+ String path = "src/test/resources/3dArray.json";
+ String content = new String(Files.readAllBytes(Paths.get(path)));
+ Map<String, String> mm = JsonParser.convertToProperties(content);
+
+ // code will crash before these tests
+ assertEquals("a", mm.get("[0][0][0]"));
+ assertEquals("b", mm.get("[0][0][1]"));
+ assertEquals("c", mm.get("[0][0][2]"));
+ assertEquals("3", mm.get("[0][0]_length"));
+ assertEquals("d", mm.get("[0][1][0]"));
+ assertEquals("e", mm.get("[0][1][1]"));
+ assertEquals("f", mm.get("[0][1][2]"));
+ assertEquals("3", mm.get("[0][1]_length"));
+ assertEquals("2", mm.get("[0]_length"));
+ assertEquals("x", mm.get("[1][0][0]"));
+ assertEquals("y", mm.get("[1][0][1]"));
+ assertEquals("z", mm.get("[1][0][2]"));
+ assertEquals("3", mm.get("[1][0]_length"));
+ assertEquals("1", mm.get("[1]_length"));
+ assertEquals("2", mm.get("_length"));
+ }
+
+ @Test
+ public void testJsonWidgetStringToCtx() throws Exception {
+ String path = "src/test/resources/Widget.json";
+ String content = new String(Files.readAllBytes(Paths.get(path)));
+ Map<String, String> mm = JsonParser.convertToProperties(content);
+ assertEquals("false", mm.get("widget.debug"));
+ assertEquals("center", mm.get("widget.image.alignment"));
+ assertEquals("150", mm.get("widget.image.hOffset"));
+ assertEquals("moon", mm.get("widget.image.name"));
+ assertEquals("images/moon.png", mm.get("widget.image.src"));
+ assertEquals("150", mm.get("widget.image.vOffset"));
+ assertEquals("center", mm.get("widget.text.alignment"));
+ assertEquals("Click Me", mm.get("widget.text.data"));
+ assertEquals("350", mm.get("widget.text.hOffset"));
+ assertEquals("text1", mm.get("widget.text.name"));
+ assertEquals("21", mm.get("widget.text.size"));
+ assertEquals("bold", mm.get("widget.text.style"));
+ assertEquals("200", mm.get("widget.text.vOffset"));
+ assertEquals("300", mm.get("widget.window.height"));
+ assertEquals("main_window", mm.get("widget.window.name"));
+ assertEquals("ONAP Widget", mm.get("widget.window.title"));
+ assertEquals("200", mm.get("widget.window.width"));
+ }
+
+ @Test
+ public void testEmbeddedEscapedJsonJsonStringToCtx() throws Exception {
+ String path = "src/test/resources/EmbeddedEscapedJson.json";
+ String content = new String(Files.readAllBytes(Paths.get(path)));
+ Map<String, String> mm = JsonParser.convertToProperties(content);
+ assertEquals("escapedJsonObject", mm.get("input.parameters[0].name"));
+ assertEquals("[{\"id\":\"0.2.0.0/16\"},{\"id\":\"ge04::/64\"}]", mm.get("input.parameters[0].value"));
+ assertEquals("Hello/World", mm.get("input.parameters[1].value"));
+ assertEquals("resourceName", mm.get("input.parameters[2].name"));
+ assertEquals("The\t\"Best\"\tName", mm.get("input.parameters[2].value"));
+ assertEquals("3", mm.get("input.parameters_length"));
+
+ // Break the embedded json object into properties
+ mm = JsonParser.convertToProperties(mm.get("input.parameters[0].value"));
+ assertEquals("0.2.0.0/16", mm.get("id"));
+ // assertEquals("ge04::/64", mm.get("id")); this second value gets lost