Map identities to proper objects
[mdsal.git] / binding / mdsal-binding-java-api-generator / src / test / java / org / opendaylight / mdsal / binding / java / api / generator / CompilationTest.java
index d629cf0a900e233e483c4bcf3655206e893c2b02..f3d640aa8dda14d476f6f399c6db447eee1113a3 100644 (file)
@@ -24,8 +24,8 @@ import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
 import java.lang.reflect.WildcardType;
-import java.math.BigDecimal;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLClassLoader;
@@ -38,6 +38,7 @@ import org.junit.Test;
 import org.opendaylight.mdsal.binding.model.ri.TypeConstants;
 import org.opendaylight.yangtools.yang.binding.ChildOf;
 import org.opendaylight.yangtools.yang.binding.annotations.RoutingContext;
+import org.opendaylight.yangtools.yang.common.Decimal64;
 import org.opendaylight.yangtools.yang.common.Empty;
 import org.opendaylight.yangtools.yang.common.Uint16;
 import org.opendaylight.yangtools.yang.common.Uint32;
@@ -147,7 +148,8 @@ public class CompilationTest extends BaseCompilationTest {
         assertTrue(new File(parent, "OpenObject.java").exists());
         assertTrue(new File(parent, "ExplicitRouteObject.java").exists());
         assertTrue(new File(parent, "PathKeySubobject.java").exists());
-        CompilationTestUtils.assertFilesCount(parent, 10);
+        assertTrue(new File(parent, "FooData.java").exists());
+        CompilationTestUtils.assertFilesCount(parent, 11);
 
         parent = new File(parent, "object");
         assertTrue(new File(parent, "Nodes.java").exists());
@@ -202,10 +204,11 @@ public class CompilationTest extends BaseCompilationTest {
 
         // Test if all sources were generated from 'module bar'
         parent = new File(sourcesOutputDir, CompilationTestUtils.NS_BAR);
+        assertTrue(new File(parent, "BarData.java").exists());
         assertTrue(new File(parent, "BasicExplicitRouteSubobjects.java").exists());
         assertTrue(new File(parent, "ExplicitRouteSubobjects.java").exists());
         assertTrue(new File(parent, "RouteSubobjects.java").exists());
-        CompilationTestUtils.assertFilesCount(parent, 6);
+        CompilationTestUtils.assertFilesCount(parent, 7);
 
         parent = new File(parent, "route");
         CompilationTestUtils.assertFilesCount(parent, 1);
@@ -244,15 +247,12 @@ public class CompilationTest extends BaseCompilationTest {
 
         // Test if all sources were generated from 'module foo'
         File parent = new File(sourcesOutputDir, CompilationTestUtils.NS_FOO);
-        final File fooListener = new File(parent, "FooListener.java");
-        File pathAttributes = new File(parent, "PathAttributes.java");
-        final File update = new File(parent, "Update.java");
-        final File updateBuilder = new File(parent, "UpdateBuilder.java");
-        assertTrue(fooListener.exists());
-        assertTrue(pathAttributes.exists());
-        assertTrue(update.exists());
-        assertTrue(updateBuilder.exists());
-        CompilationTestUtils.assertFilesCount(parent, 7);
+        assertTrue(new File(parent, "FooData.java").exists());
+        assertTrue(new File(parent, "FooListener.java").exists());
+        assertTrue(new File(parent, "PathAttributes.java").exists());
+        assertTrue(new File(parent, "Update.java").exists());
+        assertTrue(new File(parent, "UpdateBuilder.java").exists());
+        CompilationTestUtils.assertFilesCount(parent, 8);
 
         parent = new File(sourcesOutputDir, CompilationTestUtils.NS_FOO + CompilationTestUtils.FS + "path");
         CompilationTestUtils.assertFilesCount(parent, 1);
@@ -265,20 +265,16 @@ public class CompilationTest extends BaseCompilationTest {
 
         parent = new File(sourcesOutputDir, CompilationTestUtils.NS_FOO + CompilationTestUtils.FS + "update");
         CompilationTestUtils.assertFilesCount(parent, 2);
-        pathAttributes = new File(parent, "PathAttributes.java");
-        final File pathAttributesBuilder = new File(parent, "PathAttributesBuilder.java");
-        assertTrue(pathAttributes.exists());
-        assertTrue(pathAttributesBuilder.exists());
+        assertTrue(new File(parent, "PathAttributes.java").exists());
+        assertTrue(new File(parent, "PathAttributesBuilder.java").exists());
 
         // Test if all sources were generated from 'module bar'
         parent = new File(sourcesOutputDir, CompilationTestUtils.NS_BAR);
-        final File destination = new File(parent, "Destination.java");
-        final File pathAttributes1 = new File(parent, "PathAttributes1.java");
-        final File pathAttributes1Builder = new File(parent, "PathAttributes1Builder.java");
-        assertTrue(destination.exists());
-        assertTrue(pathAttributes1.exists());
-        assertTrue(pathAttributes1Builder.exists());
-        CompilationTestUtils.assertFilesCount(parent, 6);
+        assertTrue(new File(parent, "BarData.java").exists());
+        assertTrue(new File(parent, "Destination.java").exists());
+        assertTrue(new File(parent, "PathAttributes1.java").exists());
+        assertTrue(new File(parent, "PathAttributes1Builder.java").exists());
+        CompilationTestUtils.assertFilesCount(parent, 7);
 
         parent = new File(sourcesOutputDir, CompilationTestUtils.NS_BAR + CompilationTestUtils.FS + "destination");
         CompilationTestUtils.assertFilesCount(parent, 2);
@@ -310,17 +306,15 @@ public class CompilationTest extends BaseCompilationTest {
         parent = new File(parent, "unreach");
         CompilationTestUtils.assertFilesCount(parent, 1);
         parent = new File(parent, "nlri");
-        final File withdrawnRoutes = new File(parent, "WithdrawnRoutes.java");
-        final File withdrawnRoutesBuilder = new File(parent, "WithdrawnRoutesBuilder.java");
-        assertTrue(withdrawnRoutes.exists());
-        assertTrue(withdrawnRoutesBuilder.exists());
+        assertTrue(new File(parent, "WithdrawnRoutes.java").exists());
+        assertTrue(new File(parent, "WithdrawnRoutesBuilder.java").exists());
         CompilationTestUtils.assertFilesCount(parent, 2);
 
         // Test if all sources were generated from 'module baz'
         parent = new File(sourcesOutputDir, CompilationTestUtils.NS_BAZ);
-        CompilationTestUtils.assertFilesCount(parent, 3);
-        final File linkstateDestination = new File(parent, "LinkstateDestination.java");
-        assertTrue(linkstateDestination.exists());
+        assertTrue(new File(parent, "BazData.java").exists());
+        assertTrue(new File(parent, "LinkstateDestination.java").exists());
+        CompilationTestUtils.assertFilesCount(parent, 4);
 
         parent = new File(sourcesOutputDir, CompilationTestUtils.NS_BAZ + CompilationTestUtils.FS + "update");
         CompilationTestUtils.assertFilesCount(parent, 1);
@@ -384,8 +378,7 @@ public class CompilationTest extends BaseCompilationTest {
         assertTrue(new File(parent, "Nodes.java").exists());
         assertTrue(new File(parent, "NodesBuilder.java").exists());
         assertTrue(new File(parent, "Alg.java").exists());
-        assertTrue(new File(parent, "NodesIdUnionBuilder.java").exists());
-        CompilationTestUtils.assertFilesCount(parent, 6);
+        CompilationTestUtils.assertFilesCount(parent, 5);
 
         // Test if sources are compilable
         CompilationTestUtils.testCompilation(sourcesOutputDir, compiledOutputDir);
@@ -400,7 +393,7 @@ public class CompilationTest extends BaseCompilationTest {
         CompilationTestUtils.assertContainsMethod(nodesClass, b.getClass(), "getIdBinary");
         CompilationTestUtils.assertContainsMethod(nodesClass, pkg + ".Nodes$IdBits", "getIdBits", loader);
         CompilationTestUtils.assertContainsMethod(nodesClass, Boolean.class, "getIdBoolean");
-        CompilationTestUtils.assertContainsMethod(nodesClass, BigDecimal.class, "getIdDecimal64");
+        CompilationTestUtils.assertContainsMethod(nodesClass, Decimal64.class, "getIdDecimal64");
         CompilationTestUtils.assertContainsMethod(nodesClass, Empty.class, "getIdEmpty");
         CompilationTestUtils.assertContainsMethod(nodesClass, pkg + ".Nodes$IdEnumeration", "getIdEnumeration", loader);
         testReturnTypeIdentityref(nodesClass, "getIdIdentityref", pkg + ".Alg");
@@ -429,10 +422,10 @@ public class CompilationTest extends BaseCompilationTest {
         CompilationTestUtils.assertContainsRestrictionCheck(builderObj, method, expectedMsg, arg);
 
         method = CompilationTestUtils.assertContainsMethod(builderClass, builderClass, "setIdDecimal64",
-            BigDecimal.class);
-        final List<Range<BigDecimal>> rangeConstraints = new ArrayList<>();
-        rangeConstraints.add(Range.closed(new BigDecimal("1.5"), new BigDecimal("5.5")));
-        Object arg1 = new BigDecimal("1.4");
+            Decimal64.class);
+        final List<Range<Decimal64>> rangeConstraints = new ArrayList<>();
+        rangeConstraints.add(Range.closed(Decimal64.valueOf("1.5"), Decimal64.valueOf("5.5")));
+        Object arg1 = Decimal64.valueOf("1.4");
         expectedMsg = String.format("Invalid range: %s, expected: %s.", arg1, rangeConstraints);
         CompilationTestUtils.assertContainsRestrictionCheck(builderObj, method, expectedMsg, arg1);
 
@@ -454,7 +447,8 @@ public class CompilationTest extends BaseCompilationTest {
         assertTrue(new File(fooParent, "NodesBuilder.java").exists());
 
         final File barParent = new File(sourcesOutputDir, CompilationTestUtils.NS_BAR);
-        CompilationTestUtils.assertFilesCount(barParent, 2);
+        CompilationTestUtils.assertFilesCount(barParent, 3);
+        assertTrue(new File(barParent, "BarData.java").exists());
         assertTrue(new File(barParent, "IdentityClass.java").exists());
 
         // Test if sources are compilable
@@ -757,17 +751,9 @@ public class CompilationTest extends BaseCompilationTest {
 
     private static void testReturnTypeIdentityref(final Class<?> clazz, final String methodName,
             final String returnTypeStr) throws NoSuchMethodException {
-        Method method = clazz.getMethod(methodName);
-        assertEquals(java.lang.Class.class, method.getReturnType());
-        java.lang.reflect.Type returnType = method.getGenericReturnType();
-        assertTrue(returnType instanceof ParameterizedType);
-        final ParameterizedType pt = (ParameterizedType) returnType;
-        final java.lang.reflect.Type[] parameters = pt.getActualTypeArguments();
-        assertEquals(1, parameters.length);
-        final java.lang.reflect.Type parameter = parameters[0];
-        assertTrue(parameter instanceof WildcardType);
-        final WildcardType wildcardType = (WildcardType) parameter;
-        assertEquals("? extends " + returnTypeStr, wildcardType.toString());
+        Class<?> returnType = clazz.getMethod(methodName).getReturnType();
+        assertTrue(returnType.isInterface());
+        assertEquals(returnTypeStr, returnType.getName());
     }
 
     private static void testReturnTypeInstanceIdentitifer(final ClassLoader loader, final Class<?> clazz,
@@ -776,12 +762,12 @@ public class CompilationTest extends BaseCompilationTest {
         final Class<?> rawReturnType = Class.forName("org.opendaylight.yangtools.yang.binding.InstanceIdentifier", true,
             loader);
         assertEquals(rawReturnType, method.getReturnType());
-        final java.lang.reflect.Type returnType = method.getGenericReturnType();
+        final Type returnType = method.getGenericReturnType();
         assertTrue(returnType instanceof ParameterizedType);
         final ParameterizedType pt = (ParameterizedType) returnType;
-        final java.lang.reflect.Type[] parameters = pt.getActualTypeArguments();
+        final Type[] parameters = pt.getActualTypeArguments();
         assertEquals(1, parameters.length);
-        final java.lang.reflect.Type parameter = parameters[0];
+        final Type parameter = parameters[0];
         assertTrue(parameter instanceof WildcardType);
         final WildcardType wildcardType = (WildcardType) parameter;
         assertEquals("?", wildcardType.toString());