var ir = dsl.parseReport(" ## ## globals ## + tag:barney ## ## conditions ## ? Breakfast : tag:breakfast ? Lunch : tag:lunch ? Dinner : tag:dinner ## ## aggregates ## & Total : tag:meal "); var conditions = ir.getSeriesByType("condition"); var aggregates = ir.getSeriesByType("aggregate"); assertEquals("tag:barney", ir.getGlobalQuery()); assertEquals(4, arrayLen(ir.getAllSeries())); assertEquals("Breakfast", conditions[1].label); assertEquals("tag:barney tag:breakfast", conditions[1].query); assertEquals(1, arrayLen(aggregates)); assertEquals("Total", aggregates[1].label); assertEquals("tag:barney tag:meal", aggregates[1].query); var ir = dsl.parseReport(" ? bkfst : tag:breakfast & dinner : tag:dinner "); var conditions = ir.getSeriesByType("condition"); var aggregates = ir.getSeriesByType("aggregate"); assertEquals(1, arrayLen(conditions)); assertEquals("bkfst", conditions[1].label); assertEquals("tag:breakfast", conditions[1].query); assertEquals(1, arrayLen(aggregates)); assertEquals("dinner", aggregates[1].label); assertEquals("tag:dinner", aggregates[1].query); var ir = dsl.parseReport(" ? ""my:value"" : tag:meal "); var conditions = ir.getSeriesByType("condition"); assertEquals(1, arrayLen(conditions)); assertEquals("my:value", conditions[1].label); assertEquals("tag:meal", conditions[1].query); var ir = dsl.parseReport(" ? '' : tag:meal "); var conditions = ir.getSeriesByType("condition"); assertEquals(1, arrayLen(conditions)); assertEquals("", conditions[1].label); assertEquals("tag:meal", conditions[1].query); var ir = dsl.parseReport(" ? all : * "); var conditions = ir.getSeriesByType("condition"); assertEquals(1, arrayLen(conditions)); assertEquals("all", conditions[1].label); assertEquals("", conditions[1].query); var ir = dsl.parseReport(" ? bkfst > 3 : tag:breakfast & lunch > 'avg(tag:food>1)' : tag:lunch & dinner > ""avg(tag:'food > 1')"" : tag:dinner "); var conditions = ir.getSeriesByType("condition"); var aggregates = ir.getSeriesByType("aggregate"); assertEquals(1, arrayLen(conditions)); assertEquals("bkfst", conditions[1].label); assertEquals("tag:breakfast", conditions[1].query); assertEquals("3", conditions[1].value); assertEquals(2, arrayLen(aggregates)); assertEquals("lunch", aggregates[1].label); assertEquals("tag:lunch", aggregates[1].query); assertEquals("avg(tag:food>1)", aggregates[1].value); assertEquals("dinner", aggregates[2].label); assertEquals("tag:dinner", aggregates[2].query); assertEquals("avg(tag:'food > 1')", aggregates[2].value); try { dsl.parseReport("!sdf"); fail("didn't error on invalid command"); } catch (MalformedDslDocument.InvalidCommand e) { // good } try { dsl.parseReport("? barney"); fail("didn't error on one part line"); } catch (MalformedDslDocument.InvalidCondition e) { // good }