19 lines
762 B
Python
19 lines
762 B
Python
import pytest
|
|
from unwind.imdb import imdb_rating_from_score, score_from_imdb_rating
|
|
|
|
|
|
@pytest.mark.parametrize("rating", (x / 10 for x in range(10, 101)))
|
|
def test_rating_conversion(rating: float):
|
|
assert rating == imdb_rating_from_score(score_from_imdb_rating(rating))
|
|
|
|
|
|
@pytest.mark.parametrize("score", range(0, 101))
|
|
def test_score_conversion(score: int):
|
|
# Because our score covers 101 discrete values and IMDb's rating only 91
|
|
# discrete values, the mapping is non-injective, i.e. 10 values can't be
|
|
# mapped uniquely.
|
|
non_injective = set(range(5, 100, 10))
|
|
if score in non_injective:
|
|
pytest.skip(f"Score cannot be mapped back correctly: {score}")
|
|
|
|
assert score == score_from_imdb_rating(imdb_rating_from_score(score))
|