mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-27 10:26:19 +03:00
4de5477b61
With the introduction and use of pytest, it is simple and easy to execute specific tests in isolation through documented command line arguments. Either by specifying the module path or through the `-k EXPRESSION` argument. There is no longer any need to provide the boilerplate: if __name__ == '__main__': unittest.main() To every test file. It is simply noise. The pattern remains in test files that aren't named with `test_*` as those files are not discovered and executed by pytest by default.
90 lines
2.4 KiB
Python
90 lines
2.4 KiB
Python
from .helper import unittest, PillowTestCase, hopper
|
|
from PIL import Image
|
|
from PIL._util import py3
|
|
|
|
|
|
try:
|
|
from PIL import ImageTk
|
|
if py3:
|
|
import tkinter as tk
|
|
else:
|
|
import Tkinter as tk
|
|
dir(ImageTk)
|
|
HAS_TK = True
|
|
except (OSError, ImportError):
|
|
# Skipped via setUp()
|
|
HAS_TK = False
|
|
|
|
TK_MODES = ('1', 'L', 'P', 'RGB', 'RGBA')
|
|
|
|
|
|
@unittest.skipIf(not HAS_TK, "Tk not installed")
|
|
class TestImageTk(PillowTestCase):
|
|
|
|
def setUp(self):
|
|
try:
|
|
# setup tk
|
|
tk.Frame()
|
|
# root = tk.Tk()
|
|
except tk.TclError as v:
|
|
self.skipTest("TCL Error: %s" % v)
|
|
|
|
def test_kw(self):
|
|
TEST_JPG = "Tests/images/hopper.jpg"
|
|
TEST_PNG = "Tests/images/hopper.png"
|
|
im1 = Image.open(TEST_JPG)
|
|
im2 = Image.open(TEST_PNG)
|
|
with open(TEST_PNG, 'rb') as fp:
|
|
data = fp.read()
|
|
kw = {"file": TEST_JPG, "data": data}
|
|
|
|
# Test "file"
|
|
im = ImageTk._get_image_from_kw(kw)
|
|
self.assert_image_equal(im, im1)
|
|
|
|
# Test "data"
|
|
im = ImageTk._get_image_from_kw(kw)
|
|
self.assert_image_equal(im, im2)
|
|
|
|
# Test no relevant entry
|
|
im = ImageTk._get_image_from_kw(kw)
|
|
self.assertIsNone(im)
|
|
|
|
def test_photoimage(self):
|
|
for mode in TK_MODES:
|
|
# test as image:
|
|
im = hopper(mode)
|
|
|
|
# this should not crash
|
|
im_tk = ImageTk.PhotoImage(im)
|
|
|
|
self.assertEqual(im_tk.width(), im.width)
|
|
self.assertEqual(im_tk.height(), im.height)
|
|
|
|
# _tkinter.TclError: this function is not yet supported
|
|
# reloaded = ImageTk.getimage(im_tk)
|
|
# self.assert_image_equal(reloaded, im)
|
|
|
|
def test_photoimage_blank(self):
|
|
# test a image using mode/size:
|
|
for mode in TK_MODES:
|
|
im_tk = ImageTk.PhotoImage(mode, (100, 100))
|
|
|
|
self.assertEqual(im_tk.width(), 100)
|
|
self.assertEqual(im_tk.height(), 100)
|
|
|
|
# reloaded = ImageTk.getimage(im_tk)
|
|
# self.assert_image_equal(reloaded, im)
|
|
|
|
def test_bitmapimage(self):
|
|
im = hopper('1')
|
|
|
|
# this should not crash
|
|
im_tk = ImageTk.BitmapImage(im)
|
|
|
|
self.assertEqual(im_tk.width(), im.width)
|
|
self.assertEqual(im_tk.height(), im.height)
|
|
|
|
# reloaded = ImageTk.getimage(im_tk)
|
|
# self.assert_image_equal(reloaded, im)
|