|
19 | 19 |
|
20 | 20 | from ..openers import Opener, ImageOpener
|
21 | 21 |
|
| 22 | +from nose.case import Test |
22 | 23 | from nose.tools import (assert_true, assert_false, assert_equal,
|
23 | 24 | assert_not_equal, assert_raises)
|
24 | 25 |
|
@@ -84,13 +85,39 @@ def test_Opener_various():
|
84 | 85 | # Just check there is a fileno
|
85 | 86 | assert_not_equal(fobj.fileno(), 0)
|
86 | 87 |
|
87 |
| -def test_ImageOpener(): |
88 |
| - # Test that ImageOpener does add '.mgz' as gzipped file type |
89 |
| - with InTemporaryDirectory(): |
90 |
| - with ImageOpener('test.gz', 'w') as fobj: |
91 |
| - assert_true(hasattr(fobj.fobj, 'compress')) |
92 |
| - with ImageOpener('test.mgz', 'w') as fobj: |
93 |
| - assert_true(hasattr(fobj.fobj, 'compress')) |
| 88 | + |
| 89 | +class TestImageOpener: |
| 90 | + def setUp(self): |
| 91 | + self.compress_ext_map = ImageOpener.compress_ext_map.copy() |
| 92 | + |
| 93 | + def teardown(self): |
| 94 | + ImageOpener.compress_ext_map = self.compress_ext_map |
| 95 | + |
| 96 | + def test_vanilla(self): |
| 97 | + # Test that ImageOpener does add '.mgz' as gzipped file type |
| 98 | + with InTemporaryDirectory(): |
| 99 | + with ImageOpener('test.gz', 'w') as fobj: |
| 100 | + assert_true(hasattr(fobj.fobj, 'compress')) |
| 101 | + with ImageOpener('test.mgz', 'w') as fobj: |
| 102 | + assert_true(hasattr(fobj.fobj, 'compress')) |
| 103 | + |
| 104 | + def test_new_association(self): |
| 105 | + def file_opener(fileish, mode): |
| 106 | + return open(fileish, mode) |
| 107 | + |
| 108 | + # Add the association |
| 109 | + n_associations = len(ImageOpener.compress_ext_map) |
| 110 | + dec = ImageOpener.register_ext_from_image('.foo', |
| 111 | + (file_opener, ('mode',))) |
| 112 | + dec(self.__class__) |
| 113 | + assert_equal(n_associations + 1, len(ImageOpener.compress_ext_map)) |
| 114 | + assert_true('.foo' in ImageOpener.compress_ext_map) |
| 115 | + |
| 116 | + with InTemporaryDirectory(): |
| 117 | + with ImageOpener('test.foo', 'w'): |
| 118 | + pass |
| 119 | + assert_true(os.path.exists('test.foo')) |
| 120 | + |
94 | 121 |
|
95 | 122 | def test_file_like_wrapper():
|
96 | 123 | # Test wrapper using BytesIO (full API)
|
|
0 commit comments