From 07c0bde5e793606286fd4895f6ccdd0c16866550 Mon Sep 17 00:00:00 2001 From: Abdul Rehman Date: Wed, 14 Jan 2026 16:56:41 +0100 Subject: [PATCH] Add tests, automation, and coverage report --- .gitignore | 12 +++ coverage-report.pdf | Bin 0 -> 122732 bytes diffusion2d.py | 16 +++- requirements.txt | 4 + tests/integration/test_diffusion2d.py | 86 +++++++++++++++--- tests/unit/test_diffusion2d_functions.py | 109 +++++++++++++++++++---- tox.toml | 12 +++ 7 files changed, 212 insertions(+), 27 deletions(-) create mode 100644 .gitignore create mode 100644 coverage-report.pdf create mode 100644 requirements.txt create mode 100644 tox.toml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..03e61fc --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.pyc + +# Virtual environments +venv/ +.tox/ + +# Testing and coverage +.coverage +htmlcov/ +.pytest_cache/ \ No newline at end of file diff --git a/coverage-report.pdf b/coverage-report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..04d9b84e2106a35e74b0e4d17aee7fab59859ead GIT binary patch literal 122732 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 literal 0 HcmV?d00001 diff --git a/diffusion2d.py b/diffusion2d.py index 51a07f2..42625fc 100644 --- a/diffusion2d.py +++ b/diffusion2d.py @@ -42,13 +42,25 @@ def initialize_domain(self, w=10., h=10., dx=0.1, dy=0.1): self.h = h self.dx = dx self.dy = dy + + # Assertion statements to check for float inputs + assert isinstance(self.w, float), "w should be a float" + assert isinstance(self.h, float), "h should be a float" + assert isinstance(self.dx, float), "dx should be a float" + assert isinstance(self.dy, float), "dy should be a float" + 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.): self.D = d self.T_cold = T_cold self.T_hot = T_hot + + # Assertion statements to check for float inputs + assert isinstance(self.D, float), "D should be a float" + assert isinstance(self.T_cold, float), "T_cold should be a float" + assert isinstance(self.T_hot, float), "T_hot should be a float" # Computing a stable time step dx2, dy2 = self.dx * self.dx, self.dy * self.dy @@ -136,4 +148,4 @@ def main(): if __name__ == "__main__": - main() + main() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..8f87fb4 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +numpy +matplotlib +pytest +coverage \ No newline at end of file diff --git a/tests/integration/test_diffusion2d.py b/tests/integration/test_diffusion2d.py index fd026b4..100b262 100644 --- a/tests/integration/test_diffusion2d.py +++ b/tests/integration/test_diffusion2d.py @@ -1,19 +1,85 @@ """ Tests for functionality checks in class SolveDiffusion2D """ +import unittest +import numpy as np +import sys +import os + +# Fix import path to allow importing diffusion2d from the root directory +sys.path.append(os.getcwd()) from diffusion2d import SolveDiffusion2D -def test_initialize_physical_parameters(): - """ - Checks function SolveDiffusion2D.initialize_domain - """ - solver = SolveDiffusion2D() +class TestDiffusion2D(unittest.TestCase): + + def setUp(self): + """ + Fixture that runs before every test. + """ + self.solver = SolveDiffusion2D() + + def test_initialize_physical_parameters(self): + """ + Checks function SolveDiffusion2D.initialize_physical_parameters + running AFTER initialize_domain. + """ + # 1. Define inputs + w = 10.0 + h = 10.0 + dx = 1.0 + dy = 1.0 + d = 4.0 + T_cold = 300.0 + T_hot = 700.0 + + # 2. Call the functions in sequence (Integration) + self.solver.initialize_domain(w, h, dx, dy) + self.solver.initialize_physical_parameters(d, T_cold, T_hot) + + # 3. Calculate expected dt manually + # dt = dx^2 * dy^2 / (2 * D * (dx^2 + dy^2)) + # dt = (1*1) / (2 * 4 * (1+1)) = 1 / 16 = 0.0625 + expected_dt = 0.0625 + + # 4. Assertion + self.assertAlmostEqual(self.solver.dt, expected_dt, places=4) + + def test_set_initial_condition(self): + """ + Checks function SolveDiffusion2D.set_initial_condition + running AFTER domain and physical parameters are set. + """ + # 1. Define inputs for the whole chain + w = 10.0 + h = 10.0 + dx = 1.0 + dy = 1.0 + d = 4.0 + T_cold = 300.0 + T_hot = 700.0 + + # 2. Call the functions in sequence + self.solver.initialize_domain(w, h, dx, dy) + self.solver.initialize_physical_parameters(d, T_cold, T_hot) + actual_u = self.solver.set_initial_condition() + # 3. Manually compute expected_u + # We know initialize_domain with these params creates a 10x10 grid (w/dx, h/dy) + nx = 10 + ny = 10 + expected_u = T_cold * np.ones((nx, ny)) -def test_set_initial_condition(): - """ - Checks function SolveDiffusion2D.get_initial_function - """ - solver = SolveDiffusion2D() + # Circle logic from the problem statement: r=2, 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] = T_hot + + # 4. Assertion + np.testing.assert_array_equal(actual_u, expected_u) \ No newline at end of file diff --git a/tests/unit/test_diffusion2d_functions.py b/tests/unit/test_diffusion2d_functions.py index c4277ff..67af5d2 100644 --- a/tests/unit/test_diffusion2d_functions.py +++ b/tests/unit/test_diffusion2d_functions.py @@ -1,26 +1,105 @@ """ Tests for functions in class SolveDiffusion2D """ +import unittest +import numpy as np +import sys +import os + +# Fix import path: Add the root directory to sys.path so we can import diffusion2d +# This assumes you run the test from the root of the repository +sys.path.append(os.getcwd()) from diffusion2d import SolveDiffusion2D -def test_initialize_domain(): - """ - Check function SolveDiffusion2D.initialize_domain - """ - solver = SolveDiffusion2D() +class TestDiffusion2D(unittest.TestCase): + + def setUp(self): + """ + Fixture that runs before every test. + """ + self.solver = SolveDiffusion2D() + + def test_initialize_domain(self): + """ + Check function SolveDiffusion2D.initialize_domain + """ + # 1. Define input parameters different from defaults + w = 20.0 + h = 40.0 + dx = 2.0 + dy = 4.0 + + # 2. Expected values (manually calculated) + # nx = 20 / 2 = 10 + # ny = 40 / 4 = 10 + expected_nx = 10 + expected_ny = 10 + + # 3. Call the function + self.solver.initialize_domain(w, h, dx, dy) + + # 4. Assertions + self.assertEqual(self.solver.nx, expected_nx) + self.assertEqual(self.solver.ny, expected_ny) + + def test_initialize_physical_parameters(self): + """ + Checks function SolveDiffusion2D.initialize_physical_parameters + """ + # 1. Manually define the required internal variables (dx, dy) + # We must do this because we cannot call initialize_domain here. + self.solver.dx = 1.0 + self.solver.dy = 1.0 + + # 2. Define inputs + d = 5.0 + T_cold = 200.0 + T_hot = 600.0 + + # 3. Calculate expected dt manually + # dt = dx^2 * dy^2 / (2 * D * (dx^2 + dy^2)) + # dt = 1*1 / (2*5 * (1+1)) = 1 / 20 = 0.05 + expected_dt = 0.05 + # 4. Call the function + self.solver.initialize_physical_parameters(d, T_cold, T_hot) -def test_initialize_physical_parameters(): - """ - Checks function SolveDiffusion2D.initialize_domain - """ - solver = SolveDiffusion2D() + # 5. Assertions + self.assertAlmostEqual(self.solver.dt, expected_dt, places=5) + self.assertEqual(self.solver.T_cold, T_cold) + self.assertEqual(self.solver.T_hot, T_hot) + def test_set_initial_condition(self): + """ + Checks function SolveDiffusion2D.set_initial_condition + """ + # 1. Manually set all member variables required for calculation + self.solver.nx = 3 + self.solver.ny = 3 + self.solver.dx = 1.0 + self.solver.dy = 1.0 + self.solver.T_cold = 300.0 + self.solver.T_hot = 700.0 + + # 2. Call the function + actual_u = self.solver.set_initial_condition() -def test_set_initial_condition(): - """ - Checks function SolveDiffusion2D.get_initial_function - """ - solver = SolveDiffusion2D() + # 3. Manually compute the expected array + # We replicate the logic for a small 3x3 grid + expected_u = 300.0 * np.ones((3, 3)) + + # Circle parameters from the code: r=2, cx=5, cy=5 + r, cx, cy = 2, 5, 5 + r2 = r ** 2 + + for i in range(3): + for j in range(3): + p2 = (i * 1.0 - cx) ** 2 + (j * 1.0 - cy) ** 2 + if p2 < r2: + expected_u[i, j] = 700.0 + + # 4. Assertions + # Use numpy.testing to compare arrays + np.testing.assert_array_equal(actual_u, expected_u) \ No newline at end of file diff --git a/tox.toml b/tox.toml new file mode 100644 index 0000000..1eab694 --- /dev/null +++ b/tox.toml @@ -0,0 +1,12 @@ +[tox] +requires = ["tox>=4"] +env_list = ["test_env"] + +[testenv] +description = "run unit tests" +deps = ["-rrequirements.txt"] +commands = [ + ["pytest"], + ["coverage", "run", "-m", "pytest"], + ["coverage", "xml"], +] \ No newline at end of file