from __future__ import annotations from PIL import Image from .helper import hopper def test_palette() -> None: def palette(mode: str) -> list[int] | None: p = hopper(mode).getpalette() if p: return p[:10] return None assert palette("1") is None assert palette("L") is None assert palette("I") is None assert palette("F") is None assert palette("P") == [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] assert palette("RGB") is None assert palette("RGBA") is None assert palette("CMYK") is None assert palette("YCbCr") is None def test_palette_rawmode() -> None: im = Image.new("P", (1, 1)) im.putpalette((1, 2, 3)) for rawmode in ("RGB", None): rgb = im.getpalette(rawmode) assert rgb == [1, 2, 3] # Convert the RGB palette to RGBA rgba = im.getpalette("RGBA") assert rgba == [1, 2, 3, 255] im.putpalette((1, 2, 3, 4), "RGBA") # Convert the RGBA palette to RGB rgb = im.getpalette("RGB") assert rgb == [1, 2, 3] for rawmode in ("RGBA", None): rgba = im.getpalette(rawmode) assert rgba == [1, 2, 3, 4]