991910e499fd91b8268401c7c7fe61aada611587
[yangtools.git] / yang / yang-parser-impl / src / test / java / org / opendaylight / yangtools / yang / parser / impl / UsesAugmentTest.java
1 /*
2  * Copyright (c) 2013 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 package org.opendaylight.yangtools.yang.parser.impl;
9
10 import static org.junit.Assert.*;
11
12 import java.util.Set;
13
14 import org.junit.Test;
15 import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
16 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
17 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
18 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
19 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
20 import org.opendaylight.yangtools.yang.model.api.Module;
21 import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
22
23 public class UsesAugmentTest {
24     private Set<Module> modules;
25
26     /**
27      * Structure of testing model:
28      *
29      * notification pcreq
30      * |-- leaf version (U)
31      * |-- list requests
32      * |-- |-- container rp
33      * |-- |-- |-- leaf priority (U)
34      * |-- |-- |-- container box (U)
35      * |-- |-- |-- |-- container order (A)
36      * |-- |-- |-- |-- |-- leaf delete (U)
37      * |-- |-- |-- |-- |-- |-- leaf setup (U)
38      * |-- |-- |-- leaf processing-rule (U)
39      * |-- |-- |-- leaf ignore (U)
40      * |-- |-- path-key-expansion
41      * |-- |-- |-- container path-key
42      * |-- |-- |-- |-- list path-keys (U)
43      * |-- |-- |-- |-- |-- leaf version (U, A)
44      * |-- |-- |-- |-- |-- leaf processing-rule (U)
45      * |-- |-- |-- |-- |-- leaf ignore (U)
46      * |-- |-- container segment-computation
47      * |-- |-- |-- container p2p
48      * |-- |-- |-- |-- container endpoints
49      * |-- |-- |-- |-- |-- leaf processing-rule (U)
50      * |-- |-- |-- |-- |-- leaf ignore (U)
51      * |-- |-- |-- |-- |-- container box (U)
52      * |-- |-- |-- |-- |-- choice address-family (U)
53      * |-- |-- |-- |-- |-- |-- case ipv4
54      * |-- |-- |-- |-- |-- |-- |-- leaf source-ipv4-address
55      * |-- |-- |-- |-- |-- |-- case ipv6
56      * |-- |-- |-- |-- |-- |-- |-- leaf source-ipv6-address
57      * |-- |-- |-- |-- container reported-route
58      * |-- |-- |-- |-- |-- container bandwidth
59      * |-- |-- |-- |-- |-- list subobjects(U)
60      * |-- |-- |-- |-- |-- leaf processing-rule (U)
61      * |-- |-- |-- |-- |-- leaf ignore (U)
62      * |-- |-- |-- |-- container bandwidth (U)
63      * |-- |-- |-- |-- |-- container bandwidth (U)
64      * |-- |-- |-- |-- |-- leaf processing-rule (U)
65      * |-- |-- |-- |-- |-- leaf ignore (U)
66      * |-- list svec
67      * |-- |-- list metric
68      * |-- |-- |-- leaf metric-type (U)
69      * |-- |-- |-- container box (U)
70      * |-- |-- |-- leaf processing-rule (U)
71      * |-- |-- |-- leaf ignore (U)
72      * |-- |-- leaf link-diverse (U)
73      * |-- |-- leaf processing-rule (U)
74      * |-- |-- leaf ignore (U)
75      *
76      * U = added by uses
77      * A = added by augment
78      */
79     @Test
80     public void testAugmentInUses() throws Exception {
81         modules = TestUtils.loadModules(getClass().getResource("/grouping-test").getPath());
82         Module testModule = TestUtils.findModule(modules, "uses-grouping");
83
84         // * notification pcreq
85         Set<NotificationDefinition> notifications = testModule.getNotifications();
86         assertEquals(1, notifications.size());
87         NotificationDefinition pcreq = notifications.iterator().next();
88         assertNotNull(pcreq);
89         Set<DataSchemaNode> childNodes = pcreq.getChildNodes();
90         assertEquals(3, childNodes.size());
91         // * |-- leaf version (U)
92         LeafSchemaNode version = (LeafSchemaNode)pcreq.getDataChildByName("version");
93         assertNotNull(version);
94         assertTrue(version.isAddedByUses());
95         // * |-- list requests
96         ListSchemaNode requests = (ListSchemaNode)pcreq.getDataChildByName("requests");
97         assertNotNull(requests);
98         assertFalse(requests.isAddedByUses());
99         childNodes = requests.getChildNodes();
100         assertEquals(3, childNodes.size());
101         // * |-- |-- container rp
102         ContainerSchemaNode rp = (ContainerSchemaNode)requests.getDataChildByName("rp");
103         assertNotNull(rp);
104         assertFalse(rp.isAddedByUses());
105         childNodes = rp.getChildNodes();
106         assertEquals(4, childNodes.size());
107         // * |-- |-- |-- leaf priority (U)
108         LeafSchemaNode priority = (LeafSchemaNode)rp.getDataChildByName("priority");
109         assertNotNull(priority);
110         assertTrue(priority.isAddedByUses());
111         // * |-- |-- |-- container box (U)
112         ContainerSchemaNode box = (ContainerSchemaNode)rp.getDataChildByName("box");
113         assertNotNull(box);
114         assertTrue(box.isAddedByUses());
115         // * |-- |-- |-- |-- container order (A)
116         ContainerSchemaNode order = (ContainerSchemaNode)box.getDataChildByName("order");
117         assertNotNull(order);
118         //assertFalse(order.isAddedByUses());
119         assertTrue(order.isAugmenting());
120         assertEquals(2, order.getChildNodes().size());
121         // * |-- |-- |-- |-- |-- leaf processing-rule (U)
122         LeafSchemaNode delete = (LeafSchemaNode)order.getDataChildByName("delete");
123         assertNotNull(delete);
124         assertTrue(delete.isAddedByUses());
125         // * |-- |-- |-- |-- |-- leaf ignore (U)
126         LeafSchemaNode setup = (LeafSchemaNode)order.getDataChildByName("setup");
127         assertNotNull(setup);
128         assertTrue(setup.isAddedByUses());
129         // * |-- |-- |-- leaf processing-rule (U)
130         LeafSchemaNode processingRule = (LeafSchemaNode)rp.getDataChildByName("processing-rule");
131         assertNotNull(processingRule);
132         assertTrue(processingRule.isAddedByUses());
133         // * |-- |-- |-- leaf ignore (U)
134         LeafSchemaNode ignore = (LeafSchemaNode)rp.getDataChildByName("ignore");
135         assertNotNull(ignore);
136         assertTrue(ignore.isAddedByUses());
137         // * |-- |-- path-key-expansion
138         ContainerSchemaNode pke = (ContainerSchemaNode)requests.getDataChildByName("path-key-expansion");
139         assertNotNull(pke);
140         assertFalse(pke.isAddedByUses());
141         // * |-- |-- |-- path-key
142         ContainerSchemaNode pathKey = (ContainerSchemaNode)pke.getDataChildByName("path-key");
143         assertNotNull(pathKey);
144         assertFalse(pathKey.isAddedByUses());
145         assertEquals(3, pathKey.getChildNodes().size());
146         // * |-- |-- |-- |-- list path-keys (U)
147         ListSchemaNode pathKeys = (ListSchemaNode)pathKey.getDataChildByName("path-keys");
148         assertNotNull(pathKeys);
149         assertTrue(pathKeys.isAddedByUses());
150         childNodes = pathKeys.getChildNodes();
151         assertEquals(1, childNodes.size());
152         // * |-- |-- |-- |-- |-- leaf version (U)
153         version = (LeafSchemaNode)pathKeys.getDataChildByName("version");
154         assertNotNull(version);
155         assertTrue(version.isAddedByUses());
156         assertFalse(version.isAugmenting());
157         // * |-- |-- |-- |-- |-- leaf processing-rule (U)
158         processingRule = (LeafSchemaNode)pathKey.getDataChildByName("processing-rule");
159         assertNotNull(processingRule);
160         assertTrue(processingRule.isAddedByUses());
161         // * |-- |-- |-- |-- |-- leaf ignore (U)
162         ignore = (LeafSchemaNode)pathKey.getDataChildByName("ignore");
163         assertNotNull(ignore);
164         assertTrue(ignore.isAddedByUses());
165         // * |-- |-- container segment-computation
166         ContainerSchemaNode sc = (ContainerSchemaNode)requests.getDataChildByName("segment-computation");
167         assertNotNull(sc);
168         assertFalse(sc.isAddedByUses());
169         // * |-- |-- |-- container p2p
170         ContainerSchemaNode p2p = (ContainerSchemaNode)sc.getDataChildByName("p2p");
171         assertNotNull(p2p);
172         assertFalse(p2p.isAddedByUses());
173         // * |-- |-- |-- |-- container endpoints
174         ContainerSchemaNode endpoints = (ContainerSchemaNode)p2p.getDataChildByName("endpoints");
175         assertNotNull(endpoints);
176         assertFalse(endpoints.isAddedByUses());
177         // * |-- |-- |-- |-- |-- leaf processing-rule (U)
178         processingRule = (LeafSchemaNode)endpoints.getDataChildByName("processing-rule");
179         assertNotNull(processingRule);
180         assertTrue(processingRule.isAddedByUses());
181         // * |-- |-- |-- |-- |-- leaf ignore (U)
182         ignore = (LeafSchemaNode)endpoints.getDataChildByName("ignore");
183         assertNotNull(ignore);
184         assertTrue(ignore.isAddedByUses());
185         // * |-- |-- |-- |-- |-- container box
186         box = (ContainerSchemaNode)endpoints.getDataChildByName("box");
187         assertNotNull(box);
188         assertTrue(box.isAddedByUses());
189         // * |-- |-- |-- |-- |-- choice address-family (U)
190         ChoiceNode af = (ChoiceNode)endpoints.getDataChildByName("address-family");
191         assertNotNull(af);
192         assertTrue(af.isAddedByUses());
193         // * |-- |-- |-- |-- container reported-route
194         ContainerSchemaNode reportedRoute = (ContainerSchemaNode)p2p.getDataChildByName("reported-route");
195         assertNotNull(reportedRoute);
196         assertFalse(reportedRoute.isAddedByUses());
197         // * |-- |-- |-- |-- |-- container bandwidth
198         ContainerSchemaNode bandwidth = (ContainerSchemaNode)reportedRoute.getDataChildByName("bandwidth");
199         assertNotNull(bandwidth);
200         assertFalse(bandwidth.isAddedByUses());
201         // * |-- |-- |-- |-- |-- list subobjects
202         ListSchemaNode subobjects = (ListSchemaNode)reportedRoute.getDataChildByName("subobjects");
203         assertNotNull(subobjects);
204         assertTrue(subobjects.isAddedByUses());
205         // * |-- |-- |-- |-- |-- leaf processing-rule (U)
206         processingRule = (LeafSchemaNode)reportedRoute.getDataChildByName("processing-rule");
207         assertNotNull(processingRule);
208         assertTrue(processingRule.isAddedByUses());
209         // * |-- |-- |-- |-- |-- leaf ignore (U)
210         ignore = (LeafSchemaNode)reportedRoute.getDataChildByName("ignore");
211         assertNotNull(ignore);
212         assertTrue(ignore.isAddedByUses());
213         // * |-- |-- |-- |-- container bandwidth (U)
214         bandwidth = (ContainerSchemaNode)p2p.getDataChildByName("bandwidth");
215         assertNotNull(bandwidth);
216         assertTrue(bandwidth.isAddedByUses());
217         // * |-- |-- |-- |-- |-- container bandwidth (U)
218         bandwidth = (ContainerSchemaNode)bandwidth.getDataChildByName("bandwidth");
219         assertNotNull(bandwidth);
220         assertTrue(bandwidth.isAddedByUses());
221
222
223         // * |-- list svec
224         ListSchemaNode svec = (ListSchemaNode)pcreq.getDataChildByName("svec");
225         assertNotNull(svec);
226         assertFalse(svec.isAddedByUses());
227     }
228
229 }