Skip to content

Commit 4db8024

Browse files
committed
sorted out float comparisons in tests
1 parent 8b1bf2f commit 4db8024

1 file changed

Lines changed: 50 additions & 48 deletions

File tree

tests/test_pyside_event_handling_mixin.py

Lines changed: 50 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ def test_setup_event_handling_default_values(event_window):
4242
"""Test setup_event_handling with default parameters"""
4343
assert event_window.rotate is False
4444
assert event_window.translate is False
45-
assert event_window.spin_x_face == 0
46-
assert event_window.spin_y_face == 0
47-
assert event_window.original_x_rotation == 0.0
48-
assert event_window.original_y_rotation == 0.0
49-
assert event_window.original_x_pos == 0.0
50-
assert event_window.original_y_pos == 0.0
45+
assert event_window.spin_x_face == pytest.approx(0.0)
46+
assert event_window.spin_y_face == pytest.approx(0.0)
47+
assert event_window.original_x_rotation == pytest.approx(0.0)
48+
assert event_window.original_y_rotation == pytest.approx(0.0)
49+
assert event_window.original_x_pos == pytest.approx(0.0)
50+
assert event_window.original_y_pos == pytest.approx(0.0)
5151
assert event_window.model_position == Vec3(0, 0, 0)
5252
assert event_window.rotation_sensitivity == PySideEventHandlingMixin.DEFAULT_ROTATION_SENSITIVITY
5353
assert event_window.translation_sensitivity == PySideEventHandlingMixin.DEFAULT_TRANSLATION_SENSITIVITY
@@ -62,14 +62,14 @@ def test_setup_event_handling_custom_values():
6262
rotation_sensitivity=0.8, translation_sensitivity=0.02, zoom_sensitivity=0.2, initial_position=initial_pos
6363
)
6464

65-
assert window.rotation_sensitivity == 0.8
66-
assert window.translation_sensitivity == 0.02
67-
assert window.zoom_sensitivity == 0.2
68-
assert window.model_position.x == 1
69-
assert window.model_position.y == 2
70-
assert window.model_position.z == 3
71-
assert window.INCREMENT == 0.02
72-
assert window.ZOOM == 0.2
65+
assert window.rotation_sensitivity == pytest.approx(0.8)
66+
assert window.translation_sensitivity == pytest.approx(0.02)
67+
assert window.zoom_sensitivity == pytest.approx(0.2)
68+
assert window.model_position.x == pytest.approx(1.0)
69+
assert window.model_position.y == pytest.approx(2.0)
70+
assert window.model_position.z == pytest.approx(3.0)
71+
assert window.INCREMENT == pytest.approx(0.02)
72+
assert window.ZOOM == pytest.approx(0.2)
7373

7474

7575
def test_reset_camera(event_window):
@@ -83,11 +83,11 @@ def test_reset_camera(event_window):
8383
event_window.reset_camera()
8484

8585
# Check values are reset
86-
assert event_window.spin_x_face == 0
87-
assert event_window.spin_y_face == 0
88-
assert event_window.model_position.x == 0
89-
assert event_window.model_position.y == 0
90-
assert event_window.model_position.z == 0
86+
assert event_window.spin_x_face == pytest.approx(0)
87+
assert event_window.spin_y_face == pytest.approx(0)
88+
assert event_window.model_position.x == pytest.approx(0)
89+
assert event_window.model_position.y == pytest.approx(0)
90+
assert event_window.model_position.z == pytest.approx(0)
9191

9292

9393
def test_keyPressEvent_escape(event_window):
@@ -137,8 +137,10 @@ def test_keyPressEvent_space_reset(event_window):
137137

138138
event_window.keyPressEvent(event)
139139

140-
assert event_window.spin_x_face == 0
141-
assert event_window.model_position.x == 0
140+
assert event_window.spin_x_face == pytest.approx(0)
141+
assert event_window.model_position.x == pytest.approx(0)
142+
assert event_window.model_position.y == pytest.approx(0)
143+
assert event_window.model_position.z == pytest.approx(0)
142144
assert event_window.update_called is True
143145

144146

@@ -213,7 +215,7 @@ def test_mouseMoveEvent_rotation(event_window):
213215
event_window.rotate = True
214216
event_window.original_x_rotation = 100
215217
event_window.original_y_rotation = 200
216-
event_window.rotation_sensitivity = 1.0
218+
event_window.rotation_sensitivity = 1
217219

218220
event = Mock()
219221
event.buttons.return_value = Qt.LeftButton
@@ -244,8 +246,8 @@ def test_mouseMoveEvent_translation(event_window):
244246
event_window.mouseMoveEvent(event)
245247

246248
# Check translation values updated
247-
assert event_window.model_position.x == 1.0 # 0.1 * (110 - 100)
248-
assert event_window.model_position.y == 1.0 # -0.1 * (190 - 200)
249+
assert event_window.model_position.x == pytest.approx(1.0) # 0.1 * (110 - 100)
250+
assert event_window.model_position.y == pytest.approx(1.0) # -0.1 * (190 - 200)
249251
assert event_window.original_x_pos == 110
250252
assert event_window.original_y_pos == 190
251253
assert event_window.update_called is True
@@ -278,7 +280,7 @@ def test_wheelEvent_positive_delta(event_window):
278280

279281
event_window.wheelEvent(event)
280282

281-
assert event_window.model_position.z == initial_z + 0.5
283+
assert event_window.model_position.z == pytest.approx(initial_z + 0.5)
282284
assert event_window.update_called is True
283285

284286

@@ -295,7 +297,7 @@ def test_wheelEvent_negative_delta(event_window):
295297

