addition of union & enum for data validation.

Change-Id: I82b94e5c934097f233da3a9b05449a8737c5c575
diff --git a/compiler/base/datamodel/src/test/java/org/onosproject/yang/compiler/datamodel/CheckValidationTest.java b/compiler/base/datamodel/src/test/java/org/onosproject/yang/compiler/datamodel/CheckValidationTest.java
index 1827aba..a442189 100644
--- a/compiler/base/datamodel/src/test/java/org/onosproject/yang/compiler/datamodel/CheckValidationTest.java
+++ b/compiler/base/datamodel/src/test/java/org/onosproject/yang/compiler/datamodel/CheckValidationTest.java
@@ -21,13 +21,12 @@
 import org.onosproject.yang.compiler.datamodel.utils.builtindatatype.YangUint16;
 import org.onosproject.yang.compiler.datamodel.utils.builtindatatype.YangUint32;
 import org.onosproject.yang.compiler.datamodel.utils.builtindatatype.YangUint64;
+import org.onosproject.yang.compiler.datamodel.utils.builtindatatype.YangUint8;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
 
 import static org.junit.Assert.assertEquals;
-import static org.onosproject.yang.compiler.datamodel.utils.builtindatatype.YangInt8.MAX_VALUE;
-import static org.onosproject.yang.compiler.datamodel.utils.builtindatatype.YangInt8.MIN_VALUE;
 
 /**
  * Utility class to check error messages.
@@ -35,8 +34,6 @@
 final class CheckValidationTest {
     private static final String E_MESS = "Exception has not occurred for " +
             "invalid value with type ";
-    private static boolean expOccurred;
-
     private CheckValidationTest() {
     }
 
@@ -48,6 +45,7 @@
      */
     static void dataValidation(YangType node, String value)
             throws DataModelException {
+        boolean expOccurred = false;
         YangDataTypes type = node.getDataType();
         try {
             node.isValidValue(value);
@@ -66,6 +64,7 @@
      */
     static void rangeCheck(YangType node, String value)
             throws DataModelException {
+        boolean expOccurred = false;
         YangDataTypes type = node.getDataType();
         try {
             node.isValidValue(value);
@@ -88,16 +87,16 @@
         StringBuilder msg = new StringBuilder();
         switch (type) {
             case UINT8:
-                if (Integer.valueOf(value) < MIN_VALUE) {
+                if (Integer.valueOf(value) < YangUint8.MIN_VALUE) {
                     msg.append("YANG file error : ")
                             .append(value)
                             .append(" is lesser than minimum value ")
-                            .append(MIN_VALUE).append(".");
-                } else if (Integer.valueOf(value) > MAX_VALUE) {
+                            .append(YangUint8.MIN_VALUE).append(".");
+                } else if (Integer.valueOf(value) > YangUint8.MAX_VALUE) {
                     msg.append("YANG file error : ")
                             .append(value)
                             .append(" is greater than maximum value ")
-                            .append(MAX_VALUE).append(".");
+                            .append(YangUint8.MAX_VALUE).append(".");
                 }
                 break;
             case UINT16:
@@ -194,6 +193,7 @@
             case BINARY:
             case STRING:
             case BOOLEAN:
+            case UNION:
                 msg.append("YANG file error : Input value ").append("\"")
                         .append(value).append("\"")
                         .append(" is not a valid ").append(dataType);
diff --git a/compiler/base/datamodel/src/test/java/org/onosproject/yang/compiler/datamodel/DataValidator.java b/compiler/base/datamodel/src/test/java/org/onosproject/yang/compiler/datamodel/DataValidator.java
index 5d6ac49..2fe012b 100644
--- a/compiler/base/datamodel/src/test/java/org/onosproject/yang/compiler/datamodel/DataValidator.java
+++ b/compiler/base/datamodel/src/test/java/org/onosproject/yang/compiler/datamodel/DataValidator.java
@@ -17,6 +17,8 @@
 
 import org.junit.Test;
 import org.onosproject.yang.compiler.datamodel.exceptions.DataModelException;
+import org.onosproject.yang.compiler.datamodel.utils.builtindatatype.YangDataTypes;
+import org.onosproject.yang.compiler.datamodel.utils.builtindatatype.YangInt8;
 
 import static org.onosproject.yang.compiler.datamodel.CheckValidationTest.dataValidation;
 import static org.onosproject.yang.compiler.datamodel.CheckValidationTest.rangeCheck;
@@ -207,10 +209,12 @@
 
         YangType<?> newNode = new YangType<>();
         newNode.setDataType(BINARY);
-        dataValidation(newNode, "  ");
+        dataValidation(newNode, "");
     }
 
-   /* TODO: need to verify .
+    /**
+     * Creating nodes of type ENUMERATION and testing the data validation.
+     */
     @Test
     public void negativeEnum() throws DataModelException {
 
@@ -218,12 +222,11 @@
         newNode.setDataType(YangDataTypes.ENUMERATION);
         YangEnum enum1 = new YangEnum();
         enum1.setNamedValue("sample1");
-
+        enum1.setValue(10);
         YangEnum enum2 = new YangEnum();
         enum2.setNamedValue("sample2");
         enum2.setValue(20);
-
-        YangEnumeration YEnumeration = new YangEnumeration() {
+        YangEnumeration yEnumeration = new YangEnumeration() {
             @Override
             public String getJavaPackage() {
                 return null;
@@ -239,19 +242,21 @@
                 return null;
             }
         };
-        YEnumeration.addEnumInfo(enum1);
-        YEnumeration.addEnumInfo(enum2);
-        newNode.setDataTypeExtendedInfo(YEnumeration);
-        dataValidation(newNode," ");
-        dataValidation(newNode,"123");
-        dataValidation(newNode,"sample1");
+        yEnumeration.addEnumInfo(enum1);
+        yEnumeration.addEnumInfo(enum2);
+        newNode.setDataTypeExtendedInfo(yEnumeration);
+        dataValidation(newNode, " ");
+        dataValidation(newNode, "123");
     }
 
+    /**
+     * Creating nodes of type UNION and testing the data validation.
+     */
     @Test
     public void negativeUnion() throws DataModelException {
-        YangType<?> newNode = new YangType<>();
+
+        YangType<YangUnion> newNode = new YangType<>();
         newNode.setDataType(YangDataTypes.UNION);
-        List<YangType<?>> list = new LinkedList<>();
         YangUnion union = new YangUnion() {
             @Override
             public String getJavaPackage() {
@@ -268,13 +273,14 @@
                 return null;
             }
         };
-        YangUnion YUnion = union;
         YangType<YangInt8> typeInt1 = new YangType<>();
+        typeInt1.setDataType(INT8);
         YangType<YangDecimal64> typeInt2 = new YangType<>();
-        YUnion.addType(typeInt1);
-        YUnion.addType(typeInt2);
-        //  newNode.setDataTypeExtendedInfo(YUnion);
-        dataValidation(newNode,"INT8");
+        typeInt2.setDataType(BOOLEAN);
+        union.addType(typeInt1);
+        union.addType(typeInt2);
+        newNode.setDataTypeExtendedInfo(union);
+        dataValidation(newNode, "abcd");
+        dataValidation(newNode, "-129");
     }
-    */
 }