diff --git a/test/test_text.py b/test/test_text.py index f0cbea40..eeddb1fe 100644 --- a/test/test_text.py +++ b/test/test_text.py @@ -89,5 +89,37 @@ class TestText(unittest.TestCase): self.assertEqual(text.shorten_filename(case), result) self.assertTrue(len(text.shorten_filename(case).encode(enc)) <= 255) + def test_extract(self): + cases = { + ("", "<", ">") : ("a", 3), + ("", "X", ">") : (None, 0), + ("", "<", "X") : (None, 0), + ("", "<", ">", 3): ("b", 6), + ("", "X", ">", 3): (None, 3), + ("", "<", "X", 3): (None, 3), + } + for case, result in cases.items(): + self.assertEqual(text.extract(*case), result) + + def test_extract_all(self): + txt = "[c][b][a]: xyz! [d][e" + result = ({ + "A": "a", + "B": "b", + "X": "xyz", + "E": "xtra", + }, 15) + self.assertEqual(text.extract_all(txt, ( + (None, "[", "]"), + ("B" , "[", "]"), + ("A" , "[", "]"), + ("X" , ": ", "!"), + ), values={"E": "xtra"}), result) + + def test_extract_iter(self): + txt = "[c][b][a]: xyz! [d][e" + result = ["c", "b", "a", "d"] + self.assertEqual(list(text.extract_iter(txt, "[", "]")), result) + if __name__ == '__main__': unittest.main()