blob: c9c22baf4b258ac89225f5cab39e2faa794e40de [file] [log] [blame]
sonu gupta1bb37b82016-11-11 16:51:18 +05301/*
2 * Copyright 2016-present Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.yms.app.ydt;
18
19import org.junit.Test;
20import org.onosproject.yms.app.ydt.exceptions.YdtException;
21
sonu gupta1bb37b82016-11-11 16:51:18 +053022import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXIWR;
23import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT32;
24import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUIWR;
25import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDIWR;
26import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDUIWR;
27import static org.onosproject.yms.app.ydt.YdtTestConstants.MINIWR;
28import static org.onosproject.yms.app.ydt.YdtTestConstants.MINUIWR;
29import static org.onosproject.yms.app.ydt.YdtTestConstants.MINVALUE;
30import static org.onosproject.yms.app.ydt.YdtTestConstants.MRV;
31import static org.onosproject.yms.app.ydt.YdtTestConstants.RUI;
sonu gupta1bb37b82016-11-11 16:51:18 +053032import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE;
33import static org.onosproject.yms.app.ydt.YdtTestUtils.integer32Ydt;
sonu gupta1bb37b82016-11-11 16:51:18 +053034import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
35import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
36import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
37
38public class YdtInteger32Test {
39
40 /*
41 Positive scenario
42
43 input at boundry for integer
44 i. min value
45 ii. max value
46
47 input at boundry for uinteger
48 i. min value
49 ii. max value
50
51 input with in range
52 if range is 10 to 100 for integer
53 i.1. input 11
54 i.2. min value 10
55 i.3. max value 100
56
57 if range is 10 to 100 for uinteger
58 i.1. input 11
59 i.2. min value 10
60 i.3. max value 100
61
62 input with multi interval range
63 if range is 10..40 | 50..100 for integer
64 i.1. input 11
65 i.2. input 10
66 i.3. input 40
67 i.4. input 50
68 i.5. input 55
69 i.6. input 100
70
71 if range is 10..40 | 50..100 for uinteger
72 i.1. input 11
73 i.2. input 10
74 i.3. input 40
75 i.4. input 50
76 i.5. input 55
77 i.6. input 100
78
79 if range is "min .. 2 | 10 | 20..max" for integer
80 i.1. input -2147483648
81 i.2. input 1
82 i.3. input 2
83 i.4. input 10
84 i.5. input 20
85 i.6. input 100
86 i.7. input 2147483647
87
88 if range is "min .. 2 | 10 | 20..max" for uInteger
89 i.1. input 0
90 i.2. input 1
91 i.3. input 2
92 i.4. input 10
93 i.5. input 20
94 i.6. input 100
95 i.7. input 4294967295
96 */
97
98 /**
99 * Creates and validates integer32 ydt covering different positive scenario.
100 */
101 @Test
102 public void positiveTest() throws YdtException {
103 YangRequestWorkBench ydtBuilder = integer32Ydt();
104 validateTree(ydtBuilder);
105 }
106
107 /**
108 * Validates the given built ydt.
109 */
110 private void validateTree(YangRequestWorkBench ydtBuilder) {
111
112 // assign root node to ydtNode for validating purpose.
113 YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
114 // Logical root node does not have operation type
115 validateNodeContents(ydtNode, TYPE, null);
116
117 ydtNode = ydtNode.getFirstChild();
118 validateNodeContents(ydtNode, "integer32", MERGE);
119 ydtNode = ydtNode.getFirstChild();
120 validateLeafContents(ydtNode, "negInt", "-2147483648");
121 ydtNode = ydtNode.getNextSibling();
122 validateLeafContents(ydtNode, "posInt", "2147483647");
123 ydtNode = ydtNode.getNextSibling();
124 validateLeafContents(ydtNode, "minUInt", MINVALUE);
125 ydtNode = ydtNode.getNextSibling();
126 validateLeafContents(ydtNode, "maxUInt", MAXUINT32);
127 ydtNode = ydtNode.getNextSibling();
128 validateLeafContents(ydtNode, MIDIWR, "11");
129 ydtNode = ydtNode.getNextSibling();
130 validateLeafContents(ydtNode, MINIWR, "10");
131 ydtNode = ydtNode.getNextSibling();
132 validateLeafContents(ydtNode, MAXIWR, "100");
133 ydtNode = ydtNode.getNextSibling();
134 validateLeafContents(ydtNode, MIDUIWR, "11");
135 ydtNode = ydtNode.getNextSibling();
136 validateLeafContents(ydtNode, MINUIWR, "10");
137 ydtNode = ydtNode.getNextSibling();
138 validateLeafContents(ydtNode, MAXUIWR, "100");
139 ydtNode = ydtNode.getNextSibling();
140 validateNodeContents(ydtNode, MRV, MERGE);
141 ydtNode = ydtNode.getFirstChild();
142 validateLeafContents(ydtNode, "integer", "11");
143 ydtNode = ydtNode.getParent();
144 ydtNode = ydtNode.getNextSibling();
145 validateNodeContents(ydtNode, MRV, MERGE);
146 ydtNode = ydtNode.getFirstChild();
147 validateLeafContents(ydtNode, "integer", "10");
148 ydtNode = ydtNode.getParent();
149 ydtNode = ydtNode.getNextSibling();
150 validateNodeContents(ydtNode, MRV, MERGE);
151 ydtNode = ydtNode.getFirstChild();
152 validateLeafContents(ydtNode, "integer", "40");
153 ydtNode = ydtNode.getParent();
154 ydtNode = ydtNode.getNextSibling();
155 validateNodeContents(ydtNode, MRV, MERGE);
156 ydtNode = ydtNode.getFirstChild();
157 validateLeafContents(ydtNode, "integer", "50");
158 ydtNode = ydtNode.getParent();
159 ydtNode = ydtNode.getNextSibling();
160 validateNodeContents(ydtNode, MRV, MERGE);
161 ydtNode = ydtNode.getFirstChild();
162 validateLeafContents(ydtNode, "integer", "55");
163 ydtNode = ydtNode.getParent();
164 ydtNode = ydtNode.getNextSibling();
165 validateNodeContents(ydtNode, MRV, MERGE);
166 ydtNode = ydtNode.getFirstChild();
167 validateLeafContents(ydtNode, "integer", "100");
168 ydtNode = ydtNode.getParent();
169 ydtNode = ydtNode.getNextSibling();
170 validateNodeContents(ydtNode, MRV, MERGE);
171 ydtNode = ydtNode.getFirstChild();
172 validateLeafContents(ydtNode, "UnInteger", "11");
173 ydtNode = ydtNode.getParent();
174 ydtNode = ydtNode.getNextSibling();
175 validateNodeContents(ydtNode, MRV, MERGE);
176 ydtNode = ydtNode.getFirstChild();
177 validateLeafContents(ydtNode, "UnInteger", "10");
178 ydtNode = ydtNode.getParent();
179 ydtNode = ydtNode.getNextSibling();
180 validateNodeContents(ydtNode, MRV, MERGE);
181 ydtNode = ydtNode.getFirstChild();
182 validateLeafContents(ydtNode, "UnInteger", "40");
183 ydtNode = ydtNode.getParent();
184 ydtNode = ydtNode.getNextSibling();
185 validateNodeContents(ydtNode, MRV, MERGE);
186 ydtNode = ydtNode.getFirstChild();
187 validateLeafContents(ydtNode, "UnInteger", "50");
188 ydtNode = ydtNode.getParent();
189 ydtNode = ydtNode.getNextSibling();
190 validateNodeContents(ydtNode, MRV, MERGE);
191 ydtNode = ydtNode.getFirstChild();
192 validateLeafContents(ydtNode, "UnInteger", "55");
193 ydtNode = ydtNode.getParent();
194 ydtNode = ydtNode.getNextSibling();
195 validateNodeContents(ydtNode, MRV, MERGE);
196 ydtNode = ydtNode.getFirstChild();
197 validateLeafContents(ydtNode, "UnInteger", "100");
198
199 ydtNode = ydtNode.getParent();
200 ydtNode = ydtNode.getNextSibling();
201 validateNodeContents(ydtNode, MRV, MERGE);
202 ydtNode = ydtNode.getFirstChild();
203 validateLeafContents(ydtNode, "revInteger", "-2147483648");
204 ydtNode = ydtNode.getParent();
205 ydtNode = ydtNode.getNextSibling();
206 validateNodeContents(ydtNode, MRV, MERGE);
207 ydtNode = ydtNode.getFirstChild();
208 validateLeafContents(ydtNode, "revInteger", "1");
209 ydtNode = ydtNode.getParent();
210 ydtNode = ydtNode.getNextSibling();
211 validateNodeContents(ydtNode, MRV, MERGE);
212 ydtNode = ydtNode.getFirstChild();
213 validateLeafContents(ydtNode, "revInteger", "2");
214 ydtNode = ydtNode.getParent();
215 ydtNode = ydtNode.getNextSibling();
216 validateNodeContents(ydtNode, MRV, MERGE);
217 ydtNode = ydtNode.getFirstChild();
218 validateLeafContents(ydtNode, "revInteger", "10");
219 ydtNode = ydtNode.getParent();
220 ydtNode = ydtNode.getNextSibling();
221 validateNodeContents(ydtNode, MRV, MERGE);
222 ydtNode = ydtNode.getFirstChild();
223 validateLeafContents(ydtNode, "revInteger", "20");
224 ydtNode = ydtNode.getParent();
225 ydtNode = ydtNode.getNextSibling();
226 validateNodeContents(ydtNode, MRV, MERGE);
227
228 validate1Tree(ydtNode);
229 }
230
231 /**
232 * Validates the given built ydt.
233 */
234 private void validate1Tree(YdtNode ydtNode) {
235 ydtNode = ydtNode.getFirstChild();
236 validateLeafContents(ydtNode, "revInteger", "100");
237 ydtNode = ydtNode.getParent();
238 ydtNode = ydtNode.getNextSibling();
239 validateNodeContents(ydtNode, MRV, MERGE);
240 ydtNode = ydtNode.getFirstChild();
241 validateLeafContents(ydtNode, "revInteger", "2147483647");
242
243 ydtNode = ydtNode.getParent();
244 ydtNode = ydtNode.getNextSibling();
245 validateNodeContents(ydtNode, MRV, MERGE);
246 ydtNode = ydtNode.getFirstChild();
247 validateLeafContents(ydtNode, RUI, MINVALUE);
248 ydtNode = ydtNode.getParent();
249 ydtNode = ydtNode.getNextSibling();
250 validateNodeContents(ydtNode, MRV, MERGE);
251 ydtNode = ydtNode.getFirstChild();
252 validateLeafContents(ydtNode, RUI, "1");
253 ydtNode = ydtNode.getParent();
254 ydtNode = ydtNode.getNextSibling();
255 validateNodeContents(ydtNode, MRV, MERGE);
256 ydtNode = ydtNode.getFirstChild();
257 validateLeafContents(ydtNode, RUI, "2");
258 ydtNode = ydtNode.getParent();
259 ydtNode = ydtNode.getNextSibling();
260 validateNodeContents(ydtNode, MRV, MERGE);
261 ydtNode = ydtNode.getFirstChild();
262 validateLeafContents(ydtNode, RUI, "10");
263 ydtNode = ydtNode.getParent();
264 ydtNode = ydtNode.getNextSibling();
265 validateNodeContents(ydtNode, MRV, MERGE);
266 ydtNode = ydtNode.getFirstChild();
267 validateLeafContents(ydtNode, RUI, "20");
268 ydtNode = ydtNode.getParent();
269 ydtNode = ydtNode.getNextSibling();
270 validateNodeContents(ydtNode, MRV, MERGE);
271 ydtNode = ydtNode.getFirstChild();
272 validateLeafContents(ydtNode, RUI, "100");
273 ydtNode = ydtNode.getParent();
274 ydtNode = ydtNode.getNextSibling();
275 validateNodeContents(ydtNode, MRV, MERGE);
276 ydtNode = ydtNode.getFirstChild();
277 validateLeafContents(ydtNode, RUI, MAXUINT32);
278 }
279
sonu guptaeff184b2016-11-24 12:43:49 +0530280 //TODO negative scenario will be handled later
sonu gupta1bb37b82016-11-11 16:51:18 +0530281 /*
282 Negative scenario
283
284 wrong type input
285 i. input string instead of integer
286 ii. input string instead of uinteger
287
288 input out of range
289 i. input for int 8 range -2147483648 to 2147483647
290 i.1. input -2147483649
291 i.2. input 2147483648
292
293 ii. input for uint 8 range 0 to 4294967295
294 ii.1. input -2147483649
295 ii.2. input 4294967296
296
297 input out of range parameter
298 if range is 10 to 100 for int
299 i.1. input 9
300 i.2. input 101
301
302 if range is 10 to 100 for uInt
303 i.1. input 9
304 i.2. input 101
305
306 input with multi interval range
307 if range is 10..40 | 50..100 for integer
308 i.1. input 9
309 i.2. input 41
310 i.3. input 49
311 i.4. input 101
312
313 if range is 10..40 | 50..100 for uinteger
314 i.1. input 9
315 i.2. input 41
316 i.3. input 49
317 i.4. input 101
318
319 input with multi interval range
320 if range is min .. | 10 | 20..max for integer
321 i.1. input -2147483649
322 i.2. input 4
323 i.3. input 9
324 i.4. input 11
325 i.5. input 19
326 i.6. input 256
327
328 if range is min .. 3 | 10 | 20..max for uinteger
329 i.1. input -2147483649
330 i.2. input 4
331 i.3. input 9
332 i.4. input 11
333 i.5. input 19
334 i.6. input 4294967296
335
336 */
337
338 /**
sonu guptaeff184b2016-11-24 12:43:49 +0530339 * Tests all the minimum and maximum value's negative scenario's for
340 * signed integer32 data type.
sonu gupta1bb37b82016-11-11 16:51:18 +0530341 */
sonu guptaeff184b2016-11-24 12:43:49 +0530342// @Test
343// public void negative1Test() throws YdtException {
344// validateErrMsg("posInt", INT32NS, "integer", SINT32, null);
345// validateErrMsg("posInt", INT32NS, "127.0", SINT32, null);
346// validateErrMsg("negInt", INT32NS, "-2147483649", SINT32, null);
347// validateErrMsg("posInt", INT32NS, "2147483648", SINT32, null);
348// validateErrMsg(MINIWR, INT32NS, "9", CAPSINT32, null);
349// validateErrMsg(MAXIWR, INT32NS, "101", CAPSINT32, null);
350// }
351//
352// /**
353// * Tests all the minimum and maximum value's negative scenario's for
354// * unsigned integer32 data type.
355// */
356// @Test
357// public void negative2Test() throws YdtException {
358// validateErrMsg("maxUInt", INT32NS, "integer", SUINT32, null);
359// validateErrMsg("maxUInt", INT32NS, "127.0", SUINT32, null);
360// validateErrMsg("minUInt", INT32NS, "-2147483649", MINVALUE, null);
361// validateErrMsg("maxUInt", INT32NS, "4294967296", MAXUINT32, null);
362// validateErrMsg(MINUIWR, INT32NS, "9", CAPSUINT32, null);
363// validateErrMsg(MAXUIWR, INT32NS, "101", CAPSUINT32, null);
364// }
365//
366// /**
367// * Tests all possible negative scenario's for signed integer32 data type
368// * with range "10..40 | 50..100".
369// */
370// @Test
371// public void negative3Test() throws YdtException {
372// validateErrMsg("integer", INT32NS, "9", CAPSINT32, MRV);
373// validateErrMsg("integer", INT32NS, "41", CAPSINT32, MRV);
374// validateErrMsg("integer", INT32NS, "49", CAPSINT32, MRV);
375// validateErrMsg("integer", INT32NS, "101", CAPSINT32, MRV);
376// }
377//
378// /**
379// * Tests all possible negative scenario's for unsigned integer32 data type
380// * with range "10..40 | 50..100".
381// */
382// @Test
383// public void negative4Test() throws YdtException {
384// validateErrMsg("UnInteger", INT32NS, "9", CAPSUINT32, MRV);
385// validateErrMsg("UnInteger", INT32NS, "41", CAPSUINT32, MRV);
386// validateErrMsg("UnInteger", INT32NS, "49", CAPSUINT32, MRV);
387// validateErrMsg("UnInteger", INT32NS, "101", CAPSUINT32, MRV);
388// }
389//
390// /**
391// * Tests all possible negative scenario's for signed integer32 data type
392// * with range "min .. 2 | 10 | 20..max".
393// */
394// @Test
395// public void negative5Test() throws YdtException {
396// // Multi range validation
397// validateErrMsg("revInteger", INT32NS, "-2147483649", SINT32, MRV);
398// validateErrMsg("revInteger", INT32NS, "4", CAPSINT32, MRV);
399// validateErrMsg("revInteger", INT32NS, "9", CAPSINT32, MRV);
400// validateErrMsg("revInteger", INT32NS, "11", CAPSINT32, MRV);
401// validateErrMsg("revInteger", INT32NS, "19", CAPSINT32, MRV);
402// validateErrMsg("revInteger", INT32NS, "2147483648", SINT32, MRV);
403// }
404//
405// /**
406// * Tests all possible negative scenario's for unsigned integer32 data type
407// * with range "min .. 2 | 10 | 20..max".
408// */
409// @Test
410// public void negative6Test() throws YdtException {
411// // Multi range validation
412// validateErrMsg(RUI, INT32NS, "-2147483649", MINVALUE, MRV);
413// validateErrMsg(RUI, INT32NS, "4", CAPSUINT32, MRV);
414// validateErrMsg(RUI, INT32NS, "9", CAPSUINT32, MRV);
415// validateErrMsg(RUI, INT32NS, "11", CAPSUINT32, MRV);
416// validateErrMsg(RUI, INT32NS, "19", CAPSUINT32, MRV);
417// validateErrMsg(RUI, INT32NS, "4294967296", MAXUINT32, MRV);
418// }
sonu gupta1bb37b82016-11-11 16:51:18 +0530419}