1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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)
|