var ir = dsl.flatten(dsl.parse(" ? bkfst : tag:breakfast & dinner : tag:dinner ")); assertEquals("aggregates,conditions", listSort(structKeyList(ir), 'text')); assertEquals(1, arrayLen(ir.conditions)); assertTrue(isInstanceOf(ir.conditions[1].criterion, "reporting_dsl.simplecriterion")); assertEquals("bkfst", ir.conditions[1].value); assertEquals("tag:breakfast", ir.conditions[1].query); assertEquals(1, arrayLen(ir.aggregates)); assertTrue(isInstanceOf(ir.aggregates[1].criterion, "reporting_dsl.simplecriterion")); assertEquals("dinner", ir.aggregates[1].value); assertEquals("tag:dinner", ir.aggregates[1].query); var ir = dsl.flatten(dsl.parse(" + tag:barney tag:home ? bkfst : tag:breakfast & dinner : tag:dinner ")); // still don't have core stuff assertEquals("aggregates,conditions", listSort(structKeyList(ir), 'text')); assertEquals(1, arrayLen(ir.conditions)); assertTrue(isInstanceOf(ir.conditions[1].criterion, "reporting_dsl.andcriterion")); assertEquals("bkfst", ir.conditions[1].value); assertEquals("tag:barney tag:home tag:breakfast", ir.conditions[1].query); assertEquals(1, arrayLen(ir.aggregates)); assertTrue(isInstanceOf(ir.aggregates[1].criterion, "reporting_dsl.andcriterion")); assertEquals("dinner", ir.aggregates[1].value); assertEquals("tag:barney tag:home tag:dinner", ir.aggregates[1].query);