Newer
Older
ResourceDependencyLogic / src / tests / terms / meta / SubstituteTest.java
@Sakoda2269 Sakoda2269 on 20 Dec 1 KB 途中まで
package tests.terms.meta;

import static org.junit.jupiter.api.Assertions.*;

import java.util.HashMap;
import java.util.Map;

import org.junit.jupiter.api.Test;

import models.algebra.Variable;
import models.terms.DependencyTerm;
import models.terms.RDLTerm;
import models.terms.ResourceVariable;
import models.terms.meta.MetaEvaluatableTermVariable;
import models.terms.meta.MetaRDLTerm;
import models.terms.meta.MetaResourceVariable;
import models.terms.meta.OrderVariableConstraint;
import tests.Utils;

public class SubstituteTest {
	
	@Test
	void MetaDependencyTermSubstituteTest() {
		MetaResourceVariable x = new MetaResourceVariable(new Variable("x"));
		MetaResourceVariable y = new MetaResourceVariable(new Variable("y"));
		MetaEvaluatableTermVariable z =  new MetaEvaluatableTermVariable(new Variable("z"));
		
		
		MetaRDLTerm metaTerm1 = new MetaRDLTerm(x, y, z);
		
		ResourceVariable a = new ResourceVariable("a", Utils.INT, 1);
		ResourceVariable b = new ResourceVariable("b", Utils.INT, 1);
		ResourceVariable c = new ResourceVariable("c", Utils.INT, 1);
		
		DependencyTerm t1 = new DependencyTerm(a, b, c);
		DependencyTerm t2 = new DependencyTerm(a, b, t1);
		
		Map<Variable, RDLTerm> binding = new HashMap<>();
		Map<Variable, OrderVariableConstraint> orderConstraint = new HashMap<>();
		metaTerm1.isMatchedBy(t1, binding, orderConstraint);
		RDLTerm assignedTerm = metaTerm1.substitute(binding);
		assertEquals(t1, assignedTerm);
		binding.clear();
		orderConstraint.clear();
		metaTerm1.isMatchedBy(t2, binding, orderConstraint);
		assertEquals(t2, metaTerm1.substitute(binding));
	}
	
}