Files
ENI-PythonAdvanced_04/tests/test_calculate_new_height.py
2025-12-16 09:56:21 +01:00

42 lines
1.5 KiB
Python

from tp_multiprocessing.process import calculate_new_height
import pytest
# ## Tests des cas de succès et des cas limites ##
@pytest.mark.parametrize("orig_width, orig_height, new_width, expected_height", [
# Cas 1: Réduction standard (ratio 16:9)
(1920, 1080, 960, 540),
# Cas 2: Format portrait
(800, 1200, 400, 600),
# Cas 3: Pas de redimensionnement (la nouvelle largeur est identique)
(1024, 768, 1024, 768),
# Cas 4: Le calcul du ratio produit un flottant (test de la conversion en int)
(300, 200, 100, 66), # 200 * (100/300) = 66.66... -> 66
# Cas 5: Agrandissement (upscaling)
(100, 100, 250, 250),
# Cas 6: Hauteur d'origine nulle
(1000, 0, 500, 0)
])
def test_calculate_new_height_various_scenarios(orig_width, orig_height, new_width, expected_height):
"""
Vérifie le calcul de la nouvelle hauteur pour plusieurs scénarios valides.
"""
assert calculate_new_height(orig_width, orig_height, new_width) == expected_height
# ## Tests des cas d'erreur ##
@pytest.mark.parametrize("invalid_width", [0, -1, -100])
def test_calculate_new_height_with_invalid_width_raises_error(invalid_width):
"""
Vérifie qu'une ValueError est levée si la largeur d'origine est nulle ou négative.
"""
# Le contexte `pytest.raises` vérifie qu'une exception est bien levée.
# L'argument `match` vérifie que le message d'erreur contient le texte attendu.
with pytest.raises(ValueError, match="La largeur d'origine doit être positive"):
calculate_new_height(invalid_width, 1080, 500)