aboutsummaryrefslogtreecommitdiffstats
path: root/test/reader/preview/test_rawpy.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/reader/preview/test_rawpy.py')
-rw-r--r--test/reader/preview/test_rawpy.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/test/reader/preview/test_rawpy.py b/test/reader/preview/test_rawpy.py
new file mode 100644
index 0000000..ed35f53
--- /dev/null
+++ b/test/reader/preview/test_rawpy.py
@@ -0,0 +1,59 @@
+"""
+
+Part of the bsie test suite.
+A copy of the license is provided with the project.
+Author: Matthias Baumgartner, 2022
+"""
+# standard imports
+from functools import partial
+import importlib
+import os
+import unittest
+
+# external imports
+import PIL.Image
+
+# bsie imports
+from bsie.utils import errors
+
+# objects to test
+from bsie.reader.preview._rawpy import RawpyPreviewReader
+
+
+## code ##
+
+class TestRawpyPreviewReader(unittest.TestCase):
+ def setUp(self):
+ if __package__ is None or __package__ == '': # direct call or local discovery
+ importlib.import_module('load_nef', __package__).get()
+ else: # parent discovery
+ importlib.import_module('.load_nef', __package__).get()
+
+ def test_call(self):
+ rdr = RawpyPreviewReader()
+ # raises exception when image cannot be read
+ self.assertRaises(errors.ReaderError, rdr,
+ os.path.join(os.path.dirname(__file__), 'invalid.nef'))
+ # raises exception when image has invalid type
+ self.assertRaises(errors.UnsupportedFileFormatError, rdr,
+ os.path.join(os.path.dirname(__file__), 'invalid.jpg'))
+ self.assertRaises(errors.UnsupportedFileFormatError, rdr,
+ os.path.join(os.path.dirname(__file__), 'invalid.foo'))
+ # proper file produces a generator
+ gen = rdr(os.path.join(os.path.dirname(__file__), 'testimage.nef'))
+ self.assertIsInstance(gen, partial)
+ # generator produces an image
+ img = gen(10)
+ self.assertIsInstance(img, PIL.Image.Image)
+ self.assertEqual(img.size, (10, 7))
+ self.assertEqual(sum(band for pix in img.getdata() for band in pix), 15269)
+ # cleanup
+ img.close()
+
+
+## main ##
+
+if __name__ == '__main__':
+ unittest.main()
+
+## EOF ##