242 lines
9.3 KiB
Python
242 lines
9.3 KiB
Python
import os
|
|
import sys
|
|
import unittest
|
|
import urllib
|
|
if sys.version_info[0] < 3:
|
|
import urllib2
|
|
else:
|
|
import urllib.request as urllib2
|
|
from ..ext import resources
|
|
|
|
|
|
class SDL2ExtResourcesTest(unittest.TestCase):
|
|
__tags__ = ["sdl2ext"]
|
|
|
|
def test_open_zipfile(self):
|
|
fpath = os.path.join(os.path.dirname(__file__), "resources")
|
|
zfile = os.path.join(fpath, "resources.zip")
|
|
|
|
# resources.zip is a packed version of resources/, which at
|
|
# least contains
|
|
#
|
|
# resources/rwopstest.txt
|
|
# resources/surfacetest.bmp
|
|
|
|
resfile = resources.open_zipfile(zfile, "rwopstest.txt", "resources")
|
|
self.assertIsNotNone(resfile)
|
|
resfile = resources.open_zipfile(zfile, "resources/rwopstest.txt")
|
|
self.assertIsNotNone(resfile)
|
|
|
|
self.assertRaises(KeyError, resources.open_zipfile, zfile, "invalid")
|
|
self.assertRaises(KeyError, resources.open_zipfile, zfile, None)
|
|
self.assertRaises(KeyError, resources.open_zipfile, zfile,
|
|
"rwopstest.txt", "data")
|
|
self.assertRaises(KeyError, resources.open_zipfile, zfile,
|
|
"rwopstest.txt", 1234)
|
|
self.assertRaises(KeyError, resources.open_zipfile, zfile,
|
|
None, None)
|
|
|
|
self.assertRaises(TypeError, resources.open_zipfile, None,
|
|
"rwopstest.txt")
|
|
self.assertRaises(TypeError, resources.open_zipfile, None, None)
|
|
self.assertRaises(TypeError, resources.open_zipfile, None,
|
|
"rwopstest.txt", "resources")
|
|
|
|
def test_open_tarfile(self):
|
|
fpath = os.path.join(os.path.dirname(__file__), "resources")
|
|
tfile = os.path.join(fpath, "resources.tar.gz")
|
|
|
|
# resources.tar.gz is a packed version of resources/, which at
|
|
# least contains
|
|
#
|
|
# resources/rwopstest.txt
|
|
# resources/surfacetest.bmp
|
|
|
|
resfile = resources.open_tarfile(tfile, "rwopstest.txt", "resources")
|
|
self.assertIsNotNone(resfile)
|
|
resfile = resources.open_tarfile(tfile, "resources/rwopstest.txt")
|
|
self.assertIsNotNone(resfile)
|
|
|
|
# TODO: refine the error handling in open_tarfile()
|
|
self.assertRaises(KeyError, resources.open_tarfile, tfile, "invalid")
|
|
self.assertRaises(AttributeError, resources.open_tarfile, tfile, None)
|
|
self.assertRaises(KeyError, resources.open_tarfile, tfile,
|
|
"rwopstest.txt", "data")
|
|
self.assertRaises(KeyError, resources.open_tarfile, tfile,
|
|
"rwopstest.txt", 1234)
|
|
self.assertRaises(AttributeError, resources.open_tarfile, tfile,
|
|
None, None)
|
|
|
|
self.assertRaises(ValueError, resources.open_tarfile, None,
|
|
"rwopstest.txt")
|
|
self.assertRaises(ValueError, resources.open_tarfile, None, None)
|
|
self.assertRaises(ValueError, resources.open_tarfile, None,
|
|
"rwopstest.txt", "resources")
|
|
|
|
def test_open_url(self):
|
|
if sys.version_info[0] < 3:
|
|
p2url = urllib.pathname2url
|
|
else:
|
|
p2url = urllib2.pathname2url
|
|
|
|
fpath = os.path.join(os.path.dirname(__file__), "resources")
|
|
fpath = os.path.abspath(fpath)
|
|
tfile = os.path.join(fpath, "rwopstest.txt")
|
|
urlpath = "file:%s" % p2url(tfile)
|
|
resfile = resources.open_url(urlpath)
|
|
self.assertIsNotNone(resfile)
|
|
|
|
tfile = os.path.join(fpath, "invalid")
|
|
urlpath = "file:%s" % p2url(tfile)
|
|
self.assertRaises(urllib2.URLError, resources.open_url, urlpath)
|
|
|
|
def test_Resources(self):
|
|
self.assertRaises(ValueError, resources.Resources, "invalid")
|
|
|
|
res = resources.Resources()
|
|
self.assertIsInstance(res, resources.Resources)
|
|
self.assertRaises(KeyError, res.get, "surfacetest.bmp")
|
|
|
|
fpath = os.path.join(os.path.dirname(__file__), "resources")
|
|
res = resources.Resources(fpath)
|
|
self.assertIsNotNone(res.get("rwopstest.txt"))
|
|
self.assertIsNotNone(res.get("surfacetest.bmp"))
|
|
|
|
res2 = resources.Resources(__file__)
|
|
self.assertIsNotNone(res2.get("rwopstest.txt"))
|
|
self.assertIsNotNone(res2.get("surfacetest.bmp"))
|
|
|
|
res3 = resources.Resources(__file__, "resources")
|
|
self.assertIsNotNone(res3.get("rwopstest.txt"))
|
|
self.assertIsNotNone(res3.get("surfacetest.bmp"))
|
|
|
|
def test_Resources_add(self):
|
|
fpath = os.path.join(os.path.dirname(__file__), "resources")
|
|
sfile = os.path.join(fpath, "surfacetest.bmp")
|
|
zfile = os.path.join(fpath, "resources.zip")
|
|
|
|
res = resources.Resources()
|
|
res.add(sfile)
|
|
self.assertRaises(KeyError, res.get, "rwopstest.txt")
|
|
self.assertIsNotNone(res.get("surfacetest.bmp"))
|
|
|
|
res.add(zfile)
|
|
self.assertIsNotNone(res.get("rwopstest.txt"))
|
|
self.assertIsNotNone(res.get("surfacetest.bmp"))
|
|
|
|
self.assertRaises(TypeError, res.add, None)
|
|
self.assertRaises(ValueError, res.add, "invalid_name.txt")
|
|
|
|
def test_Resources_add_file(self):
|
|
fpath = os.path.join(os.path.dirname(__file__), "resources")
|
|
sfile = os.path.join(fpath, "surfacetest.bmp")
|
|
zfile = os.path.join(fpath, "resources.zip")
|
|
|
|
res = resources.Resources()
|
|
res.add_file(sfile)
|
|
res.add_file(zfile)
|
|
|
|
self.assertRaises(KeyError, res.get, "rwopstest.txt")
|
|
self.assertIsNotNone(res.get("surfacetest.bmp"))
|
|
self.assertIsNotNone(res.get("resources.zip"))
|
|
|
|
self.assertRaises(TypeError, res.add_file, None)
|
|
self.assertRaises(ValueError, res.add_file, "invalid_name.txt")
|
|
|
|
def test_Resources_add_archive(self):
|
|
fpath = os.path.join(os.path.dirname(__file__), "resources")
|
|
zfile = os.path.join(fpath, "resources.zip")
|
|
tfile = os.path.join(fpath, "resources.tar.gz")
|
|
|
|
res = resources.Resources()
|
|
res.add_archive(zfile)
|
|
|
|
self.assertIsNotNone(res.get("surfacetest.bmp"))
|
|
self.assertIsNotNone(res.get("rwopstest.txt"))
|
|
self.assertRaises(KeyError, res.get, "resources.zip")
|
|
|
|
self.assertRaises(TypeError, res.add_archive, None)
|
|
self.assertRaises(ValueError, res.add_archive, "invalid_name.txt")
|
|
|
|
res = resources.Resources()
|
|
res.add_archive(tfile, typehint="targz")
|
|
self.assertIsNotNone(res.get("surfacetest.bmp"))
|
|
self.assertIsNotNone(res.get("rwopstest.txt"))
|
|
self.assertRaises(KeyError, res.get, "resources.tar.gz")
|
|
|
|
def test_Resources_get(self):
|
|
fpath = os.path.join(os.path.dirname(__file__), "resources")
|
|
|
|
for path in (fpath, None):
|
|
res = resources.Resources(path)
|
|
|
|
self.assertRaises(KeyError, res.get, "invalid_file.txt")
|
|
self.assertRaises(KeyError, res.get, None)
|
|
self.assertRaises(KeyError, res.get, 123456)
|
|
if path is None:
|
|
self.assertRaises(KeyError, res.get, "surfacetest.bmp")
|
|
self.assertRaises(KeyError, res.get, "rwopstest.txt")
|
|
else:
|
|
self.assertIsNotNone(res.get("surfacetest.bmp"))
|
|
self.assertIsNotNone(res.get("rwopstest.txt"))
|
|
|
|
def test_Resources_get_filelike(self):
|
|
fpath = os.path.join(os.path.dirname(__file__), "resources")
|
|
zfile = os.path.join(fpath, "resources.zip")
|
|
pfile = os.path.join(fpath, "rwopstest.txt")
|
|
|
|
res = resources.Resources()
|
|
res.add(zfile)
|
|
|
|
v1 = res.get_filelike("rwopstest.txt")
|
|
v2 = res.get_filelike("surfacetest.bmp")
|
|
self.assertEqual(type(v1), type(v2))
|
|
|
|
res.add(pfile)
|
|
|
|
v1 = res.get_filelike("rwopstest.txt")
|
|
v2 = res.get_filelike("surfacetest.bmp")
|
|
self.assertNotEqual(type(v1), type(v2))
|
|
|
|
self.assertRaises(KeyError, res.get_filelike, None)
|
|
self.assertRaises(KeyError, res.get_filelike, "invalid")
|
|
self.assertRaises(KeyError, res.get_filelike, 1234)
|
|
|
|
def test_Resources_get_path(self):
|
|
fpath = os.path.join(os.path.dirname(__file__), "resources")
|
|
zfile = os.path.join(fpath, "resources.zip")
|
|
pfile = os.path.join(fpath, "rwopstest.txt")
|
|
|
|
res = resources.Resources()
|
|
res.add(zfile)
|
|
res.add(pfile)
|
|
|
|
zpath = res.get_path("surfacetest.bmp")
|
|
self.assertTrue(zpath.find("surfacetest.bmp@") != -1)
|
|
self.assertNotEqual(zpath, zfile)
|
|
ppath = res.get_path("rwopstest.txt")
|
|
self.assertTrue(ppath.find("rwopstest.txt") != -1)
|
|
|
|
self.assertRaises(KeyError, res.get_path, None)
|
|
self.assertRaises(KeyError, res.get_path, "invalid")
|
|
self.assertRaises(KeyError, res.get_path, 1234)
|
|
|
|
def test_Resources_scan(self):
|
|
fpath = os.path.join(os.path.dirname(__file__))
|
|
res = resources.Resources()
|
|
res.scan(fpath)
|
|
self.assertIsNotNone(res.get("rwopstest.txt"))
|
|
self.assertIsNotNone(res.get("surfacetest.bmp"))
|
|
|
|
self.assertRaises(ValueError, res.scan, "invalid")
|
|
self.assertRaises(ValueError, res.scan, fpath, "invalid")
|
|
self.assertRaises(Exception, res.scan, 12345)
|
|
|
|
res = resources.Resources()
|
|
res.scan(fpath, "resources")
|
|
self.assertIsNotNone(res.get("rwopstest.txt"))
|
|
self.assertIsNotNone(res.get("surfacetest.bmp"))
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(unittest.main())
|