From e723ad58d045e350a570d25d3ee2894468229ade Mon Sep 17 00:00:00 2001 From: Ziad Elshereif Date: Wed, 14 Jan 2026 12:52:10 +0100 Subject: [PATCH 1/8] Create .gitignore to exclude venv/ --- .gitignore | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..932bbfb --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +venv/ +__pycache__/ +*.pyc +.pytest_cache/ +.tox/ +.coverage +htmlcov/ From 11cf3c8dc53e275d0b961174b91badf6ef47ecdd Mon Sep 17 00:00:00 2001 From: Ziad Elshereif Date: Wed, 14 Jan 2026 13:04:58 +0100 Subject: [PATCH 2/8] Add Assertion Statements --- diffusion2d.py | 9 ++++++++- report.md | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 report.md diff --git a/diffusion2d.py b/diffusion2d.py index 51a07f2..89f32e3 100644 --- a/diffusion2d.py +++ b/diffusion2d.py @@ -38,6 +38,10 @@ def __init__(self): self.dt = None def initialize_domain(self, w=10., h=10., dx=0.1, dy=0.1): + assert isinstance(w, float), 'w should be a float' + assert isinstance(h, float), 'h should be a float' + assert isinstance(dx, float), 'dx should be a float' + assert isinstance(dy, float), 'dy should be a float' self.w = w self.h = h self.dx = dx @@ -45,7 +49,10 @@ def initialize_domain(self, w=10., h=10., dx=0.1, dy=0.1): self.nx = int(w / dx) self.ny = int(h / dy) - def initialize_physical_parameters(self, d=4., T_cold=300, T_hot=700): + def initialize_physical_parameters(self, d=4., T_cold=300., T_hot=700.): + assert isinstance(d, float), 'd should be a float' + assert isinstance(T_cold, float), 'T_cold should be a float' + assert isinstance(T_hot, float), 'T_hot should be a float' self.D = d self.T_cold = T_cold self.T_hot = T_hot diff --git a/report.md b/report.md new file mode 100644 index 0000000..af084c2 --- /dev/null +++ b/report.md @@ -0,0 +1,14 @@ +# Step 2 + +Added assertions to ensure input parameters are floats. The code failed because the default values for temperature were integers (300, 700) instead of floats (300.0, 700.0). + +``` +Traceback (most recent call last): + File "diffusion2d.py", line 146, in + main() + File "diffusion2d.py", line 116, in main + DiffusionSolver.initialize_physical_parameters() + File "diffusion2d.py", line 54, in initialize_physical_parameters + assert isinstance(T_cold, float), 'T_cold should be a float' +AssertionError: T_cold should be a float +``` From d5246c632ce86c384dbb15fd10b5c66c0fbd6aac Mon Sep 17 00:00:00 2001 From: Ziad Elshereif Date: Wed, 14 Jan 2026 13:43:46 +0100 Subject: [PATCH 3/8] Add unit tests --- tests/unit/test_diffusion2d_functions.py | 46 ++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/tests/unit/test_diffusion2d_functions.py b/tests/unit/test_diffusion2d_functions.py index c4277ff..04ed6c6 100644 --- a/tests/unit/test_diffusion2d_functions.py +++ b/tests/unit/test_diffusion2d_functions.py @@ -2,6 +2,7 @@ Tests for functions in class SolveDiffusion2D """ +import numpy as np from diffusion2d import SolveDiffusion2D @@ -10,17 +11,58 @@ def test_initialize_domain(): Check function SolveDiffusion2D.initialize_domain """ solver = SolveDiffusion2D() + w = 20. + h = 10. + dx = 0.5 + dy = 2. + solver.initialize_domain(w=w, h=h, dx=dx, dy=dy) + + assert solver.w == w + assert solver.h == h + assert solver.dx == dx + assert solver.dy == dy + assert solver.nx == 40 + assert solver.ny == 5 def test_initialize_physical_parameters(): """ - Checks function SolveDiffusion2D.initialize_domain + Checks function SolveDiffusion2D.initialize_physical_parameters """ solver = SolveDiffusion2D() + solver.dx = 0.2 + solver.dy = 0.2 + d = 5. + T_cold = 200. + T_hot = 600. + solver.initialize_physical_parameters(d=d, T_cold=T_cold, T_hot=T_hot) + + assert solver.D == d + assert solver.T_cold == T_cold + assert solver.T_hot == T_hot + + # Expected dt = dx2 * dy2 / (2 * D * (dx2 + dy2)) + # dx2 = 0.04, dy2 = 0.04 + # dt = 0.0016 / (2 * 5 * 0.08) = 0.0016 / 0.8 = 0.002 + # Using np.isclose for float comparison + assert np.isclose(solver.dt, 0.002) def test_set_initial_condition(): """ - Checks function SolveDiffusion2D.get_initial_function + Checks function SolveDiffusion2D.set_initial_condition """ solver = SolveDiffusion2D() + solver.initialize_domain(w=10., h=10., dx=1., dy=1.) + solver.initialize_physical_parameters(d=4., T_cold=300., T_hot=700.) + + u = solver.set_initial_condition() + + # Check shape + assert u.shape == (10, 10) + + # Check T_cold outside (0, 0) -> (0-5)^2 + (0-5)^2 = 50 > 4 + assert u[0, 0] == 300. + + # Check T_hot inside (5, 5) -> (5-5)^2 + (5-5)^2 = 0 < 4 + assert u[5, 5] == 700. From e4bb9136ce7f53525e084d6877a116b0914523f2 Mon Sep 17 00:00:00 2001 From: Ziad Elshereif Date: Wed, 14 Jan 2026 13:54:11 +0100 Subject: [PATCH 4/8] Add intentional bug --- diffusion2d.py | 2 +- report.md | 15 +++ tests/unit/test_diffusion2d_functions.py | 116 ++++++++++++----------- 3 files changed, 75 insertions(+), 58 deletions(-) diff --git a/diffusion2d.py b/diffusion2d.py index 89f32e3..1646373 100644 --- a/diffusion2d.py +++ b/diffusion2d.py @@ -46,7 +46,7 @@ def initialize_domain(self, w=10., h=10., dx=0.1, dy=0.1): self.h = h self.dx = dx self.dy = dy - self.nx = int(w / dx) + self.nx = int(h / dx) self.ny = int(h / dy) def initialize_physical_parameters(self, d=4., T_cold=300., T_hot=700.): diff --git a/report.md b/report.md index af084c2..5c48407 100644 --- a/report.md +++ b/report.md @@ -12,3 +12,18 @@ Traceback (most recent call last): assert isinstance(T_cold, float), 'T_cold should be a float' AssertionError: T_cold should be a float ``` + +# Step 4: Verification + +Introduced a bug in `initialize_domain`: `self.nx = int(h / dx)` instead of `int(w / dx)`. +The test `test_initialize_domain` failed as expected with `assert 20 == 40`. +This confirms the test correctly catches errors in domain initialization. + +# Step 4: Verification (Unittest) + +Refactored tests to use `unittest` and `setUp`. Re-introduced the same bug in `initialize_domain`. +The test `test_initialize_domain` failed again as expected: +``` +FAILED tests/unit/test_diffusion2d_functions.py::TestDiffusion2D::test_initialize_domain - AssertionError: 20 != 40 +``` +This confirms the refactored test suite is correctly constructed. diff --git a/tests/unit/test_diffusion2d_functions.py b/tests/unit/test_diffusion2d_functions.py index 04ed6c6..e3f8f7c 100644 --- a/tests/unit/test_diffusion2d_functions.py +++ b/tests/unit/test_diffusion2d_functions.py @@ -2,67 +2,69 @@ Tests for functions in class SolveDiffusion2D """ +import unittest import numpy as np from diffusion2d import SolveDiffusion2D -def test_initialize_domain(): - """ - Check function SolveDiffusion2D.initialize_domain - """ - solver = SolveDiffusion2D() - w = 20. - h = 10. - dx = 0.5 - dy = 2. - solver.initialize_domain(w=w, h=h, dx=dx, dy=dy) - - assert solver.w == w - assert solver.h == h - assert solver.dx == dx - assert solver.dy == dy - assert solver.nx == 40 - assert solver.ny == 5 +class TestDiffusion2D(unittest.TestCase): + def setUp(self): + self.solver = SolveDiffusion2D() + def test_initialize_domain(self): + """ + Check function SolveDiffusion2D.initialize_domain + """ + w = 20. + h = 10. + dx = 0.5 + dy = 2. + self.solver.initialize_domain(w=w, h=h, dx=dx, dy=dy) + + self.assertEqual(self.solver.w, w) + self.assertEqual(self.solver.h, h) + self.assertEqual(self.solver.dx, dx) + self.assertEqual(self.solver.dy, dy) + self.assertEqual(self.solver.nx, 40) + self.assertEqual(self.solver.ny, 5) -def test_initialize_physical_parameters(): - """ - Checks function SolveDiffusion2D.initialize_physical_parameters - """ - solver = SolveDiffusion2D() - solver.dx = 0.2 - solver.dy = 0.2 - d = 5. - T_cold = 200. - T_hot = 600. - solver.initialize_physical_parameters(d=d, T_cold=T_cold, T_hot=T_hot) - - assert solver.D == d - assert solver.T_cold == T_cold - assert solver.T_hot == T_hot - - # Expected dt = dx2 * dy2 / (2 * D * (dx2 + dy2)) - # dx2 = 0.04, dy2 = 0.04 - # dt = 0.0016 / (2 * 5 * 0.08) = 0.0016 / 0.8 = 0.002 - # Using np.isclose for float comparison - assert np.isclose(solver.dt, 0.002) + def test_initialize_physical_parameters(self): + """ + Checks function SolveDiffusion2D.initialize_physical_parameters + """ + self.solver.dx = 0.2 + self.solver.dy = 0.2 + d = 5. + T_cold = 200. + T_hot = 600. + self.solver.initialize_physical_parameters(d=d, T_cold=T_cold, T_hot=T_hot) + + self.assertEqual(self.solver.D, d) + self.assertEqual(self.solver.T_cold, T_cold) + self.assertEqual(self.solver.T_hot, T_hot) + + # Expected dt = dx2 * dy2 / (2 * D * (dx2 + dy2)) + # dx2 = 0.04, dy2 = 0.04 + # dt = 0.0016 / (2 * 5 * 0.08) = 0.0016 / 0.8 = 0.002 + self.assertAlmostEqual(self.solver.dt, 0.002) - -def test_set_initial_condition(): - """ - Checks function SolveDiffusion2D.set_initial_condition - """ - solver = SolveDiffusion2D() - solver.initialize_domain(w=10., h=10., dx=1., dy=1.) - solver.initialize_physical_parameters(d=4., T_cold=300., T_hot=700.) - - u = solver.set_initial_condition() - - # Check shape - assert u.shape == (10, 10) - - # Check T_cold outside (0, 0) -> (0-5)^2 + (0-5)^2 = 50 > 4 - assert u[0, 0] == 300. - - # Check T_hot inside (5, 5) -> (5-5)^2 + (5-5)^2 = 0 < 4 - assert u[5, 5] == 700. + def test_set_initial_condition(self): + """ + Checks function SolveDiffusion2D.set_initial_condition + """ + self.solver.initialize_domain(w=10., h=10., dx=1., dy=1.) + self.solver.initialize_physical_parameters(d=4., T_cold=300., T_hot=700.) + + u = self.solver.set_initial_condition() + + # Check shape + self.assertEqual(u.shape, (10, 10)) + + # Check T_cold outside (0, 0) -> (0-5)^2 + (0-5)^2 = 50 > 4 + self.assertEqual(u[0, 0], 300.) + + # Check T_hot inside (5, 5) -> (5-5)^2 + (5-5)^2 = 0 < 4 + # Index corresponding to x=5, y=5. + # i * dx = x => i = 5/1 = 5 + # j * dy = y => j = 5/1 = 5 + self.assertEqual(u[5, 5], 700.) From e501df0d8ac8312ee00341375f1ed0207d285153 Mon Sep 17 00:00:00 2001 From: Ziad Elshereif Date: Wed, 14 Jan 2026 14:08:21 +0100 Subject: [PATCH 5/8] Add integration tests --- diffusion2d.py | 2 +- report.md | 14 +++++++ tests/integration/test_diffusion2d.py | 55 ++++++++++++++++++++++++++- 3 files changed, 68 insertions(+), 3 deletions(-) diff --git a/diffusion2d.py b/diffusion2d.py index 1646373..89f32e3 100644 --- a/diffusion2d.py +++ b/diffusion2d.py @@ -46,7 +46,7 @@ def initialize_domain(self, w=10., h=10., dx=0.1, dy=0.1): self.h = h self.dx = dx self.dy = dy - self.nx = int(h / dx) + self.nx = int(w / dx) self.ny = int(h / dy) def initialize_physical_parameters(self, d=4., T_cold=300., T_hot=700.): diff --git a/report.md b/report.md index 5c48407..3f8dc30 100644 --- a/report.md +++ b/report.md @@ -27,3 +27,17 @@ The test `test_initialize_domain` failed again as expected: FAILED tests/unit/test_diffusion2d_functions.py::TestDiffusion2D::test_initialize_domain - AssertionError: 20 != 40 ``` This confirms the refactored test suite is correctly constructed. + +# Step 5: Integration Tests + +Implemented integration tests in `tests/integration/test_diffusion2d.py`. +- `test_initialize_physical_parameters`: Verifies `dt` is computed correctly when `initialize_domain` and `initialize_physical_parameters` are called together. +- `test_set_initial_condition`: Verifies the initial condition array `u` matches expected values computed manually. + +Both tests passed. + +# Step 5: Verification (Integration Tests) + +Introduced bug in `initialize_physical_parameters` (wrong formula: `dx2 * dy2` instead of `dx2 + dy2`). +The test `test_initialize_physical_parameters` failed as expected. +This confirms the integration tests correctly catch errors. diff --git a/tests/integration/test_diffusion2d.py b/tests/integration/test_diffusion2d.py index fd026b4..293cf9a 100644 --- a/tests/integration/test_diffusion2d.py +++ b/tests/integration/test_diffusion2d.py @@ -2,18 +2,69 @@ Tests for functionality checks in class SolveDiffusion2D """ +import numpy as np from diffusion2d import SolveDiffusion2D def test_initialize_physical_parameters(): """ - Checks function SolveDiffusion2D.initialize_domain + Checks that dt is computed correctly when initialize_domain + and initialize_physical_parameters are called together. """ solver = SolveDiffusion2D() + + # Integration: call initialize_domain first + w = 10. + h = 10. + dx = 0.5 + dy = 0.5 + solver.initialize_domain(w=w, h=h, dx=dx, dy=dy) + + # Call initialize_physical_parameters + d = 2. + T_cold = 100. + T_hot = 500. + solver.initialize_physical_parameters(d=d, T_cold=T_cold, T_hot=T_hot) + + # Manual calculation of expected dt + # dt = dx2 * dy2 / (2 * D * (dx2 + dy2)) + # dx2 = 0.25, dy2 = 0.25 + # dt = 0.0625 / (2 * 2 * 0.5) = 0.0625 / 2 = 0.03125 + expected_dt = 0.03125 + + assert np.isclose(solver.dt, expected_dt) def test_set_initial_condition(): """ - Checks function SolveDiffusion2D.get_initial_function + Checks that the initial condition u is computed correctly + when all setup functions are called together. """ solver = SolveDiffusion2D() + + # Integration: call setup functions + w = 10. + h = 10. + dx = 1. + dy = 1. + solver.initialize_domain(w=w, h=h, dx=dx, dy=dy) + solver.initialize_physical_parameters(d=4., T_cold=300., T_hot=700.) + + # Call set_initial_condition + u = solver.set_initial_condition() + + # Manual calculation of expected u + nx = int(w / dx) + ny = int(h / dy) + expected_u = 300. * np.ones((nx, ny)) + + # Circle of radius r=2 centered at (cx=5, cy=5) + r, cx, cy = 2, 5, 5 + r2 = r ** 2 + for i in range(nx): + for j in range(ny): + p2 = (i * dx - cx) ** 2 + (j * dy - cy) ** 2 + if p2 < r2: + expected_u[i, j] = 700. + + np.testing.assert_array_equal(u, expected_u) From 57ff1ebce66f53e1aeb5c20a4249cea5adb149cf Mon Sep 17 00:00:00 2001 From: Ziad Elshereif Date: Wed, 14 Jan 2026 14:40:14 +0100 Subject: [PATCH 6/8] Add Coverage report --- coverage-report.pdf | Bin 0 -> 104635 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 coverage-report.pdf diff --git a/coverage-report.pdf b/coverage-report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9fbcf8df057aeb9e7be89fe4aef85cf3b7a49419 GIT binary patch literal 104635 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∋T3#OkB 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

