Skip to content

Commit 06b2b1a

Browse files
committed
echte check
1 parent 02dea9b commit 06b2b1a

File tree

1 file changed

+114
-4
lines changed

1 file changed

+114
-4
lines changed

tests/figurenTest.py

Lines changed: 114 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,115 @@
1-
import checkpy.tests as t
2-
import checkpy.lib as lib
3-
import checkpy.assertlib as asserts
4-
1+
from checkpy import *
52
from _basics import *
3+
from _static_analysis import *
4+
5+
getClass = getFunction
6+
7+
import math
8+
9+
@t.passed(doctest_ok)
10+
def has_classes():
11+
"""De benodigde klassen `Quare`, `Rectangle`, `Circle` en `Shape` zijn aanwezig"""
12+
assert "class Square" in static.getSource()
13+
assert "class Rectangle" in static.getSource()
14+
assert "class Circle" in static.getSource()
15+
assert "class Shape" in static.getSource()
16+
17+
@t.passed(has_classes)
18+
def test_square_methods():
19+
"""De klasse `Square` heeft correcte implementaties van de gevraagde methoden"""
20+
Square = getClass("Square")
21+
22+
try:
23+
test_square = Square(4)
24+
except:
25+
raise AssertionError("Square(4) aanmaken met één argument moet mogelijk zijn")
26+
27+
assert hasattr(test_square, "area"), "De methode `area` ontbreekt in de klasse Rectangle"
28+
assert test_square.area() == 4 * 4, "De methode `area` van `Rectangle` werkt niet correct"
29+
# assert not hasattr(test_square, "__lt__"), "De methode `__lt__` mag niet gedefinieerd zijn in Square"
30+
assert hasattr(test_square, "__repr__"), "De methode `__repr__` moet gedefinieerd zijn voor Square"
31+
32+
@t.passed(has_classes)
33+
def test_rectangle_methods():
34+
"""De klasse `Rectangle` heeft correcte implementaties van de gevraagde methoden"""
35+
Rectangle = getClass("Rectangle")
36+
37+
try:
38+
test_rectangle = Rectangle(4, 6)
39+
except:
40+
raise AssertionError("Rectangle(4, 6) aanmaken met twee argumenten moet mogelijk zijn")
41+
42+
assert hasattr(test_rectangle, "area"), "De methode `area` ontbreekt in de klasse Rectangle"
43+
assert test_rectangle.area() == 4 * 6, "De methode `area` van Rectangle werkt niet correct"
44+
# assert not hasattr(test_rectangle, "__lt__"), "De methode `__lt__` mag niet gedefinieerd zijn in Rectangle"
45+
assert hasattr(test_rectangle, "__repr__"), "De methode `__repr__` moet gedefinieerd zijn voor Rectangle"
46+
47+
@t.passed(has_classes)
48+
def test_circle_methods():
49+
"""De klasse `Circle` heeft correcte implementaties van de gevraagde methoden"""
50+
Circle = getClass("Circle")
51+
52+
try:
53+
test_circle = Circle(5)
54+
except:
55+
raise AssertionError("Circle(5) aanmaken met één argument moet mogelijk zijn")
56+
57+
assert hasattr(test_circle, "area"), "De methode `area` ontbreekt in de klasse Circle"
58+
assert math.isclose(test_circle.area(), math.pi * 5 ** 2), "De methode `area` van `Circle` werkt niet correct"
59+
# assert not hasattr(test_circle, "__lt__"), "De methode `__lt__` mag niet gedefinieerd zijn in Square"
60+
assert hasattr(test_circle, "__repr__"), "De methode `__repr__` moet gedefinieerd zijn voor Circle"
61+
62+
@t.passed(has_classes)
63+
def test_shape_methods():
64+
"""De klasse `Shape` heeft lege implementaties van de gevraagde methoden"""
65+
Shape = getClass("Shape")
66+
67+
try:
68+
test_shape = Shape()
69+
except:
70+
raise AssertionError("Shape() aanmaken met nul argumenten moet mogelijk zijn")
71+
72+
assert hasattr(test_shape, "__lt__"), "De methode `__lt__` ontbreekt in de klasse Shape"
73+
assert hasattr(test_shape, "area"), "De methode `area` ontbreekt in de klasse Shape"
74+
assert test_shape.area() == None, "De methode `area` van `Rectangle` moet None returnen"
75+
# assert not hasattr(test_shape, "__lt__"), "De methode `__repr__` mag niet gedefinieerd zijn in Shape"
76+
77+
@t.passed(has_classes)
78+
def test_common_methods():
79+
"""Beide klassen ondersteunen correcte implementaties van gemeenschappelijke methoden"""
80+
Circle = getClass("Circle")
81+
Rectangle = getClass("Rectangle")
82+
83+
test_circle = Circle(5)
84+
test_rectangle = Rectangle(4, 6)
85+
86+
assert hasattr(test_circle, "__repr__"), "De methode `__repr__` ontbreekt in de klasse Circle"
87+
assert isinstance(test_circle.__repr__(), str), "De methode `__repr__` van `Circle` geeft geen string terug"
88+
89+
assert hasattr(test_rectangle, "__repr__"), "De methode `__repr__` ontbreekt in de klasse Rectangle"
90+
assert isinstance(test_rectangle.__repr__(), str), "De methode `__repr__` van `Rectangle` geeft geen string terug"
91+
92+
@t.passed(has_classes)
93+
def test_shape_methods():
94+
"""De klasse `Shape` heeft implementaties van alle vergelijkings-operators"""
95+
Shape = getClass("Shape")
96+
97+
test_shape = Shape()
98+
99+
assert "def __le__" in static.getSource(), "__le__ moet gedefinieerd zijn in Shape"
100+
assert "def __eq__" in static.getSource(), "__le__ moet gedefinieerd zijn in Shape"
101+
assert "def __ne__" in static.getSource(), "__le__ moet gedefinieerd zijn in Shape"
102+
assert "def __gt__" in static.getSource(), "__le__ moet gedefinieerd zijn in Shape"
103+
assert "def __ge__" in static.getSource(), "__le__ moet gedefinieerd zijn in Shape"
104+
105+
@t.passed(test_circle_methods)
106+
@t.passed(test_rectangle_methods)
107+
def test_interaction():
108+
"""De klassen `Circle` en `Rectangle` functioneren samen zoals beschreven in de opdracht"""
109+
Circle = getClass("Circle")
110+
Rectangle = getClass("Rectangle")
111+
112+
c1 = Circle(5)
113+
r1 = Rectangle(4, 6)
114+
115+
assert c1.area() > r1.area(), "De oppervlakte van Circle met radius 5 is groter dan Rectangle met dimensies 4x6"

0 commit comments

Comments
 (0)