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