Expand DefaultBindingGeneratorTest 28/97928/1
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 16 Oct 2021 13:00:05 +0000 (15:00 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Sat, 16 Oct 2021 13:00:05 +0000 (15:00 +0200)
We have fixed the test model (as it was invalid). Add an explicit test
for the now-unresovled grouping leaf type and also restore the original
negative test.

Change-Id: I14c0d734ee8990f9ad9ac8f8c58f37cafae34990
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/DefaultBindingGeneratorTest.java
binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderTest.java
binding/mdsal-binding-generator/src/test/resources/unresolvable-leafref.yang [new file with mode: 0644]

index 98792e377e5aeacfaad1c725b67e0466f9ae6adc..2db46bf78a0210028cfd77f1c36d4e9c112e796c 100644 (file)
@@ -11,6 +11,7 @@ package org.opendaylight.mdsal.binding.generator.impl;
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
 
 import java.util.List;
 import org.junit.AfterClass;
@@ -202,6 +203,22 @@ public class DefaultBindingGeneratorTest {
         assertEquals("^(?:)$", pattern.getJavaPatternString());
     }
 
+    @Test
+    public void testUnresolvedLeafref() {
+        assertEquals(Types.objectType(), assertGeneratedMethod(JavaTypeName.create(TEST_TYPE_PROVIDER_B, "Grp"),
+            "getUnresolvableLeafref").getReturnType());
+    }
+
+    @Test
+    public void javaTypeForSchemaDefinitionInvalidLeafrefPathTest() {
+        final var ctx = YangParserTestUtils.parseYangResources(TypeProviderTest.class, "/unresolvable-leafref.yang");
+        final var ex = assertThrows(IllegalArgumentException.class, () -> DefaultBindingGenerator.generateFor(ctx));
+        assertEquals("Failed to find leafref target /somewhere/i/belong", ex.getMessage());
+        final var cause = ex.getCause();
+        assertThat(cause, instanceOf(IllegalArgumentException.class));
+        assertEquals("Data tree child (foo)somewhere not present", cause.getMessage());
+    }
+
     private static MethodSignature assertGeneratedMethod(final JavaTypeName typeName, final String methodName) {
         return assertGeneratedMethod(assertGeneratedType(typeName).getMethodDefinitions(), methodName);
     }
index d3109f131a815b151cc59ccad96af868fd4600c1..b8c1ecc7de75b1ec1f1b8f0f5cad0bcaf4c27caa 100644 (file)
@@ -199,18 +199,4 @@ public class TypeProviderTest {
         assertEquals("java.lang", resultType.getPackageName());
         assertEquals("Object", resultType.getName());
     }
-
-    @Test(expected = IllegalArgumentException.class)
-    public void javaTypeForSchemaDefinitionInvalidLeafrefPathTest() {
-        final AbstractTypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
-        final Module module = resolveModule("test-type-provider-b");
-
-        final QName leafrefNode = QName.create(module.getQNameModule(), "unreslovable-leafref");
-        final DataSchemaNode condLeaf = module.findDataChildByName(leafrefNode).get();
-        assertTrue(condLeaf instanceof LeafSchemaNode);
-        final LeafSchemaNode leaf = (LeafSchemaNode) condLeaf;
-        final TypeDefinition<?> leafType = leaf.getType();
-
-        provider.javaTypeForSchemaDefinitionType(leafType, leaf);
-    }
 }
diff --git a/binding/mdsal-binding-generator/src/test/resources/unresolvable-leafref.yang b/binding/mdsal-binding-generator/src/test/resources/unresolvable-leafref.yang
new file mode 100644 (file)
index 0000000..a6214ed
--- /dev/null
@@ -0,0 +1,11 @@
+module unresolvable-leafref {
+  namespace foo;
+  prefix foo;
+
+  leaf unresolvable-leafref {
+    type leafref {
+      path "/somewhere/i/belong";
+    }
+  }
+}
+