@Test
public void t01_twoTagExpressions() throws Exception {

    String e1 = "tagA and not tagB";
    assertEquals("and(tagA, not tagB)", parser.parse(e1));
    // not tag is heavy, so tagA is prioritized to shortcut the analysis if tagA is empty
    String e2 = "not tagB and tagA";
    assertEquals("and(tagA, not tagB)", parser.parse(e2));
    // not tag is heavy, in or is difficult to optimize but we put at the end of the queue
    String e3 = "not tagB or tagA";
    assertEquals("or(tagA, not tagB)", parser.parse(e3));
    String e4 = "tagA = 'abc' and tagB = 'def'";
    assertEquals("and(tagA = 'abc', tagB = 'def')", parser.parse(e4));
}