package tests.meta;
import static org.junit.jupiter.api.Assertions.*;
import static tests.Utils.*;
import org.junit.jupiter.api.Test;
import models.Dependency;
import models.DependencyTerm;
import models.ResourceVariable;
import models.algebra.Variable;
import models.meta.MetaDependencyTermVariable;
import models.meta.MetaDependencyVariable;
import models.meta.MetaEvaluatableTermVariable;
import models.meta.MetaRDLTermVariable;
import models.meta.MetaResourceVariable;
public class MetaResourceVariableTest {
@Test
void MetaResourceVariableMathcingWithoutOrder() {
ResourceVariable a = new ResourceVariable("a", INT, 0);
ResourceVariable b = new ResourceVariable("b", INT, 0);
ResourceVariable c = new ResourceVariable("c", INT, 0);
Dependency dep = new Dependency(a, b);
DependencyTerm depTerm = new DependencyTerm(a, b, c);
MetaResourceVariable x = new MetaResourceVariable(new Variable("x"));
MetaDependencyVariable d = new MetaDependencyVariable(new Variable("d"));
MetaDependencyTermVariable dte = new MetaDependencyTermVariable(new Variable("dte"));
MetaEvaluatableTermVariable te = new MetaEvaluatableTermVariable(new Variable("te"));
MetaRDLTermVariable t = new MetaRDLTermVariable(new Variable("t"));
// a matches x(resource variable)
assertTrue(x.isMatchedBy(a));
// a does not match d(dependency)
assertFalse(d.isMatchedBy(a));
// a does not match dte(dependency term)
assertFalse(dte.isMatchedBy(a));
// a matches te(evaluatable term)
assertTrue(te.isMatchedBy(a));
// a matches t(term)
assertTrue(t.isMatchedBy(a));
// [a : b] does not match x(resource variable)
assertFalse(x.isMatchedBy(dep));
// [a : b -> c] does not match x(resource variable)
assertFalse(x.isMatchedBy(depTerm));
}
}