2023-12-21 14:13:31 +03:00
|
|
|
from __future__ import annotations
|
2024-01-20 14:23:03 +03:00
|
|
|
|
2020-02-12 19:29:19 +03:00
|
|
|
import pytest
|
2020-08-07 13:28:33 +03:00
|
|
|
|
2017-03-04 20:54:06 +03:00
|
|
|
from PIL import Image, XVThumbImagePlugin
|
|
|
|
|
2020-02-12 19:29:19 +03:00
|
|
|
from .helper import assert_image_similar, hopper
|
2019-07-06 23:40:53 +03:00
|
|
|
|
2017-03-04 20:54:06 +03:00
|
|
|
TEST_FILE = "Tests/images/hopper.p7"
|
2017-03-01 12:20:18 +03:00
|
|
|
|
|
|
|
|
2024-01-27 07:19:43 +03:00
|
|
|
def test_open() -> None:
|
2020-02-12 19:29:19 +03:00
|
|
|
# Act
|
|
|
|
with Image.open(TEST_FILE) as im:
|
|
|
|
# Assert
|
|
|
|
assert im.format == "XVThumb"
|
2017-03-06 18:33:47 +03:00
|
|
|
|
2020-02-12 19:29:19 +03:00
|
|
|
# Create a Hopper image with a similar XV palette
|
|
|
|
im_hopper = hopper().quantize(palette=im)
|
|
|
|
assert_image_similar(im, im_hopper, 9)
|
2017-03-04 20:54:06 +03:00
|
|
|
|
2017-03-05 00:33:43 +03:00
|
|
|
|
2024-01-27 07:19:43 +03:00
|
|
|
def test_unexpected_eof() -> None:
|
2020-02-12 19:29:19 +03:00
|
|
|
# Test unexpected EOF reading XV thumbnail file
|
|
|
|
# Arrange
|
|
|
|
bad_file = "Tests/images/hopper_bad.p7"
|
2017-03-05 00:33:43 +03:00
|
|
|
|
2020-02-12 19:29:19 +03:00
|
|
|
# Act / Assert
|
|
|
|
with pytest.raises(SyntaxError):
|
|
|
|
XVThumbImagePlugin.XVThumbImageFile(bad_file)
|
2017-03-01 12:20:18 +03:00
|
|
|
|
2020-02-12 19:29:19 +03:00
|
|
|
|
2024-01-27 07:19:43 +03:00
|
|
|
def test_invalid_file() -> None:
|
2020-02-12 19:29:19 +03:00
|
|
|
# Arrange
|
|
|
|
invalid_file = "Tests/images/flower.jpg"
|
|
|
|
|
|
|
|
# Act / Assert
|
|
|
|
with pytest.raises(SyntaxError):
|
|
|
|
XVThumbImagePlugin.XVThumbImageFile(invalid_file)
|