var result = dsl.parsePredicateMap("x:week y:count type:bar"); assertEquals("type,x,y", listSort(structKeyList(result), 'text')); assertEquals("bar", result.type); assertEquals("week", result.x); assertEquals("count", result.y); try { dsl.parsePredicateMap("x:week count type:bar"); fail("didn't error on predicateless term'"); } catch (IllegalArgumentException.MissingPredicate e) { // good } var result = dsl.parsePredicateMap("x:week -y:count type:bar"); assertEquals("type,x", listSort(structKeyList(result), 'text')); assertEquals("bar", result.type); assertEquals("week", result.x); var result = dsl.parsePredicateMap("x:week -count type:bar"); assertEquals("type,x", listSort(structKeyList(result), 'text')); assertEquals("bar", result.type); assertEquals("week", result.x); var result = dsl.parsePredicateMap("x:week (y:count type:bar) z:cat"); assertEquals("x,z", listSort(structKeyList(result), 'text')); assertEquals("week", result.x); assertEquals("cat", result.z); var result = dsl.parsePredicateMap("x:week y:count x:day"); assertEquals("x,y", listSort(structKeyList(result), 'text')); assertEquals("day", result.x); assertEquals("count", result.y);