summaryrefslogtreecommitdiffstats
path: root/tests/test_filter.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_filter.py')
-rw-r--r--tests/test_filter.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/test_filter.py b/tests/test_filter.py
new file mode 100644
index 0000000..e47b3b5
--- /dev/null
+++ b/tests/test_filter.py
@@ -0,0 +1,60 @@
+import pytest
+
+from prompt_toolkit.filters import Always, Condition, Filter, Never, to_filter
+
+
+def test_never():
+ assert not Never()()
+
+
+def test_always():
+ assert Always()()
+
+
+def test_invert():
+ assert not (~Always())()
+ assert ~Never()()
+
+ c = ~Condition(lambda: False)
+ assert c()
+
+
+def test_or():
+ for a in (True, False):
+ for b in (True, False):
+ c1 = Condition(lambda: a)
+ c2 = Condition(lambda: b)
+ c3 = c1 | c2
+
+ assert isinstance(c3, Filter)
+ assert c3() == a or b
+
+
+def test_and():
+ for a in (True, False):
+ for b in (True, False):
+ c1 = Condition(lambda: a)
+ c2 = Condition(lambda: b)
+ c3 = c1 & c2
+
+ assert isinstance(c3, Filter)
+ assert c3() == (a and b)
+
+
+def test_to_filter():
+ f1 = to_filter(True)
+ f2 = to_filter(False)
+ f3 = to_filter(Condition(lambda: True))
+ f4 = to_filter(Condition(lambda: False))
+
+ assert isinstance(f1, Filter)
+ assert isinstance(f2, Filter)
+ assert isinstance(f3, Filter)
+ assert isinstance(f4, Filter)
+ assert f1()
+ assert not f2()
+ assert f3()
+ assert not f4()
+
+ with pytest.raises(TypeError):
+ to_filter(4)