fix: use structured images in duplicate detection tests
This commit is contained in:
@@ -49,21 +49,42 @@ def test_normal_image_is_neither(tmp_path):
|
|||||||
from analyzer import find_duplicates
|
from analyzer import find_duplicates
|
||||||
|
|
||||||
|
|
||||||
|
def make_gradient_image(tmp_path, name="gradient.jpg"):
|
||||||
|
from PIL import Image
|
||||||
|
img = Image.new("L", (100, 100))
|
||||||
|
pixels = img.load()
|
||||||
|
for y in range(100):
|
||||||
|
for x in range(100):
|
||||||
|
pixels[x, y] = x * 255 // 100
|
||||||
|
p = tmp_path / name
|
||||||
|
img.convert("RGB").save(p)
|
||||||
|
return str(p)
|
||||||
|
|
||||||
|
|
||||||
|
def make_diagonal_image(tmp_path, name="diagonal.jpg"):
|
||||||
|
from PIL import Image
|
||||||
|
img = Image.new("L", (100, 100))
|
||||||
|
pixels = img.load()
|
||||||
|
for y in range(100):
|
||||||
|
for x in range(100):
|
||||||
|
pixels[x, y] = 255 if x > y else 0
|
||||||
|
p = tmp_path / name
|
||||||
|
img.convert("RGB").save(p)
|
||||||
|
return str(p)
|
||||||
|
|
||||||
|
|
||||||
def test_identical_images_are_duplicates(tmp_path):
|
def test_identical_images_are_duplicates(tmp_path):
|
||||||
p1 = make_test_image(tmp_path, color=(100, 150, 200))
|
p1 = make_gradient_image(tmp_path, "img1.jpg")
|
||||||
import shutil
|
import shutil
|
||||||
p2 = tmp_path / "copy.jpg"
|
p2 = tmp_path / "copy.jpg"
|
||||||
shutil.copy(p1, p2)
|
shutil.copy(p1, p2)
|
||||||
groups = find_duplicates([p1, str(p2)], threshold=0)
|
groups = find_duplicates([p1, str(p2)], threshold=8)
|
||||||
assert len(groups) == 1
|
assert len(groups) == 1
|
||||||
assert len(groups[0]) == 2
|
assert len(groups[0]) == 2
|
||||||
|
|
||||||
|
|
||||||
def test_different_images_are_not_duplicates(tmp_path):
|
def test_different_images_are_not_duplicates(tmp_path):
|
||||||
from PIL import Image
|
p1 = make_gradient_image(tmp_path, "gradient.jpg")
|
||||||
p1 = make_test_image(tmp_path, color=(0, 0, 0))
|
p2 = make_diagonal_image(tmp_path, "diagonal.jpg")
|
||||||
img = Image.new("RGB", (100, 100), color=(255, 0, 0))
|
groups = find_duplicates([p1, p2], threshold=8)
|
||||||
p2 = tmp_path / "red.jpg"
|
|
||||||
img.save(p2)
|
|
||||||
groups = find_duplicates([p1, str(p2)], threshold=0)
|
|
||||||
assert len(groups) == 0
|
assert len(groups) == 0
|
||||||
|
|||||||
Reference in New Issue
Block a user