|
27 | 27 | from openslide.deepzoom import DeepZoomGenerator
|
28 | 28 |
|
29 | 29 |
|
30 |
| -class _BoxesDeepZoomTest: |
31 |
| - def setUp(self): |
32 |
| - self.osr = self.CLASS(file_path(self.FILENAME)) |
33 |
| - self.dz = DeepZoomGenerator(self.osr, 254, 1) |
34 |
| - |
35 |
| - def tearDown(self): |
36 |
| - self.osr.close() |
37 |
| - |
38 |
| - def test_repr(self): |
39 |
| - self.assertEqual( |
40 |
| - repr(self.dz), |
41 |
| - ('DeepZoomGenerator(%r, tile_size=254, overlap=1, ' + 'limit_bounds=False)') |
42 |
| - % self.osr, |
43 |
| - ) |
44 |
| - |
45 |
| - def test_metadata(self): |
46 |
| - self.assertEqual(self.dz.level_count, 10) |
47 |
| - self.assertEqual(self.dz.tile_count, 11) |
48 |
| - self.assertEqual( |
49 |
| - self.dz.level_tiles, |
50 |
| - ( |
51 |
| - (1, 1), |
52 |
| - (1, 1), |
53 |
| - (1, 1), |
54 |
| - (1, 1), |
55 |
| - (1, 1), |
56 |
| - (1, 1), |
57 |
| - (1, 1), |
58 |
| - (1, 1), |
59 |
| - (1, 1), |
60 |
| - (2, 1), |
61 |
| - ), |
62 |
| - ) |
63 |
| - self.assertEqual( |
64 |
| - self.dz.level_dimensions, |
65 |
| - ( |
66 |
| - (1, 1), |
67 |
| - (2, 1), |
68 |
| - (3, 2), |
69 |
| - (5, 4), |
70 |
| - (10, 8), |
71 |
| - (19, 16), |
72 |
| - (38, 32), |
73 |
| - (75, 63), |
74 |
| - (150, 125), |
75 |
| - (300, 250), |
76 |
| - ), |
77 |
| - ) |
78 |
| - |
79 |
| - def test_get_tile(self): |
80 |
| - self.assertEqual(self.dz.get_tile(9, (1, 0)).size, (47, 250)) |
81 |
| - |
82 |
| - def test_tile_color_profile(self): |
83 |
| - if self.CLASS is OpenSlide and not lowlevel.read_icc_profile.available: |
84 |
| - self.skipTest("requires OpenSlide 4.0.0") |
85 |
| - self.assertEqual(len(self.dz.get_tile(9, (1, 0)).info['icc_profile']), 588) |
86 |
| - |
87 |
| - def test_get_tile_bad_level(self): |
88 |
| - self.assertRaises(ValueError, lambda: self.dz.get_tile(-1, (0, 0))) |
89 |
| - self.assertRaises(ValueError, lambda: self.dz.get_tile(10, (0, 0))) |
90 |
| - |
91 |
| - def test_get_tile_bad_address(self): |
92 |
| - self.assertRaises(ValueError, lambda: self.dz.get_tile(0, (-1, 0))) |
93 |
| - self.assertRaises(ValueError, lambda: self.dz.get_tile(0, (1, 0))) |
94 |
| - |
95 |
| - def test_get_tile_coordinates(self): |
96 |
| - self.assertEqual( |
97 |
| - self.dz.get_tile_coordinates(9, (1, 0)), ((253, 0), 0, (47, 250)) |
98 |
| - ) |
99 |
| - |
100 |
| - def test_get_tile_dimensions(self): |
101 |
| - self.assertEqual(self.dz.get_tile_dimensions(9, (1, 0)), (47, 250)) |
102 |
| - |
103 |
| - def test_get_dzi(self): |
104 |
| - self.assertTrue( |
105 |
| - 'http://schemas.microsoft.com/deepzoom/2008' in self.dz.get_dzi('jpeg') |
106 |
| - ) |
107 |
| - |
108 |
| - |
109 |
| -class TestSlideDeepZoom(_BoxesDeepZoomTest, unittest.TestCase): |
| 30 | +class _Abstract: |
| 31 | + # nested class to prevent the test runner from finding it |
| 32 | + class BoxesDeepZoomTest(unittest.TestCase): |
| 33 | + def setUp(self): |
| 34 | + self.osr = self.CLASS(file_path(self.FILENAME)) |
| 35 | + self.dz = DeepZoomGenerator(self.osr, 254, 1) |
| 36 | + |
| 37 | + def tearDown(self): |
| 38 | + self.osr.close() |
| 39 | + |
| 40 | + def test_repr(self): |
| 41 | + self.assertEqual( |
| 42 | + repr(self.dz), |
| 43 | + ( |
| 44 | + 'DeepZoomGenerator(%r, tile_size=254, overlap=1, ' |
| 45 | + + 'limit_bounds=False)' |
| 46 | + ) |
| 47 | + % self.osr, |
| 48 | + ) |
| 49 | + |
| 50 | + def test_metadata(self): |
| 51 | + self.assertEqual(self.dz.level_count, 10) |
| 52 | + self.assertEqual(self.dz.tile_count, 11) |
| 53 | + self.assertEqual( |
| 54 | + self.dz.level_tiles, |
| 55 | + ( |
| 56 | + (1, 1), |
| 57 | + (1, 1), |
| 58 | + (1, 1), |
| 59 | + (1, 1), |
| 60 | + (1, 1), |
| 61 | + (1, 1), |
| 62 | + (1, 1), |
| 63 | + (1, 1), |
| 64 | + (1, 1), |
| 65 | + (2, 1), |
| 66 | + ), |
| 67 | + ) |
| 68 | + self.assertEqual( |
| 69 | + self.dz.level_dimensions, |
| 70 | + ( |
| 71 | + (1, 1), |
| 72 | + (2, 1), |
| 73 | + (3, 2), |
| 74 | + (5, 4), |
| 75 | + (10, 8), |
| 76 | + (19, 16), |
| 77 | + (38, 32), |
| 78 | + (75, 63), |
| 79 | + (150, 125), |
| 80 | + (300, 250), |
| 81 | + ), |
| 82 | + ) |
| 83 | + |
| 84 | + def test_get_tile(self): |
| 85 | + self.assertEqual(self.dz.get_tile(9, (1, 0)).size, (47, 250)) |
| 86 | + |
| 87 | + def test_tile_color_profile(self): |
| 88 | + if self.CLASS is OpenSlide and not lowlevel.read_icc_profile.available: |
| 89 | + self.skipTest("requires OpenSlide 4.0.0") |
| 90 | + self.assertEqual(len(self.dz.get_tile(9, (1, 0)).info['icc_profile']), 588) |
| 91 | + |
| 92 | + def test_get_tile_bad_level(self): |
| 93 | + self.assertRaises(ValueError, lambda: self.dz.get_tile(-1, (0, 0))) |
| 94 | + self.assertRaises(ValueError, lambda: self.dz.get_tile(10, (0, 0))) |
| 95 | + |
| 96 | + def test_get_tile_bad_address(self): |
| 97 | + self.assertRaises(ValueError, lambda: self.dz.get_tile(0, (-1, 0))) |
| 98 | + self.assertRaises(ValueError, lambda: self.dz.get_tile(0, (1, 0))) |
| 99 | + |
| 100 | + def test_get_tile_coordinates(self): |
| 101 | + self.assertEqual( |
| 102 | + self.dz.get_tile_coordinates(9, (1, 0)), ((253, 0), 0, (47, 250)) |
| 103 | + ) |
| 104 | + |
| 105 | + def test_get_tile_dimensions(self): |
| 106 | + self.assertEqual(self.dz.get_tile_dimensions(9, (1, 0)), (47, 250)) |
| 107 | + |
| 108 | + def test_get_dzi(self): |
| 109 | + self.assertTrue( |
| 110 | + 'http://schemas.microsoft.com/deepzoom/2008' in self.dz.get_dzi('jpeg') |
| 111 | + ) |
| 112 | + |
| 113 | + |
| 114 | +class TestSlideDeepZoom(_Abstract.BoxesDeepZoomTest): |
110 | 115 | CLASS = OpenSlide
|
111 | 116 | FILENAME = 'boxes.tiff'
|
112 | 117 |
|
113 | 118 |
|
114 |
| -class TestImageDeepZoom(_BoxesDeepZoomTest, unittest.TestCase): |
| 119 | +class TestImageDeepZoom(_Abstract.BoxesDeepZoomTest): |
115 | 120 | CLASS = ImageSlide
|
116 | 121 | FILENAME = 'boxes.png'
|
0 commit comments