Merge "Bug 584: Test coverage increase"
authorTony Tkacik <ttkacik@cisco.com>
Fri, 17 Oct 2014 09:03:00 +0000 (09:03 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Fri, 17 Oct 2014 09:03:00 +0000 (09:03 +0000)
code-generator/binding-generator-util/src/test/java/org/opendaylight/yangtools/binding/generator/util/BindingGeneratorUtilTest.java
code-generator/binding-generator-util/src/test/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedPropertyBuilderImplTest.java [new file with mode: 0644]
code-generator/binding-generator-util/src/test/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedPropertyImplTest.java [new file with mode: 0644]

index ef268c7ed998cef2e10637677fe3828b351a8531..413856eb65493b61125a4bd1f225aadf869dd23a 100644 (file)
@@ -7,24 +7,45 @@
  */
 package org.opendaylight.yangtools.binding.generator.util;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static org.junit.Assert.*;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.Serializable;
+import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
+
+import com.google.common.base.Optional;
+
 import org.junit.Test;
+import org.opendaylight.yangtools.binding.generator.util.generated.type.builder.GeneratedTypeBuilderImpl;
+import org.opendaylight.yangtools.sal.binding.model.api.AccessModifier;
+import org.opendaylight.yangtools.sal.binding.model.api.Restrictions;
+import org.opendaylight.yangtools.sal.binding.model.api.type.builder.MethodSignatureBuilder;
 import org.opendaylight.yangtools.yang.binding.BindingMapping;
+import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
+import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
+import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
+import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition;
 import org.opendaylight.yangtools.yang.model.parser.api.YangContextParser;
+import org.opendaylight.yangtools.yang.model.util.BaseConstraints;
 import org.opendaylight.yangtools.yang.model.util.DataNodeIterator;
+import org.opendaylight.yangtools.yang.model.util.Decimal64;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType.Builder;
+import org.opendaylight.yangtools.yang.model.util.Int16;
+import org.opendaylight.yangtools.yang.model.util.StringType;
+import org.opendaylight.yangtools.yang.model.util.Uint16;
 import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleBuilder;
 import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
 
@@ -162,4 +183,129 @@ public class BindingGeneratorUtilTest {
                 BindingGeneratorUtil.parseToValidParamName("  0some-testing_parameter   name   "));
     }
 
