Update BindingRuntime{Context,Generator,Types}
[mdsal.git] / binding / mdsal-binding-generator-impl / src / test / java / org / opendaylight / mdsal / binding / generator / impl / UsesTest.java
1 /*
2  * Copyright (c) 2016 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.mdsal.binding.generator.impl;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertNotNull;
12 import static org.opendaylight.mdsal.binding.generator.impl.SupportTestUtil.containsInterface;
13 import static org.opendaylight.mdsal.binding.generator.impl.SupportTestUtil.containsMethods;
14
15 import java.util.List;
16 import org.junit.Test;
17 import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
18 import org.opendaylight.mdsal.binding.model.api.GeneratedType;
19 import org.opendaylight.mdsal.binding.model.api.Type;
20 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
21
22 public class UsesTest {
23     @Test
24     public void usesInGroupingDependenciesTest() {
25         final List<Type> genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResource(
26                 "/uses-of-grouping/uses-of-grouping-dependencies.yang"));
27         GeneratedType groupingU = null;
28         GeneratedType groupingX = null;
29         GeneratedType groupingV = null;
30
31         int groupingUCounter = 0;
32         int groupingXCounter = 0;
33         int groupingVCounter = 0;
34
35         for (Type type : genTypes) {
36             if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {
37                 GeneratedType genType = (GeneratedType) type;
38                 if (genType.getName().equals("GroupingU")) {
39                     groupingU = genType;
40                     groupingUCounter++;
41                 } else if (genType.getName().equals("GroupingV")) {
42                     groupingV = genType;
43                     groupingVCounter++;
44                 } else if (genType.getName().equals("GroupingX")) {
45                     groupingX = genType;
46                     groupingXCounter++;
47                 }
48             }
49         }
50
51         assertNotNull("Generated type for grouping-U wasn't generated.", groupingU);
52         assertEquals("GroupingU interface generated more than one time.", 1, groupingUCounter);
53         assertEquals("GroupingU is in wrong package.",
54                 "org.opendaylight.yang.gen.v1.urn.grouping.dependencies.rev130718", groupingU.getPackageName());
55
56         assertNotNull("Generated type for grouping-V wasn't generated.", groupingV);
57         assertEquals("GroupingV interface generated more than one time.", 1, groupingVCounter);
58         assertEquals("GroupingV is in wrong package.",
59                 "org.opendaylight.yang.gen.v1.urn.grouping.dependencies.rev130718", groupingV.getPackageName());
60
61         assertNotNull("Generated type for grouping-X wasn't generated.", groupingX);
62         assertEquals("GroupingX interface generated more than one time.", 1, groupingXCounter);
63         assertEquals("GroupingX is in wrong package.",
64                 "org.opendaylight.yang.gen.v1.urn.grouping.dependencies.rev130718", groupingX.getPackageName());
65
66         containsInterface("GroupingV", groupingU);
67         containsInterface("GroupingX", groupingU);
68         containsInterface("GroupingZ", groupingV);
69         containsInterface("GroupingZZ", groupingV);
70         containsInterface("GroupingY", groupingX);
71     }
72
73     @Test
74     public void usesInCaseTest() {
75         final List<Type> genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResource(
76                 "/uses-of-grouping/uses-of-grouping-case.yang"));
77
78         GeneratedType groupingCaseTest = null;
79         int groupingCaseTestCounter = 0;
80         GeneratedType caseC = null;
81         int caseCCounter = 0;
82         for (Type type : genTypes) {
83             if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {
84                 GeneratedType genType = (GeneratedType) type;
85                 if (genType.getName().equals("C")) {
86                     caseC = genType;
87                     caseCCounter++;
88                 } else if (genType.getName().equals("GroupingCaseTest")) {
89                     groupingCaseTest = genType;
90                     groupingCaseTestCounter++;
91                 }
92             }
93         }
94
95         assertNotNull("Generated type for case C wasn't generated.", caseC);
96         assertEquals("Case C interface generated more than one time.", 1, caseCCounter);
97         assertEquals(
98                 "Case C is in wrong package.",
99                 "org.opendaylight.yang.gen.v1.urn.grouping.uses._case.rev130718.container.with.choicetest.choice.test",
100                 caseC.getPackageName());
101
102         assertNotNull("Generated type for grouping-case-test wasn't generated.", groupingCaseTest);
103         assertEquals("GroupingCaseTest interface generated more than one time.", 1, groupingCaseTestCounter);
104         assertEquals("GroupingCaseTest is in wrong package.",
105                 "org.opendaylight.yang.gen.v1.urn.grouping.uses._case.rev130718", groupingCaseTest.getPackageName());
106
107         containsInterface("GroupingCaseTest", caseC);
108         assertEquals("Case C shouldn't contain any method.", 1, caseC.getMethodDefinitions().size());
109
110         assertEquals("Number of method in GroupingCaseTest is incorrect", 2, groupingCaseTest.getMethodDefinitions()
111                 .size());
112         containsMethods(groupingCaseTest.getMethodDefinitions(), new NameTypePattern("getLeafGroupingCaseTest1",
113                 "String"));
114     }
115
116     @Test
117     public void usesInContainerTest() {
118         final List<Type> genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResource(
119                 "/uses-of-grouping/uses-of-grouping-container.yang"));
120
121         int containerTestCount = 0;
122         int groupingContainerTestCounter = 0;
123         GeneratedType containerTest = null;
124         GeneratedType groupingContainerTest = null;
125
126         for (Type type : genTypes) {
127             if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {
128                 GeneratedType genType = (GeneratedType) type;
129                 if (genType.getName().equals("GroupingContainerTest")) {
130                     groupingContainerTest = genType;
131                     groupingContainerTestCounter++;
132                 } else if (genType.getName().equals("ContainerTest")) {
133                     containerTest = genType;
134                     containerTestCount++;
135                 }
136             }
137         }
138
139         assertNotNull("Generated type for grouping-container-test wasn't generated", groupingContainerTest);
140         assertEquals("GroupingContainerTest interface - incorrect number of occurences", 1,
141                 groupingContainerTestCounter);
142         assertEquals("GroupingContainerTest isn't in correct package",
143                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.container.rev130718",
144                 groupingContainerTest.getPackageName());
145
146         assertNotNull("Generated type for container-test wasn't generated", containerTest);
147         assertEquals("ContainerTest interface - incorrect number of occurences", 1, containerTestCount);
148         assertEquals("ContainerTest isn't in correct package",
149                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.container.rev130718", containerTest.getPackageName());
150
151         containsInterface("GroupingContainerTest", containerTest);
152
153         assertEquals("Number of method in GroupingContainerTestis incorrect", 3, groupingContainerTest
154                 .getMethodDefinitions().size());
155         assertEquals("Number of method in ContainerTest is incorrect", 2, containerTest.getMethodDefinitions().size());
156
157         containsMethods(groupingContainerTest.getMethodDefinitions(), new NameTypePattern(
158                 "getLeafGroupingContainerTest1", "String"), new NameTypePattern("getLeafGroupingContainerTest2",
159                 "Uint8"));
160
161         containsMethods(containerTest.getMethodDefinitions(), new NameTypePattern("getContainerLeafTest", "String"));
162     }
163
164     @Test
165     public void usesInGroupingTest() {
166         final List<Type> genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResource(
167                 "/uses-of-grouping/uses-of-grouping-grouping.yang"));
168
169         int groupingTestCount = 0;
170         int groupingGroupingTestCounter = 0;
171         GeneratedType groupingTest = null;
172         GeneratedType groupingGroupingTest = null;
173
174         for (Type type : genTypes) {
175             if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {
176                 GeneratedType genType = (GeneratedType) type;
177                 if (genType.getName().equals("GroupingGroupingTest")) {
178                     groupingGroupingTest = genType;
179                     groupingGroupingTestCounter++;
180                 } else if (genType.getName().equals("GroupingTest")) {
181                     groupingTest = genType;
182                     groupingTestCount++;
183                 }
184             }
185         }
186
187         assertNotNull("Generated type for grouping-grouping-test wasn't generated", groupingGroupingTest);
188         assertEquals("GroupingGroupingTest interface - incorrect number of occurences", 1, groupingGroupingTestCounter);
189         assertEquals("GroupingGroupingTest isn't in correct package",
190                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.grouping.rev130718",
191                 groupingGroupingTest.getPackageName());
192
193         assertNotNull("Generated type for grouping-test wasn't generated", groupingTest);
194         assertEquals("GroupingTest interface - incorrect number of occurences", 1, groupingTestCount);
195         assertEquals("GroupingTest isn't in correct package",
196                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.grouping.rev130718", groupingTest.getPackageName());
197
198         containsInterface("GroupingGroupingTest", groupingTest);
199
200         assertEquals("Number of method in GroupingGroupingTest is incorrect", 2, groupingGroupingTest
201                 .getMethodDefinitions().size());
202         assertEquals("Number of method in GroupingTest is incorrect", 2, groupingTest.getMethodDefinitions().size());
203
204         containsMethods(groupingGroupingTest.getMethodDefinitions(), new NameTypePattern("getLeafGroupingGrouping",
205                 "String"));
206
207         containsMethods(groupingTest.getMethodDefinitions(), new NameTypePattern("getLeafGroupingTest", "Byte"));
208     }
209
210     @Test
211     public void usesInListTest() {
212         final List<Type> genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResource(
213                 "/uses-of-grouping/uses-of-grouping-list.yang"));
214
215         int listTestCounter = 0;
216         int groupingListTestCounter = 0;
217         int containerGroupingListTestCounter = 0;
218         int listGroupingListTestCounter = 0;
219         GeneratedType listTest = null;
220         GeneratedType groupingListTest = null;
221         GeneratedType containerGroupingListTest = null;
222         GeneratedType listGroupingListTest = null;
223
224         for (Type type : genTypes) {
225             if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {
226                 GeneratedType genType = (GeneratedType) type;
227                 if (genType.getName().equals("GroupingListTest")) {
228                     groupingListTest = genType;
229                     groupingListTestCounter++;
230                 } else if (genType.getName().equals("ListTest")) {
231                     listTest = genType;
232                     listTestCounter++;
233                 } else if (genType.getName().equals("ContainerGroupingListTest")) {
234                     containerGroupingListTest = genType;
235                     containerGroupingListTestCounter++;
236                 } else if (genType.getName().equals("ListGroupingListTest")) {
237                     listGroupingListTest = genType;
238                     listGroupingListTestCounter++;
239                 }
240             }
241         }
242
243         assertNotNull("Generated type for grouping-list-test wasn't generated", groupingListTest);
244         assertEquals("GroupingListTest interface - incorrect number of occurences", 1, groupingListTestCounter);
245         assertEquals("GroupingListTest isn't in correct package",
246                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.list.rev130718", groupingListTest.getPackageName());
247
248         assertNotNull("Generated type for list-test wasn't generated", listTest);
249         assertEquals("ListTest interface - incorrect number of occurences", 1, listTestCounter);
250         assertEquals("ListTest isn't in correct package",
251                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.list.rev130718", listTest.getPackageName());
252
253         assertNotNull("Generated type for container-grouping-list-test wasn't generated", containerGroupingListTest);
254         assertEquals("ContainerGroupingListTest interface - incorrect number of occurences", 1,
255                 containerGroupingListTestCounter);
256         assertEquals("ContainerGroupingListTest isn't in correct package",
257                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.list.rev130718.grouping.list.test",
258                 containerGroupingListTest.getPackageName());
259
260         assertNotNull("Generated type for list-grouping-list-test wasn't generated", listGroupingListTest);
261         assertEquals("ListGroupingListTest interface - incorrect number of occurences", 1, listGroupingListTestCounter);
262         assertEquals("ListGroupingListTest isn't in correct package",
263                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.list.rev130718.grouping.list.test",
264                 listGroupingListTest.getPackageName());
265
266         containsInterface("GroupingListTest", listTest);
267
268         assertEquals("Number of method in GroupingListTest is incorrect", 6, groupingListTest.getMethodDefinitions()
269                 .size());
270         assertEquals("Number of method in ListTest is incorrect", 2, listTest.getMethodDefinitions().size());
271         assertEquals("Number of method in ContainerGroupingListTest is incorrect", 2, containerGroupingListTest
272                 .getMethodDefinitions().size());
273         assertEquals("Number of method in ListGroupingListTest is incorrect", 2, listGroupingListTest
274                 .getMethodDefinitions().size());
275
276         containsMethods(groupingListTest.getMethodDefinitions(), new NameTypePattern("getContainerGroupingListTest",
277                 "ContainerGroupingListTest"), new NameTypePattern("getLeafGroupingListTest", "String"),
278                 new NameTypePattern("getLeaffllistGroupingListTest", "List<String>"), new NameTypePattern(
279                         "getListGroupingListTest", "List<ListGroupingListTest>"));
280         containsMethods(listTest.getMethodDefinitions(), new NameTypePattern("getListLeafTest", "String"));
281         containsMethods(containerGroupingListTest.getMethodDefinitions(), new NameTypePattern(
282                 "getLeafContainerGroupingListTest", "Uint8"));
283         containsMethods(listGroupingListTest.getMethodDefinitions(), new NameTypePattern("getLeafListGroupingListTest",
284                 "Integer"));
285     }
286
287     @Test
288     public void usesInModulTest() {
289         final List<Type> genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResource(
290                 "/uses-of-grouping/uses-of-grouping-modul.yang"));
291
292         int groupingModulTestCounter = 0;
293         int groupingUsesModulDataCounter = 0;
294         GeneratedType groupingModulTest = null;
295         GeneratedType groupingUsesModulData = null;
296
297         for (Type type : genTypes) {
298             if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {
299                 GeneratedType genType = (GeneratedType) type;
300                 if (genType.getName().equals("GroupingModulTest")) {
301                     groupingModulTest = genType;
302                     groupingModulTestCounter++;
303                 } else if (genType.getName().equals("GroupingUsesModulData")) {
304                     groupingUsesModulData = genType;
305                     groupingUsesModulDataCounter++;
306                 }
307             }
308         }
309
310         assertNotNull("Generated type for grouping-list-test wasn't generated", groupingModulTest);
311         assertEquals("GroupingModulTest interface - incorrect number of occurences", 1, groupingModulTestCounter);
312         assertEquals("GroupingModulTest isn't in correct package",
313                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.modul.rev130718", groupingModulTest.getPackageName());
314
315         assertNotNull("Generated type for modul wasn't generated", groupingUsesModulData);
316         assertEquals("GroupingUsesModulData interface - incorrect number of occurences", 1,
317                 groupingUsesModulDataCounter);
318         assertEquals("GroupingUsesModulData isn't in correct package",
319                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.modul.rev130718",
320                 groupingUsesModulData.getPackageName());
321
322         containsInterface("GroupingModulTest", groupingUsesModulData);
323
324         assertEquals("Number of method in GroupingUsesModulData is incorrect", 0, groupingUsesModulData
325                 .getMethodDefinitions().size());
326         assertEquals("Number of method in GroupingModulTest is incorrect", 3, groupingModulTest.getMethodDefinitions()
327                 .size());
328
329         containsMethods(groupingModulTest.getMethodDefinitions(), new NameTypePattern("getLeafGroupingModulTest",
330                 "String"), new NameTypePattern("getLeafGroupingModulTest2", "Uint8"));
331     }
332
333     @Test
334     public void usesInRpcTest() {
335         final List<Type> genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResource(
336                 "/uses-of-grouping/uses-of-grouping-rpc.yang"));
337
338         int rpcTestInputCounter = 0;
339         int rpcTestOutputCounter = 0;
340         int groupingRpcInputTestCounter = 0;
341         int groupingRpcOutputTestCounter = 0;
342         int containerGroupingRpcInputTestCounter = 0;
343         GeneratedType rpcTestInput = null;
344         GeneratedType rpcTestOutput = null;
345         GeneratedType groupingRpcInputTest = null;
346         GeneratedType groupingRpcOutputTest = null;
347         GeneratedType containerGroupingRpcInputTest = null;
348
349         for (Type type : genTypes) {
350             if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {
351                 GeneratedType genType = (GeneratedType) type;
352                 if (genType.getName().equals("RpcTestInput")) {
353                     rpcTestInput = genType;
354                     rpcTestInputCounter++;
355                 } else if (genType.getName().equals("RpcTestOutput")) {
356                     rpcTestOutput = genType;
357                     rpcTestOutputCounter++;
358                 } else if (genType.getName().equals("GroupingRpcInputTest")) {
359                     groupingRpcInputTest = genType;
360                     groupingRpcInputTestCounter++;
361                 } else if (genType.getName().equals("GroupingRpcOutputTest")) {
362                     groupingRpcOutputTest = genType;
363                     groupingRpcOutputTestCounter++;
364                 } else if (genType.getName().equals("ContainerGroupingRpcInputTest")) {
365                     containerGroupingRpcInputTest = genType;
366                     containerGroupingRpcInputTestCounter++;
367                 }
368
369             }
370         }
371
372         assertNotNull("Generated type for RPC test input was not generated", rpcTestInput);
373         assertEquals("RpcTestInput interface - incorrect number of occurences", 1, rpcTestInputCounter);
374         assertEquals("RpcTestInput is not in correct package",
375             "org.opendaylight.yang.gen.v1.urn.grouping.uses.rpc.rev130718", rpcTestInput.getPackageName());
376
377         assertNotNull("Generated type for RPC test output was not generated", rpcTestOutput);
378         assertEquals("RpcTestOutput interface - incorrect number of occurences", 1, rpcTestOutputCounter);
379         assertEquals("RpcTestOutput is not in correct package",
380                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.rpc.rev130718", rpcTestOutput.getPackageName());
381
382         assertNotNull("Generated type for grouping-rpc-input-test was not generated", groupingRpcInputTest);
383         assertEquals("RpcTestOutput interface - incorrect number of occurences", 1, groupingRpcInputTestCounter);
384         assertEquals("GroupingRpcInputTest isn't in correct package",
385                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.rpc.rev130718", groupingRpcInputTest.getPackageName());
386
387         assertNotNull("Generated type for grouping-rpc-output-test was not generated", groupingRpcOutputTest);
388         assertEquals("RpcTestOutput interface - incorrect number of occurences", 1, groupingRpcOutputTestCounter);
389         assertEquals("GroupingRpcOutputTest isn't in correct package",
390                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.rpc.rev130718", groupingRpcOutputTest.getPackageName());
391
392         assertNotNull("Generated type for container-grouping-rpc-input-test wasn't generated",
393                 containerGroupingRpcInputTest);
394         assertEquals("ContainerGroupingRpcInputTest interface - incorrect number of occurences", 1,
395                 containerGroupingRpcInputTestCounter);
396         assertEquals("ContainerGroupingRpcInputTest is not in correct package",
397                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.rpc.rev130718.grouping.rpc.input.test",
398                 containerGroupingRpcInputTest.getPackageName());
399
400         containsInterface("GroupingRpcInputTest", rpcTestInput);
401         containsInterface("GroupingRpcOutputTest", rpcTestOutput);
402
403         assertEquals("Number of method in RpcTestInput is incorrect", 1, rpcTestInput.getMethodDefinitions().size());
404         assertEquals("Number of method in RpcTestOutput is incorrect", 1, rpcTestOutput.getMethodDefinitions().size());
405         assertEquals("Number of method in GroupingRpcInputTest is incorrect", 3, groupingRpcInputTest
406                 .getMethodDefinitions().size());
407         assertEquals("Number of method in GroupingRpcOutputTest is incorrect", 2, groupingRpcOutputTest
408                 .getMethodDefinitions().size());
409         assertEquals("Number of method in ContainerGroupingRpcInputTest is incorrect", 2, containerGroupingRpcInputTest
410                 .getMethodDefinitions().size());
411
412         containsMethods(groupingRpcInputTest.getMethodDefinitions(), new NameTypePattern(
413                 "getContainerGroupingRpcInputTest", "ContainerGroupingRpcInputTest"), new NameTypePattern(
414                 "getLeaflistGroupingRpcInputTest", "List<Uint8>"));
415         containsMethods(groupingRpcOutputTest.getMethodDefinitions(), new NameTypePattern(
416                 "getLeafGroupingRpcOutputTest", "Byte"));
417         containsMethods(containerGroupingRpcInputTest.getMethodDefinitions(), new NameTypePattern(
418                 "getLeafContainerGroupingRpcInputTest", "String"));
419     }
420
421     @Test
422     public void usesInAugmentTest() {
423         final List<Type> genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResource(
424                 "/uses-of-grouping/uses-of-grouping-augment.yang"));
425
426         GeneratedType containerAugment1 = null;
427         GeneratedType groupingAugmentTest = null;
428         int containerAugment1Counter = 0;
429         int groupingAugmentTestCounter = 0;
430
431         for (Type type : genTypes) {
432             if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {
433                 GeneratedType genType = (GeneratedType) type;
434                 if (genType.getName().equals("ContainerAugment1")) {
435                     containerAugment1 = genType;
436                     containerAugment1Counter++;
437                 } else if (genType.getName().equals("GroupingAugmentTest")) {
438                     groupingAugmentTest = genType;
439                     groupingAugmentTestCounter++;
440                 }
441             }
442         }
443
444         assertNotNull("Generated type for augment /container-augment wasn't generated.", containerAugment1);
445         assertEquals("ContainerAugment1 interface generated more than one time.", 1, containerAugment1Counter);
446         assertEquals("ContainerAugment1 is in wrong package.",
447                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.augment.rev130718", containerAugment1.getPackageName());
448
449         assertNotNull("Generated type for grouping-augment-test wasn't generated.", groupingAugmentTest);
450         assertEquals("GroupingAugmentTest interface generated more than one time.", 1, groupingAugmentTestCounter);
451         assertEquals("groupingAugmentTest is in wrong package.",
452                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.augment.rev130718",
453                 groupingAugmentTest.getPackageName());
454
455         containsInterface("GroupingAugmentTest", containerAugment1);
456
457         assertEquals("Number of method in GroupingCaseTest is incorrect", 1, containerAugment1.getMethodDefinitions()
458                 .size());
459
460         assertEquals("Number of method in ContainerAugment1 is incorrect", 1, containerAugment1.getMethodDefinitions()
461                 .size());
462         assertEquals("Number of method in GroupingCaseTest is incorrect", 2, groupingAugmentTest.getMethodDefinitions()
463                 .size());
464
465         containsMethods(groupingAugmentTest.getMethodDefinitions(), new NameTypePattern("getLeafGroupingAugmentTest",
466                 "String"));
467     }
468
469     @Test
470     public void usesInNotification() {
471         final List<Type> genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResource(
472                 "/uses-of-grouping/uses-of-grouping-notification.yang"));
473
474         GeneratedType notificationTest = null;
475         GeneratedType groupingNotificationTest = null;
476         GeneratedType containerGroupingNotificationTest = null;
477         int notificationTestCounter = 0;
478         int groupingNotificationTestCounter = 0;
479         int containerGroupingNotificationTestCounter = 0;
480
481         for (Type type : genTypes) {
482             if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {
483                 GeneratedType genType = (GeneratedType) type;
484                 if (genType.getName().equals("NotificationTest")) {
485                     notificationTest = genType;
486                     notificationTestCounter++;
487                 } else if (genType.getName().equals("GroupingNotificationTest")) {
488                     groupingNotificationTest = genType;
489                     groupingNotificationTestCounter++;
490                 } else if (genType.getName().equals("ContainerGroupingNotificationTest")) {
491                     containerGroupingNotificationTest = genType;
492                     containerGroupingNotificationTestCounter++;
493                 }
494             }
495         }
496
497         assertNotNull("Generated type for notification-test wasn't generated.", notificationTest);
498         assertEquals("NotificationTest interface generated more than one time.", 1, notificationTestCounter);
499         assertEquals("NotificationTest is in wrong package.",
500                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.notification.rev130718",
501                 notificationTest.getPackageName());
502
503         assertNotNull("Generated type for grouping-notification-test wasn't generated.", groupingNotificationTest);
504         assertEquals("GroupingNotificationTest interface generated more than one time.", 1,
505                 groupingNotificationTestCounter);
506         assertEquals("groupingNotificationTest is in wrong package.",
507                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.notification.rev130718",
508                 groupingNotificationTest.getPackageName());
509
510         assertNotNull("Generated type for container-grouping-notification-test wasn't generated.",
511                 containerGroupingNotificationTest);
512         assertEquals("ContainerGroupingNotificationTest interface generated more than one time.", 1,
513                 containerGroupingNotificationTestCounter);
514         assertEquals("ContainerGroupingNotificationTest is in wrong package.",
515                 "org.opendaylight.yang.gen.v1.urn.grouping.uses.notification.rev130718.grouping.notification.test",
516                 containerGroupingNotificationTest.getPackageName());
517
518         containsInterface("GroupingNotificationTest", notificationTest);
519
520         assertEquals("Number of method in NotificationTest is incorrect", 2, notificationTest.getMethodDefinitions()
521                 .size());
522         assertEquals("Number of method in GroupingNotificationTest is incorrect", 3, groupingNotificationTest
523                 .getMethodDefinitions().size());
524         assertEquals("Number of method in ContainerGroupingNotificationTest is incorrect", 2,
525                 containerGroupingNotificationTest.getMethodDefinitions().size());
526
527         containsMethods(notificationTest.getMethodDefinitions(), new NameTypePattern("getLeafNotificationTest",
528                 "String"));
529         containsMethods(groupingNotificationTest.getMethodDefinitions(), new NameTypePattern(
530                 "getContainerGroupingNotificationTest", "ContainerGroupingNotificationTest"), new NameTypePattern(
531                 "getLeaffllistGroupingNotificationTest", "List<String>"));
532         containsMethods(containerGroupingNotificationTest.getMethodDefinitions(), new NameTypePattern(
533                 "getLeafContainerGroupingNotificationTest", "Uint32"));
534     }
535
536 }