Bug 8449 - BindingToNormalizedNodeCodec fails to deserialize union of leafrefs
[mdsal.git] / binding / mdsal-binding-generator-impl / src / test / java / org / opendaylight / yangtools / sal / binding / generator / impl / UnionTypeDefTest.java
index 848a1b33fc6f2921cbc0315140a3583e00fe540b..ddcd86ab52b404d417a800cb22253aec50df9c79 100644 (file)
@@ -7,22 +7,27 @@
  */
 package org.opendaylight.yangtools.sal.binding.generator.impl;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 
 import java.io.File;
 import java.util.List;
 import org.junit.Test;
+import org.opendaylight.yangtools.binding.generator.util.Types;
 import org.opendaylight.yangtools.sal.binding.generator.api.BindingGenerator;
+import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;
+import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;
 import org.opendaylight.yangtools.sal.binding.model.api.Type;
+import org.opendaylight.yangtools.sal.binding.yang.types.TestUtils;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
 public class UnionTypeDefTest {
 
     @Test
     public void unionTypeResolvingTest() throws Exception {
-        File abstractTopology = new File(getClass().getResource("/union-test-models/abstract-topology.yang").toURI());
-        File ietfInetTypes = new File(getClass().getResource("/ietf/ietf-inet-types.yang").toURI());
+        final File abstractTopology = new File(getClass().getResource("/union-test-models/abstract-topology.yang").toURI());
+        final File ietfInetTypes = new File(getClass().getResource("/ietf/ietf-inet-types.yang").toURI());
         final SchemaContext context = TestUtils.parseYangSources(abstractTopology, ietfInetTypes);
 
         assertNotNull("context is null", context);
@@ -34,4 +39,30 @@ public class UnionTypeDefTest {
 
         // TODO: implement test
     }
+
+    @Test
+    public void unionTypedefLeafrefTest() throws Exception {
+        final File yang = new File(getClass().getResource("/leafref_typedef_union/bug8449.yang").toURI());
+        final SchemaContext schemaContext = TestUtils.parseYangSources(yang);
+        assertNotNull(schemaContext);
+        final List<Type> generateTypes = new BindingGeneratorImpl(false).generateTypes(schemaContext);
+        assertNotNull(generateTypes);
+        for (final Type type : generateTypes) {
+            if (type.getName().equals("Cont")) {
+                final GeneratedType gt = ((GeneratedType) type);
+                assertNotNull(gt);
+                final GeneratedType refType = gt.getEnclosedTypes().iterator().next();
+                for (final GeneratedProperty generatedProperty : refType.getProperties()) {
+                    switch (generatedProperty.getName()) {
+                        case "stringRefValue":
+                            assertEquals(Types.STRING, generatedProperty.getReturnType());
+                            break;
+                        case "value":
+                            assertEquals(Types.CHAR_ARRAY, generatedProperty.getReturnType());
+                            break;
+                    }
+                }
+            }
+        }
+    }
 }