ST defect fixes and review comments fixes

Change-Id: Ib8c56a88c19cd9aa23918d0f9e37c89e74cb0d13
diff --git a/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java b/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java
index 5ee059c..91a723f 100644
--- a/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java
+++ b/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java
@@ -16,18 +16,18 @@
 
 package org.onosproject.yangutils.translator.tojava.utils;
 
+import org.junit.Test;
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertNotNull;
+import org.onosproject.yangutils.datamodel.YangDataTypes;
+import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.translator.tojava.AttributeInfo;
+import org.onosproject.yangutils.translator.tojava.ImportInfo;
+import org.onosproject.yangutils.utils.UtilConstants;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 
-import org.junit.Test;
-import org.onosproject.yangutils.datamodel.YangType;
-import org.onosproject.yangutils.translator.GeneratedFileType;
-import org.onosproject.yangutils.translator.tojava.AttributeInfo;
-
-import static org.hamcrest.core.Is.is;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
-
 /**
  * Unit tests for generated methods from the file type.
  */
@@ -42,19 +42,15 @@
      * @throws SecurityException if any security violation is observed
      * @throws NoSuchMethodException if when the method is not found
      * @throws IllegalArgumentException if there is illegal argument found
-     * @throws InstantiationException if instantiation is provoked for the
-     *             private constructor
-     * @throws IllegalAccessException if instance is provoked or a method is
-     *             provoked
-     * @throws InvocationTargetException when an exception occurs by the method
-     *             or constructor
+     * @throws InstantiationException if instantiation is provoked for the private constructor
+     * @throws IllegalAccessException if instance is provoked or a method is provoked
+     * @throws InvocationTargetException when an exception occurs by the method or constructor
      */
     @Test
     public void callPrivateConstructors() throws SecurityException, NoSuchMethodException, IllegalArgumentException,