%nRLZ!r0vK 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 z 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 literal 0 HcmV?d00001 From 502354933701514030b4abe6d9b2147ae03ed2d7 Mon Sep 17 00:00:00 2001 From: Ziad Elshereif Date: Wed, 14 Jan 2026 15:24:56 +0100 Subject: [PATCH 7/8] Add tox.toml --- requirements.txt | 5 +++++ tox.toml | 9 +++++++++ 2 files changed, 14 insertions(+) create mode 100644 requirements.txt create mode 100644 tox.toml diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..13a998b --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +numpy==1.24.4 +matplotlib==3.7.5 +pytest==8.3.5 +coverage==7.6.1 +tox>=4 diff --git a/tox.toml b/tox.toml new file mode 100644 index 0000000..236651c --- /dev/null +++ b/tox.toml @@ -0,0 +1,9 @@ +requires = ["tox>=4"] +env_list = ["py"] + +[env_run_base] +description = "Run tests using pytest" +skip_install = true +deps = ["-rrequirements.txt"] +set_env = { PYTHONPATH = "{tox_root}" } +commands = [["pytest", "tests", "-v"]] From 069a94c35201c5a79fb79efa7a1b642a6727a6ed Mon Sep 17 00:00:00 2001 From: Ziad Elshereif Date: Wed, 14 Jan 2026 15:37:31 +0100 Subject: [PATCH 8/8] Remove report.md --- report.md | 43 ------------------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 report.md diff --git a/report.md b/report.md deleted file mode 100644 index 3f8dc30..0000000 --- a/report.md +++ /dev/null @@ -1,43 +0,0 @@ -# Step 2 - -Added assertions to ensure input parameters are floats. The code failed because the default values for temperature were integers (300, 700) instead of floats (300.0, 700.0). - -``` -Traceback (most recent call last): - File "diffusion2d.py", line 146, in - main() - File "diffusion2d.py", line 116, in main - DiffusionSolver.initialize_physical_parameters() - File "diffusion2d.py", line 54, in initialize_physical_parameters - assert isinstance(T_cold, float), 'T_cold should be a float' -AssertionError: T_cold should be a float -``` - -# Step 4: Verification - -Introduced a bug in `initialize_domain`: `self.nx = int(h / dx)` instead of `int(w / dx)`. -The test `test_initialize_domain` failed as expected with `assert 20 == 40`. -This confirms the test correctly catches errors in domain initialization. - -# Step 4: Verification (Unittest) - -Refactored tests to use `unittest` and `setUp`. Re-introduced the same bug in `initialize_domain`. -The test `test_initialize_domain` failed again as expected: -``` -FAILED tests/unit/test_diffusion2d_functions.py::TestDiffusion2D::test_initialize_domain - AssertionError: 20 != 40 -``` -This confirms the refactored test suite is correctly constructed. - -# Step 5: Integration Tests - -Implemented integration tests in `tests/integration/test_diffusion2d.py`. -- `test_initialize_physical_parameters`: Verifies `dt` is computed correctly when `initialize_domain` and `initialize_physical_parameters` are called together. -- `test_set_initial_condition`: Verifies the initial condition array `u` matches expected values computed manually. - -Both tests passed. - -# Step 5: Verification (Integration Tests) - -Introduced bug in `initialize_physical_parameters` (wrong formula: `dx2 * dy2` instead of `dx2 + dy2`). -The test `test_initialize_physical_parameters` failed as expected. -This confirms the integration tests correctly catch errors.