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
}