|
6 | 6 | from mathics_scanner.feed import SingleLineFeeder |
7 | 7 |
|
8 | 8 |
|
9 | | -def replace_escape_sequences(code): |
10 | | - prescanner = Prescanner(SingleLineFeeder(code)) |
| 9 | +def replace_escape_sequences(mathics_text: str): |
| 10 | + prescanner = Prescanner(SingleLineFeeder(mathics_text)) |
11 | 11 | return prescanner.replace_escape_sequences() |
12 | 12 |
|
13 | 13 |
|
14 | | -def invalid(code): |
| 14 | +def assert_invalid(mathics_text: str): |
15 | 15 | with pytest.raises(ScanError): |
16 | | - replace_escape_sequences(code) |
| 16 | + replace_escape_sequences(mathics_text) |
17 | 17 |
|
18 | 18 |
|
19 | | -def incomplete(code): |
| 19 | +def assert_incomplete(mathics_text: str): |
20 | 20 | with pytest.raises(IncompleteSyntaxError): |
21 | | - replace_escape_sequences(code) |
| 21 | + replace_escape_sequences(mathics_text) |
22 | 22 |
|
23 | 23 |
|
24 | | -def equal(code, result): |
25 | | - assert replace_escape_sequences(code) == result |
| 24 | +def assert_equal(mathics_text: str, result: str): |
| 25 | + assert replace_escape_sequences(mathics_text) == result |
26 | 26 |
|
27 | 27 |
|
28 | | -def equal_length(code, length): |
29 | | - assert len(replace_escape_sequences(code)) == length |
| 28 | +def assert_equal_length(mathics_text: str, length): |
| 29 | + assert len(replace_escape_sequences(mathics_text)) == length |
30 | 30 |
|
31 | 31 |
|
32 | 32 | def test_named_characters(): |
33 | | - equal(r"\[Theta]", "\u03B8") |
34 | | - equal(r"\[CapitalPi]", "\u03A0") |
35 | | - equal(r"\[Fake]", r"\[Fake]") |
36 | | - equal("z \\[Conjugate]", "z \uF3C8") |
37 | | - equal("z \\[Integral]", "z \u222b") |
38 | | - equal("z \\\\[Integral]", "z \\\\[Integral]") |
39 | | - equal("z \\\\\\[Integral]", "z \\\\\u222b") |
40 | | - equal("abc\\\\", "abc\\\\") |
| 33 | + assert_equal(r"\[Theta]", "\u03B8") |
| 34 | + assert_equal(r"\[CapitalPi]", "\u03A0") |
| 35 | + assert_equal(r"\[Fake]", r"\[Fake]") |
| 36 | + assert_equal("z \\[Conjugate]", "z \uF3C8") |
| 37 | + assert_equal("z \\[Integral]", "z \u222b") |
| 38 | + assert_equal("z \\\\[Integral]", "z \\\\[Integral]") |
| 39 | + assert_equal("z \\\\\\[Integral]", "z \\\\\u222b") |
| 40 | + assert_equal("abc\\\\", "abc\\\\") |
41 | 41 |
|
42 | 42 |
|
43 | 43 | def test_text_lengths(): |
44 | | - equal_length(r'"\[Integral]"', 3) |
| 44 | + assert_equal_length(r'"\[Integral]"', 3) |
45 | 45 | # Prescanner keep both slashes and quotes. |
46 | 46 | # The tokenizer brings \\ into \ if it appears |
47 | 47 | # inside a string. |
48 | | - equal_length(r'"\\[Integral]"', 14) |
| 48 | + assert_equal_length(r'"\\[Integral]"', 14) |
49 | 49 |
|
50 | 50 |
|
51 | 51 | def test_oct(): |
52 | | - equal(r"\051", ")") |
| 52 | + assert_equal(r"\051", ")") |
53 | 53 |
|
54 | 54 |
|
55 | 55 | def test_hex_dot(): |
56 | | - equal(r"\.30", "0") |
| 56 | + assert_equal(r"\.30", "0") |
57 | 57 |
|
58 | 58 |
|
59 | 59 | def test_hex_colon(): |
60 | | - equal(r"\:0030", "0") |
61 | | - equal(r"\:03B8", "\u03B8") |
62 | | - equal(r"\:03b8", "\u03B8") |
| 60 | + assert_equal(r"\:0030", "0") |
| 61 | + assert_equal(r"\:03B8", "\u03B8") |
| 62 | + assert_equal(r"\:03b8", "\u03B8") |
63 | 63 |
|
64 | 64 |
|
65 | 65 | def test_hex_vbar(): |
66 | | - equal(r"\|01D451", "\U0001D451") |
| 66 | + assert_equal(r"\|01D451", "\U0001D451") |
67 | 67 |
|
68 | 68 |
|
69 | 69 | def test_incomplete(): |
70 | | - incomplete(r"\[") |
71 | | - incomplete(r"\[Theta") |
| 70 | + assert_incomplete(r"\[") |
| 71 | + assert_incomplete(r"\[Theta") |
72 | 72 |
|
73 | 73 |
|
74 | | -def test_invalid_oct(): |
75 | | - invalid(r"\093") |
76 | | - invalid(r"\01") |
| 74 | +def test_invalid_octal(): |
| 75 | + assert_invalid(r"\093") |
| 76 | + assert_invalid(r"\01") |
77 | 77 |
|
78 | 78 |
|
79 | 79 | def test_invalid_colon(): |
80 | | - invalid(r"\:") |
81 | | - invalid(r"\:A") |
82 | | - invalid(r"\:01") |
83 | | - invalid(r"\:A1") |
84 | | - invalid(r"\:ak") |
85 | | - invalid(r"\:A10") |
86 | | - invalid(r"\:a1g") |
87 | | - invalid(r"\:A1g9") |
88 | | - invalid(r"\:01-2") |
| 80 | + assert_invalid(r"\:") |
| 81 | + assert_invalid(r"\:A") |
| 82 | + assert_invalid(r"\:01") |
| 83 | + assert_invalid(r"\:A1") |
| 84 | + assert_invalid(r"\:ak") |
| 85 | + assert_invalid(r"\:A10") |
| 86 | + assert_invalid(r"\:a1g") |
| 87 | + assert_invalid(r"\:A1g9") |
| 88 | + assert_invalid(r"\:01-2") |
89 | 89 |
|
90 | 90 |
|
91 | 91 | def test_invalid_dot(): |
92 | | - invalid(r"\.") |
93 | | - invalid(r"\.0") |
| 92 | + assert_invalid(r"\.") |
| 93 | + assert_invalid(r"\.0") |
94 | 94 |
|
95 | 95 |
|
96 | 96 | def test_combined(): |
97 | | - equal(r"\:03B8\[Theta]\.30\052", "\u03B8\u03B80*") |
| 97 | + assert_equal(r"\:03B8\[Theta]\.30\052", "\u03B8\u03B80*") |
98 | 98 |
|
99 | 99 |
|
100 | 100 | def test_nested(): |
101 | | - equal(r"\[Thet\141]", r"\[Thet\141]") |
| 101 | + assert_equal(r"\[Thet\141]", r"\[Thet\141]") |
102 | 102 |
|
103 | 103 |
|
104 | 104 | def test_trailing_backslash(): |
105 | | - incomplete("x \\") |
| 105 | + assert_incomplete("x \\") |
0 commit comments