Files
photoanalyzer/tests/characterization/test_pa_variants.py

46 lines
1.8 KiB
Python

"""Characterize variant grouping (donor: _strip_variant_markers, _is_variant,
_variant_key, build_variant_groups)."""
from pathlib import Path
import photo_analyzer as pa
from conftest import write_fixture
def test_strip_variant_markers_goldens():
cases = {
"_MG_1432": "_MG_1432",
"_MG_1432-bearbeitet": "_MG_1432",
"_MG_1432 (640x427)": "_MG_1432",
"_MG_1432 (640x427)-bearbeitet": "_MG_1432",
"IMG (1920 x 1080)": "IMG",
"party_Bearbeitet": "party",
"no-markers-here": "no-markers-here",
}
for stem, expected in cases.items():
assert pa._strip_variant_markers(stem) == expected, stem
def test_is_variant():
assert pa._is_variant(Path("/a/x (640x427).jpg"))
assert pa._is_variant(Path("/a/x-bearbeitet.jpg"))
assert not pa._is_variant(Path("/a/x.jpg"))
def test_variant_key_folder_scoped_case_insensitive():
assert pa._variant_key(Path("/a/IMG (640x427).jpg")) == ("/a", "img")
assert pa._variant_key(Path("/b/IMG.jpg")) != pa._variant_key(Path("/a/IMG.jpg"))
def test_build_variant_groups_primary_is_largest_unmarked(tmp_path):
# base (small), edited (large): primary must be the UNMARKED base even
# though the edited file is bigger.
base = write_fixture("fx-blocks-03", tmp_path / "pic.jpg", quality=30)
edited = write_fixture("fx-blocks-01", tmp_path / "pic-bearbeitet.jpg", quality=95)
resized = write_fixture("fx-blocks-03", tmp_path / "pic (640x480).jpg", quality=30)
lone = write_fixture("fx-blocks-02", tmp_path / "other.jpg")
assert edited.stat().st_size > base.stat().st_size
groups = pa.build_variant_groups([base, edited, resized, lone])
assert groups == {str(base): sorted([str(edited), str(resized)])}
assert str(lone) not in groups, "standalone files form no group"