tests: add more tests and organise

Síle Ekaterin Liszka 2024-01-12 22:44:43 -08:00
parent 053b9188a8
commit ab5d6b7181
Signed by: VulpineAmethyst
SSH Key Fingerprint: SHA256:VcHwQ6SUfi/p0Csfxe3SabX/TImWER0PhoJqkt+GlmE
4 changed files with 102 additions and 62 deletions

49
tests/test_bare.py Normal file
View File

@ -0,0 +1,49 @@
import pytest
from xbc import loads_xbc, ParseError
def test_key():
assert loads_xbc('a') == {'a': True}
def test_dot_key():
assert loads_xbc('a.a') == {'a.a': True}
def test_key_eq():
assert loads_xbc('a =') == {'a': True}
def test_keyvalue():
assert loads_xbc('a = 1') == {'a': '1'}
def test_keyvalue_space():
assert loads_xbc('a = a b') == {'a': 'a b'}
def test_dot_keyvalue():
assert loads_xbc('a.a = 1') == {'a.a': '1'}
def test_keys():
assert loads_xbc('a;b') == {'a': True, 'b': True}
def test_dot_keys():
assert loads_xbc('a.a;a.b') == {'a.a': True, 'a.b': True}
def test_quoted():
assert loads_xbc('a = "b"') == {'a': 'b'}
def test_quoted_space():
assert loads_xbc('a = "b "') == {'a': 'b '}
def test_array():
assert loads_xbc('a = 1, 2') == {'a': ['1', '2']}
def test_reassignment():
with pytest.raises(ParseError):
loads_xbc('a = 1\na = 2')
def test_reassignment_colon():
with pytest.raises(ParseError):
loads_xbc('a = 1;a = 2')
def test_ovewrite_nonexistent():
with pytest.raises(ParseError):
loads_xbc('a := 1')

View File

@ -1,62 +0,0 @@
import pytest
from xbc import loads_xbc, ParseError
class TestBareLoad:
def test_key(self):
assert loads_xbc('a') == {'a': True}
def test_dot_key(self):
assert loads_xbc('a.a') == {'a.a': True}
def test_key_eq(self):
assert loads_xbc('a =') == {'a': True}
def test_keyvalue(self):
assert loads_xbc('a = 1') == {'a': '1'}
def test_dot_keyvalue(self):
assert loads_xbc('a.a = 1') == {'a.a': '1'}
def test_keys(self):
assert loads_xbc('a;b') == {'a': True, 'b': True}
def test_dot_keys(self):
assert loads_xbc('a.a;a.b') == {'a.a': True, 'a.b': True}
def test_string(self):
assert loads_xbc('a = "b"') == {'a': 'b'}
def test_array(self):
assert loads_xbc('a = 1, 2') == {'a': ['1', '2']}
def test_reassignment(self):
with pytest.raises(ParseError):
loads_xbc('a = 1\na = 2')
def test_reassignment_colon(self):
with pytest.raises(ParseError):
loads_xbc('a = 1;a = 2')
def test_ovewrite_nonexistent(self):
with pytest.raises(ParseError):
loads_xbc('a := 1')
class TestBlockLoad:
def test_keyvalue(self):
assert loads_xbc('a { a = 1 }') == {'a': False, 'a.a': '1'}
def test_nested_block(self):
assert loads_xbc('a { b { c = 1 } }') == {'a.b.c': '1', 'a': False, 'a.b': False}
def test_keyvalue_and_block(self):
assert loads_xbc('a = 1\na { a = 1 }') == {'a': '1', 'a.a': '1'}
def test_reassign_colon(self):
with pytest.raises(ParseError):
loads_xbc('a { a = 1; a = 2 }')
def test_assign_after_block(self):
with pytest.raises(ParseError):
loads_xbc('a { a = 1 }\na = 1')

24
tests/test_block.py Normal file
View File

@ -0,0 +1,24 @@
import pytest
from xbc import loads_xbc, ParseError
def test_empty():
assert loads_xbc('a {}') == {'a': True}
def test_keyvalue():
assert loads_xbc('a { a = 1 }') == {'a': False, 'a.a': '1'}
def test_nested_block():
assert loads_xbc('a { b { c = 1 } }') == {'a.b.c': '1', 'a': False, 'a.b': False}
def test_keyvalue_and_block():
assert loads_xbc('a = 1\na { a = 1 }') == {'a': '1', 'a.a': '1'}
def test_reassign_colon():
with pytest.raises(ParseError):
loads_xbc('a { a = 1; a = 2 }')
def test_assign_after_block():
with pytest.raises(ParseError):
loads_xbc('a { a = 1 }\na = 1')

29
tests/test_invalid.py Normal file
View File

@ -0,0 +1,29 @@
import pytest
from pyparsing.exceptions import ParseException
from xbc import loads_xbc, ParseError
# this should fail but does not.
@pytest.mark.xfail
def test_whitespace_vc():
with pytest.raises(ParseError):
loads_xbc('x = a\n, b')
# this should fail but does not.
@pytest.mark.xfail
def test_extra_quote():
with pytest.raises(ParseException):
loads_xbc("x = '''")
def test_lone_plus():
with pytest.raises(ParseException):
loads_xbc('+')
def test_lone_rbrace():
with pytest.raises(ParseException):
loads_xbc('}')
def test_lone_lbrace():
with pytest.raises(ParseException):
loads_xbc('{')