yoga/test/test_image_encoders_webp_lo...

64 lines
2.1 KiB
Python

from PIL import Image
import pytest
from yoga.image.encoders import webp
from yoga.image.encoders import webp_lossless
class Test_is_lossless_webp(object):
def test_with_lossy_webp(self):
image_bytes = open("test/images/alpha.lossy.webp", "rb").read()
assert webp_lossless.is_lossless_webp(image_bytes) is False
def test_with_lossless_webp(self):
image_bytes = open("test/images/alpha.lossless.webp", "rb").read()
assert webp_lossless.is_lossless_webp(image_bytes) is True
def test_with_png(self):
image_bytes = open("test/images/alpha.png", "rb").read()
assert webp_lossless.is_lossless_webp(image_bytes) is False
class Test_encode_lossless_webp(object):
@pytest.mark.parametrize(
"image_path",
[
"test/images/image1.jpg",
"test/images/indexed.png",
"test/images/grayscale.png",
],
)
def test_no_alpha(self, image_path):
input_image = Image.open(image_path)
output_image_bytes = webp_lossless.optimize_lossless_webp(input_image)
riff = webp.get_riff_structure(output_image_bytes)
# Checks there is only wanted chunks in the file
for chunk in riff["chunks"]:
assert chunk["type"] in ["VP8L"]
def test_unused_alpha(self):
input_image = Image.open("test/images/unused-alpha.png")
output_image_bytes = webp_lossless.optimize_lossless_webp(input_image)
riff = webp.get_riff_structure(output_image_bytes)
# Checks there is only wanted chunks in the file
for chunk in riff["chunks"]:
assert chunk["type"] in ["VP8L"]
@pytest.mark.parametrize(
"image_path",
[
"test/images/alpha.png",
"test/images/threshold.png",
],
)
def test_alpha(self, image_path):
input_image = Image.open(image_path)
output_image_bytes = webp_lossless.optimize_lossless_webp(input_image)
riff = webp.get_riff_structure(output_image_bytes)
# Checks there is only wanted chunks in the file
for chunk in riff["chunks"]:
assert chunk["type"] in ["VP8L"]