*/
package org.opendaylight.yangtools.yang.stmt;
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResource;
-
-import java.util.Collection;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
import java.util.Optional;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.common.Revision;
+import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
import org.opendaylight.yangtools.yang.common.XMLNamespace;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.ModuleImport;
-import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.RFC7950Reactors;
import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
-import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource;
-
-public class MoreRevisionsTest {
-
- private static final StatementStreamSource REVFILE = sourceForResource(
- "/semantic-statement-parser/revisions/more-revisions-test.yang");
-
- private static final StatementStreamSource TED_20130712 = sourceForResource(
- "/semantic-statement-parser/two-revisions/ted@2013-07-12.yang");
-
- private static final StatementStreamSource TED_20131021 = sourceForResource(
- "/semantic-statement-parser/two-revisions/ted@2013-10-21.yang");
-
- private static final StatementStreamSource IETF_TYPES = sourceForResource(
- "/ietf/ietf-inet-types@2010-09-24.yang");
- private static final StatementStreamSource NETWORK_TOPOLOGY_20130712 = sourceForResource(
- "/ietf/network-topology@2013-07-12.yang");
-
- private static final StatementStreamSource NETWORK_TOPOLOGY_20131021 = sourceForResource(
- "/ietf/network-topology@2013-10-21.yang");
-
- private static final StatementStreamSource ISIS_20130712 = sourceForResource(
- "/semantic-statement-parser/two-revisions/isis-topology@2013-07-12.yang");
-
- private static final StatementStreamSource ISIS_20131021 = sourceForResource(
- "/semantic-statement-parser/two-revisions/isis-topology@2013-10-21.yang");
-
- private static final StatementStreamSource L3_20130712 = sourceForResource(
- "/semantic-statement-parser/two-revisions/l3-unicast-igp-topology@2013-07-12.yang");
-
- private static final StatementStreamSource L3_20131021 = sourceForResource(
- "/semantic-statement-parser/two-revisions/l3-unicast-igp-topology@2013-10-21.yang");
+class MoreRevisionsTest extends AbstractYangTest {
+ private static final String TED_20130712 = "/semantic-statement-parser/two-revisions/ted@2013-07-12.yang";
+ private static final String TED_20131021 = "/semantic-statement-parser/two-revisions/ted@2013-10-21.yang";
+ private static final String IETF_TYPES = "/ietf/ietf-inet-types@2010-09-24.yang";
+ private static final String NETWORK_TOPOLOGY_20130712 = "/ietf/network-topology@2013-07-12.yang";
+ private static final String NETWORK_TOPOLOGY_20131021 = "/ietf/network-topology@2013-10-21.yang";
+ private static final String ISIS_20130712 =
+ "/semantic-statement-parser/two-revisions/isis-topology@2013-07-12.yang";
+ private static final String ISIS_20131021 =
+ "/semantic-statement-parser/two-revisions/isis-topology@2013-10-21.yang";
+ private static final String L3_20130712 =
+ "/semantic-statement-parser/two-revisions/l3-unicast-igp-topology@2013-07-12.yang";
+ private static final String L3_20131021 =
+ "/semantic-statement-parser/two-revisions/l3-unicast-igp-topology@2013-10-21.yang";
@Test
- public void readAndParseYangFileTest() throws ReactorException {
- EffectiveModelContext result = RFC7950Reactors.defaultReactor().newBuild().addSource(REVFILE).buildEffective();
- final Module moduleByName = result.getModules().iterator().next();
- assertEquals("2015-06-07", moduleByName.getQNameModule().getRevision().get().toString());
+ void readAndParseYangFileTest() {
+ final var result = assertEffectiveModel("/semantic-statement-parser/revisions/more-revisions-test.yang");
+ final var moduleByName = result.getModules().iterator().next();
+ assertEquals("2015-06-07", moduleByName.getQNameModule().getRevision().orElseThrow().toString());
}
@Test
- public void twoRevisionsTest() throws ReactorException {
- RFC7950Reactors.defaultReactor().newBuild().addSources(TED_20130712, TED_20131021, IETF_TYPES).buildEffective();
+ void twoRevisionsTest() {
+ assertEffectiveModel(TED_20130712, TED_20131021, IETF_TYPES);
}
@Test
- public void twoRevisionsTest2() throws ReactorException {
- final var context = RFC7950Reactors.defaultReactor().newBuild()
- .addSources(NETWORK_TOPOLOGY_20130712, NETWORK_TOPOLOGY_20131021, IETF_TYPES)
- .buildEffective();
+ void twoRevisionsTest2() {
+ final var context = assertEffectiveModel(NETWORK_TOPOLOGY_20130712, NETWORK_TOPOLOGY_20131021, IETF_TYPES);
assertEquals(3, context.getModuleStatements().size());
assertEquals(2, context.findModules("network-topology").size());
}
@Test
- public void moreRevisionsListKeyTest() throws ReactorException {
- RFC7950Reactors.defaultReactor().newBuild()
- .addSources(TED_20130712, TED_20131021, ISIS_20130712, ISIS_20131021, L3_20130712, L3_20131021)
- .addSources(IETF_TYPES,NETWORK_TOPOLOGY_20130712, NETWORK_TOPOLOGY_20131021)
- .buildEffective();
+ void moreRevisionsListKeyTest() throws ReactorException {
+ assertEffectiveModel(TED_20130712, TED_20131021, ISIS_20130712, ISIS_20131021, L3_20130712, L3_20131021,
+ IETF_TYPES, NETWORK_TOPOLOGY_20130712, NETWORK_TOPOLOGY_20131021);
}
@Test
- public void multipleRevisionsTest() throws Exception {
+ void multipleRevisionsTest() {
for (int i = 0; i < 100; i++) {
- assertNotNull(StmtTestUtils.parseYangSources("/semantic-statement-parser/multiple-revisions"));
+ assertEffectiveModelDir("/semantic-statement-parser/multiple-revisions");
}
}
@Test
- public void multipleRevisionsFullTest() throws Exception {
+ void multipleRevisionsFullTest() {
for (int i = 0; i < 100; i++) {
- EffectiveModelContext context =
- StmtTestUtils.parseYangSources("/semantic-statement-parser/multiple-revisions/full");
+ var context = assertEffectiveModelDir("/semantic-statement-parser/multiple-revisions/full");
assertEquals(6, context.getModules().size());
checkContentFullTest(context);
}
final QName dateTimeTypeDef20130516 = QName.create(yangTypes20130516, "date-and-time");
final QName dateTimeTypeDef20130715 = QName.create(yangTypes20130715, "date-and-time");
- Module yangTypesModule20100924 = context.findModule("ietf-yang-types", rev20100924).get();
- Module yangTypesModule20130516 = context.findModule("ietf-yang-types", rev20130516).get();
- Module yangTypesModule20130715 = context.findModule("ietf-yang-types", rev20130715).get();
+ var yangTypesModule20100924 = context.findModule("ietf-yang-types", rev20100924).orElseThrow();
+ var yangTypesModule20130516 = context.findModule("ietf-yang-types", rev20130516).orElseThrow();
+ var yangTypesModule20130715 = context.findModule("ietf-yang-types", rev20130715).orElseThrow();
assertTrue(findTypeDef(yangTypesModule20100924, dateTimeTypeDef20100924));
assertTrue(findTypeDef(yangTypesModule20130516, dateTimeTypeDef20130516));
assertTrue(findTypeDef(yangTypesModule20130715, dateTimeTypeDef20130715));
}
private static void checkInterfacesModuleFullTest(final EffectiveModelContext context, final Revision rev20100924,
- final QName dateTimeTypeDef20100924) {
- Revision rev20121115 = Revision.of("2012-11-15");
+ final QName dateTimeTypeDef20100924) {
+ var rev20121115 = Revision.of("2012-11-15");
- Module interfacesModule20121115 = context.findModule("ietf-interfaces", rev20121115).get();
- Collection<? extends ModuleImport> imports = interfacesModule20121115.getImports();
+ var interfacesModule20121115 = context.findModule("ietf-interfaces", rev20121115).orElseThrow();
+ var imports = interfacesModule20121115.getImports();
assertEquals(1, imports.size());
- ModuleImport interfacesImport = imports.iterator().next();
- assertEquals("ietf-yang-types", interfacesImport.getModuleName());
+ var interfacesImport = imports.iterator().next();
+ assertEquals(Unqualified.of("ietf-yang-types"), interfacesImport.getModuleName());
assertEquals(Optional.of(rev20100924), interfacesImport.getRevision());
}
private static void checkNetconfMonitoringModuleFullTest(final EffectiveModelContext context,
- final Revision rev20130715, final QName dateTimeTypeDef20130715) {
- Revision rev20101004 = Revision.of("2010-10-04");
+ final Revision rev20130715, final QName dateTimeTypeDef20130715) {
+ var rev20101004 = Revision.of("2010-10-04");
- Module monitoringModule20101004 = context.findModule("ietf-netconf-monitoring", rev20101004).get();
- Collection<? extends ModuleImport> imports = monitoringModule20101004.getImports();
+ var monitoringModule20101004 = context.findModule("ietf-netconf-monitoring", rev20101004).orElseThrow();
+ var imports = monitoringModule20101004.getImports();
assertEquals(2, imports.size());
- for (ModuleImport monitoringImport : imports) {
+ for (var monitoringImport : imports) {
if (monitoringImport.getModuleName().equals("ietf-yang-types")) {
assertEquals(Optional.of(rev20130715), monitoringImport.getRevision());
}
}
@Test
- public void multipleRevisionsSimpleTest() throws Exception {
+ void multipleRevisionsSimpleTest() {
for (int i = 0; i < 1000; i++) {
- EffectiveModelContext context = StmtTestUtils.parseYangSources(
- "/semantic-statement-parser/multiple-revisions/simple");
+ var context = assertEffectiveModelDir("/semantic-statement-parser/multiple-revisions/simple");
assertEquals(5, context.getModules().size());
checkContentSimpleTest(context);
}
final QName dateTimeTypeDef20130516 = QName.create(yangTypes20130516, "date-and-time");
final QName dateTimeTypeDef20130715 = QName.create(yangTypes20130715, "date-and-time");
- Module yangTypesModule20100924 = context.findModule("ietf-yang-types", rev20100924).get();
- Module yangTypesModule20130516 = context.findModule("ietf-yang-types", rev20130516).get();
- Module yangTypesModule20130715 = context.findModule("ietf-yang-types", rev20130715).get();
+ var yangTypesModule20100924 = context.findModule("ietf-yang-types", rev20100924).orElseThrow();
+ var yangTypesModule20130516 = context.findModule("ietf-yang-types", rev20130516).orElseThrow();
+ var yangTypesModule20130715 = context.findModule("ietf-yang-types", rev20130715).orElseThrow();
assertTrue(findTypeDef(yangTypesModule20100924, dateTimeTypeDef20100924));
assertTrue(findTypeDef(yangTypesModule20130516, dateTimeTypeDef20130516));
assertTrue(findTypeDef(yangTypesModule20130715, dateTimeTypeDef20130715));
}
private static void checkInterfacesModuleSimpleTest(final EffectiveModelContext context,
- final Revision rev20100924, final QName dateTimeTypeDef20100924) {
+ final Revision rev20100924, final QName dateTimeTypeDef20100924) {
XMLNamespace interfacesNS = XMLNamespace.of("urn:ietf:params:xml:ns:yang:ietf-interfaces");
Revision rev20121115 = Revision.of("2012-11-15");
final QNameModule interfacesNS20121115 = QNameModule.create(interfacesNS, rev20121115);
QName lastChange = QName.create(interfacesNS20121115, "last-change");
- Module interfacesModule20121115 = context.findModule("ietf-interfaces", rev20121115).get();
- DataSchemaNode leafLastChange = interfacesModule20121115.getDataChildByName(lastChange);
- assertThat(leafLastChange, instanceOf(LeafSchemaNode.class));
- QName lastChangeTypeQName = ((LeafSchemaNode) leafLastChange).getType().getQName();
+ var interfacesModule20121115 = context.findModule("ietf-interfaces", rev20121115).orElseThrow();
+ var leafLastChange = interfacesModule20121115.getDataChildByName(lastChange);
+ QName lastChangeTypeQName = assertInstanceOf(LeafSchemaNode.class, leafLastChange).getType().getQName();
assertEquals(dateTimeTypeDef20100924, lastChangeTypeQName);
- Collection<? extends ModuleImport> imports = interfacesModule20121115.getImports();
+ var imports = interfacesModule20121115.getImports();
assertEquals(1, imports.size());
- ModuleImport interfacesImport = imports.iterator().next();
- assertEquals("ietf-yang-types", interfacesImport.getModuleName());
+ var interfacesImport = imports.iterator().next();
+ assertEquals(Unqualified.of("ietf-yang-types"), interfacesImport.getModuleName());
assertEquals(Optional.of(rev20100924), interfacesImport.getRevision());
}
private static void checkNetconfMonitoringModuleSimpleTest(final EffectiveModelContext context,
- final Revision rev20130715, final QName dateTimeTypeDef20130715) {
+ final Revision rev20130715, final QName dateTimeTypeDef20130715) {
final XMLNamespace monitoringNS = XMLNamespace.of("urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring");
final QNameModule monitoring19700101 = QNameModule.create(monitoringNS);
QName lockedTime = QName.create(monitoring19700101, "locked-time");
- Module monitoringModule19700101 = context.findModule("ietf-netconf-monitoring").get();
- DataSchemaNode leafLockedTime = monitoringModule19700101.getDataChildByName(lockedTime);
- assertThat(leafLockedTime, instanceOf(LeafSchemaNode.class));
- QName lockedTimeTypeQName = ((LeafSchemaNode) leafLockedTime).getType().getQName();
+ var monitoringModule19700101 = context.findModule("ietf-netconf-monitoring").orElseThrow();
+ var leafLockedTime = monitoringModule19700101.getDataChildByName(lockedTime);
+ QName lockedTimeTypeQName = assertInstanceOf(LeafSchemaNode.class, leafLockedTime).getType().getQName();
assertEquals(dateTimeTypeDef20130715, lockedTimeTypeQName);
- Collection<? extends ModuleImport> imports = monitoringModule19700101.getImports();
+ var imports = monitoringModule19700101.getImports();
assertEquals(1, imports.size());
- ModuleImport monitoringImport = imports.iterator().next();
- assertEquals("ietf-yang-types", monitoringImport.getModuleName());
+ var monitoringImport = imports.iterator().next();
+ assertEquals(Unqualified.of("ietf-yang-types"), monitoringImport.getModuleName());
assertEquals(Optional.of(rev20130715), monitoringImport.getRevision());
}
private static boolean findTypeDef(final Module module, final QName typedef) {
- for (TypeDefinition<?> typeDefinition : module.getTypeDefinitions()) {
+ for (var typeDefinition : module.getTypeDefinitions()) {
if (typeDefinition.getQName().equals(typedef)) {
return true;
}
}
@Test
- public void nodeTest() throws Exception {
- EffectiveModelContext context = StmtTestUtils.parseYangSources(
- "/semantic-statement-parser/multiple-revisions/node-test");
+ void nodeTest() {
+ final var context = assertEffectiveModelDir("/semantic-statement-parser/multiple-revisions/node-test");
QName root = QName.create("foo", "2016-04-06", "foo-root");
QName container20160404 = QName.create("foo", "2016-04-06", "con20160404");
- DataSchemaNode findDataSchemaNode = context.findDataTreeChild(root, container20160404).orElse(null);
- assertThat(findDataSchemaNode, instanceOf(ContainerSchemaNode.class));
+ assertInstanceOf(ContainerSchemaNode.class, context.findDataTreeChild(root, container20160404).orElse(null));
QName container20160405 = QName.create("foo", "2016-04-06", "con20160405");
- findDataSchemaNode = context.findDataTreeChild(root, container20160405).orElse(null);
- assertThat(findDataSchemaNode, instanceOf(ContainerSchemaNode.class));
+ assertInstanceOf(ContainerSchemaNode.class, context.findDataTreeChild(root, container20160405).orElse(null));
QName container20160406 = QName.create("foo", "2016-04-06", "con20160406");
assertEquals(Optional.empty(), context.findDataTreeChild(root, container20160406));