File: test_base.py

package info (click to toggle)
openslide-python 1.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,840 kB
  • sloc: javascript: 19,981; python: 2,418; ansic: 86; makefile: 18
file content (53 lines) | stat: -rw-r--r-- 2,002 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#
# openslide-python - Python bindings for the OpenSlide library
#
# Copyright (c) 2016-2023 Benjamin Gilbert
#
# This library is free software; you can redistribute it and/or modify it
# under the terms of version 2.1 of the GNU Lesser General Public License
# as published by the Free Software Foundation.
#
# This library is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
# License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this library; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#

from __future__ import annotations

import ctypes
import unittest

from common import file_path

from openslide import ImageSlide, OpenSlide, lowlevel, open_slide


class TestLibrary(unittest.TestCase):
    def test_open_slide(self) -> None:
        with open_slide(file_path('boxes.tiff')) as osr:
            self.assertTrue(isinstance(osr, OpenSlide))
        with open_slide(file_path('boxes.png')) as osr:
            self.assertTrue(isinstance(osr, ImageSlide))

    def test_lowlevel_available(self) -> None:
        '''Ensure all exported functions have an 'available' attribute.'''
        for name in dir(lowlevel):
            attr = getattr(lowlevel, name)
            # ignore classes and unexported functions
            if name.startswith('_') or name[0].isupper():
                continue
            # ignore __future__ imports
            if getattr(attr, '__module__', None) == '__future__':
                continue
            # ignore random imports
            if hasattr(ctypes, name) or name in ('count', 'os', 'platform'):
                continue
            self.assertTrue(
                hasattr(attr, 'available'),
                f'"{name}" missing "available" attribute',
            )