blob: 3ca5315dd7ef0f7c57d9655e3ede2d84b556c0eb [file] [log] [blame]
Gaurav Agrawal0d43bb52016-05-17 18:06:38 +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.yangutils.linker;
18
19import java.io.IOException;
20import java.util.Iterator;
21import java.util.ListIterator;
22import org.apache.maven.plugin.MojoExecutionException;
23import org.junit.Test;
24import org.onosproject.yangutils.datamodel.YangDataTypes;
25import org.onosproject.yangutils.datamodel.YangDerivedInfo;
26import org.onosproject.yangutils.datamodel.YangGrouping;
27import org.onosproject.yangutils.datamodel.YangLeaf;
28import org.onosproject.yangutils.datamodel.YangModule;
29import org.onosproject.yangutils.datamodel.YangNode;
30import org.onosproject.yangutils.datamodel.YangNodeType;
31import org.onosproject.yangutils.datamodel.YangTypeDef;
32import org.onosproject.yangutils.datamodel.YangUses;
33import org.onosproject.yangutils.linker.impl.ResolvableStatus;
34import org.onosproject.yangutils.linker.impl.YangLinkerManager;
35import org.onosproject.yangutils.parser.exceptions.ParserException;
36import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
37import org.onosproject.yangutils.plugin.manager.YangFileInfo;
38import org.onosproject.yangutils.plugin.manager.YangUtilManager;
39import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
40
41import static org.hamcrest.CoreMatchers.nullValue;
42import static org.hamcrest.MatcherAssert.assertThat;
43import static org.hamcrest.core.Is.is;
44import static org.onosproject.yangutils.datamodel.YangDataTypes.DERIVED;
45import static org.onosproject.yangutils.datamodel.YangDataTypes.STRING;
46import static org.onosproject.yangutils.datamodel.YangNodeType.MODULE_NODE;
47import static org.onosproject.yangutils.linker.impl.ResolvableStatus.RESOLVED;
48
49/**
50 * Test cases for testing inter file linking.
51 */
52public class InterFileLinkingTest {
53
54 private final YangUtilsParserManager manager = new YangUtilsParserManager();
55 private final YangUtilManager utilManager = new YangUtilManager();
56 private final YangLinkerManager yangLinkerManager = new YangLinkerManager();
57
58 /**
59 * Checks inter file type linking.
60 */
61 @Test
62 public void processInterFileTypeLinking()
63 throws IOException, ParserException, MojoExecutionException {
64
65 String searchDir = "src/test/resources/interfiletype";
66 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
67 utilManager.parseYangFileInfoSet();
68
69 YangNode refNode = null;
70 YangNode selfNode = null;
71
72 // Add references to import list.
73 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangFileInfoSet());
74
75 // Carry out inter-file linking.
76 yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
77
78 Iterator<YangFileInfo> yangFileInfoIterator = utilManager.getYangFileInfoSet().iterator();
79
80 YangFileInfo yangFileInfo = yangFileInfoIterator.next();
81
82 if (yangFileInfo.getRootNode().getName().equals("module1")) {
83 selfNode = yangFileInfo.getRootNode();
84 refNode = yangFileInfoIterator.next().getRootNode();
85 } else {
86 refNode = yangFileInfo.getRootNode();
87 selfNode = yangFileInfoIterator.next().getRootNode();
88 }
89
90 // Check whether the data model tree returned is of type module.
91 assertThat(selfNode instanceof YangModule, is(true));
92
93 // Check whether the node type is set properly to module.
94 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
95
96 // Check whether the module name is set correctly.
97 YangModule yangNode = (YangModule) selfNode;
98 assertThat(yangNode.getName(), is("module1"));
99
100 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
101 YangLeaf leafInfo = leafIterator.next();
102
103 assertThat(leafInfo.getName(), is("invalid-interval"));
104 assertThat(leafInfo.getDataType().getDataTypeName(), is("hello"));
105 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
106
107 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
108 is((YangTypeDef) refNode.getChild()));
109
110 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
111
112 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
113
114 // Check for the effective built-in type.
115 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
116
117 // Check for the restriction.
118 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
119 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
120 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
121 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
122 }
123
124 /**
125 * Checks inter file uses linking.
126 */
127 @Test
128 public void processInterFileUsesLinking()
129 throws IOException, ParserException, MojoExecutionException {
130
131 String searchDir = "src/test/resources/interfileuses";
132 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
133 utilManager.parseYangFileInfoSet();
134
135 YangNode refNode = null;
136 YangNode selfNode = null;
137
138 // Add references to import list.
139 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangFileInfoSet());
140
141 // Carry out inter-file linking.
142 yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
143
144 Iterator<YangFileInfo> yangFileInfoIterator = utilManager.getYangFileInfoSet().iterator();
145
146 YangFileInfo yangFileInfo = yangFileInfoIterator.next();
147
148 if (yangFileInfo.getRootNode().getName().equals("module1")) {
149 selfNode = yangFileInfo.getRootNode();
150 refNode = yangFileInfoIterator.next().getRootNode();
151 } else {
152 refNode = yangFileInfo.getRootNode();
153 selfNode = yangFileInfoIterator.next().getRootNode();
154 }
155
156 // Check whether the data model tree returned is of type module.
157 assertThat((selfNode instanceof YangModule), is(true));
158
159 // Check whether the node type is set properly to module.
160 assertThat(selfNode.getNodeType(), is(YangNodeType.MODULE_NODE));
161
162 // Check whether the module name is set correctly.
163 YangModule yangNode = (YangModule) selfNode;
164 assertThat(yangNode.getName(), is("module1"));
165
166 ListIterator<YangLeaf> leafIterator;
167 YangLeaf leafInfo;
168
169 // Check whether grouping is the sibling of module's child.
170 assertThat((refNode.getChild() instanceof YangGrouping), is(true));
171
172 YangGrouping grouping = (YangGrouping) refNode.getChild();
173 leafIterator = grouping.getListOfLeaf().listIterator();
174 leafInfo = leafIterator.next();
175
176 // Check whether the information in the leaf is correct under grouping.
177 assertThat(leafInfo.getName(), is("hello"));
178 assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
179 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
180
181 // Check whether uses is module's child.
182 assertThat((yangNode.getChild() instanceof YangUses), is(true));
183 YangUses uses = (YangUses) yangNode.getChild();
184
185 // Check whether uses get resolved.
186 assertThat(uses.getResolvableStatus(),
187 is(ResolvableStatus.RESOLVED));
188
189 leafIterator = yangNode.getListOfLeaf().listIterator();
190 leafInfo = leafIterator.next();
191
192 // Check whether the information in the leaf is correct under module.
193 assertThat(leafInfo.getName(), is("hello"));
194 assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
195 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
196 }
197
198 /**
199 * Checks inter file type linking with include list.
200 */
201 @Test
202 public void processInterFileTypeLinkingWithIncludeList()
203 throws IOException, ParserException, MojoExecutionException {
204
205 String searchDir = "src/test/resources/interfiletypewithinclude";
206 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
207 utilManager.parseYangFileInfoSet();
208
209 YangNode refNode = null;
210 YangNode selfNode = null;
211
212 // Carry out linking of sub module with module.
213 yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangFileInfoSet());
214
215 // Add reference to include list.
216 yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangFileInfoSet());
217
218 // Carry out inter-file linking.
219 yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
220
221 Iterator<YangFileInfo> yangFileInfoIterator = utilManager.getYangFileInfoSet().iterator();
222
223 YangFileInfo yangFileInfo = yangFileInfoIterator.next();
224
225 if (yangFileInfo.getRootNode().getName().equals("module1")) {
226 selfNode = yangFileInfo.getRootNode();
227 refNode = yangFileInfoIterator.next().getRootNode();
228 } else {
229 refNode = yangFileInfo.getRootNode();
230 selfNode = yangFileInfoIterator.next().getRootNode();
231 }
232
233 // Check whether the data model tree returned is of type module.
234 assertThat(selfNode instanceof YangModule, is(true));
235
236 // Check whether the node type is set properly to module.
237 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
238
239 // Check whether the module name is set correctly.
240 YangModule yangNode = (YangModule) selfNode;
241 assertThat(yangNode.getName(), is("module1"));
242
243 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
244 YangLeaf leafInfo = leafIterator.next();
245
246 assertThat(leafInfo.getName(), is("invalid-interval"));
247 assertThat(leafInfo.getDataType().getDataTypeName(), is("hello"));
248 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
249
250 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
251 is((YangTypeDef) refNode.getChild()));
252
253 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
254
255 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
256
257 // Check for the effective built-in type.
258 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
259
260 // Check for the restriction.
261 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
262 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
263 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
264 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
265 }
266
267 /**
268 * Checks inter file uses linking with include list.
269 */
270 @Test
271 public void processInterFileUsesLinkingWithInclude()
272 throws IOException, ParserException, MojoExecutionException {
273
274 String searchDir = "src/test/resources/interfileuseswithinclude";
275 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
276 utilManager.parseYangFileInfoSet();
277
278 YangNode refNode = null;
279 YangNode selfNode = null;
280
281 // Carry out linking of sub module with module.
282 yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangFileInfoSet());
283
284 // Add reference to include list.
285 yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangFileInfoSet());
286
287 // Carry out inter-file linking.
288 yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
289
290 Iterator<YangFileInfo> yangFileInfoIterator = utilManager.getYangFileInfoSet().iterator();
291
292 YangFileInfo yangFileInfo = yangFileInfoIterator.next();
293
294 if (yangFileInfo.getRootNode().getName().equals("module1")) {
295 selfNode = yangFileInfo.getRootNode();
296 refNode = yangFileInfoIterator.next().getRootNode();
297 } else {
298 refNode = yangFileInfo.getRootNode();
299 selfNode = yangFileInfoIterator.next().getRootNode();
300 }
301
302 // Check whether the data model tree returned is of type module.
303 assertThat((selfNode instanceof YangModule), is(true));
304
305 // Check whether the node type is set properly to module.
306 assertThat(selfNode.getNodeType(), is(YangNodeType.MODULE_NODE));
307
308 // Check whether the module name is set correctly.
309 YangModule yangNode = (YangModule) selfNode;
310 assertThat(yangNode.getName(), is("module1"));
311
312 ListIterator<YangLeaf> leafIterator;
313 YangLeaf leafInfo;
314
315 // Check whether grouping is the sibling of module's child.
316 assertThat((refNode.getChild() instanceof YangGrouping), is(true));
317
318 YangGrouping grouping = (YangGrouping) refNode.getChild();
319 leafIterator = grouping.getListOfLeaf().listIterator();
320 leafInfo = leafIterator.next();
321
322 // Check whether the information in the leaf is correct under grouping.
323 assertThat(leafInfo.getName(), is("hello"));
324 assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
325 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
326
327 // Check whether uses is module's child.
328 assertThat((yangNode.getChild() instanceof YangUses), is(true));
329 YangUses uses = (YangUses) yangNode.getChild();
330
331 // Check whether uses get resolved.
332 assertThat(uses.getResolvableStatus(),
333 is(ResolvableStatus.RESOLVED));
334
335 leafIterator = yangNode.getListOfLeaf().listIterator();
336 leafInfo = leafIterator.next();
337
338 // Check whether the information in the leaf is correct under module.
339 assertThat(leafInfo.getName(), is("hello"));
340 assertThat(leafInfo.getDataType().getDataTypeName(), is("string"));
341 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
342 }
343
344 /**
345 * Checks inter file type linking with revision.
346 */
347 @Test
348 public void processInterFileTypeLinkingWithRevision()
349 throws IOException, ParserException, MojoExecutionException {
350
351 String searchDir = "src/test/resources/interfiletypewithrevision";
352 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
353 utilManager.parseYangFileInfoSet();
354
355 YangNode refNode = null;
356 YangNode selfNode = null;
357
358 // Add references to import list.
359 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangFileInfoSet());
360
361 // Carry out inter-file linking.
362 yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
363
364 Iterator<YangFileInfo> yangFileInfoIterator = utilManager.getYangFileInfoSet().iterator();
365
366 YangFileInfo yangFileInfo = yangFileInfoIterator.next();
367
368 if (yangFileInfo.getRootNode().getName().equals("module1")) {
369 selfNode = yangFileInfo.getRootNode();
370 refNode = yangFileInfoIterator.next().getRootNode();
371 } else {
372 refNode = yangFileInfo.getRootNode();
373 selfNode = yangFileInfoIterator.next().getRootNode();
374 }
375
376 // Check whether the data model tree returned is of type module.
377 assertThat(selfNode instanceof YangModule, is(true));
378
379 // Check whether the node type is set properly to module.
380 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
381
382 // Check whether the module name is set correctly.
383 YangModule yangNode = (YangModule) selfNode;
384 assertThat(yangNode.getName(), is("module1"));
385
386 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
387 YangLeaf leafInfo = leafIterator.next();
388
389 assertThat(leafInfo.getName(), is("invalid-interval"));
390 assertThat(leafInfo.getDataType().getDataTypeName(), is("hello"));
391 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
392
393 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
394 is((YangTypeDef) refNode.getChild()));
395
396 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
397
398 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
399
400 // Check for the effective built-in type.
401 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
402
403 // Check for the restriction.
404 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
405 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
406 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
407 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
408 }
409
410 /**
411 * Checks inter file type linking with revision in name.
412 */
413 @Test
414 public void processInterFileTypeLinkingWithRevisionInName()
415 throws IOException, ParserException, MojoExecutionException {
416
417 String searchDir = "src/test/resources/interfiletypewithrevisioninname";
418 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
419 utilManager.parseYangFileInfoSet();
420
421 YangNode refNode = null;
422 YangNode selfNode = null;
423
424 // Add references to import list.
425 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangFileInfoSet());
426
427 // Carry out inter-file linking.
428 yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
429
430 Iterator<YangFileInfo> yangFileInfoIterator = utilManager.getYangFileInfoSet().iterator();
431
432 YangFileInfo yangFileInfo = yangFileInfoIterator.next();
433
434 if (yangFileInfo.getRootNode().getName().equals("module1")) {
435 selfNode = yangFileInfo.getRootNode();
436 refNode = yangFileInfoIterator.next().getRootNode();
437 } else {
438 refNode = yangFileInfo.getRootNode();
439 selfNode = yangFileInfoIterator.next().getRootNode();
440 }
441
442 // Check whether the data model tree returned is of type module.
443 assertThat(selfNode instanceof YangModule, is(true));
444
445 // Check whether the node type is set properly to module.
446 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
447
448 // Check whether the module name is set correctly.
449 YangModule yangNode = (YangModule) selfNode;
450 assertThat(yangNode.getName(), is("module1"));
451
452 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
453 YangLeaf leafInfo = leafIterator.next();
454
455 assertThat(leafInfo.getName(), is("invalid-interval"));
456 assertThat(leafInfo.getDataType().getDataTypeName(), is("hello"));
457 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
458
459 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
460 is((YangTypeDef) refNode.getChild()));
461
462 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
463
464 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
465
466 // Check for the effective built-in type.
467 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
468
469 // Check for the restriction.
470 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
471 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
472 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
473 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
474 }
475
476 /**
477 * Checks hierarchical inter file type linking.
478 */
479 @Test
480 public void processHierarchicalInterFileTypeLinking()
481 throws IOException, ParserException, MojoExecutionException {
482
483 String searchDir = "src/test/resources/hierarchicalinterfiletype";
484 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
485 utilManager.parseYangFileInfoSet();
486
487 YangNode refNode1 = null;
488 YangNode refNode2 = null;
489 YangNode selfNode = null;
490
491 // Add references to import list.
492 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangFileInfoSet());
493
494 // Carry out inter-file linking.
495 yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
496
497 for (YangFileInfo yangFile : utilManager.getYangFileInfoSet()) {
498 if (yangFile.getRootNode().getName().equals("ietf-network-topology")) {
499 selfNode = yangFile.getRootNode();
500 } else if (yangFile.getRootNode().getName().equals("ietf-network")) {
501 refNode1 = yangFile.getRootNode();
502 } else {
503 refNode2 = yangFile.getRootNode();
504 }
505 }
506
507 // Check whether the data model tree returned is of type module.
508 assertThat(selfNode instanceof YangModule, is(true));
509
510 // Check whether the node type is set properly to module.
511 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
512
513 // Check whether the module name is set correctly.
514 YangModule yangNode = (YangModule) selfNode;
515 assertThat(yangNode.getName(), is("ietf-network-topology"));
516
517 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
518 YangLeaf leafInfo = leafIterator.next();
519
520 assertThat(leafInfo.getName(), is("source-node"));
521 assertThat(leafInfo.getDataType().getDataTypeName(), is("node-id"));
522 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
523
524 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
525 is((YangTypeDef) refNode1.getChild()));
526
527 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
528
529 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
530
531 // Check for the effective built-in type.
532 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
533
534 // Check for the restriction.
535 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
536 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
537 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
538 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
539 }
540
541 /**
542 * Checks hierarchical intra with inter file type linking.
543 */
544 @Test
545 public void processHierarchicalIntraWithInterFileTypeLinking()
546 throws IOException, ParserException, MojoExecutionException {
547
548 String searchDir = "src/test/resources/hierarchicalintrawithinterfiletype";
549 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
550 utilManager.parseYangFileInfoSet();
551
552 YangNode refNode1 = null;
553 YangNode selfNode = null;
554
555 // Add references to import list.
556 yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangFileInfoSet());
557
558 // Carry out inter-file linking.
559 yangLinkerManager.processInterFileLinking(utilManager.getYangFileInfoSet());
560
561 for (YangFileInfo yangFile : utilManager.getYangFileInfoSet()) {
562 if (yangFile.getRootNode().getName().equals("ietf-network")) {
563 selfNode = yangFile.getRootNode();
564 } else if (yangFile.getRootNode().getName().equals("ietf-inet-types")) {
565 refNode1 = yangFile.getRootNode();
566 }
567 }
568
569 // Check whether the data model tree returned is of type module.
570 assertThat(selfNode instanceof YangModule, is(true));
571
572 // Check whether the node type is set properly to module.
573 assertThat(selfNode.getNodeType(), is(MODULE_NODE));
574
575 // Check whether the module name is set correctly.
576 YangModule yangNode = (YangModule) selfNode;
577 assertThat(yangNode.getName(), is("ietf-network"));
578
579 ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
580 YangLeaf leafInfo = leafIterator.next();
581
582 assertThat(leafInfo.getName(), is("node-ref"));
583 assertThat(leafInfo.getDataType().getDataTypeName(), is("node-id"));
584 assertThat(leafInfo.getDataType().getDataType(), is(DERIVED));
585
586 assertThat(((YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo()).getReferredTypeDef(),
587 is((YangTypeDef) selfNode.getChild()));
588
589 assertThat(leafInfo.getDataType().getResolvableStatus(), is(RESOLVED));
590
591 YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) leafInfo.getDataType().getDataTypeExtendedInfo();
592
593 // Check for the effective built-in type.
594 assertThat(derivedInfo.getEffectiveBuiltInType(), is(STRING));
595
596 // Check for the restriction.
597 assertThat(derivedInfo.getLengthRestrictionString(), is(nullValue()));
598 assertThat(derivedInfo.getRangeRestrictionString(), is(nullValue()));
599 assertThat(derivedInfo.getPatternRestriction(), is(nullValue()));
600 assertThat(derivedInfo.getResolvedExtendedInfo(), is(nullValue()));
601 }
602}