Newer
Older
ResourceDependencyLogic / src / tests / terms / meta / MetaRDLTermTest.java
@Sakoda2269 Sakoda2269 on 24 Oct 1 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.Variable;
import models.terms.Dependency;
import models.terms.DependencyTerm;
import models.terms.ResourceVariable;
import models.terms.meta.MetaDependencyTermVariable;
import models.terms.meta.MetaRDLTerm;
import models.terms.meta.MetaResourceVariable;

public class MetaRDLTermTest {

	@Test
	void MetaDependencyMatchingWithoutOrderTest() {
		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);
		DependencyTerm te1 = new DependencyTerm(a, b, c);
		Dependency dep2 = new Dependency(te1, b);
		
		MetaResourceVariable v1 = new MetaResourceVariable(new Variable("v1"));
		MetaResourceVariable v2 = new MetaResourceVariable(new Variable("v2"));
		MetaResourceVariable v3 = new MetaResourceVariable(new Variable("v3"));
		MetaDependencyTermVariable vte = new MetaDependencyTermVariable(new Variable("vte"));
		MetaRDLTerm metaDep = new MetaRDLTerm(v1, v2);
		MetaRDLTerm metaDep2 = new MetaRDLTerm(vte, v2);
		MetaRDLTerm metaTe = new MetaRDLTerm(v1, v2, v3);
		MetaRDLTerm metaDep3 = new MetaRDLTerm(metaTe, v2);
		MetaRDLTerm metaDep4 = new MetaRDLTerm(metaTe, v3);
		
		//[a : b] matches [v1 : v2]
		assertTrue(metaDep.isMatchedBy(dep1));
		//[[a : b -> c] : b] does not match [v1 : v2]
		assertFalse(metaDep.isMatchedBy(dep2));
		//[[a : b -> c] : b] matches [vte : v2]
		assertTrue(metaDep2.isMatchedBy(dep2));
		//[[a : b -> c] : b] matches [[v1 : v2 -> v3] : v2]
		assertTrue(metaDep3.isMatchedBy(dep2));
		//[[a : b -> c] : b] does not match [[v1 : v2 -> v3] : v3]
		assertFalse(metaDep4.isMatchedBy(dep2));
	}
	
}