def test_build_parse_tokens(self): query_string = 'item:value OR item:value' assert ['item:value', 'OR', 'item:value'] == _get_tokens(query_string) query_string = '((item:value OR item:value) AND NOT (item:OR OR item:NOT)) OR true:true' assert _get_tokens(query_string) == ['(', '(', 'item:value', 'OR', 'item:value', ')', 'AND NOT', '(', 'item:OR', 'OR', 'item:NOT', ')', ')', 'OR', 'true:true']
def test_build_tree(self): query_string = '(item:value OR item:value) AND ((item:value OR item:value AND complicated:false) OR (item:value OR item:value))' tokens = _get_tokens(query_string) tree = _build_tree(tokens) assert tree == [['item:value', 'OR', 'item:value'], 'AND', [['item:value', 'OR', 'item:value', 'AND', 'complicated:false'], 'OR', ['item:value', 'OR', 'item:value']]]
def test_remove_top_level_brackets_if_needless(self): query_string = '(item:value OR item:value)' tokens = _get_tokens(query_string) tree = _build_tree(tokens) assert tree == ['item:value', 'OR', 'item:value']