Newer
Older
RDLProofSystem / src / test / java / rewrite / RewriteInferenceTest.java
@Sakoda2269 Sakoda2269 on 29 Jul 4 KB rewriteについて修正
package rewrite;
import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

import java.util.List;

import inference.rewrite.RewriteInferenceSystem;
import models.formulas.EquationFormula;
import models.formulas.Then;
import models.terms.DependencyTerm;
import models.terms.PrimedTerm;
import models.terms.Resource;
import utils.Utils;

public class RewriteInferenceTest {

	@Test
	void RewriteInferenceTest1() {
		Resource totalAmount = new Resource("totalAmount", Utils.INT, 1);
		Resource quantity = new Resource("quantity", Utils.INT, 1);
		Resource unitPrice = new Resource("unitPrice", Utils.INT, 1);
		Resource productId = new Resource("productID", Utils.INT, 1);
		Resource productName = new Resource("productName", Utils.INT, 1);
		Resource soledProductId = new Resource("soledProductId", Utils.INT, 1);
		PrimedTerm totalAmountP = new PrimedTerm(totalAmount);
		PrimedTerm quantityP = new PrimedTerm(quantity);
		PrimedTerm unitPriceP = new PrimedTerm(unitPrice);
		PrimedTerm productIdP = new PrimedTerm(productId);
		PrimedTerm productNameP = new PrimedTerm(productName);
		PrimedTerm soledProductIdP = new PrimedTerm(soledProductId);
		Resource a = new Resource("a", Utils.INT, 0);
		Resource b = new Resource("b", Utils.INT, 0);
		Resource c = new Resource("c", Utils.INT, 0);
		Resource d = new Resource("d", Utils.INT, 0);
		Resource e = new Resource("e", Utils.INT, 0);
		Resource salesId = new Resource("salesId", Utils.INT, 1);
		PrimedTerm salesIdP = new PrimedTerm(salesId);
		Resource mul = new Resource("mul", Utils.INT, 1);
		Resource mul1= new Resource("mul1", Utils.INT, 1);
		Resource mul2 = new Resource("mul2", Utils.INT, 1);
		
		// reference1
		DependencyTerm te1 = new DependencyTerm(unitPrice, productId, soledProductId);
		DependencyTerm te2 = new DependencyTerm(mul, mul1, quantity, mul2, te1);
		EquationFormula eq1 = new EquationFormula(totalAmount, te2);
		
		//reference2
		DependencyTerm te3 = new DependencyTerm(unitPriceP, productIdP, soledProductIdP);
		DependencyTerm te4 = new DependencyTerm(mul, mul1, quantityP, mul2, te3);
		EquationFormula eq2 = new EquationFormula(totalAmountP, te4);
		
		//input1
		DependencyTerm te5 = new DependencyTerm(soledProductIdP, salesIdP, a);
		EquationFormula eq3 = new EquationFormula(te5, b);
		
		//input2
		DependencyTerm te6 = new DependencyTerm(quantityP, salesIdP, a);
		EquationFormula eq4 = new EquationFormula(te6, c);
		
		//input3, 4, 5
		EquationFormula eq5 = new EquationFormula(productIdP, productId);
		EquationFormula eq6 = new EquationFormula(productNameP, productName);
		EquationFormula eq7 = new EquationFormula(unitPriceP, unitPrice);
		
		// value copy
		DependencyTerm te7 = new DependencyTerm(totalAmountP, salesIdP, a);
		DependencyTerm te8 = new DependencyTerm(unitPriceP, productIdP, b);
		DependencyTerm te9 = new DependencyTerm(mul, mul1, c, mul2, te8);
		EquationFormula eq8 = new EquationFormula(te7, te9);
		
		
		//----------------------change value-------------------
		//input6
		DependencyTerm te10 = new DependencyTerm(unitPriceP, productIdP, d);
		EquationFormula eq9 = new EquationFormula(te10, e);
		
		//input7, 8, 9, 10
		EquationFormula eq10 = new EquationFormula(productNameP, productName);
		EquationFormula eq11 = new EquationFormula(salesIdP, salesId);
		EquationFormula eq12 = new EquationFormula(soledProductIdP, soledProductId);
		EquationFormula eq13 = new EquationFormula(quantityP, quantity);
		
		//value copy
		EquationFormula eq14 = new EquationFormula(totalAmountP, totalAmount);
		
		//value copy conclusion
		DependencyTerm te11 = new DependencyTerm(totalAmountP, salesIdP, a);
		DependencyTerm te12 = new DependencyTerm(totalAmount, salesId, a);
		EquationFormula eq15 = new EquationFormula(te11, te12);
		
		//value copy change value
		RewriteInferenceSystem ris = new RewriteInferenceSystem(List.of(eq9, eq10, eq11, eq12, eq13, eq14), eq15);
		assertTrue(ris.inference());
		
		//reference conclusion
		DependencyTerm te13 = new DependencyTerm(soledProductId, salesId, a);
		EquationFormula eq16 = new EquationFormula(d, te13);
		Then th1 = new Then(eq16, eq15);
		
		//reference change value
		RewriteInferenceSystem ris2 = new RewriteInferenceSystem(List.of(eq1, eq2, eq9, eq10, eq11, eq12, eq13), th1);
		
		assertFalse(ris2.inference());
	}
	
}