296298
event_window.wheelEvent(event)
297299

298-
assert event_window.model_position.z == initial_z - 0.5
300+
assert event_window.model_position.z == pytest.approx(initial_z - 0.5)
299301
assert event_window.update_called is True
300302

301303

@@ -312,7 +314,7 @@ def test_wheelEvent_x_axis_delta(event_window):
312314

313315
event_window.wheelEvent(event)
314316

315-
assert event_window.model_position.z == initial_z + 0.3
317+
assert event_window.model_position.z == pytest.approx(initial_z + 0.3)
316318
assert event_window.update_called is True
317319

318320

@@ -339,19 +341,19 @@ def test_get_camera_state(event_window):
339341
event_window.spin_x_face = 45
340342
event_window.spin_y_face = 90
341343
event_window.model_position.set(1, 2, 3)
342-
event_window.rotation_sensitivity = 0.8
343-
event_window.translation_sensitivity = 0.02
344-
event_window.zoom_sensitivity = 0.15
344+
event_window.rotation_sensitivity = pytest.approx(0.8)
345+
event_window.translation_sensitivity = pytest.approx(0.02)
346+
event_window.zoom_sensitivity = pytest.approx(0.15)
345347

346348
state = event_window.get_camera_state()
347349

348350
expected = {
349351
"spin_x_face": 45,
350352
"spin_y_face": 90,
351353
"model_position": [1, 2, 3],
352-
"rotation_sensitivity": 0.8,
353-
"translation_sensitivity": 0.02,
354-
"zoom_sensitivity": 0.15,
354+
"rotation_sensitivity": pytest.approx(0.8),
355+
"translation_sensitivity": pytest.approx(0.02),
356+
"zoom_sensitivity": pytest.approx(0.15) ,
355357
}
356358

357359
assert state == expected
@@ -375,9 +377,9 @@ def test_set_camera_state(event_window):
375377
assert event_window.model_position.x == 5
376378
assert event_window.model_position.y == 10
377379
assert event_window.model_position.z == 15
378-
assert event_window.rotation_sensitivity == 0.75
379-
assert event_window.translation_sensitivity == 0.05
380-
assert event_window.zoom_sensitivity == 0.25
380+
assert event_window.rotation_sensitivity == pytest.approx(0.75)
381+
assert event_window.translation_sensitivity == pytest.approx(0.05)
382+
assert event_window.zoom_sensitivity == pytest.approx(0.25)
381383

382384

383385
def test_set_camera_state_partial(event_window):
@@ -420,16 +422,16 @@ def test_camera_state_round_trip(event_window):
420422
event_window.spin_x_face = 25
421423
event_window.spin_y_face = 50
422424
event_window.model_position.set(3, 6, 9)
423-
event_window.rotation_sensitivity = 0.6
424-
event_window.translation_sensitivity = 0.03
425-
event_window.zoom_sensitivity = 0.12
425+
event_window.rotation_sensitivity = pytest.approx(0.6)
426+
event_window.translation_sensitivity = pytest.approx(0.03)
427+
event_window.zoom_sensitivity = pytest.approx(0.12)
426428

427429
# Save state
428430
state = event_window.get_camera_state()
429431

430432
# Change values
431433
event_window.reset_camera()
432-
event_window.rotation_sensitivity = 1.0
434+
event_window.rotation_sensitivity = pytest.approx(1.0)
433435

434436
# Restore state
435437
event_window.set_camera_state(state)
@@ -440,16 +442,16 @@ def test_camera_state_round_trip(event_window):
440442
assert event_window.model_position.x == 3
441443
assert event_window.model_position.y == 6
442444
assert event_window.model_position.z == 9
443-
assert event_window.rotation_sensitivity == 0.6
444-
assert event_window.translation_sensitivity == 0.03
445-
assert event_window.zoom_sensitivity == 0.12
445+
assert event_window.rotation_sensitivity == pytest.approx(0.6)
446+
assert event_window.translation_sensitivity == pytest.approx(0.03)
447+
assert event_window.zoom_sensitivity == pytest.approx(0.12)
446448

447449

448450
def test_constants():
449451
"""Test default sensitivity constants"""
450-
assert PySideEventHandlingMixin.DEFAULT_ROTATION_SENSITIVITY == 0.5
451-
assert PySideEventHandlingMixin.DEFAULT_TRANSLATION_SENSITIVITY == 0.01
452-
assert PySideEventHandlingMixin.DEFAULT_ZOOM_SENSITIVITY == 0.1
452+
assert PySideEventHandlingMixin.DEFAULT_ROTATION_SENSITIVITY == pytest.approx(0.5)
453+
assert PySideEventHandlingMixin.DEFAULT_TRANSLATION_SENSITIVITY == pytest.approx(0.01)
454+
assert PySideEventHandlingMixin.DEFAULT_ZOOM_SENSITIVITY == pytest.approx(0.1)
453455

454456

455457
def test_mouse_movement_rotation_with_different_sensitivity():
@@ -492,8 +494,8 @@ def test_mouse_movement_translation_with_different_sensitivity():
492494

493495
# With sensitivity 0.5: diff_x = 120-100 = 20, so x += 0.5 * 20 = 10
494496
# diff_y = 80-100 = -20, so y -= 0.5 * -20 = 10
495-
assert window.model_position.x == 10.0
496-
assert window.model_position.y == 10.0
497+
assert window.model_position.x == pytest.approx(10.0)
498+
assert window.model_position.y == pytest.approx(10.0)
497499

498500

499501
def test_event_handling_target_protocol():

0 commit comments

Comments
 (0)