test-kivy-app/kivy_venv/lib/python3.11/site-packages/kivy/tests/test_image.py
2024-09-15 15:12:16 +03:00

75 lines
2.4 KiB
Python

import unittest
import io
import os
import tempfile
from kivy import setupconfig
class ImageTestCase(unittest.TestCase):
def setUp(self):
from kivy.core.window import Window
from kivy.core.image import Image
import os
self.cls = Image
self.image = os.path.join(os.path.dirname(__file__), 'test_button.png')
print(self.image)
self.root = Image(self.image)
def test_keep_data(self):
root = self.root
texture = root.texture
self.assertEqual(root._image._data[0].data, None)
i1 = self.cls(self.image, keep_data=True)
if not i1._image._data[0].data:
self.fail('Image has no data even with keep_data = True')
@unittest.skip("Travis on Xenial don't have SDL_image >= 2.0.5")
def test_save_into_bytesio(self):
Image = self.cls
if setupconfig.PLATFORM == "darwin":
# XXX on OSX CI Builder, img_sdl2 is not used
# therefore the test below wont work yet with imageio only.
return
# load kivy logo
img = Image.load("data/logo/kivy-icon-512.png")
self.assertIsNotNone(img)
# try to save without any format
with self.assertRaises(Exception) as context:
bio = io.BytesIO()
img.save(bio)
# save it in png
bio = io.BytesIO()
# if False, then there is no provider
self.assertTrue(img.save(bio, fmt="png"))
pngdata = bio.read()
self.assertTrue(len(pngdata) > 0)
# try to save in a filename
try:
_, filename = tempfile.mkstemp(suffix=".png")
self.assertTrue(img.save(filename, fmt="png"))
finally:
os.unlink(filename)
# XXX Test wrote but temporary commented
# XXX because of the issue #6123 on OSX
# XXX https://github.com/kivy/kivy/issues/6123
# with open(filename, "rb") as fd2:
# pngdatafile = fd2.read()
# # check the png file data is the same as bytesio
# self.assertTrue(pngdata == pngdatafile)
# save it in jpeg
bio = io.BytesIO()
# if False, then there is no provider
self.assertTrue(img.save(bio, fmt="jpg"))
self.assertTrue(len(bio.read()) > 0)
with tempfile.NamedTemporaryFile(suffix=".jpg") as fd:
self.assertTrue(img.save(fd.name))