File: ioregistry_unit_test.py

package info (click to toggle)
python-sigima 1.0.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 24,956 kB
  • sloc: python: 33,326; makefile: 3
file content (69 lines) | stat: -rw-r--r-- 2,224 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.

"""
I/O registry unit test
"""

from __future__ import annotations

from sigima.io import ImageIORegistry, SignalIORegistry
from sigima.io.base import IOAction, get_file_extensions
from sigima.tests.env import execenv


def test_get_file_extensions() -> None:
    """Test function `get_file_extensions` for I/O registries"""
    extensions = "*.bmp *.jpg *.jpeg *.png *.tif *.tiff *.jp2"
    assert get_file_extensions(extensions) == [
        "bmp",
        "jp2",
        "jpeg",
        "jpg",
        "png",
        "tif",
        "tiff",
    ], "get_file_extensions did not return expected list of extensions"


def __test_io_registry(registry: SignalIORegistry | ImageIORegistry) -> None:
    """Test I/O registry functionality

    Args:
        registry: I/O registry to test
    """
    execenv.print("*" * 80)
    execenv.print(f"Testing I/O registry: {registry.__name__}")
    execenv.print("*" * 80)
    formats = registry.get_formats()
    execenv.print(f"Supported formats: {len(formats)}")
    execenv.print(registry.get_format_info(mode="text"))
    load_filters = registry.get_filters(IOAction.LOAD)
    assert (
        len(load_filters.splitlines())
        == len([fmt for fmt in formats if fmt.info.readable]) + 1
    ), "Number of load filters does not match number of formats"
    save_filters = registry.get_filters(IOAction.SAVE)
    assert (
        len(save_filters.splitlines())
        == len([fmt for fmt in formats if fmt.info.writeable]) + 1
    ), "Number of save filters does not match number of formats"
    execenv.print(f"Readable formats: {load_filters}")
    assert load_filters == registry.get_read_filters()
    execenv.print(f"Writable formats: {save_filters}")
    assert save_filters == registry.get_write_filters()


def test_signal_io_registry() -> None:
    """Test Signal I/O registry functionality"""
    __test_io_registry(SignalIORegistry)


def test_image_io_registry() -> None:
    """Test Image I/O registry functionality"""
    __test_io_registry(ImageIORegistry)


if __name__ == "__main__":
    test_signal_io_registry()
    test_image_io_registry()
    test_get_file_extensions()