package alice.tuprolog;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import org.junit.Before;
import org.junit.Test;
public class SimpleArithmeticFunctorsTest {
Prolog engine;
@Before
public void setUp() {
engine = new Prolog();
}
@Test public void test0() throws PrologException {
SolveInfo solution = engine.solve("X is '+'(7, 35).");
assertEquals(Term.createTerm("42"), solution.getTerm("X"));
}
@Test public void test1() throws PrologException {
SolveInfo solution = engine.solve("X is '+'(0, 3+11).");
assertEquals(Term.createTerm("14"), solution.getTerm("X"));
}
@Test public void test2() throws PrologException {
SolveInfo solution = engine.solve("X is '+'(0, 3.2+11).");
assertEquals(Term.createTerm("14.2"), solution.getTerm("X"));
}
@Test public void test3() throws PrologException {
SolveInfo solution = engine.solve("X is '+'(77, N).");
assertFalse(solution.isSuccess());
// TODO Should throw instantiation_error
}
@Test public void test4() throws PrologException {
SolveInfo solution = engine.solve("X is '+'(foo, 77).");
assertFalse(solution.isSuccess());
// TODO Should throw type_error(number, foo)
}
@Test public void test5() throws PrologException {
SolveInfo solution = engine.solve("X is '-'(7).");
assertEquals(Term.createTerm("-7"), solution.getTerm("X"));
}
@Test public void test6() throws PrologException {
SolveInfo solution = engine.solve("X is '-'(3-11).");
assertEquals(Term.createTerm("8"), solution.getTerm("X"));
}
@Test public void test7() throws PrologException {
SolveInfo solution = engine.solve("X is '-'(3.2-11).");
assertEquals(Term.createTerm("7.8"), solution.getTerm("X"));
}
@Test public void test8() throws PrologException {
SolveInfo solution = engine.solve("X is '-'(N).");
assertFalse(solution.isSuccess());
// TODO Should throw instantiation_error
}
@Test public void test9() throws PrologException {
SolveInfo solution = engine.solve("X is '-'(foo).");
assertFalse(solution.isSuccess());
// TODO Should throw type_error(number, foo)
}
@Test public void test10() throws PrologException {
SolveInfo solution = engine.solve("X is '-'(7, 35).");
assertEquals(Term.createTerm("-28"), solution.getTerm("X"));
}
@Test public void test11() throws PrologException {
SolveInfo solution = engine.solve("X is '-'(20, 3+11).");
assertEquals(Term.createTerm("6"), solution.getTerm("X"));
}
@Test public void test12() throws PrologException {
SolveInfo solution = engine.solve("X is '-'(0, 3.2+11).");
assertEquals(Term.createTerm("-14.2"), solution.getTerm("X"));
}
@Test public void test13() throws PrologException {
SolveInfo solution = engine.solve("X is '-'(77, N).");
assertFalse(solution.isSuccess());
// TODO Should throw instantiation_error
}
@Test public void test14() throws PrologException {
SolveInfo solution = engine.solve("X is '-'(foo, 77).");
assertFalse(solution.isSuccess());
// TODO Should throw type_error(number, foo)
}
@Test public void test15() throws PrologException {
SolveInfo solution = engine.solve("X is '*'(7, 35).");
assertEquals(Term.createTerm("245"), solution.getTerm("X"));
}
@Test public void test16() throws PrologException {
SolveInfo solution = engine.solve("X is '*'(0, 3+11).");
assertEquals(Term.createTerm("0"), solution.getTerm("X"));
}
@Test(expected=AssertionError.class)
public void test17() throws PrologException {
SolveInfo solution = engine.solve("X is '*'(1.5, 3.2+11).");
assertEquals(Term.createTerm("21.3"), solution.getTerm("X"));
}
@Test public void test18() throws PrologException {
SolveInfo solution = engine.solve("X is '*'(77, N).");
assertFalse(solution.isSuccess());
// TODO Should throw instantiation_error
}
@Test public void test19() throws PrologException {
SolveInfo solution = engine.solve("X is '*'(foo, 77).");
assertFalse(solution.isSuccess());
// TODO Should throw type_error(number, foo)
}
@Test public void test20() throws PrologException {
SolveInfo solution = engine.solve("X is '/'(7, 35).");
assertEquals(Term.createTerm("0"), solution.getTerm("X"));
}
@Test public void test21() throws PrologException {
SolveInfo solution = engine.solve("X is '/'(7.0, 35).");
assertEquals(Term.createTerm("0.2"), solution.getTerm("X"));
}
@Test public void test22() throws PrologException {
SolveInfo solution = engine.solve("X is '/'(140, 3+11).");
assertEquals(Term.createTerm("10"), solution.getTerm("X"));
}
@Test(expected=AssertionError.class)
public void test23() throws PrologException {
SolveInfo solution = engine.solve("X is '/'(20.164, 3.2+11).");
assertEquals(Term.createTerm("1.42"), solution.getTerm("X"));
}
@Test public void test24() throws PrologException {
SolveInfo solution = engine.solve("X is '/'(7, -3).");
assertNotNull(solution.getTerm("X"));
}
@Test public void test25() throws PrologException {
SolveInfo solution = engine.solve("X is '/'(-7, 3).");
assertNotNull(solution.getTerm("X"));
}
@Test public void test26() throws PrologException {
SolveInfo solution = engine.solve("X is '/'(77, N).");
assertFalse(solution.isSuccess());
// TODO Should throw instantiation_error
}
@Test public void test27() throws PrologException {
SolveInfo solution = engine.solve("X is '/'(foo, 77).");
assertFalse(solution.isSuccess());
// TODO Should throw type_error(number, foo)
}
@Test(expected=AssertionError.class)
public void test28() throws PrologException {
SolveInfo solution = engine.solve("X is '/'(3, 0).");
assertFalse(solution.isSuccess());
// TODO Should throw evaluation_error(zero_divisor)
}
@Test public void test29() throws PrologException {
SolveInfo solution = engine.solve("X is mod(7, 3).");
assertEquals(Term.createTerm("1"), solution.getTerm("X"));
}
@Test public void test30() throws PrologException {
SolveInfo solution = engine.solve("X is mod(0, 3+11).");
assertEquals(Term.createTerm("0"), solution.getTerm("X"));
}
@Test public void test31() throws PrologException {
SolveInfo solution = engine.solve("X is mod(7, -2).");
assertEquals(Term.createTerm("-1"), solution.getTerm("X"));
}
@Test public void test32() throws PrologException {
SolveInfo solution = engine.solve("X is mod(77, N).");
assertFalse(solution.isSuccess());
// TODO Should throw instantiation_error
}
@Test public void test33() throws PrologException {
SolveInfo solution = engine.solve("X is mod(foo, 77).");
assertFalse(solution.isSuccess());
// TODO Should throw type_error(number, foo)
}
@Test(expected=AssertionError.class)
public void test34() throws PrologException {
SolveInfo solution = engine.solve("X is mod(7.5, 2).");
assertFalse(solution.isSuccess());
// TODO Should throw type_error(integer, 7.5)
}
@Test(expected=AssertionError.class)
public void test35() throws PrologException {
SolveInfo solution = engine.solve("X is mod(7, 0).");
assertFalse(solution.isSuccess());
// TODO Should throw evaluation_error(zero_division)
}
@Test public void test36() throws PrologException {
SolveInfo solution = engine.solve("X is floor(7.4).");
assertEquals(Term.createTerm("7"), solution.getTerm("X"));
}
@Test public void test37() throws PrologException {
SolveInfo solution = engine.solve("X is floor(-0.4).");
assertEquals(Term.createTerm("-1"), solution.getTerm("X"));
}
@Test public void test38() throws PrologException {
SolveInfo solution = engine.solve("X is round(7.5).");
assertEquals(Term.createTerm("8"), solution.getTerm("X"));
}
@Test public void test39() throws PrologException {
SolveInfo solution = engine.solve("X is round(7.6).");
assertEquals(Term.createTerm("8"), solution.getTerm("X"));
}
@Test public void test40() throws PrologException {
SolveInfo solution = engine.solve("X is round(-0.6).");
assertEquals(Term.createTerm("-1"), solution.getTerm("X"));
}
@Test public void test41() throws PrologException {
SolveInfo solution = engine.solve("X is round(N).");
assertFalse(solution.isSuccess());
// TODO Should throw instantiation_error
}
@Test public void test42() throws PrologException {
SolveInfo solution = engine.solve("X is ceiling(-0.5).");
assertEquals(Term.createTerm("0"), solution.getTerm("X"));
}
@Test public void test43() throws PrologException {
SolveInfo solution = engine.solve("X is truncate(-0.5).");
assertEquals(Term.createTerm("0"), solution.getTerm("X"));
}
@Test public void test44() throws PrologException {
SolveInfo solution = engine.solve("X is truncate(foo).");
assertFalse(solution.isSuccess());
// TODO Should throw type_error(number, foo)
}
@Test public void test45() throws PrologException {
SolveInfo solution = engine.solve("X is float(7).");
assertEquals(Term.createTerm("7.0"), solution.getTerm("X"));
}
@Test public void test46() throws PrologException {
SolveInfo solution = engine.solve("X is float(7.3).");
assertEquals(Term.createTerm("7.3"), solution.getTerm("X"));
}
@Test public void test47() throws PrologException {
SolveInfo solution = engine.solve("X is float(5 / 3).");
assertEquals(Term.createTerm("1.0"), solution.getTerm("X"));
}
@Test public void test48() throws PrologException {
SolveInfo solution = engine.solve("X is float(N).");
assertFalse(solution.isSuccess());
// TODO Should throw instantiation_error
}
@Test public void test49() throws PrologException {
SolveInfo solution = engine.solve("X is float(foo).");
assertFalse(solution.isSuccess());
// TODO Should throw type_error(number, foo)
}
@Test public void test50() throws PrologException {
SolveInfo solution = engine.solve("X is abs(7).");
assertEquals(Term.createTerm("7"), solution.getTerm("X"));
}
@Test public void test51() throws PrologException {
SolveInfo solution = engine.solve("X is abs(3-11).");
assertEquals(Term.createTerm("8"), solution.getTerm("X"));
}
@Test public void test52() throws PrologException {
SolveInfo solution = engine.solve("X is abs(3.2-11.0).");
assertEquals(Term.createTerm("7.8"), solution.getTerm("X"));
}
@Test public void test53() throws PrologException {
SolveInfo solution = engine.solve("X is abs(N).");
assertFalse(solution.isSuccess());
// TODO Should throw instantiation_error
}
@Test public void test54() throws PrologException {
SolveInfo solution = engine.solve("X is abs(foo).");
assertFalse(solution.isSuccess());
// TODO Should throw type_error(number, foo)
}
@Test(expected=AssertionError.class)
public void test55() throws PrologException {
SolveInfo solution = engine.solve("current_prolog_flag(max_integer, MI), X is '+'(MI, 1).");
assertFalse(solution.isSuccess());
// TODO Should throw evaluation_error(int_overflow)
}
@Test(expected=AssertionError.class)
public void test56() throws PrologException {
SolveInfo solution = engine.solve("current_prolog_flag(max_integer, MI), X is '-'('+'(MI, 1), 1).");
assertFalse(solution.isSuccess());
// TODO Should throw evaluation_error(int_overflow)
}
@Test(expected=AssertionError.class)
public void test57() throws PrologException {
SolveInfo solution = engine.solve("current_prolog_flag(max_integer, MI), X is '*'(MI, 2).");
assertFalse(solution.isSuccess());
// TODO Should throw evaluation_error(int_overflow)
}
@Test(expected=AssertionError.class)
public void test58() throws PrologException {
SolveInfo solution = engine.solve("current_prolog_flag(max_integer, MI), R is float(MI) * 2, X is floor(R).");
assertFalse(solution.isSuccess());
// TODO Should throw evaluation_error(int_overflow)
}
}