+    @Test
+    public void computeDefaultSUIDTest() {
+        GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
+
+        MethodSignatureBuilder method = generatedTypeBuilder.addMethod("myMethodName");
+        method.setAccessModifier(AccessModifier.PUBLIC);
+        generatedTypeBuilder.addProperty("myProperty");
+        generatedTypeBuilder.addImplementsType(Types.typeForClass(Serializable.class));
+
+        assertEquals(6788238694991761868L, BindingGeneratorUtil.computeDefaultSUID(generatedTypeBuilder));
+
+    }
+
+    @Test
+    public void getRestrictionsTest() {
+
+        Optional<String> absent = Optional.absent();
+
+        Builder extTypeBuilder = ExtendedType.builder(new QName(URI.create("namespace"), "localName"),
+                Int16.getInstance(), absent, absent, SchemaPath.create(true, QName.create("/root")));
+
+        ArrayList<LengthConstraint> lenght = new ArrayList<LengthConstraint>();
+        ArrayList<RangeConstraint> range = new ArrayList<RangeConstraint>();
+        ArrayList<PatternConstraint> pattern = new ArrayList<PatternConstraint>();
+
+        lenght.add(BaseConstraints.newLengthConstraint(1, 2, absent, absent));
+        range.add(BaseConstraints.newRangeConstraint(1, 2, absent, absent));
+        pattern.add(BaseConstraints.newPatternConstraint(".*", absent, absent));
+
+        extTypeBuilder.lengths(lenght);
+        extTypeBuilder.ranges(range);
+        extTypeBuilder.patterns(pattern);
+
+        Restrictions restrictions = BindingGeneratorUtil.getRestrictions(extTypeBuilder.build());
+
+        assertNotNull(restrictions);
+
+        assertEquals(1, restrictions.getLengthConstraints().size());
+        assertEquals(1, restrictions.getRangeConstraints().size());
+        assertEquals(1, restrictions.getPatternConstraints().size());
+
+        assertFalse(restrictions.isEmpty());
+        assertTrue(restrictions.getLengthConstraints().contains(
+                BaseConstraints.newLengthConstraint(1, 2, absent, absent)));
+        assertTrue(restrictions.getRangeConstraints()
+                .contains(BaseConstraints.newRangeConstraint(1, 2, absent, absent)));
+        assertTrue(restrictions.getPatternConstraints().contains(
+                BaseConstraints.newPatternConstraint(".*", absent, absent)));
+    }
+
+    @Test
+    public void getEmptyRestrictionsTest() {
+
+        Optional<String> absent = Optional.absent();
+
+        Builder extTypeBuilder = ExtendedType.builder(new QName(URI.create("namespace"), "localName"),
+                StringType.getInstance(), absent, absent, SchemaPath.create(true, QName.create("/root")));
+
+        Restrictions restrictions = BindingGeneratorUtil.getRestrictions(extTypeBuilder.build());
+
+        assertNotNull(restrictions);
+        assertTrue(restrictions.isEmpty());
+
+    }
+
+    @Test
+    public void getDefaultIntegerRestrictionsTest() {
+
+        Optional<String> absent = Optional.absent();
+
+        Builder extTypeBuilder = ExtendedType.builder(new QName(URI.create("namespace"), "localName"),
+                Int16.getInstance(), absent, absent, SchemaPath.create(true, QName.create("/root")));
+
+        ExtendedType extType = extTypeBuilder.build();
+        Restrictions restrictions = BindingGeneratorUtil.getRestrictions(extType);
+
+        assertNotNull(restrictions);
+        assertFalse(restrictions.isEmpty());
+        assertEquals(((IntegerTypeDefinition) extType.getBaseType()).getRangeConstraints(),
+                restrictions.getRangeConstraints());
+        assertTrue(restrictions.getLengthConstraints().isEmpty());
+        assertTrue(restrictions.getPatternConstraints().isEmpty());
+
+    }
+
+    @Test
+    public void getDefaultUnsignedIntegerRestrictionsTest() {
+
+        Optional<String> absent = Optional.absent();
+
+        Builder extTypeBuilder = ExtendedType.builder(new QName(URI.create("namespace"), "localName"),
+                Uint16.getInstance(), absent, absent, SchemaPath.create(true, QName.create("/root")));
+
+        ExtendedType extType = extTypeBuilder.build();
+        Restrictions restrictions = BindingGeneratorUtil.getRestrictions(extType);
+
+        assertNotNull(restrictions);
+        assertFalse(restrictions.isEmpty());
+        assertEquals(((UnsignedIntegerTypeDefinition) extType.getBaseType()).getRangeConstraints(),
+                restrictions.getRangeConstraints());
+        assertTrue(restrictions.getLengthConstraints().isEmpty());
+        assertTrue(restrictions.getPatternConstraints().isEmpty());
+    }
+
+    @Test
+    public void getDefaultDecimalRestrictionsTest() {
+
+        Optional<String> absent = Optional.absent();
+        SchemaPath path = SchemaPath.create(true, QName.create("/root"));
+
+        Builder extTypeBuilder = ExtendedType.builder(new QName(URI.create("namespace"), "localName"),
+                Decimal64.create(path, 10), absent, absent, path);
+
+        ExtendedType extType = extTypeBuilder.build();
+        Restrictions restrictions = BindingGeneratorUtil.getRestrictions(extType);
+
+        assertNotNull(restrictions);
+        assertFalse(restrictions.isEmpty());
+        assertEquals(((DecimalTypeDefinition) extType.getBaseType()).getRangeConstraints(),
+                restrictions.getRangeConstraints());
+        assertTrue(restrictions.getLengthConstraints().isEmpty());
+        assertTrue(restrictions.getPatternConstraints().isEmpty());
+
+    }
+
 }
