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() {
21 jsonOutput = TestUtils.convertCompositeNodeDataAndYangToJson(
22 TestUtils.loadCompositeNode("/yang-to-json-conversion/simple-data-types/xml/data.xml"),
23 "/yang-to-json-conversion/simple-data-types", "/yang-to-json-conversion/simple-data-types/xml");
24 verifyJsonOutput(jsonOutput);
27 private void verifyJsonOutput(String jsonOutput) {
28 StringReader strReader = new StringReader(jsonOutput);
29 JsonReader jReader = new JsonReader(strReader);
31 String exception = null;
33 jsonReadCont(jReader);
34 } catch (IOException e) {
35 exception = e.getMessage();
38 assertNull("Error during reading Json output: " + exception, exception);
41 private void jsonReadCont(JsonReader jReader) throws IOException {
42 jReader.beginObject();
43 assertNotNull("cont1 is missing.", jReader.hasNext());
45 // Cont dataFromJson = new Cont(jReader.nextName());
47 jsonReadContElements(jReader);
49 assertFalse("cont shouldn't have other element.", jReader.hasNext());
51 // return dataFromJson;
54 private void jsonReadContElements(JsonReader jReader) throws IOException {
55 jReader.beginObject();
56 List<String> loadedLfs = new ArrayList<>();
57 boolean exceptForDecimal5Raised = false;
58 boolean enumChecked = false;
59 boolean bitsChecked = false;
60 boolean lfdecimal6Checked = false;
61 boolean lfdecimal4Checked = false;
62 boolean lfdecimal3Checked = false;
63 boolean lfdecimal2Checked = false;
64 boolean lfdecimal1Checked = false;
65 boolean lfbool1Checked = false;
66 boolean lfbool2Checked = false;
67 boolean lfstrChecked = false;
68 boolean lfbinaryChecked = false;
69 // boolean lfref1Checked = false;
70 boolean lfemptyChecked = false;
71 boolean lfstr1Checked = false;
73 while (jReader.hasNext()) {
74 String keyName = jReader.nextName();
75 JsonToken peek = null;
77 peek = jReader.peek();
78 } catch (IOException e) {
79 if (keyName.equals("lfdecimal5")) {
80 exceptForDecimal5Raised = true;
82 assertTrue("Key " + keyName + " has incorrect value for specifed type", false);
86 if (keyName.startsWith("lfnint") || keyName.startsWith("lfnuint")) {
87 assertEquals("Key " + keyName + " has incorrect type", JsonToken.NUMBER, peek);
90 } catch (NumberFormatException e) {
91 assertTrue("Key " + keyName + " has incorrect value - " + e.getMessage(), false);
93 loadedLfs.add(keyName.substring(3));
94 } else if (keyName.equals("lfstr")) {
95 assertEquals("Key " + keyName + " has incorrect type", JsonToken.STRING, peek);
96 assertEquals("lfstr", jReader.nextString());
98 } else if (keyName.equals("lfstr1")) {
99 assertEquals("Key " + keyName + " has incorrect type", JsonToken.STRING, peek);
100 assertEquals("", jReader.nextString());
101 lfstr1Checked = true;
102 } else if (keyName.equals("lfbool1")) {
103 assertEquals("Key " + keyName + " has incorrect type", JsonToken.BOOLEAN, peek);
104 assertEquals(true, jReader.nextBoolean());
105 lfbool1Checked = true;
106 } else if (keyName.equals("lfbool2")) {
107 assertEquals("Key " + keyName + " has incorrect type", JsonToken.BOOLEAN, peek);
108 assertEquals(false, jReader.nextBoolean());
109 lfbool2Checked = true;
110 } else if (keyName.equals("lfbool3")) {
111 assertEquals("Key " + keyName + " has incorrect type", JsonToken.BOOLEAN, peek);
112 assertEquals(false, jReader.nextBoolean());
113 } else if (keyName.equals("lfdecimal1")) {
114 assertEquals("Key " + keyName + " has incorrect type", JsonToken.NUMBER, peek);
115 assertEquals(new Double(43.32), (Double) jReader.nextDouble());
116 lfdecimal1Checked = true;
117 } else if (keyName.equals("lfdecimal2")) {
118 assertEquals("Key " + keyName + " has incorrect type", JsonToken.NUMBER, peek);
119 assertEquals(new Double(-0.43), (Double) jReader.nextDouble());
120 lfdecimal2Checked = true;
121 } else if (keyName.equals("lfdecimal3")) {
122 assertEquals("Key " + keyName + " has incorrect type", JsonToken.NUMBER, peek);
123 assertEquals(new Double(43), (Double) jReader.nextDouble());
124 lfdecimal3Checked = true;
125 } else if (keyName.equals("lfdecimal4")) {
126 assertEquals("Key " + keyName + " has incorrect type", JsonToken.NUMBER, peek);
127 assertEquals(new Double(43E3), (Double) jReader.nextDouble());
128 lfdecimal4Checked = true;
129 } else if (keyName.equals("lfdecimal6")) {
130 assertEquals("Key " + keyName + " has incorrect type", JsonToken.NUMBER, peek);
131 assertEquals(new Double(33.12345), (Double) jReader.nextDouble());
132 lfdecimal6Checked = true;
133 } else if (keyName.equals("lfenum")) {
134 assertEquals("enum3", jReader.nextString());
136 } else if (keyName.equals("lfbits")) {
137 assertEquals("bit3", jReader.nextString());
139 } else if (keyName.equals("lfbinary")) {
140 assertEquals("AAaacdabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ%%-#^", jReader.nextString());
141 lfbinaryChecked = true;
142 } else if (keyName.equals("lfempty")) {
143 jReader.beginArray();
146 lfemptyChecked = true;
147 } else if (keyName.startsWith("lfunion")) {
148 checkLfUnion(jReader, keyName, peek);
150 assertTrue("Key " + keyName + " doesn't exists in yang file.", false);
154 Collections.sort(loadedLfs);
155 String expectedLfsStr = "[int16Max, int16Min, int32Max, int32Min, int64Max, int64Min, int8Max, int8Min, uint16Max, uint32Max, uint8Max]";
156 String actualLfsStr = loadedLfs.toString();
157 assertEquals("Some leaves are missing", expectedLfsStr, actualLfsStr);
158 // assertTrue("For lfdecimal5 wasn't catch error",exceptForDecimal5Raised);
159 assertTrue("Enum wasn't checked", enumChecked);
160 assertTrue("Bits wasn't checked", bitsChecked);
161 assertTrue("Decimal1 wasn't checked", lfdecimal1Checked);
162 assertTrue("Decimal2 wasn't checked", lfdecimal2Checked);
163 assertTrue("Decimal3 wasn't checked", lfdecimal3Checked);
164 assertTrue("Decimal4 wasn't checked", lfdecimal4Checked);
165 assertTrue("Decimal5 wasn't checked", lfdecimal6Checked);
166 assertTrue("lfbool1 wasn't checked", lfbool1Checked);
167 assertTrue("lfbool2 wasn't checked", lfbool2Checked);
168 assertTrue("lfstr wasn't checked", lfstrChecked);
169 assertTrue("lfstr1 wasn't checked", lfstr1Checked);
170 assertTrue("lfbinary wasn't checked", lfbinaryChecked);
171 assertTrue("lfempty wasn't checked", lfemptyChecked);
172 // assertTrue("lfref1 wasn't checked", lfref1Checked);
178 private void checkLfUnion(JsonReader jReader, String keyName, JsonToken peek) throws IOException {
179 if (keyName.equals("lfunion1")) {
180 assertEquals("Key " + keyName + " has incorrect type", JsonToken.NUMBER, peek);
181 jReader.nextString();
182 } else if (keyName.equals("lfunion2")) {
183 assertEquals("Key " + keyName + " has incorrect type", JsonToken.NUMBER, peek);
184 jReader.nextString();
185 } else if (keyName.equals("lfunion3")) {
186 assertEquals("Key " + keyName + " has incorrect type", JsonToken.STRING, peek);
188 } else if (keyName.equals("lfunion4")) {
189 assertEquals("Key " + keyName + " has incorrect type", JsonToken.BOOLEAN, peek);
190 jReader.nextBoolean();
191 } else if (keyName.equals("lfunion5")) {
192 assertEquals("Key " + keyName + " has incorrect type", JsonToken.STRING, peek);
193 jReader.nextString();
194 } else if (keyName.equals("lfunion6")) {
195 assertEquals("Key " + keyName + " has incorrect type", JsonToken.STRING, peek);
196 jReader.nextString();
197 } else if (keyName.equals("lfunion7")) {
198 assertEquals("Key " + keyName + " has incorrect type", JsonToken.STRING, peek);
199 jReader.nextString();
200 } else if (keyName.equals("lfunion8")) {
201 assertEquals("Key " + keyName + " has incorrect type", JsonToken.STRING, peek);
202 jReader.nextString();
203 } else if (keyName.equals("lfunion9")) {
204 assertEquals("Key " + keyName + " has incorrect type", JsonToken.STRING, peek);
205 jReader.nextString();
206 } else if (keyName.equals("lfunion10")) {
207 assertEquals("Key " + keyName + " has incorrect type", JsonToken.STRING, peek);
208 jReader.nextString();
209 } else if (keyName.equals("lfunion11")) {
210 assertEquals("Key " + keyName + " has incorrect type", JsonToken.NUMBER, peek);
211 jReader.nextString();
212 } else if (keyName.equals("lfunion12")) {
213 assertEquals("Key " + keyName + " has incorrect type", JsonToken.BOOLEAN, peek);
214 jReader.nextBoolean();