def TestAtomicQueryParser():
  # Test this function rather thoroughly
  assert(isinstance(
    X.atomic_query_parser(".")[0],
    X.DotQuery))

  assert(isinstance(
    X.atomic_query_parser("..")[0],
    X.DotDotQuery))

  assert(isinstance(
    X.atomic_query_parser("*")[0],
    X.StarQuery))

  assert(isinstance(
    X.atomic_query_parser("**")[0],
    X.StarStarQuery))

  assert(isinstance(
    X.child_node_match_parser(
      "(ForEach@[foo='blah']@{codegroup}[12])")[0],
    X.ChildNodeMatchQuery))

  assert(isinstance(
    X.node_query_parser(
      "ForEach@[foo='blah']@{codegroup}[12]")[0],
    X.NodeMatchQuery))

  assert(isinstance(
    X.node_query_parser(
      "ForEach@{codegroup}[12]")[0],
    X.NodeMatchQuery))
def TestNodeQueryParser():
    assert (isinstance(
        X.node_query_parser("DefineVariable")[0], X.NodeMatchQuery))

    assert (isinstance(
        X.node_query_parser("ForEach@[foo='blah']@{codegroup}[12]")[0],
        X.NodeMatchQuery))
def TestNodeQueryParser():
  assert(isinstance(
    X.node_query_parser("DefineVariable")[0],
    X.NodeMatchQuery))

  assert(isinstance(
    X.node_query_parser(
      "ForEach@[foo='blah']@{codegroup}[12]")[0],
    X.NodeMatchQuery))
def TestAtomicQueryParser():
    # Test this function rather thoroughly
    assert (isinstance(X.atomic_query_parser(".")[0], X.DotQuery))

    assert (isinstance(X.atomic_query_parser("..")[0], X.DotDotQuery))

    assert (isinstance(X.atomic_query_parser("*")[0], X.StarQuery))

    assert (isinstance(X.atomic_query_parser("**")[0], X.StarStarQuery))

    assert (isinstance(
        X.child_node_match_parser("(ForEach@[foo='blah']@{codegroup}[12])")[0],
        X.ChildNodeMatchQuery))

    assert (isinstance(
        X.node_query_parser("ForEach@[foo='blah']@{codegroup}[12]")[0],
        X.NodeMatchQuery))

    assert (isinstance(
        X.node_query_parser("ForEach@{codegroup}[12]")[0], X.NodeMatchQuery))