adapt + tests

This commit is contained in:
Florian Steurer 2015-11-15 14:39:08 +01:00
parent 3739747eca
commit e447e1cd46
2 changed files with 12 additions and 2 deletions

View File

@ -319,6 +319,9 @@ public class RuleSet implements IRuleSet{
if(lhsType.getTypeParams().size() == 0 || rhsType.getTypeParams().size() == 0)
return Optional.empty();
if(lhsType.getName().equals(rhsType.getName()))
return Optional.empty();
Type lhsFromFc = finiteClosure.getType(lhsType.getName());
if(lhsFromFc == null)
@ -337,7 +340,7 @@ public class RuleSet implements IRuleSet{
TypeParams lhsFromFcTypeParams = lhsFromFc.getTypeParams();
Unifier unif = new Unifier(lhsFromFcTypeParams.get(0), lhsTypeParams.get(0));
for(int i = 0; i < lhsTypeParams.size(); i++)
for(int i = 1; i < lhsTypeParams.size(); i++)
unif.andThen(new Unifier(lhsFromFcTypeParams.get(i), lhsTypeParams.get(i)));
return Optional.of(new MPair(newLhs.apply(unif), rhsType, PairOperator.SMALLERDOT));

View File

@ -538,8 +538,15 @@ public class RuleSetTest {
MPair pair2 = new MPair(c1, c3, PairOperator.SMALLERDOT);
System.out.println("------ Adapt ------");
System.out.println(rules.adapt(pair1));
System.out.println(rules.adapt(pair2)); // Not working yet
System.out.println(rules.adapt(pair2));
MPair noAdapt1 = new MPair(c2, c1, PairOperator.SMALLERDOT);
MPair noAdapt2 = new MPair(c1, c1, PairOperator.SMALLERDOT);
MPair noAdapt3 = new MPair(c1, c2, PairOperator.SMALLERDOTWC);
Assert.assertFalse(rules.adapt(noAdapt1).isPresent());
Assert.assertFalse(rules.adapt(noAdapt2).isPresent());
Assert.assertFalse(rules.adapt(noAdapt3).isPresent());
}
@Test