Skip to content

Commit

Permalink
more test-cases for split_tokens()
Browse files Browse the repository at this point in the history
  • Loading branch information
stroeder committed Feb 22, 2017
1 parent 5f769f7 commit 23b377f
Showing 1 changed file with 41 additions and 3 deletions.
44 changes: 41 additions & 3 deletions Tests/t_ldap_schema_tokenizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
TESTCASES_BASIC = (
(" BLUBBER DI BLUBB ", ["BLUBBER", "DI", "BLUBB"]),
("BLUBBER DI BLUBB", ["BLUBBER", "DI", "BLUBB"]),
("BL-UB-BER DI BL-UBB", ["BL-UB-BER", "DI", "BL-UBB"]),
("BLUBBER DI BLUBB ", ["BLUBBER", "DI", "BLUBB"]),
("BLUBBER DI 'BLUBB' ", ["BLUBBER", "DI", "BLUBB"]),
("BLUBBER ( DI ) 'BLUBB' ", ["BLUBBER", "(", "DI", ")", "BLUBB"]),
Expand All @@ -24,19 +25,38 @@
("BLUBB 'DA$BLAH'", ['BLUBB', "DA$BLAH"]),
("BLUBB DI 'BLU B B ER' DA 'BLAH' ", ['BLUBB', 'DI', 'BLU B B ER', 'DA', 'BLAH']),
("BLUBB DI 'BLU B B ER' DA 'BLAH' LABER", ['BLUBB', 'DI', 'BLU B B ER', 'DA', 'BLAH', 'LABER']),
("BLUBB\t'DA\tBLUB'", ['BLUBB', "DA\tBLUB"]),
)

# UTF-8 raw strings
TESTCASES_UTF8 = (
(" BL\xc3\x9cBBER D\xc3\x84 BL\xc3\x9cBB ", ["BL\xc3\x9cBBER", "D\xc3\x84", "BL\xc3\x9cBB"]),
("BL\xc3\x9cBBER D\xc3\x84 BL\xc3\x9cBB", ["BL\xc3\x9cBBER", "D\xc3\x84", "BL\xc3\x9cBB"]),
("BL\xc3\x9cBBER D\xc3\x84 BL\xc3\x9cBB ", ["BL\xc3\x9cBBER", "D\xc3\x84", "BL\xc3\x9cBB"]),
)

# broken schema of Oracle Internet Directory
TESTCASES_BROKEN_OID = (
("BLUBB DI 'BLU B B ER'MUST 'BLAH' ", ['BLUBB', 'DI', 'BLU B B ER', 'MUST', 'BLAH']),
("BLUBBER DI 'BLU'BB ER' DA 'BLAH' ", ["BLUBBER", "DI", "BLU'BB ER", "DA", "BLAH"]),
("BLUBB DI 'BLU B B ER'MUST 'BLAH' ", ['BLUBB', 'DI', 'BLU B B ER', 'MUST', 'BLAH'])
)

# for quoted single quotes inside string values
TESTCASES_ESCAPED_QUOTES = (
("BLUBBER DI 'BLU\'BB ER' DA 'BLAH' ", ["BLUBBER", "DI", "BLU'BB ER", "DA", "BLAH"]),
("BLUBBER '\\''", ["BLUBBER", "'"]),
("BLUBBER DI 'BLU\\'BB ER' DA 'BLAH' ", ["BLUBBER", "DI", "BLU'BB ER", "DA", "BLAH"]),
("BLUBBER DI 'BLU\\' BB ER' DA 'BLAH' ", ["BLUBBER", "DI", "BLU' BB ER", "DA", "BLAH"]),
)

# test cases which should result in ValueError raised
TESTCASES_BROKEN = (
"( BLUB",
"BLUB )",
"( BLUB )) DA (",
"BLUB 'DA",
r"BLUB 'DA\'",
"BLUB $ DA",
)

class TestSplitTokens(unittest.TestCase):
"""
Expand All @@ -48,18 +68,33 @@ def _run_split_tokens_tests(self, test_cases):
token_list = ldap.schema.split_tokens(test_value)
self.assertEqual(token_list, test_result)

def _run_failure_tests(self, test_cases):
for test_value in test_cases:
try:
_ = ldap.schema.split_tokens(test_value)
except ValueError:
pass
else:
self.fail('%r should have raised ValueError' % (test_value))

def test_basic(self):
"""
run test cases specified in constant TESTCASES_BASIC
"""
self._run_split_tokens_tests(TESTCASES_BASIC)

def test_utf8(self):
"""
run test cases specified in constant TESTCASES_BASIC
"""
self._run_split_tokens_tests(TESTCASES_UTF8)

@unittest.expectedFailure
def test_broken_oid(self):
"""
run test cases specified in constant TESTCASES_BROKEN_OID
"""
self._run_split_tokens_tests(TESTCASES_BROKEN_OID)
self._run_failure_tests(TESTCASES_BROKEN_OID)

@unittest.expectedFailure
def test_escaped_quotes(self):
Expand All @@ -68,6 +103,9 @@ def test_escaped_quotes(self):
"""
self._run_split_tokens_tests(TESTCASES_ESCAPED_QUOTES)

def test_broken(self):
self._run_failure_tests(TESTCASES_BROKEN)


if __name__ == '__main__':
unittest.main()

0 comments on commit 23b377f

Please sign in to comment.