-
Notifications
You must be signed in to change notification settings - Fork 29
/
Copy pathtest_parser.py
85 lines (71 loc) · 2.86 KB
/
test_parser.py
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from kalamine import KeyboardLayout
from .util import get_layout_dict
def load_layout(filename: str, angle_mod: bool = False) -> KeyboardLayout:
return KeyboardLayout(get_layout_dict(filename), angle_mod)
def test_ansi():
layout = load_layout("ansi")
assert layout.layers[0]["ad01"] == "q"
assert layout.layers[1]["ad01"] == "Q"
assert layout.layers[0]["tlde"] == "`"
assert layout.layers[1]["tlde"] == "~"
assert not layout.has_altgr
assert not layout.has_1dk
assert "**" not in layout.dead_keys
# ensure angle mod is NOT applied
layout = load_layout("ansi", angle_mod=True)
assert layout.layers[0]["ab01"] == "z"
assert layout.layers[1]["ab01"] == "Z"
def test_prog(): # AltGr + dead keys
layout = load_layout("prog")
assert layout.layers[0]["ad01"] == "q"
assert layout.layers[1]["ad01"] == "Q"
assert layout.layers[0]["tlde"] == "`"
assert layout.layers[1]["tlde"] == "~"
assert layout.layers[4]["tlde"] == "*`"
assert layout.layers[5]["tlde"] == "*~"
assert layout.has_altgr
assert not layout.has_1dk
assert "**" not in layout.dead_keys
assert len(layout.dead_keys["*`"]) == 18
assert len(layout.dead_keys["*~"]) == 21
def test_intl(): # 1dk + dead keys
layout = load_layout("intl")
assert layout.layers[0]["ad01"] == "q"
assert layout.layers[1]["ad01"] == "Q"
assert layout.layers[0]["tlde"] == "*`"
assert layout.layers[1]["tlde"] == "*~"
assert not layout.has_altgr
assert layout.has_1dk
assert "**" in layout.dead_keys
assert len(layout.dead_keys) == 5
assert "**" in layout.dead_keys
assert "*`" in layout.dead_keys
assert "*^" in layout.dead_keys
assert "*¨" in layout.dead_keys
assert "*~" in layout.dead_keys
assert len(layout.dead_keys["**"]) == 15
assert len(layout.dead_keys["*`"]) == 18
assert len(layout.dead_keys["*^"]) == 43
assert len(layout.dead_keys["*¨"]) == 21
assert len(layout.dead_keys["*~"]) == 21
# ensure the 1dk parser does not accumulate values from a previous run
layout = load_layout("intl")
assert len(layout.dead_keys["*`"]) == 18
assert len(layout.dead_keys["*~"]) == 21
assert len(layout.dead_keys) == 5
assert "**" in layout.dead_keys
assert "*`" in layout.dead_keys
assert "*^" in layout.dead_keys
assert "*¨" in layout.dead_keys
assert "*~" in layout.dead_keys
assert len(layout.dead_keys["**"]) == 15
assert len(layout.dead_keys["*`"]) == 18
assert len(layout.dead_keys["*^"]) == 43
assert len(layout.dead_keys["*¨"]) == 21
assert len(layout.dead_keys["*~"]) == 21
# ensure angle mod is working correctly
layout = load_layout("intl", angle_mod=True)
assert layout.layers[0]["lsgt"] == "z"
assert layout.layers[1]["lsgt"] == "Z"
assert layout.layers[0]["ab01"] == "x"
assert layout.layers[1]["ab01"] == "X"