@Test
public void testInUnaryTestList() {

    String inputExpression = "x ** y in ( <=1000, >t, null, (2000..z[, ]z..2000], [(10+5)..(a*b)) )";
    BaseNode inNode = parse( inputExpression );
    assertThat( inNode, is( instanceOf( InNode.class ) ) );
    assertThat( inNode.getResultType(), is( BuiltInType.BOOLEAN ) );
    assertThat( inNode.getText(), is( inputExpression ) );
    InNode in = (InNode) inNode;
    assertThat( in.getValue(), is( instanceOf( InfixOpNode.class ) ) );
    assertThat( in.getValue().getText(), is( "x ** y" ) );
    assertThat( in.getExprs(), is( instanceOf( ListNode.class ) ) );
    assertThat( in.getExprs().getText(), is( "<=1000, >t, null, (2000..z[, ]z..2000], [(10+5)..(a*b))" ) );
    ListNode list = (ListNode) in.getExprs();
    assertThat( list.getElements().get( 0 ), is( instanceOf( RangeNode.class ) ) );
    assertThat( list.getElements().get( 0 ).getText(), is( "<=1000" ) );
    assertThat( list.getElements().get( 1 ), is( instanceOf( RangeNode.class ) ) );
    assertThat( list.getElements().get( 1 ).getText(), is( ">t" ) );
    assertThat( list.getElements().get( 2 ), is( instanceOf( NullNode.class ) ) );
    assertThat( list.getElements().get( 2 ).getText(), is( "null" ) );
    assertThat( list.getElements().get( 3 ), is( instanceOf( RangeNode.class ) ) );
    RangeNode interval = (RangeNode) list.getElements().get( 3 );
    assertThat( interval.getText(), is( "(2000..z[") );
    assertThat( interval.getLowerBound(), is( RangeNode.IntervalBoundary.OPEN ) );
    assertThat( interval.getUpperBound(), is( RangeNode.IntervalBoundary.OPEN ) );
    assertThat( interval.getStart(), is( instanceOf( NumberNode.class ) ) );
    assertThat( interval.getEnd(), is( instanceOf( NameRefNode.class ) ) );
    assertThat( list.getElements().get( 4 ), is( instanceOf( RangeNode.class ) ) );
    interval = (RangeNode) list.getElements().get( 4 );
    assertThat( interval.getText(), is( "]z..2000]") );
    assertThat( interval.getLowerBound(), is( RangeNode.IntervalBoundary.OPEN ) );
    assertThat( interval.getUpperBound(), is( RangeNode.IntervalBoundary.CLOSED ) );
    assertThat( interval.getStart(), is( instanceOf( NameRefNode.class ) ) );
    assertThat( interval.getEnd(), is( instanceOf( NumberNode.class ) ) );
    assertThat( list.getElements().get( 5 ), is( instanceOf( RangeNode.class ) ) );
    interval = (RangeNode) list.getElements().get( 5 );
    assertThat( interval.getText(), is( "[(10+5)..(a*b))") );
    assertThat( interval.getLowerBound(), is( RangeNode.IntervalBoundary.CLOSED ) );
    assertThat( interval.getUpperBound(), is( RangeNode.IntervalBoundary.OPEN ) );
    assertThat( interval.getStart(), is( instanceOf( InfixOpNode.class ) ) );
    assertThat( interval.getEnd(), is( instanceOf( InfixOpNode.class ) ) );
}