[ONOS-4938] Defect fix: range interval
Change-Id: I3229d35fb7c80da3bcf150d52ed7e7eba72bb4c8
diff --git a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListenerTest.java b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListenerTest.java
index 81e973f..b65b948 100644
--- a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListenerTest.java
+++ b/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");
}
diff --git a/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/RestrictionResolutionTest.java b/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/RestrictionResolutionTest.java
index c0f67b7..6b64e5b 100644
--- a/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/RestrictionResolutionTest.java
+++ b/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/RestrictionResolutionTest.java
@@ -19,6 +19,7 @@
import java.io.IOException;
import java.math.BigInteger;
import java.util.ListIterator;
+
import org.junit.Test;
import org.onosproject.yangutils.datamodel.YangDerivedInfo;
import org.onosproject.yangutils.datamodel.YangLeaf;
@@ -28,8 +29,11 @@
import org.onosproject.yangutils.datamodel.YangRangeInterval;
import org.onosproject.yangutils.datamodel.YangRangeRestriction;
import org.onosproject.yangutils.datamodel.YangStringRestriction;
+import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.datamodel.YangTypeDef;
import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
+import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
+import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangInt16;
import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangInt32;
import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangUint64;
import org.onosproject.yangutils.linker.exceptions.LinkerException;
@@ -292,6 +296,79 @@
}
/**
+ * Checks range restriction in referred typedef.
+ */
+ @Test
+ public void processRangeRestrictionInRefTypedef()
+ throws IOException, ParserException, DataModelException {
+
+ YangNode node = manager.getDataModel("src/test/resources/RangeRestrictionInRefTypedef.yang");
+
+ // Check whether the data model tree returned is of type module.
+ assertThat(node instanceof YangModule, is(true));
+
+ // Check whether the node type is set properly to module.
+ assertThat(node.getNodeType(), is(MODULE_NODE));
+
+ // Check whether the module name is set correctly.
+ YangModule yangNode = (YangModule) node;
+ assertThat(yangNode.getName(), is("Test"));
+
+ // check top typedef
+ YangTypeDef topTypedef = (YangTypeDef) yangNode.getChild();
+ assertThat(topTypedef.getName(), is("Num3"));
+ YangType type = topTypedef.getTypeList().iterator().next();
+ assertThat(type.getDataType(), is(YangDataTypes.INT16));
+ assertThat(type.getDataTypeName(), is("int16"));
+
+ // Check for the restriction value.
+ YangRangeRestriction rangeRestriction = (YangRangeRestriction) type.getDataTypeExtendedInfo();
+ ListIterator<YangRangeInterval> rangeListIterator = rangeRestriction.getAscendingRangeIntervals()
+ .listIterator();
+ YangRangeInterval rangeInterval1 = rangeListIterator.next();
+ assertThat((int) ((YangInt16) rangeInterval1.getStartValue()).getValue(), is(-32000));
+ assertThat((int) ((YangInt16) rangeInterval1.getEndValue()).getValue(), is(4));
+
+ YangRangeInterval rangeInterval2 = rangeListIterator.next();
+ assertThat((int) ((YangInt16) rangeInterval2.getStartValue()).getValue(), is(32767));
+ assertThat((int) ((YangInt16) rangeInterval2.getEndValue()).getValue(), is(32767));
+
+ // check referred typedef
+ YangTypeDef refTypedef = (YangTypeDef) topTypedef.getNextSibling();
+ assertThat(refTypedef.getName(), is("Num6"));
+ YangType refType = refTypedef.getTypeList().iterator().next();
+ assertThat(refType.getDataType(), is(YangDataTypes.DERIVED));
+ assertThat(refType.getDataTypeName(), is("Num3"));
+ YangDerivedInfo<YangRangeRestriction> derivedInfo =
+ (YangDerivedInfo<YangRangeRestriction>) refType.getDataTypeExtendedInfo();
+
+ // Check for the restriction value.
+ rangeRestriction = (YangRangeRestriction) derivedInfo.getResolvedExtendedInfo();
+ rangeListIterator = rangeRestriction.getAscendingRangeIntervals().listIterator();
+ rangeInterval1 = rangeListIterator.next();
+ assertThat((int) ((YangInt16) rangeInterval1.getStartValue()).getValue(), is(-3));
+ assertThat((int) ((YangInt16) rangeInterval1.getEndValue()).getValue(), is(-3));
+
+ rangeInterval2 = rangeListIterator.next();
+ assertThat((int) ((YangInt16) rangeInterval2.getStartValue()).getValue(), is(-2));
+ assertThat((int) ((YangInt16) rangeInterval2.getEndValue()).getValue(), is(2));
+
+ YangRangeInterval rangeInterval3 = rangeListIterator.next();
+ assertThat((int) ((YangInt16) rangeInterval3.getStartValue()).getValue(), is(3));
+ assertThat((int) ((YangInt16) rangeInterval3.getEndValue()).getValue(), is(3));
+ }
+
+ /**
+ * Checks invalid range restriction in referred typedef.
+ */
+ @Test(expected = LinkerException.class)
+ public void processInvalidRangeRestrictionInRefTypedef()
+ throws IOException, ParserException, DataModelException {
+
+ manager.getDataModel("src/test/resources/RangeRestrictionInvalidInRefTypedef.yang");
+ }
+
+ /**
* Checks range restriction in referred type.
*/
@Test