var ir = dsl.sortConditionsByValue(dsl.parse(" ? 2 : tag:work ? 4 : tag:vacation ? 2 : tag:office ? 1 : tag:home ")); // numeric, descending, conditions assertEquals("conditions", listSort(structKeyList(ir), 'text')); assertEquals(4, arrayLen(ir.conditions)); assertEquals("4", ir.conditions[1].value); assertEquals("2", ir.conditions[2].value); assertEquals("tag:work", ir.conditions[2].query); assertEquals("2", ir.conditions[3].value); assertEquals("1", ir.conditions[4].value); var ir = dsl.sortConditionsByValue(dsl.parse(" & 2 : tag:work & 4 : tag:vacation & 2 : tag:office & 1 : tag:home "), 'numeric', 'desc', true); // numeric, descending, conditions assertEquals("aggregates", listSort(structKeyList(ir), 'text')); assertEquals(4, arrayLen(ir.aggregates)); assertEquals("4", ir.aggregates[1].value); assertEquals("2", ir.aggregates[2].value); assertEquals("tag:work", ir.aggregates[2].query); assertEquals("2", ir.aggregates[3].value); assertEquals("1", ir.aggregates[4].value); var ir = dsl.sortConditionsByValue(dsl.parse(" ? 2 : tag:work ? 4 : tag:vacation ? 2 : tag:office ? 1 : tag:home "), 'numeric', 'asc'); // conditions assertEquals("conditions", listSort(structKeyList(ir), 'text')); assertEquals(4, arrayLen(ir.conditions)); assertEquals("1", ir.conditions[1].value); assertEquals("2", ir.conditions[2].value); assertEquals("tag:work", ir.conditions[2].query); assertEquals("2", ir.conditions[3].value); assertEquals("4", ir.conditions[4].value); var ir = dsl.sortConditionsByValue(dsl.parse(" ? two : tag:work ? four : tag:vacation ? TWO : tag:office ? ONE : tag:home "), 'textNoCase', 'asc'); // conditions assertEquals("conditions", listSort(structKeyList(ir), 'text')); assertEquals(4, arrayLen(ir.conditions)); assertEquals("four", ir.conditions[1].value); assertEquals("ONE", ir.conditions[2].value); assertEquals("two", ir.conditions[3].value); assertEquals("tag:work", ir.conditions[3].query); assertEquals("TWO", ir.conditions[4].value); var ir = dsl.sortConditionsByValue(dsl.parse(" ? two : tag:work ? four : tag:vacation ? TWO : tag:office ? ONE : tag:home "), 'text', 'asc'); // conditions assertEquals("conditions", listSort(structKeyList(ir), 'text')); assertEquals(4, arrayLen(ir.conditions)); assertEquals("ONE", ir.conditions[1].value); assertEquals("TWO", ir.conditions[2].value); assertEquals("four", ir.conditions[3].value); assertEquals("two", ir.conditions[4].value); assertEquals("tag:work", ir.conditions[4].query);