mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-26 18:06:18 +03:00
add tests, fix error messages
This commit is contained in:
parent
aa929dda98
commit
e304a0d501
|
@ -1,4 +1,5 @@
|
||||||
from __future__ import division
|
from __future__ import division
|
||||||
|
from tempfile import NamedTemporaryFile
|
||||||
from helper import unittest, PillowTestCase
|
from helper import unittest, PillowTestCase
|
||||||
|
|
||||||
from PIL import Image, ImageFilter
|
from PIL import Image, ImageFilter
|
||||||
|
@ -228,10 +229,10 @@ class TestColorLut3DCoreAPI(PillowTestCase):
|
||||||
|
|
||||||
class TestColorLut3DFilter(PillowTestCase):
|
class TestColorLut3DFilter(PillowTestCase):
|
||||||
def test_wrong_args(self):
|
def test_wrong_args(self):
|
||||||
with self.assertRaisesRegexp(ValueError, "should be an integer"):
|
with self.assertRaisesRegexp(ValueError, "should be either an integer"):
|
||||||
ImageFilter.Color3DLUT("small", [1])
|
ImageFilter.Color3DLUT("small", [1])
|
||||||
|
|
||||||
with self.assertRaisesRegexp(ValueError, "should be an integer"):
|
with self.assertRaisesRegexp(ValueError, "should be either an integer"):
|
||||||
ImageFilter.Color3DLUT((11, 11), [1])
|
ImageFilter.Color3DLUT((11, 11), [1])
|
||||||
|
|
||||||
with self.assertRaisesRegexp(ValueError, r"in \[2, 65\] range"):
|
with self.assertRaisesRegexp(ValueError, r"in \[2, 65\] range"):
|
||||||
|
@ -317,6 +318,7 @@ class TestColorLut3DFilter(PillowTestCase):
|
||||||
" # Comment",
|
" # Comment",
|
||||||
'TITLE "LUT name from file"',
|
'TITLE "LUT name from file"',
|
||||||
" LUT_3D_SIZE 2 3 4",
|
" LUT_3D_SIZE 2 3 4",
|
||||||
|
" SKIP THIS",
|
||||||
" # Comment",
|
" # Comment",
|
||||||
"CHANNELS 4",
|
"CHANNELS 4",
|
||||||
"",
|
"",
|
||||||
|
@ -335,6 +337,55 @@ class TestColorLut3DFilter(PillowTestCase):
|
||||||
self.assertEqual(lut.table[:12], [
|
self.assertEqual(lut.table[:12], [
|
||||||
0, 0, 0.031, 1, 0.96, 0, 0.031, 1, 0, 1, 0.031, 1])
|
0, 0, 0.031, 1, 0.96, 0, 0.031, 1, 0, 1, 0.031, 1])
|
||||||
|
|
||||||
|
def test_from_cube_file_errors(self):
|
||||||
|
with self.assertRaisesRegexp(ValueError, "No size found"):
|
||||||
|
lut = ImageFilter.Color3DLUT.from_cube_file([
|
||||||
|
'TITLE "LUT name from file"',
|
||||||
|
"",
|
||||||
|
] + [
|
||||||
|
"0 0 0.031",
|
||||||
|
"0.96 0 0.031",
|
||||||
|
] * 3)
|
||||||
|
|
||||||
|
with self.assertRaisesRegexp(ValueError, "number of colors on line 4"):
|
||||||
|
lut = ImageFilter.Color3DLUT.from_cube_file([
|
||||||
|
'LUT_3D_SIZE 2',
|
||||||
|
"",
|
||||||
|
] + [
|
||||||
|
"0 0 0.031",
|
||||||
|
"0.96 0 0.031 1",
|
||||||
|
] * 3)
|
||||||
|
|
||||||
|
with self.assertRaisesRegexp(ValueError, "Not a number on line 3"):
|
||||||
|
lut = ImageFilter.Color3DLUT.from_cube_file([
|
||||||
|
'LUT_3D_SIZE 2',
|
||||||
|
"",
|
||||||
|
] + [
|
||||||
|
"0 green 0.031",
|
||||||
|
"0.96 0 0.031",
|
||||||
|
] * 3)
|
||||||
|
|
||||||
|
def test_from_cube_file_filename(self):
|
||||||
|
with NamedTemporaryFile() as f:
|
||||||
|
f.write(
|
||||||
|
"LUT_3D_SIZE 2\n"
|
||||||
|
"\n"
|
||||||
|
"0 0 0.031\n"
|
||||||
|
"0.96 0 0.031\n"
|
||||||
|
"0 1 0.031\n"
|
||||||
|
"0.96 1 0.031\n"
|
||||||
|
"0 0 0.931\n"
|
||||||
|
"0.96 0 0.931\n"
|
||||||
|
"0 1 0.931\n"
|
||||||
|
"0.96 1 0.931\n"
|
||||||
|
)
|
||||||
|
f.flush()
|
||||||
|
lut = ImageFilter.Color3DLUT.from_cube_file(f.name)
|
||||||
|
self.assertEqual(tuple(lut.size), (2, 2, 2))
|
||||||
|
self.assertEqual(lut.name, "Color 3D LUT")
|
||||||
|
self.assertEqual(lut.table[:12], [
|
||||||
|
0, 0, 0.031, 0.96, 0, 0.031, 0, 1, 0.031, 0.96, 1, 0.031])
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -343,8 +343,8 @@ class Color3DLUT(MultibandFilter):
|
||||||
|
|
||||||
if len(table) != channels * size[0] * size[1] * size[2]:
|
if len(table) != channels * size[0] * size[1] * size[2]:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
"The table should have channels * size**3 float items "
|
"The table should have either channels * size**3 float items "
|
||||||
"either size**3 items of channels-sized tuples with floats. "
|
"or size**3 items of channels-sized tuples with floats. "
|
||||||
"Table size: {}x{}x{}. Table length: {}".format(
|
"Table size: {}x{}x{}. Table length: {}".format(
|
||||||
size[0], size[1], size[2], len(table)))
|
size[0], size[1], size[2], len(table)))
|
||||||
self.table = table
|
self.table = table
|
||||||
|
@ -354,8 +354,8 @@ class Color3DLUT(MultibandFilter):
|
||||||
try:
|
try:
|
||||||
_, _, _ = size
|
_, _, _ = size
|
||||||
except ValueError:
|
except ValueError:
|
||||||
raise ValueError("Size should be an integer either "
|
raise ValueError("Size should be either an integer or "
|
||||||
"tuple of three integers.")
|
"a tuple of three integers.")
|
||||||
except TypeError:
|
except TypeError:
|
||||||
size = (size, size, size)
|
size = (size, size, size)
|
||||||
size = [int(x) for x in size]
|
size = [int(x) for x in size]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user