// This product is provided under the terms of EPL (Eclipse Public License)
// version 1.0.
//
// The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php
package org.dtangler.javaengine.dependencyengine;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.HashSet;
import java.util.Set;
import org.dtangler.core.dependencies.Dependable;
import org.dtangler.core.dependencies.DependencyGraph;
import org.dtangler.javaengine.dependencyengine.ClassDependencies;
import org.dtangler.javaengine.types.JavaClass;
import org.dtangler.javaengine.types.JavaScope;
import org.junit.Before;
import org.junit.Test;
public class PackageDependenciesTest {
private Set<JavaClass> classes;
private ClassDependencies engine;
private JavaClass foo;
private JavaClass fooImpl;
private JavaClass someUtil;
private JavaClass anotherUtil;
@Before
public void setUp() {
classes = new HashSet();
foo = createClass("eg.foo.Foo", new String[] {});
fooImpl = createClass("eg.fooimpl.FooImpl", "eg.foo.Foo",
"eg.util.SomeUtil");
someUtil = createClass("eg.util.SomeUtil", "eg.util.AnotherUtil");
anotherUtil = createClass("eg.util.AnotherUtil", new String[] {});
classes.add(foo);
classes.add(fooImpl);
classes.add(someUtil);
classes.add(anotherUtil);
engine = new ClassDependencies(classes);
}
@Test
public void testGetPackageDependencies() {
DependencyGraph deps = engine.getDependencies().getDependencyGraph(
JavaScope.packages);
Dependable fooPkg = engine.getPackageByName("eg.foo");
Dependable fooImplPkg = engine.getPackageByName("eg.fooimpl");
Dependable utilPkg = engine.getPackageByName("eg.util");
assertTrue(deps.getDependencies(fooPkg).isEmpty());
assertEquals(2, deps.getDependencies(fooImplPkg).size());
assertTrue(deps.getDependencies(fooImplPkg).contains(fooPkg));
assertTrue(deps.getDependencies(fooImplPkg).contains(utilPkg));
assertTrue(deps.getDependencies(utilPkg).isEmpty());
}
@Test
public void testGetPackageContentCount() {
assertEquals(1, engine.getPackageByName("eg.foo").getContentCount());
assertEquals(1, engine.getPackageByName("eg.fooimpl").getContentCount());
assertEquals(2, engine.getPackageByName("eg.util").getContentCount());
}
private JavaClass createClass(String className, String... dependencies) {
JavaClass clazz = new JavaClass(className);
for (String dependency : dependencies)
clazz.addDependency(dependency);
return clazz;
}
}