diff --git a/code-generator/binding-generator-util/src/test/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedPropertyBuilderImplTest.java b/code-generator/binding-generator-util/src/test/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedPropertyBuilderImplTest.java
new file mode 100644 (file)
index 0000000..0bcd513
--- /dev/null
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ */
+package org.opendaylight.yangtools.binding.generator.util.generated.type.builder;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+import org.opendaylight.yangtools.binding.generator.util.Types;
+import org.opendaylight.yangtools.sal.binding.model.api.AccessModifier;
+import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;
+import org.opendaylight.yangtools.sal.binding.model.api.Type;
+
+public class GeneratedPropertyBuilderImplTest {
+
+    @Test
+    public void generatedPropertyBuilderImplTest() {
+        GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl = new GeneratedPropertyBuilderImpl("myPropertyName");
+        generatedPropertyBuilderImpl.setValue("myValue");
+        generatedPropertyBuilderImpl.setReadOnly(false);
+        generatedPropertyBuilderImpl.setStatic(true);
+        generatedPropertyBuilderImpl.setComment(null);
+        generatedPropertyBuilderImpl.setFinal(true);
+        generatedPropertyBuilderImpl.setAccessModifier(AccessModifier.PUBLIC);
+        generatedPropertyBuilderImpl.setReturnType(Types.BOOLEAN);
+
+        assertEquals(
+                "GeneratedPropertyImpl [name=myPropertyName, annotations=[], comment=null, returnType=Type (java.lang.Boolean), isFinal=true, isReadOnly=false, modifier=PUBLIC]",
+                generatedPropertyBuilderImpl.toString());
+
+        GeneratedProperty instance = generatedPropertyBuilderImpl.toInstance(null);
+
+        assertNotNull(instance);
+
+        assertTrue(instance.isFinal());
+        assertTrue(instance.isStatic());
+        assertFalse(instance.isReadOnly());
+        assertEquals("myValue", instance.getValue());
+        assertEquals(null, instance.getComment());
+        assertEquals(AccessModifier.PUBLIC, instance.getAccessModifier());
+        assertEquals(Types.BOOLEAN, instance.getReturnType());
+
+    }
+
+    @Test
+    public void generatedPropertyBuilderImplEqualsAndHashCodeTest() {
+        GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl = new GeneratedPropertyBuilderImpl("myPropertyName");
+        GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl2 = new GeneratedPropertyBuilderImpl("myPropertyName");
+        GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl3 = new GeneratedPropertyBuilderImpl("myPropertyName3");
+        GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl4 = new GeneratedPropertyBuilderImpl("myPropertyName");
+
+        assertNotNull(generatedPropertyBuilderImpl);
+        assertNotNull(generatedPropertyBuilderImpl2);
+        assertNotNull(generatedPropertyBuilderImpl3);
+        assertNotNull(generatedPropertyBuilderImpl4);
+
+        generatedPropertyBuilderImpl.setReturnType(Types.BOOLEAN);
+        generatedPropertyBuilderImpl2.setReturnType(Types.BOOLEAN);
+        generatedPropertyBuilderImpl3.setReturnType(Types.BOOLEAN);
+        generatedPropertyBuilderImpl4.setReturnType(Types.STRING);
+
+        assertFalse(generatedPropertyBuilderImpl.equals(null));
+        assertFalse(generatedPropertyBuilderImpl.equals(new Object()));
+        assertTrue(generatedPropertyBuilderImpl.equals(generatedPropertyBuilderImpl));
+        assertTrue(generatedPropertyBuilderImpl.equals(generatedPropertyBuilderImpl2));
+        assertFalse(generatedPropertyBuilderImpl.equals(generatedPropertyBuilderImpl3));
+        assertFalse(generatedPropertyBuilderImpl.equals(generatedPropertyBuilderImpl4));
+
+        assertTrue(generatedPropertyBuilderImpl.hashCode() == generatedPropertyBuilderImpl.hashCode());
+        assertTrue(generatedPropertyBuilderImpl.hashCode() == generatedPropertyBuilderImpl2.hashCode());
+        assertFalse(generatedPropertyBuilderImpl.hashCode() == generatedPropertyBuilderImpl3.hashCode());
+        assertFalse(generatedPropertyBuilderImpl.hashCode() == generatedPropertyBuilderImpl4.hashCode());
+    }
+
+}
diff --git a/code-generator/binding-generator-util/src/test/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedPropertyImplTest.java b/code-generator/binding-generator-util/src/test/java/org/opendaylight/yangtools/binding/generator/util/generated/type/builder/GeneratedPropertyImplTest.java
new file mode 100644 (file)
index 0000000..01572ab
--- /dev/null
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ */
+package org.opendaylight.yangtools.binding.generator.util.generated.type.builder;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+import org.opendaylight.yangtools.binding.generator.util.Types;
+import org.opendaylight.yangtools.sal.binding.model.api.AccessModifier;
+import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;
+
+public class GeneratedPropertyImplTest {
+
+    @Test
+    public void generatedPropertyImplTest() {
+        GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl = new GeneratedPropertyBuilderImpl("myPropertyName");
+        generatedPropertyBuilderImpl.setValue("myValue");
+        generatedPropertyBuilderImpl.setReadOnly(false);
+        generatedPropertyBuilderImpl.setStatic(true);
+        generatedPropertyBuilderImpl.setComment("myComment");
+        generatedPropertyBuilderImpl.setFinal(true);
+        generatedPropertyBuilderImpl.setAccessModifier(AccessModifier.PUBLIC);
+        generatedPropertyBuilderImpl.setReturnType(Types.BOOLEAN);
+
+        GeneratedProperty instance = generatedPropertyBuilderImpl.toInstance(new GeneratedTypeBuilderImpl("my.package",
+                "myTypeName").toInstance());
+
+        assertNotNull(instance);
+
+        assertTrue(instance.isFinal());
+        assertTrue(instance.isStatic());
+        assertFalse(instance.isReadOnly());
+        assertEquals("myValue", instance.getValue());
+        assertEquals("myComment", instance.getComment());
+        assertEquals(AccessModifier.PUBLIC, instance.getAccessModifier());
+        assertEquals(Types.BOOLEAN, instance.getReturnType());
+
+        assertEquals(
+                "GeneratedPropertyImpl [name=myPropertyName, annotations=[], comment=myComment, parent=my.package.myTypeName, returnType=Type (java.lang.Boolean), isFinal=true, isReadOnly=false, modifier=PUBLIC]",
+                instance.toString());
+
+    }
+
+    @Test
+    public void generatedPropertyImplEqualsAndHashCodeTest() {
+        GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl = new GeneratedPropertyBuilderImpl("myPropertyName");
+        GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl2 = new GeneratedPropertyBuilderImpl("myPropertyName");
+        GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl3 = new GeneratedPropertyBuilderImpl("myPropertyName3");
+        GeneratedPropertyBuilderImpl generatedPropertyBuilderImpl4 = new GeneratedPropertyBuilderImpl("myPropertyName");
+
+        generatedPropertyBuilderImpl.setReturnType(Types.BOOLEAN);
+        generatedPropertyBuilderImpl2.setReturnType(Types.BOOLEAN);
+        generatedPropertyBuilderImpl3.setReturnType(Types.BOOLEAN);
+        generatedPropertyBuilderImpl4.setReturnType(Types.STRING);
+
+        GeneratedProperty property = generatedPropertyBuilderImpl.toInstance(null);
+        GeneratedProperty property2 = generatedPropertyBuilderImpl2.toInstance(null);
+        GeneratedProperty property3 = generatedPropertyBuilderImpl3.toInstance(null);
+        GeneratedProperty property4 = generatedPropertyBuilderImpl4.toInstance(null);
+
+        assertNotNull(property);
+        assertNotNull(property2);
+        assertNotNull(property3);
+        assertNotNull(property4);
+
+        assertFalse(property.equals(null));
+        assertFalse(property.equals(new Object()));
+        assertTrue(property.equals(property));
+        assertTrue(property.equals(property2));
+        assertFalse(property.equals(property3));
+        assertFalse(property.equals(property4));
+
+        assertTrue(property.hashCode() == property.hashCode());
+        assertTrue(property.hashCode() == property2.hashCode());
+        assertFalse(property.hashCode() == property3.hashCode());
+        assertFalse(property.hashCode() == property4.hashCode());
+    }
+
+}