From 2519a436cbd5237591b761eb410053d0b27a5202 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Silas=20M=C3=BCller?= Date: Sun, 18 Jan 2026 15:21:35 +0100 Subject: [PATCH] Python exercise finished. --- __pycache__/diffusion2d.cpython-313.pyc | Bin 0 -> 6760 bytes coverage-report.pdf | Bin 0 -> 23742 bytes coverage.xml | 179 ++++++++++++++++++ diffusion2d.py | 13 +- requirements.txt | 4 + ...t_diffusion2d.cpython-313-pytest-9.0.2.pyc | Bin 0 -> 3507 bytes tests/integration/test_diffusion2d.py | 27 ++- ...n2d_functions.cpython-313-pytest-9.0.2.pyc | Bin 0 -> 4988 bytes tests/unit/test_diffusion2d_functions.py | 34 +++- tox.ini | 10 + 10 files changed, 264 insertions(+), 3 deletions(-) create mode 100644 __pycache__/diffusion2d.cpython-313.pyc create mode 100644 coverage-report.pdf create mode 100644 coverage.xml create mode 100644 requirements.txt create mode 100644 tests/integration/__pycache__/test_diffusion2d.cpython-313-pytest-9.0.2.pyc create mode 100644 tests/unit/__pycache__/test_diffusion2d_functions.cpython-313-pytest-9.0.2.pyc create mode 100644 tox.ini diff --git a/__pycache__/diffusion2d.cpython-313.pyc b/__pycache__/diffusion2d.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ff179c697cdc5b107a496405244ec20d9a05fe5d GIT binary patch literal 6760 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 literal 0 HcmV?d00001 diff --git a/coverage-report.pdf b/coverage-report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cec8fe2555caab39b305cdb0e986d3f233979993 GIT binary patch literal 23742 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 D4OpJ0 literal 0 HcmV?d00001 diff --git a/coverage.xml b/coverage.xml new file mode 100644 index 0000000..48c3f94 --- /dev/null +++ b/coverage.xml @@ -0,0 +1,179 @@ + + + + + + /home/silas/git/testing-python-exercise + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/diffusion2d.py b/diffusion2d.py index 51a07f2..6e01fb0 100644 --- a/diffusion2d.py +++ b/diffusion2d.py @@ -38,6 +38,12 @@ def __init__(self): self.dt = None def initialize_domain(self, w=10., h=10., dx=0.1, dy=0.1): + # Assertion functions for type checking + assert isinstance(w, float), "w must be a float" + assert isinstance(h, float), "h must be a float" + assert isinstance(dx, float), "dx must be a float" + assert isinstance(dy, float), "dy must be a float" + self.w = w self.h = h self.dx = dx @@ -45,7 +51,12 @@ 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.): + # Add assertions + assert isinstance(d, float), "d must be a float" + assert isinstance(T_cold, float), "T_cold must be a float" + assert isinstance(T_hot, float), "T_hot must be a float" + self.D = d self.T_cold = T_cold self.T_hot = T_hot diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..021aae7 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +numpy +matplotlib +pytest +coverage diff --git a/tests/integration/__pycache__/test_diffusion2d.cpython-313-pytest-9.0.2.pyc b/tests/integration/__pycache__/test_diffusion2d.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ef902ef3c5d6cd6e082a12b3aaaa9e532817d9bc GIT binary patch literal 3507 zcmb_e-EZ4e6t^8GaqJ{*ItE);x~%KQT-5Y~e(Zy?jco{ZVu*S{mHJ?1iJMrYc69Bq zwFs#aAgxc^%cO}X9w|?I9@500u&$k286i#L0ZqINii9*C;GAn;$NgX(5|(}LIp_ZF zz2|=TckX5;BXjT!KCPSgV;uK08tf4QWpfggJDkQ5PUAJB5=lWByDU#CM1eZ7lOt&@4l+{})WpJR`KsZ#PJY%V`Prsbc1_zV)lGLkU#=PD zPn^7I<;(SwMQX$kvoF?ITVjW$5nhv~mqr8@iI$p4Gu%{` zX|1w{V{<+O&dQ-JqqMhhOzVM}jRxz*Vk^D6rBw&Rw#sO$4|#~GHIv=Z5*uSrWQrj* zxe)7z^|TaC(b7d_kf&C9W#k`*WOW-5j(0$JYId_;p-{bAx359R7If>Sbf+|HU=LpQJdGB9 z>Pv*!#M`F>8O)Vj-MG=Hm#h*}f|?-;2G3vj_!`7>1HO5WuXqVpFWdEs7kBlV?RpA^ z;m>|3YK%mUw|v7NWh`o(bTTkXKKghc4Aks7W56+ig$AmoJAkWTTGf77kD6`u8#fG6 zHXVcdodMHwjVhr*Q;%K=DXUUw%zH=aBEERRNgqU!g3oyXVv+kp;a!{LYU%a#-%Ijj+ir97cqi=@SM3vg=il}~jY>%&Wfbg5f`TV; z^D4-fBxD{4IR=C*{;!0Lk!*VyL0VE#nhJ@l1+r3F++Hrql(4^Nq(})nr0J=Ugj?-^ zuoFcE2s=6bb%d~`nUJQZb|qjIPe|CUQT8BH78@n(R;yQ9F)9Sh@or>?5u>H!VuEWybH?7Qp4DqsrV+rH79t)Ne;vnRUmk&qyqZu!2X6*ho!d>)lmh^TSF*D7NQw# z%+F|JkQ0zb2>u6T9|&*16PZ)lwknXEZOe<(hzMQ{2;KzHnmKlzA~^{FoQ87%u4`Kp1||oZAzm_J^zBF(Qg&VHU6FcMrQ?g|pD5{D<4fZY z#je}4RIDgnkZ=6=k=S)}JhXh}G5Cf;ALJ!wVMPF5#oj_psDOJzN#DGR!*$-SP_cA& zUF`JVM`9;-fYw?|T}5b!2^Bz)H(`a;te4c`vR2l0PhuAqdLq1ox_`wf_!kH`It5}} zC#DP6mC)rS10Ow4p45aJAa0Box0-X1-vz7TDUqD-pV2-TnQqcDN2Bm}RC;^Pt~Be$ xJLCe?<3-!SbM-97^Zajuz>9w-IG+EK`=aefuHz@}#P5kV{_ti`2Y-lm@(*(U*Np%G literal 0 HcmV?d00001 diff --git a/tests/integration/test_diffusion2d.py b/tests/integration/test_diffusion2d.py index fd026b4..fa80346 100644 --- a/tests/integration/test_diffusion2d.py +++ b/tests/integration/test_diffusion2d.py @@ -1,7 +1,8 @@ """ Tests for functionality checks in class SolveDiffusion2D """ - +import unittest +import numpy as np from diffusion2d import SolveDiffusion2D @@ -10,10 +11,34 @@ def test_initialize_physical_parameters(): Checks function SolveDiffusion2D.initialize_domain """ solver = SolveDiffusion2D() + w = 10. + h = 10. + dx = 1. + dy = 1. + d = 4. + t_cold = 300. + t_hot = 700. + solver.initialize_domain(w, h, dx,dy) + solver.initialize_physical_parameters(d, t_cold, t_hot) + assert solver.dt == 0.0625 def test_set_initial_condition(): """ Checks function SolveDiffusion2D.get_initial_function """ solver = SolveDiffusion2D() + w = 4. + h = 4. + dx = 1. + dy = 1. + d = 4. + t_cold = 300. + t_hot = 700. + solver.initialize_domain(w, h, dx, dy) + solver.initialize_physical_parameters(d, t_cold, t_hot) + + u = solver.set_initial_condition() + + assert u.shape == (4, 4) + assert u[0, 0] == 300. diff --git a/tests/unit/__pycache__/test_diffusion2d_functions.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_diffusion2d_functions.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd20730f06d588668c18e97f03fcdc83a6e269b1 GIT binary patch literal 4988 zcmeHK&2QYs73XldyIk&vB{?6KqBxA~q^1E&mLgeoQ^iVSyRFl@t*9*o=s;|CDT(Nc zTnwpLQc+YuUBEuYC=kHM9_?GsJ@rqpEEy6A6fn>Nt#58rpg>N2Z#XlgR@-jcqPGrq z-@KW5oOv^k{Qce>RjY;q$gg@1by0wLJd0)vTPSXR#sK3xIJMkx?vQWD*-iEHvDGf1%7CH zzS(Ry!qBvX_NVT3Z)Ig8gn_B+#tZc0wngHB?x804kX1#HIrtwv0txOCU$Ipm-0@ZT z=az{up5cnG)wKnDqN^;CrE@cI7+6dNY`C8EB+}2@THw|T--5FV?p)wQt=}oiazWTF z=t4{DF~!c;i_^p|Ed6v^6|30AWflgsTd1VgLK{y2Zp)Pz-9kAc@Se80lC z#%sr(8c3~$mVN3+1bj+&(%U*O*63?l5SF$+p1TC|`np}Rjk#P_xA`*(1t$Pt z-1EK2YqY&>*J%ao4bL}LlL$}GbLIT}pLxvZU*MPYn0%$q%~@po;yV{QTT@nO{G2Q1 zoQc|HD;)PXjbE5^Nqfc$<3fnYLm%hj92lUOLNW7I4PeQo5qoeJ454%O_KQ5M({F{X zV=Gt{if|JTp4d>V`kS#a-`R=)8Jz}=2c2f4-FB$kq0L~u)1Yo#fnn#94X+(}J~-PB zz#@##IN@5b(QYwQXSE%C(r7z=W8IBQPS{v+afZ0|A=?1J=?zK)8lQFmd)FJ0<8F4^ z4Znd13@&V0MojL+WGz-(oABSFC3Lrp3nxb~nQcsG8}B8JWZo;;#y3NZh$&0_OLQf7m!K>*iLtXAe6WB))tRsA5yqZ4Mo3rFoz^i(O>w8;E z?(S&U9J~7ujqIwShh8g{0OorxNFwF11V0k68N6|1^Eogg)2 zZai!II#5j!CpkFK<;wG43j}|1jp8fQ2T)tlF+gSbMDg$`#+jZ1aoeggl%;2} z=PeNN*$gst*0w?qkkbK71(b|j8UoTq6!Q;?;h?Xgz$Aj=*-<fp}J!^*(Ujpv$ipjo?`_2}&{>igRJ5>-YYYEJ;!wB7P3 zfL!u>s*NI2q#d9?gFb*2-UnbPS~$Rs_i!RjN_9+HG{j627#&SQ) zoUoMelV|Xg=kQZl#_x}n%v>h#%2eQ^ydsD>IsB*qKOfbJUBy8AMLQRKx301H+!JTe z3gBv!`ufk}qeFaZOHmr1%rm{uttfoyYbhbyJ~gf;R~mc39;}!6Nf`geNf=^PQS*~1 z!b#i(ARgMD?GMDOZsc&-lev=d0zV{<#V@aM#p4h>|I2wxrI*1X5gd*${fi7bTx)dP zV~8A+jT3mRQcMz<0C*q5`6jJUWZu(OXsMV|PokLK&L-Pel4SdeHJCs;#+btGSIK~T zVUfe|BEoR|YM9x0Gw@q*b%5kH&s_c5C|^#PWfGS%QS<=zZ1#IO+nCB`zcbm!Y*>cL zBpH}yLI)#^4thFH=iq^h@DB+~VY4g%kdG|Dt1KrRzH$b}et3BLb*O#-iEZiBfqs5h zKfkBH3uIBQd^UT37TDmy3KQLwFe?!~Q4skjWgk)kZ{Ywp21HXSF{#f6B`c0BAPSE%vix&o0O zr|uo|^5)Ul0C|H=^A9o;nY91_ literal 0 HcmV?d00001 diff --git a/tests/unit/test_diffusion2d_functions.py b/tests/unit/test_diffusion2d_functions.py index c4277ff..7bf2c1f 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 unittest from diffusion2d import SolveDiffusion2D @@ -9,18 +10,49 @@ def test_initialize_domain(): """ Check function SolveDiffusion2D.initialize_domain """ + w = 20. + h = 10. + dx = 2. + dy = 2. + # init solver solver = SolveDiffusion2D() - + + # run function and assert + solver.initialize_domain(w, h, dx, dy) + assert solver.nx == 10 + assert solver.ny == 5 def test_initialize_physical_parameters(): """ Checks function SolveDiffusion2D.initialize_domain """ + # init solver solver = SolveDiffusion2D() + solver.dx = 2. + solver.dy = 2. + + d = 4. + t_cold = 300. + t_hot = 700. + + solver.initialize_physical_parameters(d, t_cold, t_hot) + assert solver.dt == 0.25 def test_set_initial_condition(): """ Checks function SolveDiffusion2D.get_initial_function """ + # init solver solver = SolveDiffusion2D() + solver.nx = 3 + solver.ny = 3 + solver.dx = 1. + solver.dy = 1. + solver.T_cold = 200. + solver.T_hot = 500. + + # call function and assert + u = solver.set_initial_condition() + assert u.shape == (3, 3) + assert u[0, 0] == 200. diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..c7b541f --- /dev/null +++ b/tox.ini @@ -0,0 +1,10 @@ +[tox] +envlist = py313 +minversion = 4.0 +skipsdist = True + +[testenv] +deps = -rrequirements.txt +commands = + coverage run -m pytest + coverage xml