blob: 136381db9adfe1d16bc0f9abfc0db463c7f50ec5 [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
22import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSINT64;
23import static org.onosproject.yms.app.ydt.YdtTestConstants.CAPSUINT64;
24import static org.onosproject.yms.app.ydt.YdtTestConstants.I;
25import static org.onosproject.yms.app.ydt.YdtTestConstants.INT64NS;
26import static org.onosproject.yms.app.ydt.YdtTestConstants.J;
27import static org.onosproject.yms.app.ydt.YdtTestConstants.K;
28import static org.onosproject.yms.app.ydt.YdtTestConstants.L;
29import static org.onosproject.yms.app.ydt.YdtTestConstants.M;
30import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXIWR;
31import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT64;
32import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUIWR;
33import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDIWR;
34import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDUIWR;
35import static org.onosproject.yms.app.ydt.YdtTestConstants.MINIWR;
36import static org.onosproject.yms.app.ydt.YdtTestConstants.MINUIWR;
37import static org.onosproject.yms.app.ydt.YdtTestConstants.MINVALUE;
38import static org.onosproject.yms.app.ydt.YdtTestConstants.MRV;
39import static org.onosproject.yms.app.ydt.YdtTestConstants.RUI;
40import static org.onosproject.yms.app.ydt.YdtTestConstants.SMALLINT64;
41import static org.onosproject.yms.app.ydt.YdtTestConstants.SMALLUINT64;
42import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE;
43import static org.onosproject.yms.app.ydt.YdtTestUtils.integer64Ydt;
44import static org.onosproject.yms.app.ydt.YdtTestUtils.validateErrMsg;
45import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents;
46import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents;
47import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE;
48
49public class YdtInteger64Test {
50
51 /*
52
53 Positive scenario
54
55 input at boundry for integer
56 i. min value
57 ii. max value
58
59 input at boundry for uinteger
60 i. min value
61 ii. max value
62
63 input with in range
64 if range is 10 to 100 for integer
65 i.1. input 11
66 i.2. min value 10
67 i.3. max value 100
68
69 if range is 10 to 100 for uinteger
70 i.1. input 11
71 i.2. min value 10
72 i.3. max value 100
73
74 input with multi interval range
75 if range is 10..40 | 50..100 for integer
76 i.1. input 11
77 i.2. input 10
78 i.3. input 40
79 i.4. input 50
80 i.5. input 55
81 i.6. input 100
82
83 if range is 10..40 | 50..100 for uinteger
84 i.1. input 11
85 i.2. input 10
86 i.3. input 40
87 i.4. input 50
88 i.5. input 55
89 i.6. input 100
90
91 if range is "min .. 2 | 10 | 20..max" for integer
92 i.1. input -9223372036854775808
93 i.2. input 1
94 i.3. input 2
95 i.4. input 10
96 i.5. input 20
97 i.6. input 100
98 i.7. input 9223372036854775807
99
100 if range is "min .. 2 | 10 | 20..max" for uInteger
101 i.1. input 0
102 i.2. input 1
103 i.3. input 2
104 i.4. input 10
105 i.5. input 20
106 i.6. input 100
107 i.7. input 18446744073709551615
108 */
109
110 /**
111 * Creates and validates integer64 ydt covering different positive scenario.
112 */
113 @Test
114 public void positiveTest() throws YdtException {
115 YangRequestWorkBench ydtBuilder = integer64Ydt();
116 validateTree(ydtBuilder);
117 }
118
119 /**
120 * Validates the given built ydt.
121 */
122 private void validateTree(YangRequestWorkBench ydtBuilder) {
123
124 // assign root node to ydtNode for validating purpose.
125 YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode();
126 // Logical root node does not have operation type
127 validateNodeContents(ydtNode, TYPE, null);
128
129 ydtNode = ydtNode.getFirstChild();
130 validateNodeContents(ydtNode, "integer64", MERGE);
131 ydtNode = ydtNode.getFirstChild();
132 validateLeafContents(ydtNode, "negInt", K);
133 ydtNode = ydtNode.getNextSibling();
134 validateLeafContents(ydtNode, "posInt", J);
135 ydtNode = ydtNode.getNextSibling();
136 validateLeafContents(ydtNode, "minUInt", MINVALUE);
137 ydtNode = ydtNode.getNextSibling();
138 validateLeafContents(ydtNode, "maxUInt", MAXUINT64);
139 ydtNode = ydtNode.getNextSibling();
140 validateLeafContents(ydtNode, MIDIWR, "11");
141 ydtNode = ydtNode.getNextSibling();
142 validateLeafContents(ydtNode, MINIWR, "10");
143 ydtNode = ydtNode.getNextSibling();
144 validateLeafContents(ydtNode, MAXIWR, "100");
145 ydtNode = ydtNode.getNextSibling();
146 validateLeafContents(ydtNode, MIDUIWR, "11");
147 ydtNode = ydtNode.getNextSibling();
148 validateLeafContents(ydtNode, MINUIWR, "10");
149 ydtNode = ydtNode.getNextSibling();
150 validateLeafContents(ydtNode, MAXUIWR, "100");
151 ydtNode = ydtNode.getNextSibling();
152 validateNodeContents(ydtNode, MRV, MERGE);
153 ydtNode = ydtNode.getFirstChild();
154 validateLeafContents(ydtNode, "integer", "11");
155 ydtNode = ydtNode.getParent();
156 ydtNode = ydtNode.getNextSibling();
157 validateNodeContents(ydtNode, MRV, MERGE);
158 ydtNode = ydtNode.getFirstChild();
159 validateLeafContents(ydtNode, "integer", "10");
160 ydtNode = ydtNode.getParent();
161 ydtNode = ydtNode.getNextSibling();
162 validateNodeContents(ydtNode, MRV, MERGE);
163 ydtNode = ydtNode.getFirstChild();
164 validateLeafContents(ydtNode, "integer", "40");
165 ydtNode = ydtNode.getParent();
166 ydtNode = ydtNode.getNextSibling();
167 validateNodeContents(ydtNode, MRV, MERGE);
168 ydtNode = ydtNode.getFirstChild();
169 validateLeafContents(ydtNode, "integer", "50");
170 ydtNode = ydtNode.getParent();
171 ydtNode = ydtNode.getNextSibling();
172 validateNodeContents(ydtNode, MRV, MERGE);
173 ydtNode = ydtNode.getFirstChild();
174 validateLeafContents(ydtNode, "integer", "55");
175 ydtNode = ydtNode.getParent();
176 ydtNode = ydtNode.getNextSibling();
177 validateNodeContents(ydtNode, MRV, MERGE);
178 ydtNode = ydtNode.getFirstChild();
179 validateLeafContents(ydtNode, "integer", "100");
180 ydtNode = ydtNode.getParent();
181 ydtNode = ydtNode.getNextSibling();
182 validateNodeContents(ydtNode, MRV, MERGE);
183 ydtNode = ydtNode.getFirstChild();
184 validateLeafContents(ydtNode, "UnInteger", "11");
185 ydtNode = ydtNode.getParent();
186 ydtNode = ydtNode.getNextSibling();
187 validateNodeContents(ydtNode, MRV, MERGE);
188 ydtNode = ydtNode.getFirstChild();
189 validateLeafContents(ydtNode, "UnInteger", "10");
190 ydtNode = ydtNode.getParent();
191 ydtNode = ydtNode.getNextSibling();
192 validateNodeContents(ydtNode, MRV, MERGE);
193 ydtNode = ydtNode.getFirstChild();
194 validateLeafContents(ydtNode, "UnInteger", "40");
195 ydtNode = ydtNode.getParent();
196 ydtNode = ydtNode.getNextSibling();
197 validateNodeContents(ydtNode, MRV, MERGE);
198 ydtNode = ydtNode.getFirstChild();
199 validateLeafContents(ydtNode, "UnInteger", "50");
200 ydtNode = ydtNode.getParent();
201 ydtNode = ydtNode.getNextSibling();
202 validateNodeContents(ydtNode, MRV, MERGE);
203 ydtNode = ydtNode.getFirstChild();
204 validateLeafContents(ydtNode, "UnInteger", "55");
205 ydtNode = ydtNode.getParent();
206 ydtNode = ydtNode.getNextSibling();
207 validateNodeContents(ydtNode, MRV, MERGE);
208 ydtNode = ydtNode.getFirstChild();
209 validateLeafContents(ydtNode, "UnInteger", "100");
210
211 ydtNode = ydtNode.getParent();
212 ydtNode = ydtNode.getNextSibling();
213 validateNodeContents(ydtNode, MRV, MERGE);
214 ydtNode = ydtNode.getFirstChild();
215 validateLeafContents(ydtNode, "revInteger", K);
216 ydtNode = ydtNode.getParent();
217 ydtNode = ydtNode.getNextSibling();
218 validateNodeContents(ydtNode, MRV, MERGE);
219 ydtNode = ydtNode.getFirstChild();
220 validateLeafContents(ydtNode, "revInteger", "1");
221 ydtNode = ydtNode.getParent();
222 ydtNode = ydtNode.getNextSibling();
223 validateNodeContents(ydtNode, MRV, MERGE);
224 ydtNode = ydtNode.getFirstChild();
225 validateLeafContents(ydtNode, "revInteger", "2");
226 ydtNode = ydtNode.getParent();
227 ydtNode = ydtNode.getNextSibling();
228 validateNodeContents(ydtNode, MRV, MERGE);
229 ydtNode = ydtNode.getFirstChild();
230 validateLeafContents(ydtNode, "revInteger", "10");
231 ydtNode = ydtNode.getParent();
232 ydtNode = ydtNode.getNextSibling();
233 validateNodeContents(ydtNode, MRV, MERGE);
234
235 validate1Tree(ydtNode);
236 }
237
238 /**
239 * Validates the given built ydt.
240 */
241 private void validate1Tree(YdtNode ydtNode) {
242 ydtNode = ydtNode.getFirstChild();
243 validateLeafContents(ydtNode, "revInteger", "20");
244 ydtNode = ydtNode.getParent();
245 ydtNode = ydtNode.getNextSibling();
246 validateNodeContents(ydtNode, MRV, MERGE);
247 ydtNode = ydtNode.getFirstChild();
248 validateLeafContents(ydtNode, "revInteger", "100");
249 ydtNode = ydtNode.getParent();
250 ydtNode = ydtNode.getNextSibling();
251 validateNodeContents(ydtNode, MRV, MERGE);
252 ydtNode = ydtNode.getFirstChild();
253 validateLeafContents(ydtNode, "revInteger", J);
254
255 ydtNode = ydtNode.getParent();
256 ydtNode = ydtNode.getNextSibling();
257 validateNodeContents(ydtNode, MRV, MERGE);
258 ydtNode = ydtNode.getFirstChild();
259 validateLeafContents(ydtNode, RUI, MINVALUE);
260 ydtNode = ydtNode.getParent();
261 ydtNode = ydtNode.getNextSibling();
262 validateNodeContents(ydtNode, MRV, MERGE);
263 ydtNode = ydtNode.getFirstChild();
264 validateLeafContents(ydtNode, RUI, "1");
265 ydtNode = ydtNode.getParent();
266 ydtNode = ydtNode.getNextSibling();
267 validateNodeContents(ydtNode, MRV, MERGE);
268 ydtNode = ydtNode.getFirstChild();
269 validateLeafContents(ydtNode, RUI, "2");
270 ydtNode = ydtNode.getParent();
271 ydtNode = ydtNode.getNextSibling();
272 validateNodeContents(ydtNode, MRV, MERGE);
273 ydtNode = ydtNode.getFirstChild();
274 validateLeafContents(ydtNode, RUI, "10");
275 ydtNode = ydtNode.getParent();
276 ydtNode = ydtNode.getNextSibling();
277 validateNodeContents(ydtNode, MRV, MERGE);
278 ydtNode = ydtNode.getFirstChild();
279 validateLeafContents(ydtNode, RUI, "20");
280 ydtNode = ydtNode.getParent();
281 ydtNode = ydtNode.getNextSibling();
282 validateNodeContents(ydtNode, MRV, MERGE);
283 ydtNode = ydtNode.getFirstChild();
284 validateLeafContents(ydtNode, RUI, "100");
285 ydtNode = ydtNode.getParent();
286 ydtNode = ydtNode.getNextSibling();
287 validateNodeContents(ydtNode, MRV, MERGE);
288 ydtNode = ydtNode.getFirstChild();
289 validateLeafContents(ydtNode, RUI, MAXUINT64);
290 }
291
292 /*
293 Negative scenario
294
295 wrong type input
296 i. input string instead of integer
297 ii. input string instead of uinteger
298
299 input out of range
300 i. input for int 8 range -9223372036854775808 to 9223372036854775807
301 i.1. input -9223372036854775809
302 i.2. input 9223372036854775808
303
304 ii. input for uint 8 range 0 to 18446744073709551615
305 ii.1. input -9223372036854775809
306 ii.2. input 18446744073709551616
307
308 input out of range parameter
309 if range is 10 to 100 for int
310 i.1. input 9
311 i.2. input 101
312
313 if range is 10 to 100 for uInt
314 i.1. input 9
315 i.2. input 101
316
317 input with multi interval range
318 if range is 10..40 | 50..100 for integer
319 i.1. input 9
320 i.2. input 41
321 i.3. input 49
322 i.4. input 101
323
324 if range is 10..40 | 50..100 for uinteger
325 i.1. input 9
326 i.2. input 41
327 i.3. input 49
328 i.4. input 101
329
330 input with multi interval range
331 if range is min .. | 10 | 20..max for integer
332 i.1. input -9223372036854775809
333 i.2. input 4
334 i.3. input 9
335 i.4. input 11
336 i.5. input 19
337 i.6. input 9223372036854775808
338
339 if range is min .. 3 | 10 | 20..max for uinteger
340 i.1. input -9223372036854775809
341 i.2. input 4
342 i.3. input 9
343 i.4. input 11
344 i.5. input 19
345 i.6. input 18446744073709551616
346
347 */
348
349 /**
350 * Tests all the negative scenario's for integer8 data type.
351 */
352 @Test
353 public void negativeTest() throws YdtException {
354 validateErrMsg("posInt", INT64NS, "integer", SMALLINT64, null);
355 validateErrMsg("posInt", INT64NS, "integer", SMALLINT64, null);
356 validateErrMsg("posInt", INT64NS, "127.0", SMALLINT64, null);
357 validateErrMsg("maxUInt", INT64NS, "integer", SMALLUINT64, null);
358 validateErrMsg("maxUInt", INT64NS, "127.0", SMALLUINT64, null);
359 validateErrMsg("negInt", INT64NS, L, SMALLINT64, null);
360 validateErrMsg("posInt", INT64NS, I, SMALLINT64, null);
361 validateErrMsg("minUInt", INT64NS, L, MINVALUE, null);
362 validateErrMsg("maxUInt", INT64NS, M, MAXUINT64, null);
363 validateErrMsg(MINIWR, INT64NS, "9", CAPSINT64, null);
364 validateErrMsg(MAXIWR, INT64NS, "101", CAPSINT64, null);
365 validateErrMsg(MINUIWR, INT64NS, "9", CAPSUINT64, null);
366 validateErrMsg(MAXUIWR, INT64NS, "101", CAPSUINT64, null);
367
368 validateErrMsg("integer", INT64NS, "9", CAPSINT64, MRV);
369 validateErrMsg("integer", INT64NS, "41", CAPSINT64, MRV);
370 validateErrMsg("integer", INT64NS, "49", CAPSINT64, MRV);
371 validateErrMsg("integer", INT64NS, "101", CAPSINT64, MRV);
372 validateErrMsg("UnInteger", INT64NS, "9", CAPSUINT64, MRV);
373 validateErrMsg("UnInteger", INT64NS, "41", CAPSUINT64, MRV);
374 validateErrMsg("UnInteger", INT64NS, "49", CAPSUINT64, MRV);
375 validateErrMsg("UnInteger", INT64NS, "101", CAPSUINT64, MRV);
376 validateErrMsg("UnInteger", INT64NS, "9", CAPSUINT64, MRV);
377 validateErrMsg("UnInteger", INT64NS, "41", CAPSUINT64, MRV);
378 validateErrMsg("UnInteger", INT64NS, "49", CAPSUINT64, MRV);
379 validateErrMsg("UnInteger", INT64NS, "101", CAPSUINT64, MRV);
380 validateErrMsg("UnInteger", INT64NS, "9", CAPSUINT64, MRV);
381 validateErrMsg("UnInteger", INT64NS, "41", CAPSUINT64, MRV);
382 validateErrMsg("UnInteger", INT64NS, "49", CAPSUINT64, MRV);
383 validateErrMsg("UnInteger", INT64NS, "101", CAPSUINT64, MRV);
384 validateErrMsg("revInteger", INT64NS, L, SMALLINT64, MRV);
385 validateErrMsg("revInteger", INT64NS, "11", CAPSINT64, MRV);
386 validateErrMsg("revInteger", INT64NS, "4", CAPSINT64, MRV);
387 validateErrMsg("revInteger", INT64NS, "9", CAPSINT64, MRV);
388 validateErrMsg("revInteger", INT64NS, "19", CAPSINT64, MRV);
389 validateErrMsg("revInteger", INT64NS, I, SMALLINT64, MRV);
390 validateErrMsg(RUI, INT64NS, L, MINVALUE, MRV);
391 validateErrMsg(RUI, INT64NS, "4", CAPSUINT64, MRV);
392 validateErrMsg(RUI, INT64NS, "9", CAPSUINT64, MRV);
393 validateErrMsg(RUI, INT64NS, "11", CAPSUINT64, MRV);
394 validateErrMsg(RUI, INT64NS, "19", CAPSUINT64, MRV);
395 validateErrMsg(RUI, INT64NS, M, MAXUINT64, MRV);
396 }
397}