*/
package org.opendaylight.yangtools.yang.parser.util;
+import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.core.AnyOf.anyOf;
-import static org.hamcrest.core.Is.is;
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
-import static org.junit.matchers.JUnitMatchers.containsString;
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import com.google.common.collect.Sets;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.ModuleImport;
import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleBuilder;
-import org.opendaylight.yangtools.yang.parser.impl.YangParserListenerImpl;
import org.opendaylight.yangtools.yang.parser.util.ModuleDependencySort.ModuleNodeImpl;
import org.opendaylight.yangtools.yang.parser.util.TopologicalSort.Edge;
-import com.google.common.collect.Sets;
-
public class ModuleDependencySortTest {
-
- private ModuleBuilder a = mockModuleBuilder("a", null);
- private ModuleBuilder b = mockModuleBuilder("b", null);
- private ModuleBuilder c = mockModuleBuilder("c", null);
- private ModuleBuilder d = mockModuleBuilder("d", null);
+ private final DateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
+ private final ModuleBuilder a = mockModuleBuilder("a", null);
+ private final ModuleBuilder b = mockModuleBuilder("b", null);
+ private final ModuleBuilder c = mockModuleBuilder("c", null);
+ private final ModuleBuilder d = mockModuleBuilder("d", null);
@Test
public void testValid() throws Exception {
List<ModuleBuilder> l = ModuleDependencySort.sort(builders);
- assertDependencyGraph(ModuleDependencySort.createModuleGraph(Arrays.asList(builders)));
+ assertDependencyGraph(ModuleDependencySort.createModuleGraph(ModuleOrModuleBuilder.fromAll(
+ Collections.<Module>emptySet(), Arrays.asList(builders))));
- @SuppressWarnings("unchecked")
- Matcher<String> cOrD = anyOf(is(c.getName()), is(d.getName()));
+ Matcher<String> cOrD = anyOf(equalTo(c.getName()), equalTo(d.getName()));
assertThat(l.get(0).getName(), cOrD);
assertThat(l.get(1).getName(), cOrD);
- assertThat(l.get(2).getName(), is(b.getName()));
- assertThat(l.get(3).getName(), is(a.getName()));
+ assertEquals(b.getName(), l.get(2).getName());
+ assertEquals(a.getName(), l.get(3).getName());
}
@Test
List<Module> l = ModuleDependencySort.sort(builders);
- assertThat(l.get(0).getName(), is(c.getName()));
- assertThat(l.get(1).getName(), is(b.getName()));
- assertThat(l.get(2).getName(), is(a.getName()));
+ assertEquals(c.getName(), l.get(0).getName());
+ assertEquals(b.getName(), l.get(1).getName());
+ assertEquals(a.getName(), l.get(2).getName());
}
@Test(expected = YangValidationException.class)
ModuleDependencySort.sort(builders);
}
- @Test(expected = YangValidationException.class)
- public void testImportTwiceDifferentRevision() throws Exception {
- Date date1 = new Date(463846463486L);
- Date date2 = new Date(364896446683L);
- b = mockModuleBuilder("b", date1);
- ModuleBuilder b2 = mockModuleBuilder("b", date2);
-
- mockDependency(a, b);
- mockDependency(c, b2);
-
- ModuleBuilder[] builders = new ModuleBuilder[] { a, c, b, b2 };
- try {
- ModuleDependencySort.sort(builders);
- } catch (YangValidationException e) {
- assertThat(e.getMessage(), containsString("Module:b imported twice with different revisions:"
- + YangParserListenerImpl.SIMPLE_DATE_FORMAT.format(date1) + ", "
- + YangParserListenerImpl.SIMPLE_DATE_FORMAT.format(date2)));
- throw e;
- }
- }
-
@Test
public void testModuleTwiceWithDifferentRevs() throws Exception {
ModuleBuilder a2 = mockModuleBuilder("a", new Date());
try {
ModuleDependencySort.sort(builders);
} catch (YangValidationException e) {
- assertThat(e.getMessage(), containsString("Module:a with revision:"
- + YangParserListenerImpl.SIMPLE_DATE_FORMAT.format(rev) + " declared twice"));
+ assertThat(e.getMessage(), containsString("Module:a with revision:" + SIMPLE_DATE_FORMAT.format(rev)
+ + " declared twice"));
throw e;
}
}
- private void assertDependencyGraph(Map<String, Map<Date, ModuleNodeImpl>> moduleGraph) {
+ private void assertDependencyGraph(final Map<String, Map<Date, ModuleNodeImpl>> moduleGraph) {
for (Entry<String, Map<Date, ModuleNodeImpl>> node : moduleGraph.entrySet()) {
String name = node.getKey();
}
}
- private void assertEdgeCount(Set<Edge> inEdges, int i, Set<Edge> outEdges, int j) {
- assertThat(inEdges.size(), is(i));
- assertThat(outEdges.size(), is(j));
+ private void assertEdgeCount(final Set<Edge> inEdges, final int i, final Set<Edge> outEdges, final int j) {
+ assertEquals(i, inEdges.size());
+ assertEquals(j, outEdges.size());
}
- private void mockDependency(ModuleBuilder a, ModuleBuilder b) {
+ private void mockDependency(final ModuleBuilder a, final ModuleBuilder b) {
ModuleImport imprt = mock(ModuleImport.class);
doReturn(b.getName()).when(imprt).getModuleName();
+ doReturn(b.getName()).when(imprt).getPrefix();
doReturn(b.getRevision()).when(imprt).getRevision();
- a.getModuleImports().add(imprt);
+ a.getImports().put(b.getName(), imprt);
}
- private void mockDependency(Module a, Module b) {
+ private void mockDependency(final Module a, final Module b) {
ModuleImport imprt = mock(ModuleImport.class);
doReturn(b.getName()).when(imprt).getModuleName();
doReturn(b.getRevision()).when(imprt).getRevision();
a.getImports().add(imprt);
}
- private ModuleBuilder mockModuleBuilder(String name, Date rev) {
+ private ModuleBuilder mockModuleBuilder(final String name, final Date rev) {
ModuleBuilder a = mock(ModuleBuilder.class);
doReturn(name).when(a).getName();
- Set<ModuleImport> set = Sets.newHashSet();
- doReturn(set).when(a).getModuleImports();
+ Map<String, ModuleImport> map = new HashMap<>();
+ doReturn(map).when(a).getImports();
if (rev != null) {
doReturn(rev).when(a).getRevision();
}
return a;
}
- private Module mockModule(String name, Date rev) {
+ private Module mockModule(final String name, final Date rev) {
Module a = mock(Module.class);
doReturn(name).when(a).getName();
Set<ModuleImport> set = Sets.newHashSet();