MDSAL-301: Binding v2 - Rework javadoc generation
[mdsal.git] / binding2 / mdsal-binding2-generator-impl / src / test / java / org / opendaylight / mdsal / binding / javav2 / generator / impl / BindingGeneratorImplTest.java
index 779841026276e0a6c11cc06649df5de05995b8aa..464be22817880410e7ad00c67ff1a8da0cd28ee7 100644 (file)
@@ -26,10 +26,29 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public class BindingGeneratorImplTest {
 
+    @Test
+    public void genTypesTypeDefTest() throws Exception {
+        final BindingGeneratorImpl bg = new BindingGeneratorImpl(false);
+        final SchemaContext schemaContext = YangParserTestUtils.parseYangResource("/generator/test-typedef.yang");
+        final List<Type> generateTypes = bg.generateTypes(schemaContext);
+        assertNotNull(generateTypes);
+        for (final Type genType : generateTypes) {
+            if (genType.getName().equals("MyInnerCont") && genType.getPackageName()
+                    .equals("org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.rev170206.data.asteriskmy_cont")) {
+                final GeneratedType gt = (GeneratedType) genType;
+                for (final MethodSignature methodSignature : gt.getMethodDefinitions()) {
+                    if (methodSignature.getName().equals("getMyLeaf2")) {
+                        assertEquals(methodSignature.getReturnType().getName(), "MyType");
+                    }
+                }
+            }
+        }
+    }
+
     @Test
     public void generatedTypesEnumTest() throws Exception {
         final BindingGenerator bg = new BindingGeneratorImpl(false);
-        final SchemaContext context = YangParserTestUtils.parseYangSource("/generator/apple-test.yang");
+        final SchemaContext context = YangParserTestUtils.parseYangResource("/generator/apple-test.yang");
         final List<Type> generateTypes = bg.generateTypes(context);
         assertNotNull(generateTypes);
         assertTrue(!generateTypes.isEmpty());
@@ -50,9 +69,168 @@ public class BindingGeneratorImplTest {
     }
 
     @Test
-    public void generatedTypesTest() throws Exception {
+    public void generatedTypesUsesEnumLeafTest() {
         final BindingGenerator bg = new BindingGeneratorImpl(false);
-        final SchemaContext context = YangParserTestUtils.parseYangSource("/generator/test-list.yang");
+        final SchemaContext context = YangParserTestUtils.parseYangResources(BindingGeneratorImplTest.class,
+            "/uses-statement/test-uses-leaf-innertype-base.yang", "/uses-statement/test-uses-leaf-innertype.yang");
+        final List<Type> generateTypes = bg.generateTypes(context);
+        assertNotNull(generateTypes);
+        assertTrue(!generateTypes.isEmpty());
+        for (final Type type : generateTypes) {
+            if (type.getName().equals("MyCont") && type.getPackageName()
+                    .equals("org.opendaylight.mdsal.gen.javav2.urn.test.uses.leaf.innertype.base.rev170809.data")) {
+                final GeneratedType gt = (GeneratedType) type;
+                final MethodSignature methodSignature = gt.getMethodDefinitions().get(0);
+                assertEquals("ErrorType", methodSignature.getReturnType().getName());
+            }
+
+            if (type.getName().equals("MyCont") && type.getPackageName()
+                    .equals("org.opendaylight.mdsal.gen.javav2.urn.test.uses.leaf.innertype.rev170809.data")) {
+                final GeneratedType gt = (GeneratedType) type;
+                final MethodSignature methodSignature = gt.getMethodDefinitions().get(0);
+                assertEquals("ErrorType", methodSignature.getReturnType().getName());
+            }
+        }
+    }
+
+    @Test
+    public void generatedTypesUsesBitsLeafTest() {
+        final BindingGenerator bg = new BindingGeneratorImpl(false);
+        final SchemaContext context = YangParserTestUtils.parseYangResources(BindingGeneratorImplTest.class,
+            "/uses-statement/test-uses-leaf-innertype2-base.yang", "/uses-statement/test-uses-leaf-innertype2.yang");
+        final List<Type> generateTypes = bg.generateTypes(context);
+        assertNotNull(generateTypes);
+        assertTrue(!generateTypes.isEmpty());
+        for (final Type type : generateTypes) {
+            if (type.getName().equals("MyCont") && type.getPackageName()
+                    .equals("org.opendaylight.mdsal.gen.javav2.urn.test.uses.leaf.innertype2.base.rev170809.data")) {
+                final GeneratedType gt = (GeneratedType) type;
+                for (MethodSignature methodSignature : gt.getMethodDefinitions()) {
+                    if (methodSignature.getName().equals("getLeafBits")) {
+                        assertEquals("LeafBits", methodSignature.getReturnType().getName());
+                    }
+                }
+
+            }
+
+            if (type.getName().equals("MyCont") && type.getPackageName()
+                    .equals("org.opendaylight.mdsal.gen.javav2.urn.test.uses.leaf.innertype2.rev170809.data")) {
+                final GeneratedType gt = (GeneratedType) type;
+                for (MethodSignature methodSignature : gt.getMethodDefinitions()) {
+                    if (methodSignature.getName().equals("getLeafBits")) {
+                        assertEquals("LeafBits", methodSignature.getReturnType().getName());
+                    }
+                }
+            }
+        }
+    }
+
+    @Test
+    public void generatedTypesUsesUnionLeafTest() {
+        final BindingGenerator bg = new BindingGeneratorImpl(false);
+        final SchemaContext context = YangParserTestUtils.parseYangResources(BindingGeneratorImplTest.class,
+            "/uses-statement/test-uses-leaf-innertype2-base.yang", "/uses-statement/test-uses-leaf-innertype2.yang");
+        final List<Type> generateTypes = bg.generateTypes(context);
+        assertNotNull(generateTypes);
+        assertTrue(!generateTypes.isEmpty());
+        for (final Type type : generateTypes) {
+            if (type.getName().equals("MyCont") && type.getPackageName()
+                    .equals("org.opendaylight.mdsal.gen.javav2.urn.test.uses.leaf.innertype2.base.rev170809.data")) {
+                final GeneratedType gt = (GeneratedType) type;
+                for (MethodSignature methodSignature : gt.getMethodDefinitions()) {
+                    if (methodSignature.getName().equals("getLeafUnion")) {
+                        assertEquals("LeafUnion", methodSignature.getReturnType().getName());
+                    }
+                }
+
+            }
+
+            if (type.getName().equals("MyCont") && type.getPackageName()
+                    .equals("org.opendaylight.mdsal.gen.javav2.urn.test.uses.leaf.innertype2.rev170809.data")) {
+                final GeneratedType gt = (GeneratedType) type;
+                for (MethodSignature methodSignature : gt.getMethodDefinitions()) {
+                    if (methodSignature.getName().equals("getLeafUnion")) {
+                        assertEquals("LeafUnion", methodSignature.getReturnType().getName());
+                    }
+                }
+            }
+        }
+    }
+
+    @Test
+    public void generatedTypesUsesLeafTest() {
+        final BindingGenerator bg = new BindingGeneratorImpl(false);
+        final SchemaContext context = YangParserTestUtils.parseYangResources(BindingGeneratorImplTest.class,
+            "/uses-statement/test-uses-leaf-innertype2-base.yang", "/uses-statement/test-uses-leaf-innertype2.yang");
+        final List<Type> generateTypes = bg.generateTypes(context);
+        assertNotNull(generateTypes);
+        assertTrue(!generateTypes.isEmpty());
+        for (final Type type : generateTypes) {
+            if (type.getName().equals("MyCont") && type.getPackageName()
+                    .equals("org.opendaylight.mdsal.gen.javav2.urn.test.uses.leaf.innertype2.base.rev170809.data")) {
+                final GeneratedType gt = (GeneratedType) type;
+                for (MethodSignature methodSignature : gt.getMethodDefinitions()) {
+                    if (methodSignature.getName().equals("getLeafDecimal64")) {
+                        assertEquals("BigDecimal", methodSignature.getReturnType().getName());
+                    }
+                }
+
+            }
+
+            if (type.getName().equals("MyCont") && type.getPackageName()
+                    .equals("org.opendaylight.mdsal.gen.javav2.urn.test.uses.leaf.innertype2.rev170809.data")) {
+                final GeneratedType gt = (GeneratedType) type;
+                for (MethodSignature methodSignature : gt.getMethodDefinitions()) {
+                    if (methodSignature.getName().equals("getLeafDecimal64")) {
+                        assertEquals("BigDecimal", methodSignature.getReturnType().getName());
+                    }
+                }
+            }
+        }
+    }
+
+    @Test
+    public void generatedTypesUsesLeafInnertype3Test() {
+        final BindingGenerator bg = new BindingGeneratorImpl(false);
+        final SchemaContext context = YangParserTestUtils.parseYangResources(BindingGeneratorImplTest.class,
+            "/uses-statement/test-uses-leaf-innertype3-base.yang",
+            "/uses-statement/test-uses-leaf-innertype3.yang");
+        final List<Type> generateTypes = bg.generateTypes(context);
+        assertNotNull(generateTypes);
+        assertTrue(!generateTypes.isEmpty());
+        for (final Type type : generateTypes) {
+            if (type.getName().equals("MyCont") && type.getPackageName()
+                    .equals("org.opendaylight.mdsal.gen.javav2.urn.test.uses.leaf.innertype3.rev170809.data")) {
+                final GeneratedType gt = (GeneratedType) type;
+                for (MethodSignature methodSignature : gt.getMethodDefinitions()) {
+                    if (methodSignature.getName().equals("getBandwidth")) {
+                        assertEquals("Bandwidth", methodSignature.getReturnType().getName());
+                    }
+                }
+
+            }
+
+            if (type.getName().equals("Open") && type.getPackageName()
+                    .equals("org.opendaylight.mdsal.gen.javav2.urn.test.uses.leaf.innertype3.rev170809.data")) {
+                final GeneratedType gt = (GeneratedType) type;
+                for (MethodSignature methodSignature : gt.getMethodDefinitions()) {
+                    if (methodSignature.getName().equals("getVersion")) {
+                        assertEquals("ProtocolVersion", methodSignature.getReturnType().getName());
+                    }
+
+                    if (methodSignature.getName().equals("getLeafUnion")) {
+                        assertEquals("LeafUnion", methodSignature.getReturnType().getName());
+                    }
+                }
+
+            }
+        }
+    }
+
+    @Test
+    public void generatedTypesTest() {
+        final BindingGenerator bg = new BindingGeneratorImpl(false);
+        final SchemaContext context = YangParserTestUtils.parseYangResource("/generator/test-list.yang");
         final List<Type> generateTypes = bg.generateTypes(context);
 
         assertNotNull(generateTypes);
@@ -63,21 +241,21 @@ public class BindingGeneratorImplTest {
             if (t instanceof GeneratedTransferObject) {
                 final GeneratedTransferObject genTransferObj = (GeneratedTransferObject) t;
                 assertBaseGeneratedType(genTransferObj, "MyListKey",
-                        "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list.wrapper");
+                        "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list");
                 assertEquals(3, genTransferObj.getProperties().size());
                 int test_j = 0;
                 for (final GeneratedProperty generatedProperty : genTransferObj.getProperties()) {
                     switch (generatedProperty.getName()) {
-                        case "key":
-                            assertEquals("MyListKey", generatedProperty.getReturnType().getName());
+                        case "keyReservedWord":
+                            assertEquals("String", generatedProperty.getReturnType().getName());
                             test_j++;
                             break;
                         case "key1":
-                            assertEquals("MyListKey1", generatedProperty.getReturnType().getName());
+                            assertEquals("String", generatedProperty.getReturnType().getName());
                             test_j++;
                             break;
                         case "key2":
-                            assertEquals("MyListKey2", generatedProperty.getReturnType().getName());
+                            assertEquals("String", generatedProperty.getReturnType().getName());
                             test_j++;
                             break;
                         default:
@@ -94,23 +272,35 @@ public class BindingGeneratorImplTest {
     }
 
     @Test
-    public void generateTypesDescriptionsTest() throws Exception {
+    public void generateTypesIdentityTest() throws Exception {
         final BindingGenerator bg = new BindingGeneratorImpl(true);
-        final SchemaContext context = YangParserTestUtils.parseYangSources("/base/with_import/");
+        final SchemaContext context = YangParserTestUtils.parseYangResourceDirectory("/identity/");
         assertNotNull(context);
 
         final List<Type> generateTypes = bg.generateTypes(context, context.getModules());
         assertNotNull(generateTypes);
         assertTrue(!generateTypes.isEmpty());
-
         for (final Type type : generateTypes) {
-            if (type.getName().equals("TestData")) {
-                final String description = ((GeneratedType) type).getDescription().get();
-                description
-                        .contains("    import test-import { prefix \"imported-test\"; revision-date 2017-04-21; }\n\n");
-                description.contains("    revision 2017-02-06;\n\n");
-                description.contains("    typedef my-type {\n        type int8;\n    }");
-                description.contains("    container *my-cont {\n    }\n");
+            if (type.getFullyQualifiedName()
+                    .equals("org.opendaylight.mdsal.gen.javav2.identity3.module.rev170708.ident.Iden1")) {
+                final GeneratedTransferObject genTO = (GeneratedTransferObject)type;
+                assertEquals("org.opendaylight.mdsal.gen.javav2.identity3.module.rev170708.ident.Iden2",
+                        genTO.getSuperType().getFullyQualifiedName());
+
+            }
+            if (type.getFullyQualifiedName()
+                    .equals("org.opendaylight.mdsal.gen.javav2.identity3.module.rev170708.ident.Iden2")) {
+                final GeneratedTransferObject genTO = (GeneratedTransferObject)type;
+                assertEquals("org.opendaylight.mdsal.gen.javav2.identity.import_.rev170602.ident.Iden1",
+                        genTO.getSuperType().getFullyQualifiedName());
+
+            }
+            if (type.getFullyQualifiedName()
+                    .equals("org.opendaylight.mdsal.gen.javav2.identity3.module.rev170708.ident.Iden3")) {
+                final GeneratedTransferObject genTO = (GeneratedTransferObject)type;
+                assertEquals("org.opendaylight.mdsal.gen.javav2.identity3.module.rev170708.ident.Iden1",
+                        genTO.getSuperType().getFullyQualifiedName());
+
             }
         }
     }
@@ -160,34 +350,26 @@ public class BindingGeneratorImplTest {
                 int test_j = 0;
                 for (final MethodSignature m : t.getMethodDefinitions()) {
                     switch (m.getName()) {
-                        case "getKey":
-                                assertMethod(t, "getKey", "MyListKey",
-                                        "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list.wrapper",
+                        case "getIdentifier":
+                                assertMethod(t, "getIdentifier", "MyListKey",
+                                        "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
                                         m);
                             test_j++;
                             break;
-                        case "getMyListKey1":
-                            assertMethod(t, "getMyListKey1", "MyListKey1",
-                                    "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
-                                    m);
+                        case "getKey1":
+                            assertMethod(t, "getKey1", "String","java.lang", m);
                             test_j++;
                             break;
-                        case "getMyListKey2":
-                            assertMethod(t, "getMyListKey2", "MyListKey2",
-                                    "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
-                                    m);
+                        case "getKey2":
+                            assertMethod(t, "getKey2", "String","java.lang", m);
                             test_j++;
                             break;
-                        case "getMyListFoo":
-                            assertMethod(t, "getMyListFoo", "MyListFoo",
-                                    "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.data.my_list",
-                                    m);
+                        case "getFoo":
+                            assertMethod(t, "getFoo", "String","java.lang", m);
                             test_j++;
                             break;
-                        case "getMyListKey":
-                            assertMethod(t, "getMyListKey", "MyListKey",
-                                    "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list",
-                                    m);
+                        case "getKeyReservedWord":
+                            assertMethod(t, "getKeyReservedWord", "String","java.lang", m);
                             test_j++;
                             break;
                         default: