91 lines
2.9 KiB
Python
91 lines
2.9 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(pygame.error, 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)
|
||
|
|
||
|
def test_load_unknown_extension(self):
|
||
|
s = "foo.bar"
|
||
|
self.assertRaises(pygame.error, imageext.load_extended, s)
|
||
|
|
||
|
def test_load_unknown_file(self):
|
||
|
s = "nonexistent.png"
|
||
|
self.assertRaises(pygame.error, 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()
|