def test_keep_non_alphanumeric(): assert parse_boolean('He?ll?o') == 'He?ll?o'
def test_single_word(): assert parse_boolean('Hello') == 'Hello'
def test_ending_and_whitespace(): with pytest.raises(ValueError): parse_boolean('(nemo AND fish) AND ')
def test_whitespace_only(): with pytest.raises(ValueError): parse_boolean(' ')
def test_and_or(): with pytest.raises(ValueError): parse_boolean('AND OR')
def test_empty_string(): with pytest.raises(ValueError): parse_boolean('')
def test_precedence_parentheses(): expected = ('AND', [('OR', ['Hello', 'WORLD']), '!']) assert parse_boolean('(Hello OR (WORLD)) AND !') == expected
def test_no_unnecessary_nesting(): expected = ('AND', ['Hello', 'WORLD', '!']) assert parse_boolean('(Hello AND (WORLD) AND !)') == expected
def test_operator_precedence(): expected = ('OR', ['Hello', ('AND', ['WORLD', '!'])]) assert parse_boolean('Hello OR (WORLD) AND !') == expected
def test_single_parentheses(): assert parse_boolean('(HELLO)') == '(HELLO)'