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 generatedTypesEnumTest() throws Exception {
31 final BindingGenerator bg = new BindingGeneratorImpl(false);
32 final SchemaContext context = YangParserTestUtils.parseYangSource("/generator/apple-test.yang");
33 final List<Type> generateTypes = bg.generateTypes(context);
34 assertNotNull(generateTypes);
35 assertTrue(!generateTypes.isEmpty());
36 for (final Type type : generateTypes) {
37 if (type.getName().equals("Apple") && type.getPackageName()
38 .equals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.apple.rev170503.data")) {
39 final GeneratedType gt = (GeneratedType) type;
40 final Enumeration enumeration = gt.getEnumerations().get(0);
41 assertEquals("Apple1", enumeration.getName());
42 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.apple.rev170503.data.Apple",
43 enumeration.getPackageName());
44 assertEquals("apple", enumeration.getValues().get(0).getName());
45 assertEquals("APPLE", enumeration.getValues().get(0).getMappedName());
46 assertEquals("apple1", enumeration.getValues().get(1).getName());
47 assertEquals("APPLE1", enumeration.getValues().get(1).getMappedName());
53 public void generatedTypesTest() throws Exception {
54 final BindingGenerator bg = new BindingGeneratorImpl(false);
55 final SchemaContext context = YangParserTestUtils.parseYangSource("/generator/test-list.yang");
56 final List<Type> generateTypes = bg.generateTypes(context);
58 assertNotNull(generateTypes);
59 assertTrue(!generateTypes.isEmpty());
60 assertEquals(3, generateTypes.size());
61 final int[] test_i = { 0 };
62 for (final Type t : generateTypes) {
63 if (t instanceof GeneratedTransferObject) {
64 final GeneratedTransferObject genTransferObj = (GeneratedTransferObject) t;
65 assertBaseGeneratedType(genTransferObj, "MyListKey",
66 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list.wrapper");
67 assertEquals(3, genTransferObj.getProperties().size());
69 for (final GeneratedProperty generatedProperty : genTransferObj.getProperties()) {
70 switch (generatedProperty.getName()) {
72 assertEquals("MyListKey", generatedProperty.getReturnType().getName());
76 assertEquals("MyListKey1", generatedProperty.getReturnType().getName());
80 assertEquals("MyListKey2", generatedProperty.getReturnType().getName());
87 assertEquals(3, test_j);
90 testActualType((GeneratedType) t, test_i);
93 assertEquals(3, test_i[0]);
97 public void generateTypesDescriptionsTest() throws Exception {
98 final BindingGenerator bg = new BindingGeneratorImpl(true);
99 final SchemaContext context = YangParserTestUtils.parseYangSources("/base/with_import/");
100 assertNotNull(context);
102 final List<Type> generateTypes = bg.generateTypes(context, context.getModules());
103 assertNotNull(generateTypes);
104 assertTrue(!generateTypes.isEmpty());
106 for (final Type type : generateTypes) {
107 if (type.getName().equals("TestData")) {
108 final String description = ((GeneratedType) type).getDescription().get();
110 .contains(" import test-import { prefix \"imported-test\"; revision-date 2017-04-21; }\n\n");
111 description.contains(" revision 2017-02-06;\n\n");
112 description.contains(" typedef my-type {\n type int8;\n }");
113 description.contains(" container *my-cont {\n }\n");
118 private void testActualType(final GeneratedType t, final int[] test_i) {
119 MethodSignature methodSignature = null;
120 switch (t.getName()) {
122 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314",
124 methodSignature = t.getMethodDefinitions().get(0);
125 assertMethod(t, "getMyList", "List", "java.util", methodSignature);
129 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
131 methodSignature = t.getMethodDefinitions().get(0);
132 assertMethod(t, "getKey", "String", "java.lang", methodSignature);
136 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
138 methodSignature = t.getMethodDefinitions().get(0);
139 assertMethod(t, "getKey1", "String", "java.lang", methodSignature);
143 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
145 methodSignature = t.getMethodDefinitions().get(0);
146 assertMethod(t, "getKey2", "String", "java.lang", methodSignature);
150 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.data.my_list",
152 methodSignature = t.getMethodDefinitions().get(0);
153 assertMethod(t, "getFoo", "String", "java.lang", methodSignature);
157 assertEquals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.data",
159 assertEquals(5, t.getMethodDefinitions().size());
161 for (final MethodSignature m : t.getMethodDefinitions()) {
162 switch (m.getName()) {
164 assertMethod(t, "getKey", "MyListKey",
165 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list.wrapper",
169 case "getMyListKey1":
170 assertMethod(t, "getMyListKey1", "MyListKey1",
171 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
175 case "getMyListKey2":
176 assertMethod(t, "getMyListKey2", "MyListKey2",
177 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
182 assertMethod(t, "getMyListFoo", "MyListFoo",
183 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.data.my_list",
188 assertMethod(t, "getMyListKey", "MyListKey",
189 "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
197 assertEquals(5, test_j);
205 private void assertBaseGeneratedType(final GeneratedType genType, final String name, final String packageName) {
206 assertEquals(name, genType.getName());
210 private void assertMethod(final GeneratedType definingTypeExpected, final String nameExpected,
211 final String typeNameExpected, final String typePackageNameExpected,
212 final MethodSignature methodSignature) {
213 assertEquals(definingTypeExpected, methodSignature.getDefiningType());
214 assertEquals(nameExpected, methodSignature.getName());
215 assertEquals(typeNameExpected, methodSignature.getReturnType().getName());
216 assertEquals(typePackageNameExpected, methodSignature.getReturnType().getPackageName());