// 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.types;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Map;
import org.dtangler.javaengine.types.JavaClass;
import org.junit.Test;
public class JavaClassTest {
@Test
public void testGetName() {
assertEquals("MyClass", new JavaClass("MyClass").getName());
assertEquals("MyClass", new JavaClass("my.package.MyClass").getName());
}
@Test
public void testGetPackage() {
assertEquals("default", new JavaClass("MyClass").getPackage());
assertEquals("my.package", new JavaClass("my.package.MyClass")
.getPackage());
}
@Test
public void testEqualsAndHashCode() {
JavaClass same1 = new JavaClass("eg.foo.MyClass");
JavaClass same2 = new JavaClass("eg.foo.MyClass");
JavaClass different1 = new JavaClass("eg.bar.MyClass");
assertEquals(same1, same2);
assertEquals(same1.hashCode(), same2.hashCode());
assertFalse(same1.equals(different1));
assertFalse(same1.hashCode() == different1.hashCode());
assertFalse(same1.equals(null));
assertFalse(same1.equals("foo"));
}
@Test
public void testAddDependencyDoesNotAddTrivialDependencies() {
JavaClass clazz = new JavaClass("eg.foo.MyClass");
assertEquals(0, clazz.getDependencies().size());
clazz.addDependency("java.lang.Object");
clazz.addDependency("eg.bar.MyClass");
clazz.addDependency("eg.foo.MyClass");
assertEquals(1, clazz.getDependencies().size());
assertTrue(clazz.getDependencies().keySet().contains("eg.bar.MyClass"));
}
@Test
public void testAddMultipleDependenciesBetweenClasses() {
JavaClass clazz = new JavaClass("eg.foo.MyClass");
clazz.addDependency("eg.foo.OtherClass");
clazz.addDependency("eg.foo.OtherClass");
Map<String, Integer> dependencies = clazz.getDependencies();
assertEquals(1, dependencies.size());
for (Integer value : dependencies.values()) {
assertEquals(Integer.valueOf(2), value);
}
clazz.addDependency("eg.foo.YetAnotherClass");
assertEquals(2, dependencies.size());
}
}