Newer
Older
ResourceDependencyLogic / src / tests / terms / meta / MetaDependencyVariableTest.java
@Sakoda2269 Sakoda2269 on 24 Oct 4 KB テスト追加
package tests.terms.meta;

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

import org.junit.jupiter.api.Test;

import models.algebra.Constant;
import models.algebra.Variable;
import models.terms.Dependency;
import models.terms.DependencyTerm;
import models.terms.ResourceVariable;
import models.terms.meta.MetaDependencyVariable;
import models.terms.meta.OrderConstraint;

public class MetaDependencyVariableTest {

	@Test
	void MetaDependencyVariableMatchingWithoutOrderTest() {
		ResourceVariable a = new ResourceVariable("a", INT, 1);
		ResourceVariable b = new ResourceVariable("b", INT, 1);
		ResourceVariable c = new ResourceVariable("c", INT, 1);
		Dependency dep1 = new Dependency(a, b);
		Dependency dep2 = new Dependency(dep1);
		DependencyTerm te1 = new DependencyTerm(a, b, c);
		
		MetaDependencyVariable d = new  MetaDependencyVariable(new Variable("d"));
		// [a : b] mathces d(dependency)
		assertTrue(d.isMatchedBy(dep1));
		// [[a : b]] mathces d(dependency)
		assertTrue(d.isMatchedBy(dep2));
		// a does not mathc d(dependency)
		assertFalse(d.isMatchedBy(a));
		// [a : b -> c] does not mathc d(dependency)
		assertFalse(d.isMatchedBy(te1));
	}
	
	@Test
	void MetaDependencyVariableMatchingWithConstantOrderEQTest() {
		ResourceVariable a = new ResourceVariable("a", INT, 1);
		ResourceVariable b = new ResourceVariable("b", INT, 1);
		ResourceVariable c = new ResourceVariable("c", INT, 2);
		Dependency dep1 = new Dependency(a, b);
		Dependency dep2 = new Dependency(a, c);
		
		MetaDependencyVariable d = new  MetaDependencyVariable(new Variable("d"), new Constant("1"));
		// [a : b](1) mathces d(=1)
		assertTrue(d.isMatchedBy(dep1));
		// [a : c](2) does not mathc d(=1)
		assertFalse(d.isMatchedBy(dep2));
	}
	
	@Test
	void MetaDependencyVariableMatchingWithConstantOrderLTTest() {
		ResourceVariable a = new ResourceVariable("a", INT, 0);
		ResourceVariable b = new ResourceVariable("b", INT, 1);
		ResourceVariable c = new ResourceVariable("c", INT, 2);
		ResourceVariable e = new ResourceVariable("e", INT, 0);
		Dependency dep1 = new Dependency(a, b);
		Dependency dep2 = new Dependency(a, c);
		Dependency dep3 = new Dependency(a, e);
		
		MetaDependencyVariable d = new  MetaDependencyVariable(new Variable("d"), OrderConstraint.LT, new Constant("1"));
		// [a : b](1) does not match d(<1)
		assertFalse(d.isMatchedBy(dep1));
		// [a : c](2) does not match d(<1)
		assertFalse(d.isMatchedBy(dep2));
		// [a : e](0) matches d(<1)
		assertTrue(d.isMatchedBy(dep3));
	}
	
	@Test
	void MetaDependencyVariableMatchingWithConstantOrderLETest() {
		ResourceVariable a = new ResourceVariable("a", INT, 0);
		ResourceVariable b = new ResourceVariable("b", INT, 1);
		ResourceVariable c = new ResourceVariable("c", INT, 2);
		ResourceVariable e = new ResourceVariable("e", INT, 0);
		Dependency dep1 = new Dependency(a, b);
		Dependency dep2 = new Dependency(a, c);
		Dependency dep3 = new Dependency(a, e);
		
		MetaDependencyVariable d = new  MetaDependencyVariable(new Variable("d"), OrderConstraint.LE, new Constant("1"));
		// [a : b](1) matches d(<=1)
		assertTrue(d.isMatchedBy(dep1));
		// [a : c](2) does not match d(<=1)
		assertFalse(d.isMatchedBy(dep2));
		// [a : e](0) matches d(<=1)
		assertTrue(d.isMatchedBy(dep3));
	}
	
	@Test
	void MetaDependencyVariableMatchingWithConstantOrderGTTest() {
		ResourceVariable a = new ResourceVariable("a", INT, 0);
		ResourceVariable b = new ResourceVariable("b", INT, 1);
		ResourceVariable c = new ResourceVariable("c", INT, 2);
		ResourceVariable e = new ResourceVariable("e", INT, 0);
		Dependency dep1 = new Dependency(a, b);
		Dependency dep2 = new Dependency(a, c);
		Dependency dep3 = new Dependency(a, e);
		
		MetaDependencyVariable d = new  MetaDependencyVariable(new Variable("d"), OrderConstraint.GT, new Constant("1"));
		// [a : b](1) does not match d(>1)
		assertFalse(d.isMatchedBy(dep1));
		// [a : c](2) matches d(>1)
		assertTrue(d.isMatchedBy(dep2));
		// [a : e](0) does not match d(>1)
		assertFalse(d.isMatchedBy(dep3));
	}
	
	@Test
	void MetaDependencyVariableMatchingWithConstantOrderGETest() {
		ResourceVariable a = new ResourceVariable("a", INT, 0);
		ResourceVariable b = new ResourceVariable("b", INT, 1);
		ResourceVariable c = new ResourceVariable("c", INT, 2);
		ResourceVariable e = new ResourceVariable("e", INT, 0);
		Dependency dep1 = new Dependency(a, b);
		Dependency dep2 = new Dependency(a, c);
		Dependency dep3 = new Dependency(a, e);
		
		MetaDependencyVariable d = new  MetaDependencyVariable(new Variable("d"), OrderConstraint.GE, new Constant("1"));
		// [a : b](1) matches d(>=1)
		assertTrue(d.isMatchedBy(dep1));
		// [a : c](2) matches d(>=1)
		assertTrue(d.isMatchedBy(dep2));
		// [a : e](0) does not match d(>=1)
		assertFalse(d.isMatchedBy(dep3));
	}

}