Eliminate YangModelDependencyInfo
[yangtools.git] / parser / yang-parser-impl / src / test / java / org / opendaylight / yangtools / yang / parser / repo / DependencyResolverTest.java
index b931ea40ad929725c660be3ac8ca0043a7ca6e37..3e34069c7da01b88dfd0dba31d6a1edcb933248a 100644 (file)
@@ -7,62 +7,68 @@
  */
 package org.opendaylight.yangtools.yang.parser.repo;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
+import com.google.common.collect.ImmutableMultimap;
 import java.util.HashMap;
-import java.util.Map;
+import java.util.List;
 import org.junit.jupiter.api.Test;
+import org.opendaylight.yangtools.yang.common.UnresolvedQName.Unqualified;
+import org.opendaylight.yangtools.yang.model.api.source.SourceDependency.BelongsTo;
 import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
+import org.opendaylight.yangtools.yang.model.spi.source.SourceInfo;
 import org.opendaylight.yangtools.yang.model.spi.source.YangTextSource;
-import org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangModelDependencyInfo;
-import org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangModelDependencyInfo.ModuleDependencyInfo;
+import org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangIRSourceInfoExtractor;
 
-@Deprecated
-public class DependencyResolverTest {
+class DependencyResolverTest {
     @Test
     public void testModulesWithoutRevisionAndImport() throws Exception {
-        final var map = new HashMap<SourceIdentifier, YangModelDependencyInfo>();
-        addToMap(map, "/no-revision/imported.yang");
-        addToMap(map, "/no-revision/imported@2012-12-12.yang");
-        addToMap(map, "/no-revision/top@2012-10-10.yang");
-
-        final var resolved = RevisionDependencyResolver.create(map);
-        assertEquals(0, resolved.unresolvedSources().size());
-        assertEquals(0, resolved.unsatisfiedImports().size());
+        final var resolved = resolveResources("/no-revision/imported.yang", "/no-revision/imported@2012-12-12.yang",
+            "/no-revision/top@2012-10-10.yang");
+        assertThat(resolved.resolvedSources()).containsExactlyInAnyOrder(
+            new SourceIdentifier("top", "2012-10-10"),
+            new SourceIdentifier("imported"),
+            new SourceIdentifier("imported", "2012-12-12"));
+        assertEquals(List.of(), resolved.unresolvedSources());
+        assertEquals(ImmutableMultimap.of(), resolved.unsatisfiedImports());
     }
 
     @Test
     public void testSubmoduleNoModule() throws Exception {
-        final var map = new HashMap<SourceIdentifier, YangModelDependencyInfo>();
         // Subfoo does not have parent in reactor
-        addToMap(map, "/model/subfoo.yang");
-        addToMap(map, "/model/bar.yang");
-        addToMap(map, "/model/baz.yang");
+        final var resolved = resolveResources("/model/subfoo.yang", "/model/bar.yang", "/model/baz.yang");
+        assertThat(resolved.resolvedSources()).containsExactlyInAnyOrder(
+            new SourceIdentifier("bar", "2013-07-03"),
+            new SourceIdentifier("baz", "2013-02-27"));
+        assertThat(resolved.unresolvedSources()).containsExactlyInAnyOrder(
+            new SourceIdentifier("subfoo", "2013-02-27"));
 
-        final var resolved = RevisionDependencyResolver.create(map);
-        assertEquals(2, resolved.resolvedSources().size());
-        assertEquals(1, resolved.unresolvedSources().size());
-        assertEquals(0, resolved.unsatisfiedImports().size());
+        assertEquals(ImmutableMultimap.of(
+            new SourceIdentifier("subfoo", "2013-02-27"), new BelongsTo(Unqualified.of("foo"), Unqualified.of("f"))),
+            resolved.unsatisfiedImports());
     }
 
     @Test
     public void testSubmodule() throws Exception {
-        final var map = new HashMap<SourceIdentifier, YangModelDependencyInfo>();
-        addToMap(map, "/model/subfoo.yang");
-        addToMap(map, "/model/foo.yang");
-        addToMap(map, "/model/bar.yang");
-        addToMap(map, "/model/baz.yang");
-
-        final var resolved = RevisionDependencyResolver.create(map);
-        assertEquals(0, resolved.unresolvedSources().size());
-        assertEquals(0, resolved.unsatisfiedImports().size());
-        assertEquals(4, resolved.resolvedSources().size());
+        final var resolved = resolveResources("/model/subfoo.yang", "/model/foo.yang", "/model/bar.yang",
+            "/model/baz.yang");
+        assertThat(resolved.resolvedSources()).containsExactlyInAnyOrder(
+            new SourceIdentifier("bar", "2013-07-03"),
+            new SourceIdentifier("baz", "2013-02-27"));
+        assertThat(resolved.unresolvedSources()).containsExactlyInAnyOrder(
+            new SourceIdentifier("foo", "2013-02-27"),
+            new SourceIdentifier("subfoo", "2013-02-27"));
+        assertEquals(ImmutableMultimap.of(), resolved.unsatisfiedImports());
     }
 
-    private static void addToMap(final Map<SourceIdentifier, YangModelDependencyInfo> map, final String yangFileName)
-            throws Exception {
-        final var info = ModuleDependencyInfo.forYangText(YangTextSource.forResource(DependencyResolverTest.class,
-            yangFileName));
-        map.put(new SourceIdentifier(info.getName(), info.getFormattedRevision()), info);
+    private static RevisionDependencyResolver resolveResources(final String... resourceNames) throws Exception {
+        final var map = new HashMap<SourceIdentifier, SourceInfo>();
+        for (var resourceName : resourceNames) {
+            final var info = YangIRSourceInfoExtractor.forYangText(
+                YangTextSource.forResource(DependencyResolverTest.class, resourceName));
+            map.put(info.sourceId(), info);
+        }
+        return new RevisionDependencyResolver(map);
     }
 }