@Test
public void testInteger()
{
List<RowExpression> values = new ArrayList<>();
values.add(constant(Integer.MIN_VALUE, INTEGER));
values.add(constant(Integer.MAX_VALUE, INTEGER));
values.add(constant(3, INTEGER));
assertEquals(checkSwitchGenerationCase(INTEGER, values), DIRECT_SWITCH);
values.add(constant(null, INTEGER));
assertEquals(checkSwitchGenerationCase(INTEGER, values), DIRECT_SWITCH);
values.add(new CallExpression(
new Signature(
CAST,
SCALAR,
INTEGER.getTypeSignature(),
DOUBLE.getTypeSignature()),
INTEGER,
Collections.singletonList(constant(12345678901234.0, DOUBLE))));
assertEquals(checkSwitchGenerationCase(INTEGER, values), DIRECT_SWITCH);
for (int i = 6; i <= 32; ++i) {
values.add(constant(i, INTEGER));
}
assertEquals(checkSwitchGenerationCase(INTEGER, values), DIRECT_SWITCH);
values.add(constant(33, INTEGER));
assertEquals(checkSwitchGenerationCase(INTEGER, values), SET_CONTAINS);
}