RelationParser { static Parser<OrderBy.Item> orderByItem(Parser<Expression> expr) { return Parsers.sequence( expr, Parsers.or(TerminalParser.term("asc").retn(true), TerminalParser.term("desc").retn(false)).optional(true), OrderBy.Item::new); }  static Parser<Relation> query();  }
@Test public void testOrderByItem() { Parser<OrderBy.Item> parser = RelationParser.orderByItem(ExpressionParser.NUMBER); TerminalParserTest.assertParser(parser, "1", new OrderBy.Item(ExpressionParserTest.number(1), true)); TerminalParserTest.assertParser(parser, "1 asc", new OrderBy.Item(ExpressionParserTest.number(1), true)); TerminalParserTest.assertParser(parser, "1 desc", new OrderBy.Item(ExpressionParserTest.number(1), false)); }