40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
|
|
# retoor <retoor@molodetz.nl>
|
||
|
|
|
||
|
|
import io
|
||
|
|
|
||
|
|
from PIL import Image
|
||
|
|
from devplacepy.awards.images import enforce_rgba_png, resize_award_png
|
||
|
|
|
||
|
|
|
||
|
|
def _rgba_png(size=512, color=(10, 20, 30, 200)):
|
||
|
|
buf = io.BytesIO()
|
||
|
|
Image.new("RGBA", (size, size), color).save(buf, format="PNG")
|
||
|
|
return buf.getvalue()
|
||
|
|
|
||
|
|
|
||
|
|
def test_resize_award_png_outputs_exact_square_dimensions():
|
||
|
|
source = _rgba_png(512)
|
||
|
|
for size in (512, 256, 64):
|
||
|
|
out = resize_award_png(source, size)
|
||
|
|
img = Image.open(io.BytesIO(out))
|
||
|
|
assert img.size == (size, size)
|
||
|
|
|
||
|
|
|
||
|
|
def test_resize_award_png_preserves_rgba_mode():
|
||
|
|
out = resize_award_png(_rgba_png(512), 256)
|
||
|
|
img = Image.open(io.BytesIO(out))
|
||
|
|
assert img.mode == "RGBA"
|
||
|
|
|
||
|
|
|
||
|
|
def test_resize_award_png_downscale_is_idempotent_in_size():
|
||
|
|
first = resize_award_png(_rgba_png(512), 64)
|
||
|
|
second = resize_award_png(first, 64)
|
||
|
|
assert Image.open(io.BytesIO(first)).size == (64, 64)
|
||
|
|
assert Image.open(io.BytesIO(second)).size == (64, 64)
|
||
|
|
|
||
|
|
|
||
|
|
def test_enforce_rgba_png_returns_valid_png():
|
||
|
|
out = enforce_rgba_png(_rgba_png(32))
|
||
|
|
img = Image.open(io.BytesIO(out))
|
||
|
|
assert img.mode == "RGBA"
|
||
|
|
assert img.size == (32, 32)
|