aboutsummaryrefslogtreecommitdiffstats
path: root/test/reader/preview/test_pg.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/reader/preview/test_pg.py')
-rw-r--r--test/reader/preview/test_pg.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/test/reader/preview/test_pg.py b/test/reader/preview/test_pg.py
new file mode 100644
index 0000000..30095c5
--- /dev/null
+++ b/test/reader/preview/test_pg.py
@@ -0,0 +1,78 @@
+
+# standard imports
+from functools import partial
+import os
+import shutil
+import tempfile
+import unittest
+
+# external imports
+import PIL.Image
+
+# bsie imports
+from bsie.utils import errors
+
+# objects to test
+from bsie.reader.preview._pg import PreviewGeneratorReader
+
+
+## code ##
+
+class TestPreviewGeneratorReader(unittest.TestCase):
+ def test_call(self):
+ rdr = PreviewGeneratorReader()
+ # inexistent file raises a ReaderError
+ self.assertRaises(errors.ReaderError, rdr,
+ os.path.join(os.path.dirname(__file__), 'missing.jpg'))
+ # unsupported file type raises an UnsupportedFileFormatError
+ self.assertRaises(errors.UnsupportedFileFormatError, rdr,
+ os.path.join(os.path.dirname(__file__), 'invalid.foo'))
+ # invalid file raises a ReaderError
+ self.assertRaises(errors.ReaderError,
+ rdr(os.path.join(os.path.dirname(__file__), 'invalid.jpg')), 100)
+
+ # proper file produces a generator
+ gen = rdr(os.path.join(os.path.dirname(__file__), 'testimage.jpg'))
+ self.assertIsInstance(gen, partial)
+ # generator produces an image
+ img = gen(10)
+ self.assertIsInstance(img, PIL.Image.Image)
+ self.assertEqual(img.size, (10, 10))
+ self.assertEqual(sum(img.getdata()), 0)
+ # cleanup
+ img.close()
+
+ # preview generator can also extract data from non-image files
+ gen = rdr(os.path.join(os.path.dirname(__file__), 'testfile.pdf'))
+ self.assertIsInstance(gen, partial)
+ # generator produces an image
+ img = gen(10)
+ self.assertIsInstance(img, PIL.Image.Image)
+ self.assertEqual(img.size, (8, 10))
+ self.assertEqual(sum(img.getdata()), 20258)
+ # cleanup
+ img.close()
+ del rdr
+
+ # can define a cache dir
+ pg_dir = tempfile.mkdtemp(prefix='bsie-test')
+ self.assertTrue(os.path.exists(pg_dir))
+ rdr = PreviewGeneratorReader(cache=pg_dir)
+ gen = rdr(os.path.join(os.path.dirname(__file__), 'testimage.jpg'))
+ img = gen(10)
+ self.assertIsInstance(img, PIL.Image.Image)
+ self.assertEqual(img.size, (10, 10))
+ self.assertEqual(sum(img.getdata()), 0)
+ img.close()
+ del rdr
+ # cache dir still exists after instance deletion
+ self.assertTrue(os.path.exists(pg_dir))
+ shutil.rmtree(pg_dir, ignore_errors=True)
+
+
+## main ##
+
+if __name__ == '__main__':
+ unittest.main()
+
+## EOF ##