package alice.tuprolog;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Before;
import org.junit.Test;
public class AsTest {
Prolog engine;
@Before
public void setUp() {
engine = new Prolog();
}
@Test public void castAsPrimitive() throws PrologException {
String goal = "java_object('java.lang.Integer', [5], I)," +
"class('java.lang.Integer') <- toString(I as int) returns '5'.";
SolveInfo solution = engine.solve(goal);
assertFalse(solution.isSuccess());
}
@Test public void castToObject() throws PrologException {
String goal = "java_object('java.lang.String', ['hello'], S1), " +
"java_object('java.lang.String', ['world'], S2), " +
"S2 <- compareTo(S1 as 'java.lang.Object') returns X, X > 0.";
SolveInfo solution = engine.solve(goal);
assertTrue(solution.isSuccess());
}
@Test public void castToNonexistentClass() throws PrologException {
String goal = "java_object('java.lang.String', ['hello'], S1), " +
"java_object('java.lang.String', ['world'], S2), " +
"S2 <- compareTo(S1 as 'non.existant.Class') returns X.";
SolveInfo solution = engine.solve(goal);
assertFalse(solution.isSuccess());
}
@Test public void castObjectToWrongParameterType() throws PrologException {
String goal = "java_object('java.util.ArrayList', [], L), " +
"java_object('java.lang.String', ['hello'], S), " +
"S <- compareToIgnoreCase(L as 'java.util.List') returns X.";
SolveInfo solution = engine.solve(goal);
assertFalse(solution.isSuccess());
}
@Test public void castParameterToWrongType() throws PrologException {
String goal = "java_object('java.lang.String', ['hello'], S), " +
"java_object('java.lang.Integer', [2], I), " +
"S <- indexOf(I as 'java.util.List') returns N.";
SolveInfo solution = engine.solve(goal);
assertFalse(solution.isSuccess());
}
}