//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", 1);
// Resource quantity = new Resource("quantity", 1);
// Resource unitPrice = new Resource("unitPrice", 1);
// Resource productId = new Resource("productID", 1);
// Resource productName = new Resource("productName", 1);
// Resource soledProductId = new Resource("soledProductId", 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", 0);
// Resource b = new Resource("b", 0);
// Resource c = new Resource("c", 0);
// Resource d = new Resource("d", 0);
// Resource e = new Resource("e", 0);
// Resource salesId = new Resource("salesId", 1);
// PrimedTerm salesIdP = new PrimedTerm(salesId);
// Resource mul = new Resource("mul", 1);
// Resource mul1= new Resource("mul1", 1);
// Resource mul2 = new Resource("mul2", 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());
// }
//
//}