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 = }",
)
|