package terms;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import exceptions.SyntaxException;
import models.terms.Dependency;
import models.terms.Resource;
import utils.Utils;
public class DependencyTest {
Resource a = new Resource("a", Utils.INT, 1);
Resource b = new Resource("b", Utils.INT, 1);
Resource c = new Resource("c", Utils.INT, 1);
Resource d = new Resource("d", Utils.INT, 2);
Resource e = new Resource("e", Utils.INT, 1);
Resource f = new Resource("f", Utils.INT, 1);
@Test
void EqualsTest() {
Dependency d1 = new Dependency(a, b);
Dependency d2 = new Dependency(a, b, b);
Dependency d22 = new Dependency(a, b, b);
assertNotEquals(d1, d2);
assertEquals(d2, d22);
Dependency d3 = new Dependency(a, c);
assertFalse(d1.equals(d3));
Dependency d4 = new Dependency(a, b, c);
Dependency d5 = new Dependency(a, c, b);
assertEquals(d4, d5);
Dependency d6 = new Dependency(b, a);
assertFalse(d1.equals(d6));
}
@Test
void OrderTest() {
assertThrows(SyntaxException.class, () -> {
new Dependency(d, a);
});
assertThrows(SyntaxException.class, () -> {
new Dependency(a, b, d);
});
Dependency d1 = new Dependency(a, b);
assertEquals(d1.getOrder(), 1);
assertEquals(d1.getTermOrder(), 0);
Dependency d2 = new Dependency(a, d);
assertEquals(d2.getOrder(), 2);
assertEquals(d2.getTermOrder(), 1);
Dependency d3 = new Dependency(a, b, c);
assertEquals(d3.getOrder(), 1);
}
@Test
void StringTest() {
Dependency d1 = new Dependency(a, b);
assertEquals(d1.toString(), "a : b");
Dependency d2 = new Dependency(a, b, c);
assertEquals(d2.toString(), "a : b, c");
Dependency d3 = new Dependency(a, c, b);
assertEquals(d3.toString(), "a : b, c");
Dependency d4 = new Dependency(a, b, e, c, b);
assertEquals(d4.toString(), "a : b, b, c, e");
}
@Test
void MaxIndexAndMaxDepthTest() {
Dependency d1 = new Dependency(a, b);
assertEquals(d1.getMaxIndex(), 2);
assertEquals(d1.getMaxDepth(), 1);
Dependency d2 = new Dependency(d1, c);
assertEquals(d2.getMaxIndex(), 2);
assertEquals(d2.getMaxDepth(), 2);
Dependency d3 = new Dependency(d2, e, f);
assertEquals(d3.getMaxIndex(), 3);
assertEquals(d3.getMaxDepth(), 3);
}
}