-            InstantiationException, IllegalAccessException, InvocationTargetException {
+    InstantiationException, IllegalAccessException, InvocationTargetException {
 
-        Class<?>[] classesToConstruct = {
-                MethodsGenerator.class };
+        Class<?>[] classesToConstruct = {MethodsGenerator.class };
         for (Class<?> clazz : classesToConstruct) {
             Constructor<?> constructor = clazz.getDeclaredConstructor();
             constructor.setAccessible(true);
@@ -63,27 +59,100 @@
     }
 
     /**
-     * Unit test for checking the values received from constructor, default
-     * constructor and build string formation.
+     * Unit test case for checking the parse builder and typedef constructor.
+     */
+    @Test
+    public void getParseBuilderInterfaceMethodConstructorTest() {
+        ImportInfo forSetter = new ImportInfo();
+        attrType.setDataTypeName("binary");
+        attrType.getDataTypeName();
+        attrType.setDataType(YangDataTypes.BINARY);
+        attrType.getDataType();
+        testAttr.setAttributeName("attributeTest");
+        testAttr.setAttributeType(attrType);
+        forSetter.setPkgInfo("test1/test3");
+        forSetter.setClassInfo("This class contains");
+        testAttr.setImportInfo(forSetter);
+        String parseBuilderInterface = MethodsGenerator.parseBuilderInterfaceMethodString(testAttr, "newTestName");
+        assertThat(parseBuilderInterface.contains("attributeTest") && parseBuilderInterface.contains("newTestName"),
+                is(true));
+        String parseBuilderInterfaceBuild = MethodsGenerator.parseBuilderInterfaceBuildMethodString("testname7");
+        assertThat(parseBuilderInterfaceBuild.contains("Builds object of")
+                && parseBuilderInterfaceBuild.contains("testname7"), is(true));
+        String stringTypeDef = MethodsGenerator.getTypeDefConstructor(testAttr, "Testname");
+    }
+
+    /**
+     * Unit test case for checking the values received from constructor, default constructor and build string formation.
      */
     @Test
     public void getValuesTest() {
         String stringConstructor = MethodsGenerator.getConstructorString("testname");
-        assertThat(
-                stringConstructor.contains("Construct the object of testnameImpl.")
-                        && stringConstructor.contains("@param testnameObject builder object of  testname")
-                        && stringConstructor.contains("public testnameImpl(testnameBuilder testnameObject) {"),
-                is(true));
-        String stringDefaultConstructor = MethodsGenerator.getDefaultConstructorString(
-                GeneratedFileType.BUILDER_CLASS_MASK,
-                "testname");
-        assertThat(stringDefaultConstructor.contains("Default Constructor.")
-                && stringDefaultConstructor.contains("public testnameBuilder() {")
-                && stringDefaultConstructor.contains("}"), is(true));
+        assertThat(stringConstructor.contains(UtilConstants.JAVA_DOC_CONSTRUCTOR)
+                && stringConstructor.contains(UtilConstants.JAVA_DOC_PARAM)
+                && stringConstructor.contains(UtilConstants.BUILDER_OBJECT), is(true));
+        String stringDefaultConstructor = MethodsGenerator.getDefaultConstructorString("testnameBuilder", "public");
+        assertThat(stringDefaultConstructor.contains(UtilConstants.JAVA_DOC_DEFAULT_CONSTRUCTOR)
+                && stringDefaultConstructor.contains(UtilConstants.BUILDER)
+                && stringDefaultConstructor.contains("testname"), is(true));
         String stringBuild = MethodsGenerator.getBuildString("testname");
-        assertThat(
-                stringBuild.contains("public testname build() {")
-                        && stringBuild.contains("return new testnameImpl(this);") && stringBuild.contains("}"),
-                is(true));
+        assertThat(stringBuild.contains(UtilConstants.OVERRIDE) && stringBuild.contains(UtilConstants.BUILD)
+                && stringBuild.contains(UtilConstants.RETURN), is(true));
+
     }
-}
\ No newline at end of file
+
+    /**
+     * Unit test for checking the values received for class getter, class and typedef setters with list data type.
+     */
+    @Test
+    public void getGetterSetterTest() {
+
+        ImportInfo forGetterSetter = new ImportInfo();
+        attrType.setDataTypeName("int");
+        attrType.getDataTypeName();
+        attrType.setDataType(YangDataTypes.UINT8);
+        attrType.getDataType();
+        testAttr.setAttributeName("AttributeTest1");
+        testAttr.setAttributeType(attrType);
+        forGetterSetter.setPkgInfo(null);
+        forGetterSetter.setClassInfo("This class contains");
+        testAttr.setImportInfo(forGetterSetter);
+        testAttr.setListAttr(true);
+        String getterForClass = MethodsGenerator.getGetterForClass(testAttr);
+        assertThat(getterForClass.contains(UtilConstants.GET_METHOD_PREFIX) && getterForClass.contains("List<")
+                && getterForClass.contains("attributeTest1"), is(true));
+        String setterForClass = MethodsGenerator.getSetterForClass(testAttr, "TestThis");
+        assertThat(setterForClass.contains(UtilConstants.SET_METHOD_PREFIX) && setterForClass.contains("List<")
+                && setterForClass.contains("attributeTest1"), is(true));
+        String typeDefSetter = MethodsGenerator.getSetterForTypeDefClass(testAttr);
+        assertThat(typeDefSetter.contains(UtilConstants.SET_METHOD_PREFIX) && typeDefSetter.contains("List<")
+                && typeDefSetter.contains("attributeTest1") && typeDefSetter.contains("this."), is(true));
+    }
+
+    /**
+     * Unit test case for checking the parse builder and typedef constructor with list data type.
+     */
+    @Test
+    public void getConstructorWithListTypeTest() {
+        ImportInfo forSetter = new ImportInfo();
+        attrType.setDataTypeName("binary");
+        attrType.getDataTypeName();
+        attrType.setDataType(YangDataTypes.BINARY);
+        attrType.getDataType();
+        testAttr.setAttributeName("attributeTest");
+        testAttr.setAttributeType(attrType);
+        forSetter.setPkgInfo(null);
+        forSetter.setClassInfo("This class contains");
+        testAttr.setImportInfo(forSetter);
+        testAttr.setListAttr(true);
+        String parseBuilderInterface = MethodsGenerator.parseBuilderInterfaceMethodString(testAttr, "newTestName");
+        assertThat(parseBuilderInterface.contains("attributeTest") && parseBuilderInterface.contains("List<"),
+                is(true));
+        String parseBuilderInterfaceBuild = MethodsGenerator.parseBuilderInterfaceBuildMethodString("testname7");
+        assertThat(parseBuilderInterfaceBuild.contains("Builds object of")
+                && parseBuilderInterfaceBuild.contains("testname7"), is(true));
+        String stringTypeDef = MethodsGenerator.getTypeDefConstructor(testAttr, "Testname");
+        assertThat(stringTypeDef.contains("(List<") && stringTypeDef.contains("Testname")
+                && stringTypeDef.contains(UtilConstants.THIS), is(true));
+    }
+}