1 package org.opendaylight.controller.sal.restconf.impl.test;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertFalse;
5 import static org.junit.Assert.assertNotNull;
6 import static org.junit.Assert.assertNull;
7 import static org.junit.Assert.assertTrue;
12 import org.junit.Test;
14 import com.google.gson.stream.*;
16 public class ToJsonBasicDataTypesTest {
19 public void simpleYangDataTest() {
22 // TestUtils.readJsonFromFile("/yang-to-json-conversion/simple-yang-types/xml/awaited_output.json",
25 jsonOutput = TestUtils.convertCompositeNodeDataAndYangToJson(
26 TestUtils.loadCompositeNode("/yang-to-json-conversion/simple-data-types/xml/data.xml"),
27 "/yang-to-json-conversion/simple-data-types", "/yang-to-json-conversion/simple-data-types/xml");
28 verifyJsonOutput(jsonOutput);
31 private void verifyJsonOutput(String jsonOutput) {
32 StringReader strReader = new StringReader(jsonOutput);
33 JsonReader jReader = new JsonReader(strReader);
35 String exception = null;
37 jsonReadCont(jReader);
38 } catch (IOException e) {
39 exception = e.getMessage();
42 assertNull("Error during reading Json output: " + exception, exception);
45 private void jsonReadCont(JsonReader jReader) throws IOException {
46 jReader.beginObject();
47 assertNotNull("cont1 is missing.", jReader.hasNext());
49 // Cont dataFromJson = new Cont(jReader.nextName());
51 jsonReadContElements(jReader);
53 assertFalse("cont shouldn't have other element.", jReader.hasNext());
55 // return dataFromJson;
58 private void jsonReadContElements(JsonReader jReader) throws IOException {
59 jReader.beginObject();
60 List<String> loadedLfs = new ArrayList<>();
61 boolean exceptForDecimal5Raised = false;
62 boolean enumChecked = false;
63 boolean bitsChecked = false;
64 boolean lfdecimal6Checked = false;
65 boolean lfdecimal4Checked = false;
66 boolean lfdecimal3Checked = false;
67 boolean lfdecimal2Checked = false;
68 boolean lfdecimal1Checked = false;
69 boolean lfbool1Checked = false;
70 boolean lfbool2Checked = false;
71 boolean lfstrChecked = false;
72 boolean lfbinaryChecked = false;
73 // boolean lfref1Checked = false;
74 boolean lfemptyChecked = false;
75 boolean lfstr1Checked = false;
77 while (jReader.hasNext()) {
78 String keyName = jReader.nextName();
79 JsonToken peek = null;
81 peek = jReader.peek();
82 } catch (IOException e) {
83 if (keyName.equals("lfdecimal5")) {
84 exceptForDecimal5Raised = true;
86 assertTrue("Key " + keyName + " has incorrect value for specifed type", false);
90 if (keyName.startsWith("lfnint") || keyName.startsWith("lfnuint")) {
91 assertEquals("Key " + keyName + " has incorrect type", JsonToken.NUMBER, peek);
94 } catch (NumberFormatException e) {
95 assertTrue("Key " + keyName + " has incorrect value - " + e.getMessage(), false);
97 loadedLfs.add(keyName.substring(3));
98 } else if (keyName.equals("lfstr")) {
99 assertEquals("Key " + keyName + " has incorrect type", JsonToken.STRING, peek);
100 assertEquals("lfstr", jReader.nextString());
102 } else if (keyName.equals("lfstr1")) {
103 assertEquals("Key " + keyName + " has incorrect type", JsonToken.STRING, peek);
104 assertEquals("", jReader.nextString());
105 lfstr1Checked = true;
106 } else if (keyName.equals("lfbool1")) {
107 assertEquals("Key " + keyName + " has incorrect type", JsonToken.BOOLEAN, peek);
108 assertEquals(true, jReader.nextBoolean());
109 lfbool1Checked = true;
110 } else if (keyName.equals("lfbool2")) {
111 assertEquals("Key " + keyName + " has incorrect type", JsonToken.BOOLEAN, peek);
112 assertEquals(false, jReader.nextBoolean());
113 lfbool2Checked = true;
114 } else if (keyName.equals("lfbool3")) {
115 assertEquals("Key " + keyName + " has incorrect type", JsonToken.BOOLEAN, peek);
116 assertEquals(false, jReader.nextBoolean());
117 } else if (keyName.equals("lfdecimal1")) {
118 assertEquals("Key " + keyName + " has incorrect type", JsonToken.NUMBER, peek);
119 assertEquals(new Double(43.32), (Double) jReader.nextDouble());
120 lfdecimal1Checked = true;
121 } else if (keyName.equals("lfdecimal2")) {
122 assertEquals("Key " + keyName + " has incorrect type", JsonToken.NUMBER, peek);
123 assertEquals(new Double(-0.43), (Double) jReader.nextDouble());
124 lfdecimal2Checked = true;
125 } else if (keyName.equals("lfdecimal3")) {
126 assertEquals("Key " + keyName + " has incorrect type", JsonToken.NUMBER, peek);
127 assertEquals(new Double(43), (Double) jReader.nextDouble());
128 lfdecimal3Checked = true;
129 } else if (keyName.equals("lfdecimal4")) {
130 assertEquals("Key " + keyName + " has incorrect type", JsonToken.NUMBER, peek);
131 assertEquals(new Double(43E3), (Double) jReader.nextDouble());
132 lfdecimal4Checked = true;
133 } else if (keyName.equals("lfdecimal6")) {
134 assertEquals("Key " + keyName + " has incorrect type", JsonToken.NUMBER, peek);
135 assertEquals(new Double(33.12345), (Double) jReader.nextDouble());
136 lfdecimal6Checked = true;
137 } else if (keyName.equals("lfenum")) {
138 assertEquals("enum3", jReader.nextString());
140 } else if (keyName.equals("lfbits")) {
141 assertEquals("bit3", jReader.nextString());
143 } else if (keyName.equals("lfbinary")) {
144 assertEquals("AAaacdabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ%%-#^", jReader.nextString());
145 lfbinaryChecked = true;
146 } else if (keyName.equals("lfempty")) {
147 jReader.beginArray();
150 lfemptyChecked = true;
151 // TODO: test will be implemented when functionality will be
153 } else if (keyName.equals("lflstunion")) {
156 assertTrue("Key " + keyName + " doesn't exists in yang file.", false);
160 Collections.sort(loadedLfs);
161 String expectedLfsStr = "[int16Max, int16Min, int32Max, int32Min, int64Max, int64Min, int8Max, int8Min, uint16Max, uint32Max, uint8Max]";
162 String actualLfsStr = loadedLfs.toString();
163 assertEquals("Some leaves are missing", expectedLfsStr, actualLfsStr);
164 // assertTrue("For lfdecimal5 wasn't catch error",exceptForDecimal5Raised);
165 assertTrue("Enum wasn't checked", enumChecked);
166 assertTrue("Bits wasn't checked", bitsChecked);
167 assertTrue("Decimal1 wasn't checked", lfdecimal1Checked);
168 assertTrue("Decimal2 wasn't checked", lfdecimal2Checked);
169 assertTrue("Decimal3 wasn't checked", lfdecimal3Checked);
170 assertTrue("Decimal4 wasn't checked", lfdecimal4Checked);
171 assertTrue("Decimal5 wasn't checked", lfdecimal6Checked);
172 assertTrue("lfbool1 wasn't checked", lfbool1Checked);
173 assertTrue("lfbool2 wasn't checked", lfbool2Checked);
174 assertTrue("lfstr wasn't checked", lfstrChecked);
175 assertTrue("lfstr1 wasn't checked", lfstr1Checked);
176 assertTrue("lfbinary wasn't checked", lfbinaryChecked);
177 assertTrue("lfempty wasn't checked", lfemptyChecked);
178 // assertTrue("lfref1 wasn't checked", lfref1Checked);