File size: 5,211 Bytes
985c397
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
from ..app import support_utils
import unittest


class TestParse_Diff(unittest.TestCase):
    def test_ignore_triple_minuses(self) -> None:
        diff_lines = """---
---
---""".splitlines()
        bad_lines = support_utils.parse_diff(diff_lines=iter(diff_lines))
        self.assertFalse(bad_lines, f"Triple minuses should be ignored {bad_lines = }")

    def test_ignore_single_character(self) -> None:
        diff_lines = """@
@
?
*""".splitlines()
        bad_lines = support_utils.parse_diff(diff_lines=iter(diff_lines))
        self.assertFalse(bad_lines, f"Single characters are not ignored {bad_lines = }")

    def test_not_ignore_single_word(self) -> None:
        diff_lines = """---
+++
@@ @@
-12,
+11""".splitlines()
        bad_lines = support_utils.parse_diff(diff_lines=iter(diff_lines))
        self.assertTrue(bad_lines, f"Single words are ignored {bad_lines = }")

    def test_ignore_double_at_sign(self) -> None:
        diff_lines = """@@
@@
@@""".splitlines()
        bad_lines = support_utils.parse_diff(diff_lines=iter(diff_lines))
        self.assertFalse(bad_lines, f"Double '@' signs are not ignored {bad_lines = }")

    def test_good_float_rounding(self) -> None:
        diff_lines = """---
+++
@@ -11717 +11717 @@
-2505,2,-9.5670268990152E-01
+2505,2,-9.5670268990153E-01
@@ -12539 +12539 @@
-3327,2,-2.2462134450621E+00
+3327,2,-2.2462134450620E+00""".splitlines()
        bad_lines = support_utils.parse_diff(diff_lines=iter(diff_lines))
        self.assertFalse(bad_lines, f"Good rounding failed {bad_lines = }")

    def test_ignore_bad_formatting(self) -> None:
        diff_lines = """---
+++
@@ @@
-2, 3, 4, 5, 6
+2,3,4,5,6""".splitlines()
        bad_lines = support_utils.parse_diff(diff_lines=iter(diff_lines))
        self.assertFalse(bad_lines, f"Formatting is not checked {bad_lines = }")

    def test_good_rounding_consecutive_changes(self) -> None:
        diff_lines = """---
+++
@@ @@
-2505,2,-9.5670268990152E-01
+2505,2,-9.5670268990153E-01
-3327,2,-2.2462134450621E+00
+3327,2,-2.2462134450620E+00""".splitlines()
        bad_lines = support_utils.parse_diff(diff_lines=iter(diff_lines))
        self.assertFalse(bad_lines, f"Good consecutive rounding changes failed {bad_lines = }")

    def test_good_rounding_space_split(self) -> None:
        diff_lines = """---
+++
@@ @@
-2505 2 -9.5670268990152E-01
+2505 2 -9.5670268990153E-01""".splitlines()
        bad_lines = support_utils.parse_diff(diff_lines=iter(diff_lines))
        self.assertFalse(
            bad_lines,
            f"Good consecutive rounding changes split by space failed {bad_lines = }",
        )

    def test_bad_rounding_space_split(self) -> None:
        diff_lines = """---
+++
@@ @@
-2505 2 -9.5670268990152E-01
+2505 2 -9.5680268990153E-01""".splitlines()
        bad_lines = support_utils.parse_diff(diff_lines=iter(diff_lines))
        self.assertTrue(bad_lines, f"Bad rounding split by space shouldn't pass {bad_lines = }")

    def test_good_rounding_space_with_extra_word(self) -> None:
        diff_lines = """---
+++
@@ @@
-EXTRA 2505 2 -9.5670268990152E-01
+EXTRA 2505 2 -9.5670268990153E-01""".splitlines()
        bad_lines = support_utils.parse_diff(diff_lines=iter(diff_lines))
        self.assertFalse(bad_lines, f"Good rounding with extra word failed {bad_lines = }")

    def test_good_and_bad_rounding(self) -> None:
        diff_lines = """---
+++
@@ @@
-2505, 2, -9.5670268990152E-01
+2505, 2, -9.5670268990153E-01
@@ @@
-2505, 2, -9.5670268990152E-01
+2505, 2, -9.5680268990153E-01""".splitlines()
        bad_lines = support_utils.parse_diff(diff_lines=iter(diff_lines))
        self.assertTrue(bad_lines, f"Bad rounding split by space shouldn't pass {bad_lines = }")
        self.assertTrue(
            sum(line.startswith("@@") for line in bad_lines) == 1,
            f"Exactly one double '@' lines should be present {bad_lines = }",
        )

    def test_good_and_bad_rounding_consecutive(self) -> None:
        diff_lines = """---
+++
@@ @@
-2505, 2, -9.5670268990152E-01
+2505, 2, -9.5670268990153E-01
-2505, 2, -9.5670268990152E-01
+2505, 2, -9.5680268990153E-01""".splitlines()
        bad_lines = support_utils.parse_diff(diff_lines=iter(diff_lines))
        self.assertTrue(bad_lines, f"Bad rounding shouldn't pass {bad_lines = }")
        self.assertTrue(
            len(bad_lines) == 3,
            f"Number of bad_lines should be exactly three {bad_lines = }",
        )
        self.assertTrue(
            sum(line.startswith("@@") for line in bad_lines) == 1,
            f"Exactly one double '@' lines should be present {bad_lines = }",
        )

    def test_bad_and_bad_rounding(self) -> None:
        diff_lines = """---
+++
@@ @@
-2505, 2, -9.5670268990152E-01
+2505, 2. -9.5671268990153E-01
@@ @@
-2505, 2, -9.5670268990152E-01
+2505, 2, -9.5680268990153E-01""".splitlines()
        bad_lines = support_utils.parse_diff(diff_lines=iter(diff_lines))
        self.assertTrue(bad_lines, f"Bad rounding split by space shouldn't pass {bad_lines = }")
        self.assertTrue(
            sum(line.startswith("@@") for line in bad_lines) == 2,
            f"Exactly two double '@' lines should be present {bad_lines = }",
        )