package inferencerule;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import inference.ProofSystem;
import models.formulas.DependencyFormula;
import models.formulas.EquationFormula;
import models.formulas.Formula;
import models.terms.EvaluatableTerm;
import models.terms.RDLTerm;
import models.terms.Resource;
import utils.Utils;
public class EqualityAxiomTest {
Resource a = new Resource("a", 1);
Resource b = new Resource("b", 1);
Resource c = new Resource("c", 1);
Resource d = new Resource("d", 1);
Resource e = new Resource("e", 1);
Resource f = new Resource("f", 1);
Resource g = new Resource("g", 1);
Resource h = new Resource("h", 1);
Resource i = new Resource("i", 1);
Resource j = new Resource("j", 1);
Resource k = new Resource("k", 1);
Resource l = new Resource("l", 1);
Resource m = new Resource("m", 2);
Resource n = new Resource("n", 2);
@Test
void ReflexivityTest() {
Set<RDLTerm> terms = new HashSet<>();
terms.add(a);
terms.add(b);
Set<EvaluatableTerm> formulas = ProofSystem.reflexivity.apply(List.of(), a);
assertTrue(formulas.contains(a));
}
@Test
void SymmetryTest() {
Set<EvaluatableTerm> formulas = ProofSystem.symmetry.apply(List.of(new EquationFormula(a, b)), a);
assertTrue(formulas.contains(b));
formulas = ProofSystem.symmetry.apply(List.of(new EquationFormula(a, b)), b);
assertTrue(formulas.contains(a));
}
@Test
void TransitivityTest() {
Set<Formula> formulas = ProofSystem.transitivity.apply(Set.of(new EquationFormula(a, b), new EquationFormula(b, c), new EquationFormula(c, d)), Set.of());
assertTrue(formulas.contains(new EquationFormula(a, c)));
assertTrue(formulas.contains(new EquationFormula(b, d)));
assertFalse(formulas.contains(new EquationFormula(a, d)));
}
@Test
void RightSubTest() {
EquationFormula eq1 = new EquationFormula(a, b);
DependencyFormula d1 = new DependencyFormula(c, d);
Set<Formula> formulas = ProofSystem.rightSubstitution.apply(Set.of(eq1, d1), Set.of(e, f));
assertTrue(formulas.isEmpty());
EquationFormula eq2 = Utils.in(e, d);
formulas = ProofSystem.rightSubstitution.apply(Set.of(eq1, d1, eq2), Set.of(e, f));
assertEquals(formulas.size(), 1);
}
@Test
void LeftSubTest() {
}
@Test
void IdentityTest() {
}
@Test
void MapCompositionTest() {
}
@Test
void ConstantnessTest() {
}
@Test
void RightNormalizationTest() {
}
@Test
void PseudoConstantnessTest() {
}
@Test
void UncurryingTest() {
}
@Test
void ArgumentDependencyExtractionTest() {
}
}