package test.ql.typechecker.relational;
import java.util.Arrays;
import java.util.Collection;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import test.ql.typechecker.BaseTest;
@RunWith(value = Parameterized.class)
public class TestAnd extends BaseTest {
public static String createTestForm(String questionType, String comparison) {
return "form myForm { "
+ "newQuestion : " + questionType + " { \"Something\" }"
+ "if(newQuestion && " + comparison + ") {}"
+ "}";
}
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ "10 && 100", false },
{ "10.5 && 10", false },
{ "10.1 && 100.5", false },
{ "true && false", true },
{ "\"a\" && \"b\"", false },
// Type mismatch
{ "10 && true", false },
{ "true && \"string\"", false },
{ "false && 100.5", false },
// Forms with identifiers
{ createTestForm("integer", "5"), false },
{ createTestForm("integer", "5.0"), false },
{ createTestForm("integer", "true"), false },
{ createTestForm("integer", "\"String\""), false },
{ createTestForm("float", "5"), false },
{ createTestForm("float", "5.0"), false },
{ createTestForm("float", "true"), false },
{ createTestForm("float", "\"String\""), false },
{ createTestForm("money", "5"), false },
{ createTestForm("money", "5.0"), false },
{ createTestForm("money", "true"), false },
{ createTestForm("money", "\"String\""), false },
{ createTestForm("string", "5"), false },
{ createTestForm("string", "5.0"), false },
{ createTestForm("string", "true"), false },
{ createTestForm("string", "\"String\""), false },
{ createTestForm("boolean", "5"), false },
{ createTestForm("boolean", "5.0"), false },
{ createTestForm("boolean", "true"), true },
{ createTestForm("boolean", "\"String\""), false },
});
}
public TestAnd(String input, boolean expected) {
super(input, expected);
}
}