@RunWith(NamedParameterizedRunner.class)
public final class RangeEndpointComparisonTest {
@NamedParameterizedRunner.TestParameters
public static Collection<Parameterization> params() {
ParameterizationBuilder pb = new ParameterizationBuilder();
// nulls vs nulls
param(pb, nullInclusive(AARDVARK), EQ, nullInclusive(AARDVARK));
param(pb, nullInclusive(AARDVARK), LT_BARELY, nullExclusive(AARDVARK));
param(pb, nullExclusive(AARDVARK), EQ, nullExclusive(AARDVARK));
// nulls vs "normal" values
param(pb, nullInclusive(AARDVARK), LT, inclusive(AARDVARK));
param(pb, nullInclusive(AARDVARK), LT, exclusive(AARDVARK));
param(pb, nullExclusive(AARDVARK), LT, inclusive(AARDVARK));
param(pb, nullExclusive(AARDVARK), LT, exclusive(AARDVARK));
// nulls vs wild
param(pb, nullInclusive(AARDVARK), LT, RangeEndpoint.UPPER_WILD);
param(pb, nullExclusive(AARDVARK), LT, RangeEndpoint.UPPER_WILD);
// normal values vs same values
param(pb, inclusive(AARDVARK), EQ, inclusive(AARDVARK));
param(pb, inclusive(AARDVARK), LT_BARELY, exclusive(AARDVARK));
// normal values vs comparable values
param(pb, inclusive(AARDVARK), LT, inclusive(CAT));
param(pb, inclusive(AARDVARK), LT, exclusive(CAT));
param(pb, exclusive(AARDVARK), LT, inclusive(CAT));
param(pb, exclusive(AARDVARK), LT, exclusive(CAT));
// normal values vs wild
param(pb, inclusive(AARDVARK), LT, RangeEndpoint.UPPER_WILD);
param(pb, exclusive(AARDVARK), LT, RangeEndpoint.UPPER_WILD);
// wild vs wild
param(pb, RangeEndpoint.UPPER_WILD, EQ, RangeEndpoint.UPPER_WILD);
// incomparable types
param(pb, inclusive(TWO), INVALID, inclusive(AARDVARK));
param(pb, inclusive(TWO), INVALID, exclusive(AARDVARK));
param(pb, exclusive(TWO), INVALID, inclusive(AARDVARK));
param(pb, exclusive(TWO), INVALID, exclusive(AARDVARK));
return pb.asList();
}