package unify; import org.junit.Assert; import org.junit.Test; import de.dhbwstuttgart.typeinference.unify.interfaces.IFiniteClosure; import de.dhbwstuttgart.typeinference.unify.model.MPair; import de.dhbwstuttgart.typeinference.unify.model.MPair.PairOperator; import de.dhbwstuttgart.typeinference.unify.model.FiniteClosure; import de.dhbwstuttgart.typeinference.unify.model.UnifyType; public class FiniteClosureTest extends FiniteClosure { @Test public void testMatch() { TypeFactory tf = new TypeFactory(); UnifyType a = tf.getPlaceholderType("a"); UnifyType b = tf.getPlaceholderType("b"); UnifyType c = tf.getPlaceholderType("c"); UnifyType A = tf.getSimpleType("A"); UnifyType B = tf.getSimpleType("B"); UnifyType C1 = tf.getSimpleType("C", a, b, c); UnifyType C2 = tf.getSimpleType("C", a, A, b); UnifyType C3 = tf.getSimpleType("C", A, B, A); UnifyType D1 = tf.getSimpleType("D", C1, a, b, c); UnifyType D2 = tf.getSimpleType("D", C3, A, B, A); System.out.println(match(C2, C1)); System.out.println(match(C3, C1)); System.out.println(match(D2, D1)); Assert.assertFalse(match(C3, C2).isPresent()); Assert.assertFalse(match(C1, C2).isPresent()); } @Test public void testGreater() { IFiniteClosure fc = new FiniteClosureBuilder().getCollectionExample(); TypeFactory tf = new TypeFactory(); System.out.println("\n\n----- Greater Test -----"); System.out.println("Greater(LinkedList) = " + fc.greater(tf.getSimpleType("LinkedList", "T"))); System.out.println("Greater(TreeSet) = " + fc.greater(tf.getSimpleType("TreeSet", "T"))); System.out.println("Greater(Collection) = " + fc.greater(tf.getSimpleType("Collection"))); } @Test public void testGrArg() { IFiniteClosure fc = new FiniteClosureBuilder().getCollectionExample(); TypeFactory tf = new TypeFactory(); System.out.println("\n\n----- GrArg Test -----"); System.out.println("GrArg(List) = " + fc.grArg(tf.getSimpleType("List", "T"))); System.out.println("GrArg(? extends List) = " + fc.grArg(tf.getExtendsType(tf.getSimpleType("List", "T")))); System.out.println("GrArg(? super List) = " + fc.grArg(tf.getSuperType(tf.getSimpleType("List", "T")))); } @Test public void testSmaller() { FiniteClosureBuilder fcb = new FiniteClosureBuilder(); TypeFactory tf = new TypeFactory(); fcb.add(tf.getSimpleType("Integer"), tf.getSimpleType("Number")); IFiniteClosure fc = fcb.getCollectionExample(); System.out.println("\n\n----- Smaller Test -----"); System.out.println("Smaller(List) = " + fc.smaller(tf.getSimpleType("List", tf.getExtendsType(tf.getSimpleType("Number"))))); System.out.println("Smaller(List) = " + fc.smaller(tf.getSimpleType("List", "T"))); System.out.println("Smaller(TreeSet) = " + fc.smaller(tf.getSimpleType("TreeSet", "T"))); System.out.println("Smaller(Collection) = " + fc.smaller(tf.getSimpleType("Collection"))); } @Test public void testSmArg() { IFiniteClosure fc = new FiniteClosureBuilder().getCollectionExample(); TypeFactory tf = new TypeFactory(); System.out.println("\n\n----- SmArg Test -----"); System.out.println("SmArg(List) = " + fc.smArg(tf.getSimpleType("List", "T"))); System.out.println("SmArg(? extends List) = " + fc.smArg(tf.getExtendsType(tf.getSimpleType("List", "T")))); System.out.println("SmArg(? super List) = " + fc.smArg(tf.getSuperType(tf.getSimpleType("List", "T")))); } @Test public void testGetGenericType() { // TODO } }