103 lines
3.2 KiB
Python
103 lines
3.2 KiB
Python
# -*- coding: utf8 -*-
|
|
import os
|
|
import os.path
|
|
import sys
|
|
import unittest
|
|
|
|
from pygame.tests.test_utils import example_path
|
|
import pygame, pygame.image, pygame.pkgdata
|
|
from pygame.compat import as_unicode, unicode_
|
|
|
|
imageext = sys.modules["pygame.imageext"]
|
|
|
|
|
|
class ImageextModuleTest(unittest.TestCase):
|
|
# Most of the testing is done indirectly through image_test.py
|
|
# This just confirms file path encoding and error handling.
|
|
def test_save_non_string_file(self):
|
|
im = pygame.Surface((10, 10), 0, 32)
|
|
self.assertRaises(TypeError, imageext.save_extended, im, [])
|
|
|
|
def test_load_non_string_file(self):
|
|
self.assertRaises(TypeError, imageext.load_extended, [])
|
|
|
|
@unittest.skip("SDL silently removes invalid characters")
|
|
def test_save_bad_filename(self):
|
|
im = pygame.Surface((10, 10), 0, 32)
|
|
u = u"a\x00b\x00c.png"
|
|
self.assertRaises(pygame.error, imageext.save_extended, im, u)
|
|
|
|
@unittest.skip("SDL silently removes invalid characters")
|
|
def test_load_bad_filename(self):
|
|
u = u"a\x00b\x00c.png"
|
|
self.assertRaises(pygame.error, imageext.load_extended, u)
|
|
|
|
def test_save_unknown_extension(self):
|
|
im = pygame.Surface((10, 10), 0, 32)
|
|
s = "foo.bar"
|
|
self.assertRaises(pygame.error, imageext.save_extended, im, s)
|
|
if sys.version_info >= (3, 0):
|
|
def test_load_unknown_extension(self):
|
|
s = "foo.bar"
|
|
self.assertRaises(FileNotFoundError, imageext.load_extended, s)
|
|
|
|
def test_load_unknown_file(self):
|
|
s = "nonexistent.png"
|
|
self.assertRaises(FileNotFoundError, imageext.load_extended, s)
|
|
else:
|
|
def test_load_unknown_extension(self):
|
|
s = "foo.bar"
|
|
self.assertRaises(IOError, imageext.load_extended, s)
|
|
|
|
def test_load_unknown_file(self):
|
|
s = "nonexistent.png"
|
|
self.assertRaises(IOError, imageext.load_extended, s)
|
|
|
|
def test_load_unicode_path_0(self):
|
|
u = unicode_(example_path("data/alien1.png"))
|
|
im = imageext.load_extended(u)
|
|
|
|
def test_load_unicode_path_1(self):
|
|
"""non-ASCII unicode"""
|
|
import shutil
|
|
|
|
orig = unicode_(example_path("data/alien1.png"))
|
|
temp = os.path.join(unicode_(example_path("data")), u"你好.png")
|
|
shutil.copy(orig, temp)
|
|
try:
|
|
im = imageext.load_extended(temp)
|
|
finally:
|
|
os.remove(temp)
|
|
|
|
def _unicode_save(self, temp_file):
|
|
im = pygame.Surface((10, 10), 0, 32)
|
|
try:
|
|
with open(temp_file, "w") as f:
|
|
pass
|
|
os.remove(temp_file)
|
|
except IOError:
|
|
raise unittest.SkipTest("the path cannot be opened")
|
|
|
|
self.assertFalse(os.path.exists(temp_file))
|
|
|
|
try:
|
|
imageext.save_extended(im, temp_file)
|
|
|
|
self.assertGreater(os.path.getsize(temp_file), 10)
|
|
finally:
|
|
try:
|
|
os.remove(temp_file)
|
|
except EnvironmentError:
|
|
pass
|
|
|
|
def test_save_unicode_path_0(self):
|
|
"""unicode object with ASCII chars"""
|
|
self._unicode_save(u"temp_file.png")
|
|
|
|
def test_save_unicode_path_1(self):
|
|
self._unicode_save(u"你好.png")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|