[ONOS-4650][ONOS-4726][ONOS-4727] [ONOS-4728]Implement must parser + when parser + feature + if-feature + revision defect fix
Change-Id: I0a3aee6c1c6b72ef7da7f7f565fd0f149fe3fd42
diff --git a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/ImportListenerTest.java b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/ImportListenerTest.java
index 9797e5e..b52da4a 100644
--- a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/ImportListenerTest.java
+++ b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/ImportListenerTest.java
@@ -16,14 +16,15 @@
package org.onosproject.yangutils.parser.impl.listeners;
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import org.junit.Test;
import org.onosproject.yangutils.datamodel.YangModule;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.parser.exceptions.ParserException;
import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
-import java.io.IOException;
-
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
@@ -33,6 +34,8 @@
public class ImportListenerTest {
private final YangUtilsParserManager manager = new YangUtilsParserManager();
+ private static final String DATE_FORMAT = "yyyy-MM-dd";
+ private final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT);
/**
* Checks if mandatory parameter prefix is present in import.
@@ -65,12 +68,12 @@
* Checks if import listener updates the data model tree.
*/
@Test
- public void processImportValidEntry() throws IOException, ParserException {
+ public void processImportValidEntry() throws IOException, ParserException, ParseException {
YangNode node = manager.getDataModel("src/test/resources/ImportValidEntry.yang");
// Checks for the revision value in data model tree.
- assertThat(((YangModule) node).getImportList().get(0).getRevision(), is("2015-02-03"));
+ assertThat(((YangModule) node).getImportList().get(0).getRevision(), is(simpleDateFormat.parse("2015-02-03")));
// Checks for the prefix id in data model tree.
assertThat(((YangModule) node).getImportList().get(0).getPrefixId(), is("On2"));
// Checks for the module name in data model tree.
diff --git a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/IncludeListenerTest.java b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/IncludeListenerTest.java
index 452fc89..e2bb239 100644
--- a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/IncludeListenerTest.java
+++ b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/IncludeListenerTest.java
@@ -16,14 +16,15 @@
package org.onosproject.yangutils.parser.impl.listeners;
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import org.junit.Test;
import org.onosproject.yangutils.datamodel.YangModule;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.parser.exceptions.ParserException;
import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
-import java.io.IOException;
-
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
@@ -33,6 +34,8 @@
public class IncludeListenerTest {
private final YangUtilsParserManager manager = new YangUtilsParserManager();
+ private static final String DATE_FORMAT = "yyyy-MM-dd";
+ private final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT);
/**
* Checks if include listener with ; is valid and updates the data
@@ -65,43 +68,43 @@
* and updates the data model tree.
*/
@Test
- public void processIncludeWithDate() throws IOException, ParserException {
+ public void processIncludeWithDate() throws IOException, ParserException, ParseException {
YangNode node = manager.getDataModel("src/test/resources/IncludeWithDate.yang");
// Checks for the sub module name in data model tree.
assertThat(((YangModule) node).getIncludeList().get(0).getSubModuleName(), is("itut"));
- assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is("2016-02-03"));
+ assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(simpleDateFormat.parse("2016-02-03")));
}
/**
* Checks if include has more than one occurrence.
*/
@Test
- public void processIncludeMultiInstance() throws IOException, ParserException {
+ public void processIncludeMultiInstance() throws IOException, ParserException, ParseException {
YangNode node = manager.getDataModel("src/test/resources/IncludeMultiInstance.yang");
// Checks for the sub module name in data model tree.
assertThat(((YangModule) node).getIncludeList().get(0).getSubModuleName(), is("itut"));
- assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is("2016-02-03"));
+ assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(simpleDateFormat.parse("2016-02-03")));
assertThat(((YangModule) node).getIncludeList().get(1).getSubModuleName(), is("sdn"));
- assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is("2014-02-03"));
+ assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is(simpleDateFormat.parse("2014-02-03")));
}
/**
* Checks if include and import can come in any order.
*/
@Test
- public void processIncludeImportAnyOrder() throws IOException, ParserException {
+ public void processIncludeImportAnyOrder() throws IOException, ParserException, ParseException {
YangNode node = manager.getDataModel("src/test/resources/IncludeImportAnyOrder.yang");
// Checks for the sub module name in data model tree.
assertThat(((YangModule) node).getIncludeList().get(0).getSubModuleName(), is("itut"));
- assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is("2016-02-03"));
+ assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(simpleDateFormat.parse("2016-02-03")));
assertThat(((YangModule) node).getIncludeList().get(1).getSubModuleName(), is("sdn"));
- assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is("2014-02-03"));
+ assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is(simpleDateFormat.parse("2014-02-03")));
}
/**
diff --git a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/MustListenerTest.java b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/MustListenerTest.java
new file mode 100644
index 0000000..2649d4d
--- /dev/null
+++ b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/MustListenerTest.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yangutils.parser.impl.listeners;
+
+import org.junit.Test;
+import org.onosproject.yangutils.datamodel.YangMust;
+import org.onosproject.yangutils.datamodel.YangModule;
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.YangContainer;
+import org.onosproject.yangutils.datamodel.YangLeaf;
+import org.onosproject.yangutils.parser.exceptions.ParserException;
+import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.ListIterator;
+
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Test cases for testing must listener functionality.
+ */
+public class MustListenerTest {
+
+ private final YangUtilsParserManager manager = new YangUtilsParserManager();
+
+ /**
+ * Checks if must listener updates the data model.
+ */
+ @Test
+ public void processContainerSubStatementMust() throws IOException, ParserException {
+ YangNode node = manager.getDataModel("src/test/resources/ContainerSubStatementMust.yang");
+
+ YangModule yangNode = (YangModule) node;
+ assertThat(yangNode.getName(), is("Test"));
+
+ YangContainer yangContainer = (YangContainer) yangNode.getChild();
+ assertThat(yangContainer.getName(), is("interface"));
+
+ String expectedConstraint = "ifType != 'ethernet' or (ifType = 'ethernet' and ifMTU = 1500)";
+ List<YangMust> mustConstraintList = yangContainer.getListOfMust();
+ assertThat(mustConstraintList.iterator().next().getConstraint(), is(expectedConstraint));
+ }
+
+ /**
+ * Checks if must listener updates the data model.
+ */
+ @Test
+ public void processLeafSubStatementMust() throws IOException, ParserException {
+ YangNode node = manager.getDataModel("src/test/resources/LeafSubStatementMust.yang");
+
+ YangModule yangNode = (YangModule) node;
+ assertThat(yangNode.getName(), is("Test"));
+
+ ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
+ YangLeaf leafInfo = leafIterator.next();
+
+ assertThat(leafInfo.getListOfMust().iterator().next().getConstraint(), is("ifType != 'ethernet'"));
+ }
+}
\ No newline at end of file
diff --git a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/RevisionDateListenerTest.java b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/RevisionDateListenerTest.java
index c12b377..8a00480 100644
--- a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/RevisionDateListenerTest.java
+++ b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/RevisionDateListenerTest.java
@@ -16,14 +16,15 @@
package org.onosproject.yangutils.parser.impl.listeners;
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import org.junit.Test;
import org.onosproject.yangutils.datamodel.YangModule;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.parser.exceptions.ParserException;
import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
-import java.io.IOException;
-
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
@@ -33,6 +34,8 @@
public class RevisionDateListenerTest {
private final YangUtilsParserManager manager = new YangUtilsParserManager();
+ private static final String DATE_FORMAT = "yyyy-MM-dd";
+ private final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT);
/**
* Checks if revision date syntax is correct in include.
@@ -56,26 +59,26 @@
* Checks revision date in quotes inside include.
*/
@Test
- public void processRevisionDateInQuotesAtInclude() throws IOException, ParserException {
+ public void processRevisionDateInQuotesAtInclude() throws IOException, ParserException, ParseException {
YangNode node = manager.getDataModel("src/test/resources/RevisionDateInQuotesAtInclude.yang");
// Checks for the version value in data model tree.
- assertThat(((YangModule) node).getImportList().get(0).getRevision(), is("2015-02-03"));
- assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is("2016-02-03"));
- assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is("2014-02-03"));
+ assertThat(((YangModule) node).getImportList().get(0).getRevision(), is(simpleDateFormat.parse("2015-02-03")));
+ assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(simpleDateFormat.parse("2016-02-03")));
+ assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is(simpleDateFormat.parse("2014-02-03")));
}
/**
* Checks revision date in quotes inside import.
*/
@Test
- public void processRevisionDateInQuotesAtImport() throws IOException, ParserException {
+ public void processRevisionDateInQuotesAtImport() throws IOException, ParserException, ParseException {
YangNode node = manager.getDataModel("src/test/resources/RevisionDateInQuotesAtImport.yang");
// Checks for the version value in data model tree.
- assertThat(((YangModule) node).getImportList().get(0).getRevision(), is("2015-02-03"));
- assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is("2016-02-03"));
- assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is("2014-02-03"));
+ assertThat(((YangModule) node).getImportList().get(0).getRevision(), is(simpleDateFormat.parse("2015-02-03")));
+ assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(simpleDateFormat.parse("2016-02-03")));
+ assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is(simpleDateFormat.parse("2014-02-03")));
}
/**
@@ -100,13 +103,13 @@
* Checks if revision date listener updates the data model tree.
*/
@Test
- public void processRevisionDateValidEntry() throws IOException, ParserException {
+ public void processRevisionDateValidEntry() throws IOException, ParserException, ParseException {
YangNode node = manager.getDataModel("src/test/resources/RevisionDateValidEntry.yang");
// Checks for the version value in data model tree.
- assertThat(((YangModule) node).getImportList().get(0).getRevision(), is("2015-02-03"));
- assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is("2016-02-03"));
- assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is("2014-02-03"));
+ assertThat(((YangModule) node).getImportList().get(0).getRevision(), is(simpleDateFormat.parse("2015-02-03")));
+ assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(simpleDateFormat.parse("2016-02-03")));
+ assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is(simpleDateFormat.parse("2014-02-03")));
}
}
\ No newline at end of file
diff --git a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/RevisionListenerTest.java b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/RevisionListenerTest.java
index a5eeb04..fbeacc8 100644
--- a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/RevisionListenerTest.java
+++ b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/RevisionListenerTest.java
@@ -16,14 +16,15 @@
package org.onosproject.yangutils.parser.impl.listeners;
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import org.junit.Test;
import org.onosproject.yangutils.datamodel.YangModule;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.parser.exceptions.ParserException;
import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
-import java.io.IOException;
-
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.IsNull.notNullValue;
import static org.junit.Assert.assertThat;
@@ -34,18 +35,19 @@
public class RevisionListenerTest {
private final YangUtilsParserManager manager = new YangUtilsParserManager();
+ private static final String DATE_FORMAT = "yyyy-MM-dd";
+ private final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT);
/**
* Checks if revision doesn't have optional parameters "revision and
* description".
*/
@Test
- public void processRevisionNoOptionalParameter() throws IOException, ParserException {
+ public void processRevisionNoOptionalParameter() throws IOException, ParserException, ParseException {
YangNode node = manager.getDataModel("src/test/resources/RevisionNoOptionalParameter.yang");
-
// Checks for the version value in data model tree.
- assertThat(((YangModule) node).getRevision().getRevDate(), is("2016-02-03"));
+ assertThat(((YangModule) node).getRevision().getRevDate(), is(simpleDateFormat.parse("2016-02-03")));
}
/**
@@ -75,4 +77,14 @@
YangNode node = manager.getDataModel("src/test/resources/RevisionAbsence.yang");
assertThat(((YangModule) node).getRevision().getRevDate(), notNullValue());
}
+
+ /**
+ * Checks latest date is stored when there are multiple revisions.
+ */
+ @Test
+ public void processWithMultipleRevision() throws IOException, ParserException, ParseException {
+
+ YangNode node = manager.getDataModel("src/test/resources/MultipleRevision.yang");
+ assertThat(((YangModule) node).getRevision().getRevDate(), is(simpleDateFormat.parse("2013-07-15")));
+ }
}
\ No newline at end of file
diff --git a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/WhenListenerTest.java b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/WhenListenerTest.java
new file mode 100644
index 0000000..fcba7c0
--- /dev/null
+++ b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/listeners/WhenListenerTest.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yangutils.parser.impl.listeners;
+
+import org.junit.Test;
+import org.onosproject.yangutils.datamodel.YangContainer;
+import org.onosproject.yangutils.datamodel.YangLeaf;
+import org.onosproject.yangutils.datamodel.YangList;
+import org.onosproject.yangutils.datamodel.YangModule;
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.parser.exceptions.ParserException;
+import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
+
+import java.io.IOException;
+import java.util.ListIterator;
+
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Test cases for testing when listener functionality.
+ */
+public class WhenListenerTest {
+
+ private final YangUtilsParserManager manager = new YangUtilsParserManager();
+
+ /**
+ * Checks if when listener updates the data model.
+ */
+ @Test
+ public void processContainerSubStatementWhen() throws IOException, ParserException {
+ YangNode node = manager.getDataModel("src/test/resources/ContainerSubStatementWhen.yang");
+
+ YangModule yangNode = (YangModule) node;
+ assertThat(yangNode.getName(), is("Test"));
+
+ YangList yangList = (YangList) yangNode.getChild();
+ assertThat(yangList.getName(), is("interface-switching-capability"));
+
+ YangContainer container = (YangContainer) yangList.getNextSibling();
+ assertThat(container.getName(), is("time-division-multiplex-capable"));
+
+ String expectedConstraint = "../switching-capability = 'TDM'";
+ assertThat(container.getWhen().getCondition(), is(expectedConstraint));
+ }
+
+ /**
+ * Checks if when listener updates the data model.
+ */
+ @Test
+ public void processLeafSubStatementWhen() throws IOException, ParserException {
+ YangNode node = manager.getDataModel("src/test/resources/LeafSubStatementWhen.yang");
+
+ YangModule yangNode = (YangModule) node;
+ assertThat(yangNode.getName(), is("Test"));
+
+ ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator();
+ YangLeaf leafInfo = leafIterator.next();
+
+ assertThat(leafInfo.getWhen().getCondition(), is("ifType != 'ethernet'"));
+ }
+}
\ No newline at end of file
diff --git a/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterFileIfFeatureLinkingTest.java b/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterFileIfFeatureLinkingTest.java
new file mode 100644
index 0000000..c4c501d
--- /dev/null
+++ b/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterFileIfFeatureLinkingTest.java
@@ -0,0 +1,454 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yangutils.plugin.manager;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.ListIterator;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.junit.Test;
+import org.onosproject.yangutils.datamodel.YangContainer;
+import org.onosproject.yangutils.datamodel.YangFeature;
+import org.onosproject.yangutils.datamodel.YangIfFeature;
+import org.onosproject.yangutils.datamodel.YangLeaf;
+import org.onosproject.yangutils.datamodel.YangModule;
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.linker.impl.YangLinkerManager;
+import org.onosproject.yangutils.parser.exceptions.ParserException;
+import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+import static org.onosproject.yangutils.datamodel.YangNodeType.MODULE_NODE;
+import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.INTRA_FILE_RESOLVED;
+import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.RESOLVED;
+
+/**
+ * Test cases for testing inter file linking.
+ */
+public class InterFileIfFeatureLinkingTest {
+
+ private final YangUtilManager utilManager = new YangUtilManager();
+ private final YangLinkerManager yangLinkerManager = new YangLinkerManager();
+
+ /**
+ * Checks inter file feature linking with imported file.
+ */
+ @Test
+ public void processFeatureInImportedFile()
+ throws IOException, ParserException, MojoExecutionException {
+
+ String searchDir = "src/test/resources/interfilefeatureimport";
+ utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
+ utilManager.parseYangFileInfoSet();
+ utilManager.createYangNodeSet();
+
+ YangNode selfNode = null;
+ YangNode refNode1 = null;
+ YangNode refNode2 = null;
+
+ // Create YANG node set
+ yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
+
+ // Add references to import list.
+ yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
+
+ // Carry out inter-file linking.
+ yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
+
+ for (YangNode rootNode : utilManager.getYangNodeSet()) {
+ if (rootNode.getName().equals("syslog1")) {
+ selfNode = rootNode;
+ } else if (rootNode.getName().equals("syslog2")) {
+ refNode1 = rootNode;
+ } else {
+ refNode2 = rootNode;
+ }
+ }
+ // Check whether the data model tree returned is of type module.
+ assertThat(selfNode instanceof YangModule, is(true));
+
+ // Check whether the node type is set properly to module.
+ assertThat(selfNode.getNodeType(), is(MODULE_NODE));
+
+ // Check whether the module name is set correctly.
+ YangModule yangNode = (YangModule) selfNode;
+ assertThat(yangNode.getName(), is("syslog1"));
+
+ ListIterator<YangFeature> featureIterator = yangNode.getFeatureList().listIterator();
+ YangFeature feature = featureIterator.next();
+ assertThat(feature.getName(), is("frr-te"));
+
+ YangIfFeature ifFeature = feature.getIfFeatureList().iterator().next();
+ assertThat(ifFeature.getName().getName(), is("p2mp-te"));
+ assertThat(ifFeature.getName().getPrefix(), is("sys2"));
+ assertThat(ifFeature.getResolvableStatus(), is(RESOLVED));
+
+ YangContainer container = (YangContainer) selfNode.getChild();
+ assertThat(container.getName(), is("speed"));
+ YangLeaf leaf = container.getListOfLeaf().iterator().next();
+ assertThat(leaf.getName(), is("local-storage-limit"));
+
+ List<YangIfFeature> ifFeatureList = leaf.getIfFeatureList();
+ ifFeature = ifFeatureList.iterator().next();
+ assertThat(ifFeature.getName().getName(), is("frr-te"));
+ assertThat(ifFeature.getResolvableStatus(), is(RESOLVED));
+ }
+
+ /**
+ * Checks inter file feature linking with included file.
+ */
+ @Test
+ public void processFeatureInIncludedFile()
+ throws IOException, ParserException, MojoExecutionException {
+
+ String searchDir = "src/test/resources/interfilefeatureinclude";
+ utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
+ utilManager.parseYangFileInfoSet();
+ utilManager.createYangNodeSet();
+
+ YangNode selfNode = null;
+ YangNode refNode1 = null;
+ YangNode refNode2 = null;
+
+ // Create YANG node set
+ yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
+
+ // Carry out linking of sub module with module.
+ yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangNodeSet());
+
+ // Add references to import list.
+ yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
+
+ // Add references to include list.
+ yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangNodeSet());
+
+ // Carry out inter-file linking.
+ yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
+
+ for (YangNode rootNode : utilManager.getYangNodeSet()) {
+ if (rootNode.getName().equals("syslog3")) {
+ selfNode = rootNode;
+ } else if (rootNode.getName().equals("syslog4")) {
+ refNode1 = rootNode;
+ } else {
+ refNode2 = rootNode;
+ }
+ }
+
+ // Check whether the data model tree returned is of type module.
+ assertThat(selfNode instanceof YangModule, is(true));
+
+ // Check whether the node type is set properly to module.
+ assertThat(selfNode.getNodeType(), is(MODULE_NODE));
+
+ // Check whether the module name is set correctly.
+ YangModule yangNode = (YangModule) selfNode;
+ assertThat(yangNode.getName(), is("syslog3"));
+
+ ListIterator<YangFeature> featureIterator = yangNode.getFeatureList().listIterator();
+ YangFeature feature = featureIterator.next();
+ assertThat(feature.getName(), is("frr-te"));
+
+ YangIfFeature ifFeature = feature.getIfFeatureList().iterator().next();
+ assertThat(ifFeature.getName().getName(), is("p2mp-te"));
+ assertThat(ifFeature.getResolvableStatus(), is(RESOLVED));
+
+ YangContainer container = (YangContainer) selfNode.getChild();
+ assertThat(container.getName(), is("speed"));
+ YangLeaf leaf = container.getListOfLeaf().iterator().next();
+ assertThat(leaf.getName(), is("local-storage-limit"));
+
+ List<YangIfFeature> ifFeatureList = leaf.getIfFeatureList();
+ ifFeature = ifFeatureList.iterator().next();
+ assertThat(ifFeature.getName().getName(), is("frr-te"));
+ assertThat(ifFeature.getResolvableStatus(), is(RESOLVED));
+ }
+
+ /**
+ * Checks inter file feature linking with imported file with dependency.
+ */
+ @Test
+ public void processFeatureInImportedFileWithDependency()
+ throws IOException, ParserException, MojoExecutionException {
+
+ String searchDir = "src/test/resources/interfilefeatureimportdependency";
+ utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
+ utilManager.parseYangFileInfoSet();
+ utilManager.createYangNodeSet();
+
+ YangNode selfNode = null;
+ YangNode refNode1 = null;
+ YangNode refNode2 = null;
+
+ // Create YANG node set
+ yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
+
+ // Add references to import list.
+ yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
+
+ // Carry out inter-file linking.
+ yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
+
+ for (YangNode rootNode : utilManager.getYangNodeSet()) {
+ if (rootNode.getName().equals("syslog1")) {
+ selfNode = rootNode;
+ } else if (rootNode.getName().equals("syslog2")) {
+ refNode1 = rootNode;
+ } else {
+ refNode2 = rootNode;
+ }
+ }
+
+ // Check whether the data model tree returned is of type module.
+ assertThat(selfNode instanceof YangModule, is(true));
+
+ // Check whether the node type is set properly to module.
+ assertThat(selfNode.getNodeType(), is(MODULE_NODE));
+
+ // Check whether the module name is set correctly.
+ YangModule yangNode = (YangModule) selfNode;
+ assertThat(yangNode.getName(), is("syslog1"));
+
+ ListIterator<YangFeature> featureIterator = yangNode.getFeatureList().listIterator();
+ YangFeature feature = featureIterator.next();
+ assertThat(feature.getName(), is("frr-te"));
+
+ YangIfFeature ifFeature = feature.getIfFeatureList().iterator().next();
+ assertThat(ifFeature.getName().getName(), is("p2mp-te"));
+ assertThat(ifFeature.getName().getPrefix(), is("sys2"));
+ assertThat(ifFeature.getResolvableStatus(), is(RESOLVED));
+
+ YangContainer container = (YangContainer) selfNode.getChild();
+ assertThat(container.getName(), is("speed"));
+ YangLeaf leaf = container.getListOfLeaf().iterator().next();
+ assertThat(leaf.getName(), is("local-storage-limit"));
+
+ List<YangIfFeature> ifFeatureList = leaf.getIfFeatureList();
+ ifFeature = ifFeatureList.iterator().next();
+ assertThat(ifFeature.getName().getName(), is("frr-te"));
+ assertThat(ifFeature.getResolvableStatus(), is(RESOLVED));
+ }
+
+ /**
+ * Checks inter file feature linking with included file with dependency.
+ */
+ @Test
+ public void processFeatureInIncludedFileWithDependency()
+ throws IOException, ParserException, MojoExecutionException {
+
+ String searchDir = "src/test/resources/interfilefeatureincludedependency";
+ utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
+ utilManager.parseYangFileInfoSet();
+ utilManager.createYangNodeSet();
+
+ YangNode selfNode = null;
+ YangNode refNode1 = null;
+ YangNode refNode2 = null;
+
+ // Create YANG node set
+ yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
+
+ // Carry out linking of sub module with module.
+ yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangNodeSet());
+
+ // Add references to include list.
+ yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangNodeSet());
+
+ // Add references to import list.
+ yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
+
+ // Carry out inter-file linking.
+ yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
+
+ for (YangNode rootNode : utilManager.getYangNodeSet()) {
+ if (rootNode.getName().equals("syslog1")) {
+ selfNode = rootNode;
+ } else if (rootNode.getName().equals("syslog2")) {
+ refNode1 = rootNode;
+ } else {
+ refNode2 = rootNode;
+ }
+ }
+
+ // Check whether the data model tree returned is of type module.
+ assertThat(selfNode instanceof YangModule, is(true));
+
+ // Check whether the node type is set properly to module.
+ assertThat(selfNode.getNodeType(), is(MODULE_NODE));
+
+ // Check whether the module name is set correctly.
+ YangModule yangNode = (YangModule) selfNode;
+ assertThat(yangNode.getName(), is("syslog1"));
+
+ ListIterator<YangFeature> featureIterator = yangNode.getFeatureList().listIterator();
+ YangFeature feature = featureIterator.next();
+ assertThat(feature.getName(), is("frr-te"));
+
+ YangIfFeature ifFeature = feature.getIfFeatureList().iterator().next();
+ assertThat(ifFeature.getName().getName(), is("p2mp-te"));
+ assertThat(ifFeature.getResolvableStatus(), is(RESOLVED));
+
+ YangContainer container = (YangContainer) selfNode.getChild();
+ assertThat(container.getName(), is("speed"));
+ YangLeaf leaf = container.getListOfLeaf().iterator().next();
+ assertThat(leaf.getName(), is("local-storage-limit"));
+
+ List<YangIfFeature> ifFeatureList = leaf.getIfFeatureList();
+ ifFeature = ifFeatureList.iterator().next();
+ assertThat(ifFeature.getName().getName(), is("frr-te"));
+ assertThat(ifFeature.getResolvableStatus(), is(RESOLVED));
+ }
+
+ /**
+ * Checks inter file feature linking with imported file with dependency
+ * feature undefined.
+ */
+ @Test
+ public void processFeatureInImportedFileWithDependencyUndefined()
+ throws IOException, ParserException, MojoExecutionException {
+
+ String searchDir = "src/test/resources/interfilefeatureimportdependencyUndefined";
+ utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
+ utilManager.parseYangFileInfoSet();
+ utilManager.createYangNodeSet();
+
+ YangNode selfNode = null;
+ YangNode refNode1 = null;
+ YangNode refNode2 = null;
+
+ // Create YANG node set
+ yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
+
+ // Add references to import list.
+ yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
+
+ // Carry out inter-file linking.
+ yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
+
+ for (YangNode rootNode : utilManager.getYangNodeSet()) {
+ if (rootNode.getName().equals("syslog1")) {
+ selfNode = rootNode;
+ } else if (rootNode.getName().equals("syslog2")) {
+ refNode1 = rootNode;
+ } else {
+ refNode2 = rootNode;
+ }
+ }
+
+ // Check whether the data model tree returned is of type module.
+ assertThat(selfNode instanceof YangModule, is(true));
+
+ // Check whether the node type is set properly to module.
+ assertThat(selfNode.getNodeType(), is(MODULE_NODE));
+
+ // Check whether the module name is set correctly.
+ YangModule yangNode = (YangModule) selfNode;
+ assertThat(yangNode.getName(), is("syslog1"));
+
+ ListIterator<YangFeature> featureIterator = yangNode.getFeatureList().listIterator();
+ YangFeature feature = featureIterator.next();
+ assertThat(feature.getName(), is("frr-te"));
+
+ YangIfFeature ifFeature = feature.getIfFeatureList().iterator().next();
+ assertThat(ifFeature.getName().getName(), is("p2mp-te"));
+ assertThat(ifFeature.getName().getPrefix(), is("sys2"));
+ assertThat(ifFeature.getResolvableStatus(), is(INTRA_FILE_RESOLVED));
+
+ YangContainer container = (YangContainer) selfNode.getChild();
+ assertThat(container.getName(), is("speed"));
+ YangLeaf leaf = container.getListOfLeaf().iterator().next();
+ assertThat(leaf.getName(), is("local-storage-limit"));
+
+ List<YangIfFeature> ifFeatureList = leaf.getIfFeatureList();
+ ifFeature = ifFeatureList.iterator().next();
+ assertThat(ifFeature.getName().getName(), is("frr-te"));
+ assertThat(ifFeature.getResolvableStatus(), is(INTRA_FILE_RESOLVED));
+ }
+
+ /**
+ * Checks inter file feature linking with included file with dependency
+ * feature undefined.
+ */
+ @Test
+ public void processFeatureInIncludedFileWithDependencyUndefined()
+ throws IOException, ParserException, MojoExecutionException {
+
+ String searchDir = "src/test/resources/interfilefeatureincludedependencyUndefined";
+ utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
+ utilManager.parseYangFileInfoSet();
+ utilManager.createYangNodeSet();
+
+ YangNode selfNode = null;
+ YangNode refNode1 = null;
+ YangNode refNode2 = null;
+
+ // Create YANG node set
+ yangLinkerManager.createYangNodeSet(utilManager.getYangNodeSet());
+
+ // Carry out linking of sub module with module.
+ yangLinkerManager.linkSubModulesToParentModule(utilManager.getYangNodeSet());
+
+ // Add references to import list.
+ yangLinkerManager.addRefToYangFilesImportList(utilManager.getYangNodeSet());
+
+ // Add references to include list.
+ yangLinkerManager.addRefToYangFilesIncludeList(utilManager.getYangNodeSet());
+
+ // Carry out inter-file linking.
+ yangLinkerManager.processInterFileLinking(utilManager.getYangNodeSet());
+
+ for (YangNode rootNode : utilManager.getYangNodeSet()) {
+ if (rootNode.getName().equals("syslog1")) {
+ selfNode = rootNode;
+ } else if (rootNode.getName().equals("syslog2")) {
+ refNode1 = rootNode;
+ } else {
+ refNode2 = rootNode;
+ }
+ }
+
+ // Check whether the data model tree returned is of type module.
+ assertThat(selfNode instanceof YangModule, is(true));
+
+ // Check whether the node type is set properly to module.
+ assertThat(selfNode.getNodeType(), is(MODULE_NODE));
+
+ // Check whether the module name is set correctly.
+ YangModule yangNode = (YangModule) selfNode;
+ assertThat(yangNode.getName(), is("syslog1"));
+
+ ListIterator<YangFeature> featureIterator = yangNode.getFeatureList().listIterator();
+ YangFeature feature = featureIterator.next();
+ assertThat(feature.getName(), is("frr-te"));
+
+ YangIfFeature ifFeature = feature.getIfFeatureList().iterator().next();
+ assertThat(ifFeature.getName().getName(), is("p2mp-te"));
+ assertThat(ifFeature.getResolvableStatus(), is(INTRA_FILE_RESOLVED));
+
+ YangContainer container = (YangContainer) selfNode.getChild();
+ assertThat(container.getName(), is("speed"));
+ YangLeaf leaf = container.getListOfLeaf().iterator().next();
+ assertThat(leaf.getName(), is("local-storage-limit"));
+
+ List<YangIfFeature> ifFeatureList = leaf.getIfFeatureList();
+ ifFeature = ifFeatureList.iterator().next();
+ assertThat(ifFeature.getName().getName(), is("frr-te"));
+ assertThat(ifFeature.getResolvableStatus(), is(INTRA_FILE_RESOLVED));
+ }
+}
+
diff --git a/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/IntraFileIfFeatureLinkingTest.java b/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/IntraFileIfFeatureLinkingTest.java
new file mode 100644
index 0000000..a44ae9a
--- /dev/null
+++ b/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/IntraFileIfFeatureLinkingTest.java
@@ -0,0 +1,220 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yangutils.plugin.manager;
+
+import java.io.IOException;
+import java.util.List;
+import org.junit.Test;
+import org.onosproject.yangutils.datamodel.YangContainer;
+import org.onosproject.yangutils.datamodel.YangFeature;
+import org.onosproject.yangutils.datamodel.YangIfFeature;
+import org.onosproject.yangutils.datamodel.YangLeaf;
+import org.onosproject.yangutils.datamodel.YangModule;
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.YangNodeType;
+import org.onosproject.yangutils.datamodel.YangSubModule;
+import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
+import org.onosproject.yangutils.parser.exceptions.ParserException;
+import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+
+/**
+ * Test cases for testing if-feature intra file linking.
+ */
+public class IntraFileIfFeatureLinkingTest {
+
+ private final YangUtilsParserManager manager = new YangUtilsParserManager();
+
+ /**
+ * Checks self resolution when feature defined in same file.
+ */
+ @Test
+ public void processSelfFileLinkingWithFeature()
+ throws IOException, ParserException {
+
+ YangNode node = manager
+ .getDataModel("src/test/resources/SelfFileLinkingWithFeature.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(YangNodeType.MODULE_NODE));
+
+ // Check whether the module name is set correctly.
+ YangModule yangNode = (YangModule) node;
+ assertThat(yangNode.getName(), is("syslog"));
+
+ List<YangFeature> featureList = yangNode.getFeatureList();
+ YangFeature feature = featureList.iterator().next();
+ assertThat(feature.getName(), is("local-storage"));
+
+ YangContainer container = (YangContainer) yangNode.getChild();
+ assertThat(container.getName(), is("speed"));
+
+ List<YangLeaf> listOfLeaf = container.getListOfLeaf();
+ YangLeaf leaf = listOfLeaf.iterator().next();
+ assertThat(leaf.getName(), is("local-storage-limit"));
+
+ List<YangIfFeature> ifFeatureList = leaf.getIfFeatureList();
+ YangIfFeature ifFeature = ifFeatureList.iterator().next();
+ assertThat(ifFeature.getName().getName(), is("local-storage"));
+ assertThat(ifFeature.getResolvableStatus(), is(ResolvableStatus.RESOLVED));
+ }
+
+ /**
+ * Checks self resolution when feature is undefined.
+ */
+ @Test
+ public void processSelfFileLinkingWithFeatureUndefined()
+ throws IOException, ParserException {
+
+ YangNode node = manager
+ .getDataModel("src/test/resources/SelfFileLinkingWithFeatureUndefined.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(YangNodeType.MODULE_NODE));
+
+ // Check whether the module name is set correctly.
+ YangModule yangNode = (YangModule) node;
+ assertThat(yangNode.getName(), is("syslog"));
+
+ YangContainer container = (YangContainer) yangNode.getChild();
+ assertThat(container.getName(), is("speed"));
+
+ List<YangLeaf> listOfLeaf = container.getListOfLeaf();
+ YangLeaf leaf = listOfLeaf.iterator().next();
+ assertThat(leaf.getName(), is("local-storage-limit"));
+
+ List<YangIfFeature> ifFeatureList = leaf.getIfFeatureList();
+ YangIfFeature ifFeature = ifFeatureList.iterator().next();
+ assertThat(ifFeature.getName().getName(), is("local-storage"));
+ assertThat(ifFeature.getResolvableStatus(), is(ResolvableStatus.INTRA_FILE_RESOLVED));
+ }
+
+ /**
+ * Checks self resolution of feature with multiple dependency.
+ */
+ @Test
+ public void processSelfFileLinkingWithMultipleDependency() throws IOException, ParserException {
+ YangNode node = manager
+ .getDataModel("src/test/resources/SelfFileLinkingWithMultipleDependency.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(YangNodeType.MODULE_NODE));
+
+ // Check whether the module name is set correctly.
+ YangModule yangNode = (YangModule) node;
+ assertThat(yangNode.getName(), is("syslog"));
+
+ List<YangFeature> featureList = yangNode.getFeatureList();
+ YangFeature feature = featureList.iterator().next();
+ assertThat(feature.getName(), is("p2mp-te"));
+
+ YangContainer container = (YangContainer) yangNode.getChild();
+ assertThat(container.getName(), is("speed"));
+
+ List<YangLeaf> listOfLeaf = container.getListOfLeaf();
+ YangLeaf leaf = listOfLeaf.iterator().next();
+ assertThat(leaf.getName(), is("local-storage-limit"));
+
+ List<YangIfFeature> ifFeatureList = leaf.getIfFeatureList();
+ YangIfFeature ifFeature = ifFeatureList.iterator().next();
+ assertThat(ifFeature.getName().getName(), is("frr-te"));
+ assertThat(ifFeature.getResolvableStatus(), is(ResolvableStatus.RESOLVED));
+ }
+
+ /**
+ * Checks self resolution of feature with multiple dependency undefined.
+ */
+ @Test
+ public void processSelfFileLinkingWithMultipleDependencyUnresolved() throws IOException, ParserException {
+ YangNode node = manager
+ .getDataModel("src/test/resources/SelfFileLinkingWithMultipleDependencyUnresolved.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(YangNodeType.MODULE_NODE));
+
+ // Check whether the module name is set correctly.
+ YangModule yangNode = (YangModule) node;
+ assertThat(yangNode.getName(), is("syslog"));
+
+ List<YangFeature> featureList = yangNode.getFeatureList();
+ YangFeature feature = featureList.iterator().next();
+ assertThat(feature.getName(), is("frr-te"));
+
+ YangContainer container = (YangContainer) yangNode.getChild();
+ assertThat(container.getName(), is("speed"));
+
+ List<YangLeaf> listOfLeaf = container.getListOfLeaf();
+ YangLeaf leaf = listOfLeaf.iterator().next();
+ assertThat(leaf.getName(), is("local-storage-limit"));
+
+ List<YangIfFeature> ifFeatureList = leaf.getIfFeatureList();
+ YangIfFeature ifFeature = ifFeatureList.iterator().next();
+ assertThat(ifFeature.getName().getName(), is("frr-te"));
+ assertThat(ifFeature.getResolvableStatus(), is(ResolvableStatus.INTRA_FILE_RESOLVED));
+ }
+
+ /**
+ * Checks self resolution when feature is defined in same file in submodule.
+ */
+ @Test
+ public void processSelfFileLinkingWithFeatureInSubModule()
+ throws IOException, ParserException {
+
+ YangNode node = manager
+ .getDataModel("src/test/resources/SelfFileLinkingWithFeatureInSubModule.yang");
+
+ // Check whether the data model tree returned is of type module.
+ assertThat((node instanceof YangSubModule), is(true));
+
+ // Check whether the node type is set properly to module.
+ assertThat(node.getNodeType(), is(YangNodeType.SUB_MODULE_NODE));
+
+ // Check whether the module name is set correctly.
+ YangSubModule yangNode = (YangSubModule) node;
+ assertThat(yangNode.getName(), is("syslog"));
+
+ List<YangFeature> featureList = yangNode.getFeatureList();
+ YangFeature feature = featureList.iterator().next();
+ assertThat(feature.getName(), is("local-storage"));
+
+ YangContainer container = (YangContainer) yangNode.getChild();
+ assertThat(container.getName(), is("speed"));
+
+ List<YangLeaf> listOfLeaf = container.getListOfLeaf();
+ YangLeaf leaf = listOfLeaf.iterator().next();
+ assertThat(leaf.getName(), is("local-storage-limit"));
+
+ List<YangIfFeature> ifFeatureList = leaf.getIfFeatureList();
+ YangIfFeature ifFeature = ifFeatureList.iterator().next();
+ assertThat(ifFeature.getName().getName(), is("local-storage"));
+ assertThat(ifFeature.getResolvableStatus(), is(ResolvableStatus.RESOLVED));
+ }
+}
diff --git a/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntaxTest.java b/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntaxTest.java
index 24f4904..bfde08d 100644
--- a/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntaxTest.java
+++ b/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntaxTest.java
@@ -20,6 +20,9 @@
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -104,6 +107,8 @@
private static final String WITH_SMALL = "test_this";
private static final String WITH_CAMEL_CASE_WITH_PREFIX = "123addPrefixTry";
private static final String WITH_CAMEL_CASE_WITH_PREFIX1 = "abc1234567890Ss1123G123Gaa";
+ private static final String DATE_FORMAT = "yyyy-MM-dd";
+ private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT);
private static YangToJavaNamingConflictUtil conflictResolver = new YangToJavaNamingConflictUtil();
private static final String BASE_DIR_PKG = "target.UnitTestCase.";
private static final String DIR_PATH = "exist1.exist2.exist3";
@@ -140,9 +145,10 @@
* Unit test for root package generation with revision complexity.
*/
@Test
- public void getRootPackageTest() {
+ public void getRootPackageTest() throws ParseException {
conflictResolver.setPrefixForIdentifier(null);
- String rootPackage = getRootPackage((byte) 1, CHILD_PACKAGE, DATE1, conflictResolver);
+ Date date = simpleDateFormat.parse(DATE1);
+ String rootPackage = getRootPackage((byte) 1, CHILD_PACKAGE, date, conflictResolver);
assertThat(rootPackage.equals(DEFAULT_BASE_PKG + PERIOD + VERSION_NUMBER
+ PERIOD + CHILD_WITH_PERIOD + PERIOD + DATE_WITH_REV1), is(true));
}
@@ -151,31 +157,34 @@
* Unit test for root package generation with invalid prefix.
*/
@Test
- public void getRootPackageWithInvalidPrefix() throws TranslatorException {
+ public void getRootPackageWithInvalidPrefix() throws TranslatorException, ParseException {
thrown.expect(TranslatorException.class);
thrown.expectMessage("The given prefix in pom.xml is invalid.");
conflictResolver.setPrefixForIdentifier(INVALID_PREFIX);
- String rootPackage1 = getRootPackage((byte) 1, INVALID_NAME_SPACE_FOR_INVALID_PREFIX, DATE1, conflictResolver);
+ Date date = simpleDateFormat.parse(DATE1);
+ String rootPackage1 = getRootPackage((byte) 1, INVALID_NAME_SPACE_FOR_INVALID_PREFIX, date,
+ conflictResolver);
}
/**
* Unit test for root package generation with special characters presence.
*/
@Test
- public void getRootPackageWithSpecialCharactersTest() {
+ public void getRootPackageWithSpecialCharactersTest() throws ParseException {
conflictResolver.setPrefixForIdentifier(VALID_PREFIX);
- String rootPackage = getRootPackage((byte) 1, INVALID_NAME_SPACE1, DATE1, conflictResolver);
+ Date date = simpleDateFormat.parse(DATE1);
+ String rootPackage = getRootPackage((byte) 1, INVALID_NAME_SPACE1, date, conflictResolver);
assertThat(rootPackage.equals(DEFAULT_BASE_PKG + PERIOD + VERSION_NUMBER
+ PERIOD + VALID_NAME_SPACE1 + PERIOD + DATE_WITH_REV1), is(true));
conflictResolver.setPrefixForIdentifier(null);
- String rootPackage1 = getRootPackage((byte) 1, INVALID_NAME_SPACE2, DATE1, conflictResolver);
+ String rootPackage1 = getRootPackage((byte) 1, INVALID_NAME_SPACE2, date, conflictResolver);
assertThat(rootPackage1.equals(DEFAULT_BASE_PKG + PERIOD + VERSION_NUMBER
+ PERIOD + VALID_NAME_SPACE2 + PERIOD + DATE_WITH_REV1), is(true));
- String rootPackage2 = getRootPackage((byte) 1, INVALID_NAME_SPACE3, DATE1, conflictResolver);
+ String rootPackage2 = getRootPackage((byte) 1, INVALID_NAME_SPACE3, date, conflictResolver);
assertThat(rootPackage2.equals(DEFAULT_BASE_PKG + PERIOD + VERSION_NUMBER
+ PERIOD + VALID_NAME_SPACE4 + PERIOD + DATE_WITH_REV1), is(true));
conflictResolver.setPrefixForIdentifier(INVALID_PREFIX1);
- String rootPackage3 = getRootPackage((byte) 1, INVALID_NAME_SPACE2, DATE1, conflictResolver);
+ String rootPackage3 = getRootPackage((byte) 1, INVALID_NAME_SPACE2, date, conflictResolver);
assertThat(rootPackage3.equals(DEFAULT_BASE_PKG + PERIOD + VERSION_NUMBER
+ PERIOD + VALID_NAME_SPACE3 + PERIOD + DATE_WITH_REV1), is(true));
@@ -185,8 +194,9 @@
* Unit test for root package generation without complexity in revision.
*/
@Test
- public void getRootPackageWithRevTest() {
- String rootPkgWithRev = getRootPackage((byte) 1, CHILD_PACKAGE, DATE2, null);
+ public void getRootPackageWithRevTest() throws ParseException {
+ Date date = simpleDateFormat.parse(DATE2);
+ String rootPkgWithRev = getRootPackage((byte) 1, CHILD_PACKAGE, date, null);
assertThat(rootPkgWithRev.equals(
DEFAULT_BASE_PKG + PERIOD + VERSION_NUMBER + PERIOD + CHILD_WITH_PERIOD + PERIOD + DATE_WITH_REV2),
is(true));