diff --git a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListenerTest.java b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListenerTest.java
index 81e973f..b65b948 100644
--- a/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListenerTest.java
+++ b/utils/yangutils/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListenerTest.java
@@ -180,6 +180,17 @@
     }
 
     /**
+     * Validates default invalid value in typedef.
+     */
+    @Test
+    public void processDefaultInvalidValueInTypedef() throws IOException, ParserException {
+        thrown.expect(DataTypeException.class);
+        thrown.expectMessage("YANG file error : Input value \"0\" is not a valid INT32");
+
+        manager.getDataModel("src/test/resources/default/DefaultInvalidValueWithRangeInTypedef.yang");
+    }
+
+    /**
      * Validates default value decimal64 in leaf.
      */
     @Test
@@ -250,7 +261,7 @@
     @Test
     public void processDefaultInvalidValueStringInLeaf() throws IOException, ParserException {
         thrown.expect(DataTypeException.class);
-        thrown.expectMessage("YANG file error : Input value \"2bB2bB\" is not a valid string");
+        thrown.expectMessage("YANG file error : Input value \"2bB2bB\" is not a valid STRING");
 
         manager.getDataModel("src/test/resources/default/DefaultInvalidValueStringInLeaf.yang");
     }
@@ -288,7 +299,7 @@
     @Test
     public void processDefaultInvalidValueBooleanInLeaf() throws IOException, ParserException {
         thrown.expect(DataTypeException.class);
-        thrown.expectMessage("YANG file error : Input value \"yes\" is not a valid boolean");
+        thrown.expectMessage("YANG file error : Input value \"yes\" is not a valid BOOLEAN");
 
         manager.getDataModel("src/test/resources/default/DefaultInvalidValueBooleanInLeaf.yang");
     }
@@ -326,7 +337,7 @@
     @Test
     public void processDefaultInvalidValueEnumberationInLeaf() throws IOException, ParserException {
         thrown.expect(DataTypeException.class);
-        thrown.expectMessage("YANG file error : Input value \"xyz\" is not a valid union");
+        thrown.expectMessage("YANG file error : Input value \"xyz\" is not a valid ENUMERATION");
 
         manager.getDataModel("src/test/resources/default/DefaultInvalidValueEnumerationInLeaf.yang");
     }
@@ -364,7 +375,7 @@
     @Test
     public void processDefaultInvalidValueBitsInLeaf() throws IOException, ParserException {
         thrown.expect(DataTypeException.class);
-        thrown.expectMessage("YANG file error : Input value \"xyz\" is not a valid bits");
+        thrown.expectMessage("YANG file error : Input value \"xyz\" is not a valid BITS");
 
         manager.getDataModel("src/test/resources/default/DefaultInvalidValueBitsInLeaf.yang");
     }
@@ -402,7 +413,7 @@
     @Test
     public void processDefaultInvlaidValueBinaryInLeaf() throws IOException, ParserException {
         thrown.expect(DataTypeException.class);
-        thrown.expectMessage("YANG file error : Input value \"000\" is not a valid binary");
+        thrown.expectMessage("YANG file error : Input value \"000\" is not a valid BINARY");
 
         manager.getDataModel("src/test/resources/default/DefaultInvalidValueBinaryInLeaf.yang");
     }
@@ -413,7 +424,7 @@
     @Test
     public void processDefaultValueEmptyInLeaf() throws IOException, ParserException {
         thrown.expect(DataTypeException.class);
-        thrown.expectMessage("YANG file error : Input value \"something\" is not a allowed for a data type empty");
+        thrown.expectMessage("YANG file error : Input value \"something\" is not allowed for a data type EMPTY");
 
         manager.getDataModel("src/test/resources/default/DefaultValueEmptyInLeaf.yang");
     }
@@ -451,7 +462,7 @@
     @Test
     public void processDefaultInvalidValueUnionInLeaf() throws IOException, ParserException {
         thrown.expect(DataTypeException.class);
-        thrown.expectMessage("YANG file error : Input value \"xyz\" is not a valid union");
+        thrown.expectMessage("YANG file error : Input value \"xyz\" is not a valid UNION");
 
         manager.getDataModel("src/test/resources/default/DefaultInvalidValueUnionInLeaf.yang");
     }
