@Test public void testFromWithTernaryFollowedByQuery() throws Exception { // the 'from' expression requires a ";" to disambiguate the "?" // prefix for queries from the ternary operator "? :" final String text = "rule X when Cheese() from (isFull ? $cheesery : $market) ?person( \"Mark\", 42; ) then end"; RuleDescr rule = (RuleDescr) parse( "rule", text ); assertFalse( parser.getErrors().toString(), parser.hasErrors() ); PatternDescr pattern = (PatternDescr) rule.getLhs().getDescrs().get( 0 ); assertEquals( "Cheese", pattern.getObjectType() ); assertEquals( "from (isFull ? $cheesery : $market)", pattern.getSource().getText() ); assertFalse( pattern.isQuery() ); pattern = (PatternDescr) rule.getLhs().getDescrs().get( 1 ); assertEquals( "person", pattern.getObjectType() ); assertTrue( pattern.isQuery() ); }
@Test public void testFromFollowedByQuery() throws Exception { // the 'from' expression requires a ";" to disambiguate the "?" // prefix for queries from the ternary operator "? :" final String text = "rule X when Cheese() from $cheesery ?person( \"Mark\", 42; ) then end"; RuleDescr rule = (RuleDescr) parse( "rule", text ); assertFalse( parser.getErrors().toString(), parser.hasErrors() ); PatternDescr pattern = (PatternDescr) rule.getLhs().getDescrs().get( 0 ); assertEquals( "Cheese", pattern.getObjectType() ); assertEquals( "from $cheesery", pattern.getSource().getText() ); assertFalse( pattern.isQuery() ); pattern = (PatternDescr) rule.getLhs().getDescrs().get( 1 ); assertEquals( "person", pattern.getObjectType() ); assertTrue( pattern.isQuery() ); }
@Test public void testIsQuery() throws Exception { final String text = "rule X when ?person( \"Mark\", 42; ) then end"; PatternDescr pattern = (PatternDescr) ((RuleDescr) parse( "rule", text )).getLhs().getDescrs().get( 0 ); assertTrue( pattern.isQuery() ); assertEquals( 2, pattern.getDescrs().size() ); ExprConstraintDescr fcd = (ExprConstraintDescr) pattern.getDescrs().get( 0 ); assertEquals( "\"Mark\"", fcd.getExpression() ); assertEquals( 0, fcd.getPosition() ); assertEquals( ExprConstraintDescr.Type.POSITIONAL, fcd.getType() ); fcd = (ExprConstraintDescr) pattern.getDescrs().get( 1 ); assertEquals( "42", fcd.getExpression() ); assertEquals( 1, fcd.getPosition() ); assertEquals( ExprConstraintDescr.Type.POSITIONAL, fcd.getType() ); }