2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.yangtools.yang.parser.impl;
10 import static org.junit.Assert.*;
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;
23 public class UsesAugmentTest {
24 private Set<Module> modules;
27 * Structure of testing model:
30 * |-- leaf version (U)
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)
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)
77 * A = added by augment
80 public void testAugmentInUses() throws Exception {
81 modules = TestUtils.loadModules(getClass().getResource("/grouping-test").getPath());
82 Module testModule = TestUtils.findModule(modules, "uses-grouping");
84 // * notification pcreq
85 Set<NotificationDefinition> notifications = testModule.getNotifications();
86 assertEquals(1, notifications.size());
87 NotificationDefinition pcreq = notifications.iterator().next();
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");
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");
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");
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");
168 assertFalse(sc.isAddedByUses());
169 // * |-- |-- |-- container p2p
170 ContainerSchemaNode p2p = (ContainerSchemaNode)sc.getDataChildByName("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");
188 assertTrue(box.isAddedByUses());
189 // * |-- |-- |-- |-- |-- choice address-family (U)
190 ChoiceNode af = (ChoiceNode)endpoints.getDataChildByName("address-family");
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());
224 ListSchemaNode svec = (ListSchemaNode)pcreq.getDataChildByName("svec");
226 assertFalse(svec.isAddedByUses());