Files
rio/tests/test_utils.py
2024-09-17 16:23:04 +02:00

87 lines
1.9 KiB
Python

import pytest
import rio
@pytest.mark.parametrize(
"input_type,output_type",
[
# Simple cases
("pdf", "pdf"),
(".Pdf", "pdf"),
(".PDF", "pdf"),
("*pdf", "pdf"),
("*.Pdf", "pdf"),
("*.PDF", "pdf"),
("application/pdf", "pdf"),
# Make the results are standardized
(".jpg", "jpg"),
(".jpeg", "jpg"),
# Invalid MIME types
("not/a/real/type", "type"),
("////Type", "type"),
],
)
def test_standardize_file_types(
input_type: str,
output_type: str,
) -> None:
cleaned_type = rio.utils.normalize_file_type(input_type)
assert cleaned_type == output_type
@pytest.mark.parametrize(
"unsorted_sequence,keys,sorted_sequence_should",
[
(
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
),
(
[4, 3, 2, 1, 0],
[4, 3, 2, 1, 0],
[0, 1, 2, 3, 4],
),
(
[4, 3, 2, 1, 0],
[4, None, None, None, 0],
[0, 3, 2, 1, 4],
),
(
[0, 1, 2, 3],
[0, 1, 1, 3],
[0, 1, 2, 3],
),
(
[3, 2, 1, 0],
[3, 1, 1, 0],
[0, 2, 1, 3],
),
(
[0, 1, 2, 3],
[0, None, None, None],
[0, 1, 2, 3],
),
(
[0, 1, 2, 3],
[9, None, None, None],
[1, 2, 3, 0],
),
],
)
def test_soft_sort(
unsorted_sequence: list[int],
keys: list[int],
sorted_sequence_should: list[int],
) -> None:
# Sort the sequence
sorted_sequence_is = unsorted_sequence.copy()
rio.utils.soft_sort(
sorted_sequence_is,
key=lambda x: keys[unsorted_sequence.index(x)],
)
# Verify the result
assert sorted_sequence_is == sorted_sequence_should