add La mode (2 bands) to the test

This commit is contained in:
homm 2016-05-27 10:27:10 +03:00
parent 34afabbf18
commit f09067e45e
2 changed files with 13 additions and 14 deletions

View File

@ -40,6 +40,7 @@ def getmode(mode):
_modes[m] = ModeDescriptor(m, bands, basemode, basetype) _modes[m] = ModeDescriptor(m, bands, basemode, basetype)
# extra experimental modes # extra experimental modes
_modes["LA"] = ModeDescriptor("LA", ("L", "A"), "L", "L") _modes["LA"] = ModeDescriptor("LA", ("L", "A"), "L", "L")
_modes["La"] = ModeDescriptor("La", ("L", "a"), "L", "L")
_modes["PA"] = ModeDescriptor("PA", ("P", "A"), "RGB", "L") _modes["PA"] = ModeDescriptor("PA", ("P", "A"), "RGB", "L")
# mapping modes # mapping modes
_modes["I;16"] = ModeDescriptor("I;16", "I", "L", "L") _modes["I;16"] = ModeDescriptor("I;16", "I", "L", "L")

View File

@ -1,5 +1,5 @@
from helper import unittest, PillowTestCase, hopper from helper import unittest, PillowTestCase, hopper
from PIL import Image, ImageDraw from PIL import Image, ImageDraw, ImageMode
class TestImagingResampleVulnerability(PillowTestCase): class TestImagingResampleVulnerability(PillowTestCase):
@ -43,14 +43,12 @@ class TestImagingCoreResampleAccuracy(PillowTestCase):
1f 1f e0 e0 1f 1f e0 e0
1f 1f e0 e0 1f 1f e0 e0
""" """
dark = (255 - color, 255 - color, 255 - color, 255 - color) case = Image.new('L', size, 255 - color)
bright = (color, color, color, color) rectangle = ImageDraw.Draw(case).rectangle
rectangle((0, 0, size[0] // 2 - 1, size[1] // 2 - 1), color)
rectangle((size[0] // 2, size[1] // 2, size[0], size[1]), color)
i = Image.new('RGBX', size, dark) return Image.merge(mode, [case] * len(mode))
rectangle = ImageDraw.Draw(i).rectangle
rectangle((0, 0, size[0] // 2 - 1, size[1] // 2 - 1), bright)
rectangle((size[0] // 2, size[1] // 2, size[0], size[1]), bright)
return i.convert(mode)
def make_sample(self, data, size): def make_sample(self, data, size):
"""Restores a sample image from given data string which contains """Restores a sample image from given data string which contains
@ -92,7 +90,7 @@ class TestImagingCoreResampleAccuracy(PillowTestCase):
) )
def test_reduce_bilinear(self): def test_reduce_bilinear(self):
for mode in ['RGBX', 'RGB', 'L']: for mode in ['RGBX', 'RGB', 'La', 'L']:
case = self.make_case(mode, (8, 8), 0xe1) case = self.make_case(mode, (8, 8), 0xe1)
case = case.resize((4, 4), Image.BILINEAR) case = case.resize((4, 4), Image.BILINEAR)
data = ('e1 c9' data = ('e1 c9'
@ -101,7 +99,7 @@ class TestImagingCoreResampleAccuracy(PillowTestCase):
self.check_case(channel, self.make_sample(data, (4, 4))) self.check_case(channel, self.make_sample(data, (4, 4)))
def test_reduce_bicubic(self): def test_reduce_bicubic(self):
for mode in ['RGBX', 'RGB', 'L']: for mode in ['RGBX', 'RGB', 'La', 'L']:
case = self.make_case(mode, (12, 12), 0xe1) case = self.make_case(mode, (12, 12), 0xe1)
case = case.resize((6, 6), Image.BICUBIC) case = case.resize((6, 6), Image.BICUBIC)
data = ('e1 e3 d4' data = ('e1 e3 d4'
@ -111,7 +109,7 @@ class TestImagingCoreResampleAccuracy(PillowTestCase):
self.check_case(channel, self.make_sample(data, (6, 6))) self.check_case(channel, self.make_sample(data, (6, 6)))
def test_reduce_lanczos(self): def test_reduce_lanczos(self):
for mode in ['RGBX', 'RGB', 'L']: for mode in ['RGBX', 'RGB', 'La', 'L']:
case = self.make_case(mode, (16, 16), 0xe1) case = self.make_case(mode, (16, 16), 0xe1)
case = case.resize((8, 8), Image.LANCZOS) case = case.resize((8, 8), Image.LANCZOS)
data = ('e1 e0 e4 d7' data = ('e1 e0 e4 d7'
@ -122,7 +120,7 @@ class TestImagingCoreResampleAccuracy(PillowTestCase):
self.check_case(channel, self.make_sample(data, (8, 8))) self.check_case(channel, self.make_sample(data, (8, 8)))
def test_enlarge_bilinear(self): def test_enlarge_bilinear(self):
for mode in ['RGBX', 'RGB', 'L']: for mode in ['RGBX', 'RGB', 'La', 'L']:
case = self.make_case(mode, (2, 2), 0xe1) case = self.make_case(mode, (2, 2), 0xe1)
case = case.resize((4, 4), Image.BILINEAR) case = case.resize((4, 4), Image.BILINEAR)
data = ('e1 b0' data = ('e1 b0'
@ -131,7 +129,7 @@ class TestImagingCoreResampleAccuracy(PillowTestCase):
self.check_case(channel, self.make_sample(data, (4, 4))) self.check_case(channel, self.make_sample(data, (4, 4)))
def test_enlarge_bicubic(self): def test_enlarge_bicubic(self):
for mode in ['RGBX', 'RGB', 'L']: for mode in ['RGBX', 'RGB', 'La', 'L']:
case = self.make_case(mode, (4, 4), 0xe1) case = self.make_case(mode, (4, 4), 0xe1)
case = case.resize((8, 8), Image.BICUBIC) case = case.resize((8, 8), Image.BICUBIC)
data = ('e1 e5 ee b9' data = ('e1 e5 ee b9'
@ -142,7 +140,7 @@ class TestImagingCoreResampleAccuracy(PillowTestCase):
self.check_case(channel, self.make_sample(data, (8, 8))) self.check_case(channel, self.make_sample(data, (8, 8)))
def test_enlarge_lanczos(self): def test_enlarge_lanczos(self):
for mode in ['RGBX', 'RGB', 'L']: for mode in ['RGBX', 'RGB', 'La', 'L']:
case = self.make_case(mode, (6, 6), 0xe1) case = self.make_case(mode, (6, 6), 0xe1)
case = case.resize((12, 12), Image.LANCZOS) case = case.resize((12, 12), Image.LANCZOS)
data = ('e1 e0 db ed f5 b8' data = ('e1 e0 db ed f5 b8'