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.Enumeration;
19 import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedProperty;
20 import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedTransferObject;
21 import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedType;
22 import org.opendaylight.mdsal.binding.javav2.model.api.MethodSignature;
23 import org.opendaylight.mdsal.binding.javav2.model.api.Type;
24 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
25 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
27 public class BindingGeneratorImplTest {
30 public void genTypesTypeDefTest() throws Exception {
31 final BindingGeneratorImpl bg = new BindingGeneratorImpl(false);
32 final SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/generator/test-typedef.yang");
33 final List<Type> generateTypes = bg.generateTypes(schemaContext);
34 assertNotNull(generateTypes);
35 for (final Type genType : generateTypes) {
36 if (genType.getName().equals("MyInnerCont") && genType.getPackageName()
37 .equals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.rev170206.data.asteriskmy_cont")) {
38 final GeneratedType gt = (GeneratedType) genType;
39 for (final MethodSignature methodSignature : gt.getMethodDefinitions()) {
40 if (methodSignature.getName().equals("getMyLeaf2")) {
41 assertEquals(methodSignature.getReturnType().getName(), "MyType");
49 public void generatedTypesEnumTest() throws Exception {
50 final BindingGenerator bg = new BindingGeneratorImpl(false);
51 final SchemaContext context = YangParserTestUtils.parseYangSource("/generator/apple-test.yang");
52 final List<Type> generateTypes = bg.generateTypes(context);
53 assertNotNull(generateTypes);
54 assertTrue(!generateTypes.isEmpty());
55 for (final Type type : generateTypes) {
56 if (type.getName().equals("Apple") && type.getPackageName()
57 .equals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.apple.rev170503.data")) {
58 final GeneratedType gt = (GeneratedType) type;
59 final Enumeration enumeration = gt.getEnumerations().get(0);
60 assertEquals("Apple1", enumeration.getName());
61 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.apple.rev170503.data.Apple",
62 enumeration.getPackageName());
63 assertEquals("apple", enumeration.getValues().get(0).getName());
64 assertEquals("APPLE", enumeration.getValues().get(0).getMappedName());
65 assertEquals("apple1", enumeration.getValues().get(1).getName());
66 assertEquals("APPLE1", enumeration.getValues().get(1).getMappedName());
72 public void generatedTypesTest() throws Exception {
73 final BindingGenerator bg = new BindingGeneratorImpl(false);
74 final SchemaContext context = YangParserTestUtils.parseYangSource("/generator/test-list.yang");
75 final List<Type> generateTypes = bg.generateTypes(context);
77 assertNotNull(generateTypes);
78 assertTrue(!generateTypes.isEmpty());
79 assertEquals(3, generateTypes.size());
80 final int[] test_i = { 0 };
81 for (final Type t : generateTypes) {
82 if (t instanceof GeneratedTransferObject) {
83 final GeneratedTransferObject genTransferObj = (GeneratedTransferObject) t;
84 assertBaseGeneratedType(genTransferObj, "MyListKey",
85 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list");
86 assertEquals(3, genTransferObj.getProperties().size());
88 for (final GeneratedProperty generatedProperty : genTransferObj.getProperties()) {
89 switch (generatedProperty.getName()) {
91 assertEquals("String", generatedProperty.getReturnType().getName());
95 assertEquals("String", generatedProperty.getReturnType().getName());
99 assertEquals("String", generatedProperty.getReturnType().getName());
106 assertEquals(3, test_j);
109 testActualType((GeneratedType) t, test_i);
112 assertEquals(3, test_i[0]);
116 public void generateTypesDescriptionsTest() throws Exception {
117 final BindingGenerator bg = new BindingGeneratorImpl(true);
118 final SchemaContext context = YangParserTestUtils.parseYangSources("/base/with_import/");
119 assertNotNull(context);
121 final List<Type> generateTypes = bg.generateTypes(context, context.getModules());
122 assertNotNull(generateTypes);
123 assertTrue(!generateTypes.isEmpty());
125 for (final Type type : generateTypes) {
126 if (type.getName().equals("TestData")) {
127 final String description = ((GeneratedType) type).getDescription().get();
129 .contains(" import test-import { prefix \"imported-test\"; revision-date 2017-04-21; }\n\n");
130 description.contains(" revision 2017-02-06;\n\n");
131 description.contains(" typedef my-type {\n type int8;\n }");
132 description.contains(" container *my-cont {\n }\n");
137 private void testActualType(final GeneratedType t, final int[] test_i) {
138 MethodSignature methodSignature = null;
139 switch (t.getName()) {
141 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314",
143 methodSignature = t.getMethodDefinitions().get(0);
144 assertMethod(t, "getMyList", "List", "java.util", methodSignature);
148 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
150 methodSignature = t.getMethodDefinitions().get(0);
151 assertMethod(t, "getKey", "String", "java.lang", methodSignature);
155 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
157 methodSignature = t.getMethodDefinitions().get(0);
158 assertMethod(t, "getKey1", "String", "java.lang", methodSignature);
162 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
164 methodSignature = t.getMethodDefinitions().get(0);
165 assertMethod(t, "getKey2", "String", "java.lang", methodSignature);
169 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.data.my_list",
171 methodSignature = t.getMethodDefinitions().get(0);
172 assertMethod(t, "getFoo", "String", "java.lang", methodSignature);
176 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.data",
178 assertEquals(5, t.getMethodDefinitions().size());
180 for (final MethodSignature m : t.getMethodDefinitions()) {
181 switch (m.getName()) {
183 assertMethod(t, "getKey", "MyListKey",
184 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
188 case "getMyListKey1":
189 assertMethod(t, "getMyListKey1", "String","java.lang", m);
192 case "getMyListKey2":
193 assertMethod(t, "getMyListKey2", "String","java.lang", m);
197 assertMethod(t, "getMyListFoo", "String","java.lang", m);
201 assertMethod(t, "getMyListKey", "String","java.lang", m);
208 assertEquals(5, test_j);
216 private void assertBaseGeneratedType(final GeneratedType genType, final String name, final String packageName) {
217 assertEquals(name, genType.getName());
221 private void assertMethod(final GeneratedType definingTypeExpected, final String nameExpected,
222 final String typeNameExpected, final String typePackageNameExpected,
223 final MethodSignature methodSignature) {
224 assertEquals(definingTypeExpected, methodSignature.getDefiningType());
225 assertEquals(nameExpected, methodSignature.getName());
226 assertEquals(typeNameExpected, methodSignature.getReturnType().getName());
227 assertEquals(typePackageNameExpected, methodSignature.getReturnType().getPackageName());