Bug 3876: unit test coverage increase
[yangtools.git] / yang / yang-data-jaxen / src / test / java / org / opendaylight / yangtools / yang / data / jaxen / TestUtils.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.yangtools.yang.data.jaxen;
10
11 import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapEntry;
12 import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapEntryBuilder;
13 import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapNodeBuilder;
14
15 import java.io.File;
16 import java.io.FileNotFoundException;
17 import java.io.IOException;
18 import java.net.URI;
19 import java.util.ArrayList;
20 import java.util.List;
21 import org.opendaylight.yangtools.yang.common.QName;
22 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
23 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
24 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
25 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
26 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
27 import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
28
29 final class TestUtils {
30
31     private static final QName ROOT_QNAME = QName.create("urn:opendaylight.test2", "2015-08-08", "root");
32     private static final QName LIST_A_QNAME = QName.create(ROOT_QNAME, "list-a");
33     private static final QName LIST_B_QNAME = QName.create(ROOT_QNAME, "list-b");
34     private static final QName LEAF_A_QNAME = QName.create(ROOT_QNAME, "leaf-a");
35     private static final QName LEAF_B_QNAME = QName.create(ROOT_QNAME, "leaf-b");
36     private static final QName LEAF_C_QNAME = QName.create(ROOT_QNAME, "leaf-c");
37     private static final QName LEAF_D_QNAME = QName.create(ROOT_QNAME, "leaf-d");
38     private static final QName CONTAINER_A_QNAME = QName.create(ROOT_QNAME, "container-a");
39     private static final QName CONTAINER_B_QNAME = QName.create(ROOT_QNAME, "container-b");
40     private static final String FOO = "foo";
41     private static final String BAR = "bar";
42     private static final String WAZ = "waz";
43     private static final String ONE = "one";
44     private static final String TWO = "two";
45     private static final String THREE = "three";
46
47     private TestUtils() {
48     }
49
50     public static SchemaContext loadSchemaContext(final URI resourceDirectory) throws IOException {
51         final YangParserImpl parser = new YangParserImpl();
52         final File testDir = new File(resourceDirectory);
53         final String[] fileList = testDir.list();
54         final List<File> testFiles = new ArrayList<>();
55         if (fileList == null) {
56             throw new FileNotFoundException(resourceDirectory.toString());
57         }
58         for (String fileName : fileList) {
59             testFiles.add(new File(testDir, fileName));
60         }
61         SchemaContext ctx = parser.parseFiles(testFiles);
62         return ctx;
63     }
64
65     /**
66      * Returns a test document
67      *
68      * <pre>
69      * root
70      *     leaf-c "waz"
71      *     list-a
72      *          leaf-a "foo"
73      *     list-a
74      *          leaf-a "bar"
75      *          list-b
76      *                  leaf-b "one"
77      *          list-b
78      *                  leaf-b "two"
79      *     container-a
80      *          container-b
81      *                  leaf-d "three"
82      * </pre>
83      *
84      * @return
85      */
86     public static NormalizedNode<?, ?> createNormalizedNodes() {
87         return ImmutableContainerNodeBuilder
88                 .create()
89                 .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(ROOT_QNAME))
90                 .withChild(ImmutableNodes.leafNode(LEAF_C_QNAME, WAZ))
91                 .withChild(mapNodeBuilder(LIST_A_QNAME)
92                         .withChild(mapEntry(LIST_A_QNAME, LEAF_A_QNAME, FOO))
93                         .withChild(mapEntryBuilder(LIST_A_QNAME, LEAF_A_QNAME, BAR)
94                                 .withChild(mapNodeBuilder(LIST_B_QNAME)
95                                         .withChild(mapEntry(LIST_B_QNAME, LEAF_B_QNAME, ONE))
96                                         .withChild(mapEntry(LIST_B_QNAME, LEAF_B_QNAME, TWO))
97                                         .build())
98                                 .build())
99                         .build())
100                 .withChild(ImmutableContainerNodeBuilder.create()
101                         .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(CONTAINER_A_QNAME))
102                         .withChild(ImmutableContainerNodeBuilder.create().
103                                 withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier
104                                         (CONTAINER_B_QNAME))
105                                 .withChild(ImmutableNodes.leafNode(LEAF_D_QNAME, THREE))
106                                 .build())
107                         .build())
108                 .build();
109     }
110 }