diff tests/test_match.py @ 296:ca293f708cb4

Begin some preparation for handling glob-style patterns in treeview. Needed to implement inclusions and exclusions.
author Franz Glasner <fzglas.hg@dom66.de>
date Sun, 02 Mar 2025 22:54:40 +0100
parents
children 141a3aa0b403
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test_match.py	Sun Mar 02 22:54:40 2025 +0100
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+r"""Unit tests for :mod:`cutils.util.glob`
+
+"""
+
+from __future__ import absolute_import, print_function
+
+import _test_setup    # noqa: F401 imported but unused
+
+import sys
+import unittest
+
+from cutils.util.glob import CharIter
+
+
+class TestCharIter(unittest.TestCase):
+
+    def test_transitive_iter(self):
+        it = CharIter("1234")
+        self.assertIs(iter(it), it)
+
+    def test_native_str(self):
+        it = CharIter("1234")
+        chars = []
+        for c in it:
+            chars.append(c)
+        self.assertEqual("1234", "".join(chars))
+
+    def test_unicode_str(self):
+        it = CharIter(u"1234")
+        chars = []
+        for c in it:
+            chars.append(c)
+        self.assertEqual(u"1234", "".join(chars))
+
+    def test_byte_str(self):
+        it = CharIter(b"1234")
+        chars = []
+        for c in it:
+            chars.append(c)
+        self.assertEqual(b"1234", b"".join(chars))
+
+    def test_peek_exhausted(self):
+        it = CharIter("1234")
+        for _ in it:
+            pass
+        self.assertIsNone(it.peek())
+
+    def test_peek_first(self):
+        it = CharIter("1234")
+        self.assertEqual("1", it.peek())
+        chars = "".join(it)
+        self.assertEqual("1234", chars)
+        self.assertIsNone(it.peek())
+
+    def test_peek_from_second(self):
+        it = CharIter("1234")
+        self.assertEqual("1", it.peek())
+        self.assertEqual("1", next(it))
+        self.assertEqual("2", it.peek())
+        chars = "".join(it)
+        self.assertEqual("234", chars)
+        self.assertIsNone(it.peek())
+
+
+if __name__ == "__main__":
+    sys.exit(unittest.main())