public void testGetImplementorDescriptors() throws Exception { ClassDescriptor cld1 = makeInterface("package.name.Interface1"); ClassDescriptor cld2 = makeClass("package.name.Class2", "package.name.Interface1"); ClassDescriptor cld3 = makeClass("package.name.Class3", "package.name.Interface1"); ClassDescriptor cld4 = makeClass("package.name.Class4", "package.name.Class2"); new Model("test2", "package.name", Arrays.asList(cld1, cld2, cld3, cld4)); // getImplementorDescriptrors should just return direct implementations (cld2, cld3) Set<ClassDescriptor> impls = new HashSet<ClassDescriptor>(Arrays.asList(cld2, cld3)); assertEquals(impls, cld1.getSubDescriptors()); }
public void testMultipleSuperClass() throws Exception { ClassDescriptor superCld1 = makeClass("package.name.superCld1"); ClassDescriptor superCld2 = makeClass("package.name.superCld2"); ClassDescriptor cld = makeClass("package.name.cld", "package.name.superCld1 package.name.superCld2"); try { new Model("test", "package.name", Arrays.asList(cld, superCld1, superCld2)); fail("Expected: MetaDataException"); } catch (MetaDataException e) { } }
public void testImplementsNotExists() throws MetaDataException { // construct class implementing Interface3 which does not exist ClassDescriptor int1 = makeInterface("package.name.Interface1"); ClassDescriptor int2 = makeInterface("package.name.Interface2"); ClassDescriptor cld = makeClassDescriptor( "package.name.Class1", "package.name.Interface1 package.name.Interface2 package.name.Interface3", false); try { new Model("test", "package.name", Arrays.asList(int1, int2, cld)); fail("Expected MetaDataException"); } catch (MetaDataException e) { } }
public void testSuperClassWrongType() throws Exception { // test where superclass is not an interface, subclass is ClassDescriptor superCld = makeClass("package.name.superCld"); ClassDescriptor interface1 = makeInterface("package.name.interface1", "package.name.superCld"); try { new Model("test", "package.name", Arrays.asList(interface1, superCld)); fail("Expected MetaDataException"); } catch (MetaDataException e) { } }
public void testFieldDescriptorByName() throws Exception { ClassDescriptor cld = new ClassDescriptor( "package.name.Class1", null, false, getAttributes(), getReferences(), getCollections()); cld.setAllFieldDescriptors(); assertNotNull(cld.getFieldDescriptorByName("atd1")); assertNotNull(cld.getFieldDescriptorByName("atd2")); assertNotNull(cld.getFieldDescriptorByName("rfd1")); assertNotNull(cld.getFieldDescriptorByName("rfd2")); assertNotNull(cld.getFieldDescriptorByName("cld1")); assertNotNull(cld.getFieldDescriptorByName("cld2")); }
public void testEquals() throws Exception { ClassDescriptor col1 = makeClass("class1"); ClassDescriptor col2 = makeClass("class1"); ClassDescriptor col3 = makeClass("class1", "Super"); ClassDescriptor col4 = makeClass("class1", "Super"); ClassDescriptor col5 = makeClass("class1", "Interface"); ClassDescriptor col6 = makeClass("class1"); ClassDescriptor col7 = new ClassDescriptor("class1", null, true, Collections.singleton(new AttributeDescriptor("field", "int")), noRefs, noColls); assertEquals(col1, col2); assertEquals(col1.hashCode(), col2.hashCode()); assertFalse(col1.equals(col3)); assertEquals(col3, col4); assertEquals(col3.hashCode(), col4.hashCode()); assertFalse(col1.equals(col5)); assertTrue(col1.equals(col6)); assertFalse(col1.equals(col7)); }
public void testGetSubDescriptors() throws Exception { ClassDescriptor cld1 = makeClass("package.name.Class1"); ClassDescriptor cld2 = makeClass("package.name.Class2", "package.name.Class1"); ClassDescriptor cld3 = makeClass("package.name.Class3", "package.name.Class1"); ClassDescriptor cld4 = makeClass("package.name.Class4", "package.name.Class2"); new Model("test2", "package.name", Arrays.asList(cld1, cld2, cld3, cld4)); // getSubDescriptrors should just return direct subclasses (cld2, cld3) Set<ClassDescriptor> subs = new HashSet<ClassDescriptor>(Arrays.asList(cld2, cld3)); assertEquals(subs, cld1.getSubDescriptors()); }
public void testInterfaceDescriptors() throws Exception { ClassDescriptor int1 = makeInterface("package.name.Interface1"); ClassDescriptor int2 = makeInterface("package.name.Interface2"); ClassDescriptor cld = makeClassDescriptor("package.name.Class1", "package.name.Interface1 package.name.Interface2", false); new Model("test", "package.name", Arrays.asList(int1, int2, cld)); Set<ClassDescriptor> interfaces = new HashSet<ClassDescriptor>(Arrays.asList(int1, int2)); assertEquals(interfaces, cld.getSuperDescriptors()); }
public void testClassInheritanceCompare2() throws Exception { String class1Name = "org.intermine.model.testmodel.Class1"; String class2Name = "org.intermine.model.testmodel.Class2"; String class3Name = "org.intermine.model.testmodel.Class3"; ClassDescriptor c1 = makeInterface(class1Name, class2Name + " " + class3Name); ClassDescriptor c2 = makeInterface(class2Name, class3Name); ClassDescriptor c3 = makeInterface(class3Name); Model model = new Model("model", "org.intermine.model.testmodel", Arrays.asList(c1, c2, c3)); int comp = ClassDescriptor.classInheritanceCompare(model, class1Name, class2Name); assertEquals(1, comp); comp = ClassDescriptor.classInheritanceCompare(model, class2Name, class1Name); assertEquals(-1, comp); comp = ClassDescriptor.classInheritanceCompare(model, class1Name, class3Name); assertEquals(1, comp); comp = ClassDescriptor.classInheritanceCompare(model, class2Name, class3Name); assertEquals(1, comp); }
public void testInterfaceNotImplemented() throws MetaDataException { ClassDescriptor cld1 = makeInterface("package.name.Interface1"); Model model = new Model("model", "package.name", Collections.singleton(cld1)); assertTrue(model.getClassDescriptorByName(cld1.getName()).getSubDescriptors().size() == 0); }
private ClassDescriptor makeClass(String name, String supers) { return makeClassDescriptor(name, supers, false); } private ClassDescriptor makeInterface(String name) {
public void testConstructNameNull() { try { new ClassDescriptor("", null, false, noAttrs, noRefs, noColls); fail("Expected: IllegalArgumentException"); } catch (IllegalArgumentException e) { } }
public void testMultiInheritanceLegal() throws Exception { AttributeDescriptor atd1 = new AttributeDescriptor("atd1", "int"); AttributeDescriptor atd2 = new AttributeDescriptor("atd1", "int"); Set<AttributeDescriptor> atds1 = Collections.singleton(atd1); Set<AttributeDescriptor> atds2 = Collections.singleton(atd2); ClassDescriptor cld1 = new ClassDescriptor("package.name.Class1", null, true, atds1, noRefs, noColls); ClassDescriptor cld2 = new ClassDescriptor("package.name.Class2", null, true, atds2, noRefs, noColls); ClassDescriptor cld3 = makeClass("package.name.Class3", "package.name.Class1 package.name.Class2"); new Model("model", "package.name", Arrays.asList(cld1, cld2, cld3)); }
public void testGetAllAttributeDescriptors() throws Exception { // three superclass levels with one attribute each, getAllAttributeDescriptors on cld3 should return all 3 AttributeDescriptor atb1 = new AttributeDescriptor("att1", "java.lang.String"); ClassDescriptor cld1 = new ClassDescriptor("package.name.Class1", null, false, Collections.singleton(atb1), noRefs, noColls); AttributeDescriptor atb2 = new AttributeDescriptor("att2", "java.lang.String"); ClassDescriptor cld2 = new ClassDescriptor("package.name.Class2", "package.name.Class1", false, Collections.singleton(atb2), noRefs, noColls); AttributeDescriptor atb3 = new AttributeDescriptor("att3", "java.lang.String"); ClassDescriptor cld3 = new ClassDescriptor("package.name.Class3", "package.name.Class2", false, Collections.singleton(atb3), noRefs, noColls); new Model("test", "package.name", Arrays.asList(cld1, cld2, cld3)); FieldDescriptor id = cld3.getFieldDescriptorByName("id"); Set<FieldDescriptor> atts = new HashSet<FieldDescriptor>(Arrays.asList(atb3, atb2, atb1, id)); assertEquals(atts, cld3.getAllAttributeDescriptors()); }
public void testSuperClassExists() throws MetaDataException { ClassDescriptor superCld = makeClass("package.name.superCld"); ClassDescriptor cld = makeClass("package.name.cld", "package.name.superCld"); new Model("test", "package.name", Arrays.asList(cld, superCld)); assertEquals(superCld, cld.getSuperclassDescriptor()); }
public void testFindSuperClassNames() throws Exception { String class1Name = "org.intermine.model.testmodel.Class1"; String class3Name = "org.intermine.model.testmodel.Class3"; String class2Name = "org.intermine.model.testmodel.Class2"; String class4Name = "org.intermine.model.testmodel.Class4"; ClassDescriptor c1 = makeInterface(class1Name, class3Name); ClassDescriptor c2 = makeInterface(class2Name, class3Name); ClassDescriptor c3 = makeInterface(class3Name, class4Name); ClassDescriptor c4 = makeInterface(class4Name); Model model = new Model("model", "org.intermine.model.testmodel", Arrays.asList(c1, c2, c3, c4)); Set<String> supers = new LinkedHashSet<String>(); ClassDescriptor.findSuperClassNames(model, class1Name, supers); assertEquals(2, supers.size()); Set<String> expected = new LinkedHashSet<String>(); expected.add(class3Name); expected.add(class4Name); assertEquals(expected, supers); supers = new LinkedHashSet<String>(); ClassDescriptor.findSuperClassNames(model, class2Name, supers); assertEquals(2, supers.size()); supers = new LinkedHashSet<String>(); ClassDescriptor.findSuperClassNames(model, class3Name, supers); assertEquals(1, supers.size()); supers = new LinkedHashSet<String>(); ClassDescriptor.findSuperClassNames(model, class4Name, supers); assertEquals(0, supers.size()); }
private ClassDescriptor makeInterface(String name) { return makeClassDescriptor(name, null, true); } private ClassDescriptor makeInterface(String name, String supers) {
public void testSuperClassNotExists() throws MetaDataException { ClassDescriptor superCld = makeClass("package.name.superCld"); ClassDescriptor cld = makeClass("package.name.cld", "package.name.anotherCld"); try { new Model("test", "package.name", Arrays.asList(cld, superCld)); fail("Expected MetaDataException"); } catch (MetaDataException e) { } }
public void testToString() throws Exception { ClassDescriptor cld1 = makeInterface("package.name.Interface1"); ClassDescriptor cld2 = makeClass("package.name.Class2"); ClassDescriptor cld3 = makeClass("package.name.Class3", "package.name.Class2 package.name.Interface1"); String expected = "<class name=\"Class3\" extends=\"Class2 Interface1\" is-interface=\"false\"></class>" + ENDL; new Model("test", "package.name", Arrays.asList(cld1, cld2, cld3)); assertEquals(expected, cld3.toString()); }
public void testGetAllSuperDescriptors() throws Exception { ClassDescriptor cld1 = makeClass("package.name.Class1"); ClassDescriptor cld2 = makeClass("package.name.Class2", "package.name.Class1"); ClassDescriptor cld3 = makeClass("package.name.Class3", "package.name.Class1"); ClassDescriptor cld4 = makeClass("package.name.Class4", "package.name.Class2"); new Model("test2", "package.name", Arrays.asList(cld1, cld2, cld3, cld4)); // getAllSuperDescriptors of Class4 should be Class2 and Class1 Set<ClassDescriptor> supers = new HashSet<ClassDescriptor>(Arrays.asList(cld2, cld1)); assertEquals(supers, cld4.getAllSuperDescriptors()); supers = new HashSet<ClassDescriptor>(); assertEquals(supers, cld1.getAllSuperDescriptors()); supers = Collections.singleton(cld1); assertEquals(supers, cld2.getAllSuperDescriptors()); }