Skip to content

Commit 0d49b22

Browse files
committed
Fix init validation + add tests
1 parent 52406ae commit 0d49b22

File tree

2 files changed

+34
-7
lines changed

2 files changed

+34
-7
lines changed

arcade/camera/camera_2d.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def __init__(self, *,
7272
raise ZeroProjectionDimension((
7373
f"projection width is 0 due to equal {left=}"
7474
f"and {right=} values"))
75-
bottom, top = projection_data.left, projection_data.right
75+
bottom, top = projection_data.bottom, projection_data.top
7676
if bottom == top:
7777
raise ZeroProjectionDimension((
7878
f"projection height is 0 due to equal {bottom=}"

tests/unit/camera/test_camera2d.py

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from arcade import Window
66
from arcade.camera import Camera2D
7-
from arcade.camera.data_types import ZeroProjectionDimension
7+
from arcade.camera.data_types import ZeroProjectionDimension, OrthographicProjectionData
88

99

1010
class Camera2DSub1(Camera2D):
@@ -33,8 +33,19 @@ def camera_class(request):
3333
(5., 5., 5., 5.)
3434
]
3535

36+
NEAR_FAR_VALUES = [-50.,0.,50.]
37+
38+
39+
@pytest.fixture(params=AT_LEAST_ONE_EQUAL_VIEWPORT_DIMENSION)
40+
def bad_projection(request):
41+
return request.param
42+
43+
44+
@pytest.fixture(params=NEAR_FAR_VALUES)
45+
def same_near_far(request):
46+
return request.param
47+
3648

37-
@pytest.mark.parametrize("bad_projection", AT_LEAST_ONE_EQUAL_VIEWPORT_DIMENSION)
3849
def test_camera2d_from_raw_data_projection_xy_pairs_equal_raises_zeroprojectiondimension(
3950
window: Window,
4051
bad_projection: Tuple[float, float, float, float], # Clarify type for PyCharm
@@ -44,18 +55,34 @@ def test_camera2d_from_raw_data_projection_xy_pairs_equal_raises_zeroprojectiond
4455
camera_class.from_raw_data(projection=bad_projection)
4556

4657

58+
def test_camera2d_init_xy_pairs_equal_raises_zeroprojectiondimension(
59+
window: Window,
60+
bad_projection: Tuple[float, float, float, float],
61+
camera_class
62+
):
63+
data = OrthographicProjectionData(
64+
*bad_projection, -100.0, 100.0,
65+
viewport=(0,0, 800, 600)
66+
)
67+
68+
with pytest.raises(ZeroProjectionDimension):
69+
_ = Camera2D(projection_data=data)
70+
4771

4872
def test_camera2d_from_raw_data_equal_near_far_raises_zeroprojectiondimension(
49-
window: Window, camera_class
73+
window: Window,
74+
same_near_far: float,
75+
camera_class
5076
):
5177
with pytest.raises(ZeroProjectionDimension):
52-
camera_class.from_raw_data(near=-100, far=-100)
78+
camera_class.from_raw_data(near=near_far, far=near_far)
5379

5480
with pytest.raises(ZeroProjectionDimension):
55-
camera_class.from_raw_data(near=0, far=0)
81+
camera_class.from_raw_data(near=near_far, far=near_far)
5682

5783
with pytest.raises(ZeroProjectionDimension):
58-
camera_class.from_raw_data(near=100, far=100)
84+
camera_class.from_raw_data(near=near_far, far=near_far)
85+
5986

6087

6188
@pytest.mark.parametrize("camera_class", CAMERA2D_SUBS)

0 commit comments

Comments
 (0)