Pillow/Tests/test_image_mode.py
2024-06-09 15:16:17 +10:00

81 lines
2.0 KiB
Python

from __future__ import annotations
import pytest
from PIL import Image, ImageMode
from .helper import hopper
def test_sanity() -> None:
with hopper() as im:
im.mode
ImageMode.getmode("1")
ImageMode.getmode("L")
ImageMode.getmode("P")
ImageMode.getmode("RGB")
ImageMode.getmode("I")
ImageMode.getmode("F")
m = ImageMode.getmode("1")
assert m.mode == "1"
assert str(m) == "1"
assert m.bands == ("1",)
assert m.basemode == "L"
assert m.basetype == "L"
assert m.typestr == "|b1"
for mode in (
"I;16",
"I;16S",
"I;16L",
"I;16LS",
"I;16B",
"I;16BS",
"I;16N",
"I;16NS",
):
m = ImageMode.getmode(mode)
assert m.mode == mode
assert str(m) == mode
assert m.bands == ("I",)
assert m.basemode == "L"
assert m.basetype == "L"
m = ImageMode.getmode("RGB")
assert m.mode == "RGB"
assert str(m) == "RGB"
assert m.bands == ("R", "G", "B")
assert m.basemode == "RGB"
assert m.basetype == "L"
assert m.typestr == "|u1"
@pytest.mark.parametrize(
"mode, expected_base, expected_type, expected_bands, expected_band_names",
(
("1", "L", "L", 1, ("1",)),
("L", "L", "L", 1, ("L",)),
("P", "P", "L", 1, ("P",)),
("I", "L", "I", 1, ("I",)),
("F", "L", "F", 1, ("F",)),
("RGB", "RGB", "L", 3, ("R", "G", "B")),
("RGBA", "RGB", "L", 4, ("R", "G", "B", "A")),
("RGBX", "RGB", "L", 4, ("R", "G", "B", "X")),
("CMYK", "RGB", "L", 4, ("C", "M", "Y", "K")),
("YCbCr", "RGB", "L", 3, ("Y", "Cb", "Cr")),
),
)
def test_properties(
mode: str,
expected_base: str,
expected_type: str,
expected_bands: int,
expected_band_names: tuple[str, ...],
) -> None:
assert Image.getmodebase(mode) == expected_base
assert Image.getmodetype(mode) == expected_type
assert Image.getmodebands(mode) == expected_bands
assert Image.getmodebandnames(mode) == expected_band_names