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;
14 import java.util.List;
15 import org.junit.Test;
16 import org.opendaylight.mdsal.binding.javav2.generator.api.BindingGenerator;
17 import org.opendaylight.mdsal.binding.javav2.model.api.Enumeration;
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 genTypesTypeDefTest() throws Exception {
30 final BindingGeneratorImpl bg = new BindingGeneratorImpl(false);
31 final SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/generator/test-typedef.yang");
32 final List<Type> generateTypes = bg.generateTypes(schemaContext);
33 assertNotNull(generateTypes);
34 for (final Type genType : generateTypes) {
35 if (genType.getName().equals("MyInnerCont") && genType.getPackageName()
36 .equals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.rev170206.data.asteriskmy_cont")) {
37 final GeneratedType gt = (GeneratedType) genType;
38 for (final MethodSignature methodSignature : gt.getMethodDefinitions()) {
39 if (methodSignature.getName().equals("getMyLeaf2")) {
40 assertEquals(methodSignature.getReturnType().getName(), "MyType");
48 public void generatedTypesEnumTest() throws Exception {
49 final BindingGenerator bg = new BindingGeneratorImpl(false);
50 final SchemaContext context = YangParserTestUtils.parseYangSource("/generator/apple-test.yang");
51 final List<Type> generateTypes = bg.generateTypes(context);
52 assertNotNull(generateTypes);
53 assertTrue(!generateTypes.isEmpty());
54 for (final Type type : generateTypes) {
55 if (type.getName().equals("Apple") && type.getPackageName()
56 .equals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.apple.rev170503.data")) {
57 final GeneratedType gt = (GeneratedType) type;
58 final Enumeration enumeration = gt.getEnumerations().get(0);
59 assertEquals("Apple1", enumeration.getName());
60 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.apple.rev170503.data.Apple",
61 enumeration.getPackageName());
62 assertEquals("apple", enumeration.getValues().get(0).getName());
63 assertEquals("APPLE", enumeration.getValues().get(0).getMappedName());
64 assertEquals("apple1", enumeration.getValues().get(1).getName());
65 assertEquals("APPLE1", enumeration.getValues().get(1).getMappedName());
71 public void generatedTypesTest() throws Exception {
72 final BindingGenerator bg = new BindingGeneratorImpl(false);
73 final SchemaContext context = YangParserTestUtils.parseYangSource("/generator/test-list.yang");
74 final List<Type> generateTypes = bg.generateTypes(context);
76 assertNotNull(generateTypes);
77 assertTrue(!generateTypes.isEmpty());
78 assertEquals(3, generateTypes.size());
79 final int[] test_i = { 0 };
80 for (final Type t : generateTypes) {
81 if (t instanceof GeneratedTransferObject) {
82 final GeneratedTransferObject genTransferObj = (GeneratedTransferObject) t;
83 assertBaseGeneratedType(genTransferObj, "MyListKey",
84 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list.wrapper");
85 assertEquals(3, genTransferObj.getProperties().size());
87 for (final GeneratedProperty generatedProperty : genTransferObj.getProperties()) {
88 switch (generatedProperty.getName()) {
90 assertEquals("MyListKey", generatedProperty.getReturnType().getName());
94 assertEquals("MyListKey1", generatedProperty.getReturnType().getName());
98 assertEquals("MyListKey2", generatedProperty.getReturnType().getName());
105 assertEquals(3, test_j);
108 testActualType((GeneratedType) t, test_i);
111 assertEquals(3, test_i[0]);
115 public void generateTypesDescriptionsTest() throws Exception {
116 final BindingGenerator bg = new BindingGeneratorImpl(true);
117 final SchemaContext context = YangParserTestUtils.parseYangSources("/base/with_import/");
118 assertNotNull(context);
120 final List<Type> generateTypes = bg.generateTypes(context, context.getModules());
121 assertNotNull(generateTypes);
122 assertTrue(!generateTypes.isEmpty());
124 for (final Type type : generateTypes) {
125 if (type.getName().equals("TestData")) {
126 final String description = ((GeneratedType) type).getDescription().get();
128 .contains(" import test-import { prefix \"imported-test\"; revision-date 2017-04-21; }\n\n");
129 description.contains(" revision 2017-02-06;\n\n");
130 description.contains(" typedef my-type {\n type int8;\n }");
131 description.contains(" container *my-cont {\n }\n");
136 private void testActualType(final GeneratedType t, final int[] test_i) {
137 MethodSignature methodSignature = null;
138 switch (t.getName()) {
140 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314",
142 methodSignature = t.getMethodDefinitions().get(0);
143 assertMethod(t, "getMyList", "List", "java.util", methodSignature);
147 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
149 methodSignature = t.getMethodDefinitions().get(0);
150 assertMethod(t, "getKey", "String", "java.lang", methodSignature);
154 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
156 methodSignature = t.getMethodDefinitions().get(0);
157 assertMethod(t, "getKey1", "String", "java.lang", methodSignature);
161 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
163 methodSignature = t.getMethodDefinitions().get(0);
164 assertMethod(t, "getKey2", "String", "java.lang", methodSignature);
168 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.data.my_list",
170 methodSignature = t.getMethodDefinitions().get(0);
171 assertMethod(t, "getFoo", "String", "java.lang", methodSignature);
175 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.data",
177 assertEquals(5, t.getMethodDefinitions().size());
179 for (final MethodSignature m : t.getMethodDefinitions()) {
180 switch (m.getName()) {
182 assertMethod(t, "getKey", "MyListKey",
183 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list.wrapper",
187 case "getMyListKey1":
188 assertMethod(t, "getMyListKey1", "MyListKey1",
189 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
193 case "getMyListKey2":
194 assertMethod(t, "getMyListKey2", "MyListKey2",
195 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
200 assertMethod(t, "getMyListFoo", "MyListFoo",
201 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.data.my_list",
206 assertMethod(t, "getMyListKey", "MyListKey",
207 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
215 assertEquals(5, test_j);
223 private void assertBaseGeneratedType(final GeneratedType genType, final String name, final String packageName) {
224 assertEquals(name, genType.getName());
228 private void assertMethod(final GeneratedType definingTypeExpected, final String nameExpected,
229 final String typeNameExpected, final String typePackageNameExpected,
230 final MethodSignature methodSignature) {
231 assertEquals(definingTypeExpected, methodSignature.getDefiningType());
232 assertEquals(nameExpected, methodSignature.getName());
233 assertEquals(typeNameExpected, methodSignature.getReturnType().getName());
234 assertEquals(typePackageNameExpected, methodSignature.getReturnType().getPackageName());