From 2fffcd1e8acfb73605c2e6b6c22de43b06f4433c Mon Sep 17 00:00:00 2001 From: lyphrowny Date: Thu, 4 Apr 2024 02:03:02 +0300 Subject: [PATCH] FEM: add tests directory for function tests; add tests for parse_diff --- .../Fem/femtest/function_tests/__init__.py | 0 .../function_tests/test_support_utils.py | 158 ++++++++++++++++++ 2 files changed, 158 insertions(+) create mode 100644 src/Mod/Fem/femtest/function_tests/__init__.py create mode 100644 src/Mod/Fem/femtest/function_tests/test_support_utils.py diff --git a/src/Mod/Fem/femtest/function_tests/__init__.py b/src/Mod/Fem/femtest/function_tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/Mod/Fem/femtest/function_tests/test_support_utils.py b/src/Mod/Fem/femtest/function_tests/test_support_utils.py new file mode 100644 index 0000000000..044edfff77 --- /dev/null +++ b/src/Mod/Fem/femtest/function_tests/test_support_utils.py @@ -0,0 +1,158 @@ +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 = }", + )