2 * Copyright (c) 2017 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.mdsal.binding.javav2.generator.impl;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertNotNull;
12 import static org.junit.Assert.assertTrue;
13 import static org.junit.Assert.fail;
15 import java.util.List;
16 import org.junit.Test;
17 import org.opendaylight.mdsal.binding.javav2.generator.api.BindingGenerator;
18 import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedProperty;
19 import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedTransferObject;
20 import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedType;
21 import org.opendaylight.mdsal.binding.javav2.model.api.MethodSignature;
22 import org.opendaylight.mdsal.binding.javav2.model.api.Type;
23 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
24 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
26 public class BindingGeneratorImplTest {
29 public void generatedTypesTest() throws Exception {
30 final BindingGenerator bg = new BindingGeneratorImpl(false);
31 final SchemaContext context = YangParserTestUtils.parseYangSource("/generator/test-list.yang");
32 final List<Type> generateTypes = bg.generateTypes(context);
34 assertNotNull(generateTypes);
35 assertTrue(!generateTypes.isEmpty());
36 assertEquals(7, generateTypes.size());
37 final int[] test_i = { 0 };
38 for (final Type t : generateTypes) {
39 if (t instanceof GeneratedTransferObject) {
40 final GeneratedTransferObject genTransferObj = (GeneratedTransferObject) t;
41 assertBaseGeneratedType(genTransferObj, "MyListKey",
42 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list.wrapper");
43 assertEquals(3, genTransferObj.getProperties().size());
45 for (final GeneratedProperty generatedProperty : genTransferObj.getProperties()) {
46 switch (generatedProperty.getName()) {
48 assertEquals("MyListKey", generatedProperty.getReturnType().getName());
52 assertEquals("MyListKey1", generatedProperty.getReturnType().getName());
56 assertEquals("MyListKey2", generatedProperty.getReturnType().getName());
63 assertEquals(3, test_j);
66 testActualType((GeneratedType) t, test_i);
69 assertEquals(7, test_i[0]);
73 public void generateTypesDescriptionsTest() throws Exception {
74 final BindingGenerator bg = new BindingGeneratorImpl(true);
75 final SchemaContext context = YangParserTestUtils.parseYangSources("/base/with_import/");
76 assertNotNull(context);
78 final List<Type> generateTypes = bg.generateTypes(context, context.getModules());
79 assertNotNull(generateTypes);
80 assertTrue(!generateTypes.isEmpty());
82 for (final Type type : generateTypes) {
83 if (type.getName().equals("TestData")) {
84 final String description = ((GeneratedType) type).getDescription().get();
86 .contains(" import test-import { prefix \"imported-test\"; revision-date 2017-04-21; }\n\n");
87 description.contains(" revision 2017-02-06;\n\n");
88 description.contains(" typedef my-type {\n type int8;\n }");
89 description.contains(" container *my-cont {\n }\n");
94 private void testActualType(final GeneratedType t, final int[] test_i) {
95 MethodSignature methodSignature = null;
96 switch (t.getName()) {
98 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314",
100 methodSignature = t.getMethodDefinitions().get(0);
101 assertMethod(t, "getMyList", "List", "java.util", methodSignature);
105 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
107 methodSignature = t.getMethodDefinitions().get(0);
108 assertMethod(t, "getKey", "String", "java.lang", methodSignature);
112 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
114 methodSignature = t.getMethodDefinitions().get(0);
115 assertMethod(t, "getKey1", "String", "java.lang", methodSignature);
119 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
121 methodSignature = t.getMethodDefinitions().get(0);
122 assertMethod(t, "getKey2", "String", "java.lang", methodSignature);
126 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.data.my_list",
128 methodSignature = t.getMethodDefinitions().get(0);
129 assertMethod(t, "getFoo", "String", "java.lang", methodSignature);
133 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.data",
135 assertEquals(5, t.getMethodDefinitions().size());
137 for (final MethodSignature m : t.getMethodDefinitions()) {
138 switch (m.getName()) {
140 assertMethod(t, "getKey", "MyListKey",
141 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list.wrapper",
145 case "getMyListKey1":
146 assertMethod(t, "getMyListKey1", "MyListKey1",
147 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
151 case "getMyListKey2":
152 assertMethod(t, "getMyListKey2", "MyListKey2",
153 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
158 assertMethod(t, "getMyListFoo", "MyListFoo",
159 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.data.my_list",
164 assertMethod(t, "getMyListKey", "MyListKey",
165 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
173 assertEquals(5, test_j);
181 private void assertBaseGeneratedType(final GeneratedType genType, final String name, final String packageName) {
182 assertEquals(name, genType.getName());
186 private void assertMethod(final GeneratedType definingTypeExpected, final String nameExpected,
187 final String typeNameExpected, final String typePackageNameExpected,
188 final MethodSignature methodSignature) {
189 assertEquals(definingTypeExpected, methodSignature.getDefiningType());
190 assertEquals(nameExpected, methodSignature.getName());
191 assertEquals(typeNameExpected, methodSignature.getReturnType().getName());
192 assertEquals(typePackageNameExpected, methodSignature.getReturnType().getPackageName());