-
Notifications
You must be signed in to change notification settings - Fork 86
/
Copy pathtest_slide_thumbnail.py
132 lines (106 loc) · 3.58 KB
/
test_slide_thumbnail.py
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
"""Test for code related to obtaining slide thumbnails."""
import os
from pathlib import Path
import numpy as np
import pytest
from click.testing import CliRunner
from tiatoolbox import cli
from tiatoolbox.utils.env_detection import running_on_ci
from tiatoolbox.wsicore import wsireader
def test_wsireader_get_thumbnail_openslide(sample_svs: Path) -> None:
"""Test for get_thumbnail as a python function."""
wsi = wsireader.OpenSlideWSIReader(sample_svs)
slide_thumbnail = wsi.slide_thumbnail()
assert isinstance(slide_thumbnail, np.ndarray)
assert slide_thumbnail.dtype == "uint8"
def test_wsireader_get_thumbnail_jp2(sample_jp2: Path) -> None:
"""Test for get_thumbnail as a python function."""
wsi = wsireader.JP2WSIReader(sample_jp2)
slide_thumbnail = wsi.slide_thumbnail()
assert isinstance(slide_thumbnail, np.ndarray)
assert slide_thumbnail.dtype == "uint8"
def command_line_slide_thumbnail(
runner: CliRunner,
sample: Path,
tmp_path: Path,
mode: str = "save",
) -> None:
"""Command line slide thumbnail helper."""
slide_thumb_result = runner.invoke(
cli.main,
[
"slide-thumbnail",
"--img-input",
str(Path(sample)),
"--mode",
mode,
"--output-path",
str(Path(tmp_path)),
],
)
assert slide_thumb_result.exit_code == 0
if mode == "save":
assert (Path(tmp_path) / (sample.stem + ".jpg")).is_file()
def test_command_line_slide_thumbnail(sample_ndpi: Path, tmp_path: Path) -> None:
"""Test for the slide_thumbnail CLI."""
runner = CliRunner()
command_line_slide_thumbnail(runner, sample=sample_ndpi, tmp_path=tmp_path)
def test_command_line_slide_thumbnail_output_none(sample_svs: Path) -> None:
"""Test cli slide thumbnail with output dir None."""
runner = CliRunner()
slide_thumb_result = runner.invoke(
cli.main,
[
"slide-thumbnail",
"--img-input",
str(Path(sample_svs)),
"--mode",
"save",
],
)
assert slide_thumb_result.exit_code == 0
assert (
Path(sample_svs).parent / "slide-thumbnail" / (sample_svs.stem + ".jpg")
).is_file()
def test_command_line_jp2_slide_thumbnail(sample_jp2: Path, tmp_path: Path) -> None:
"""Test for the jp2 slide_thumbnail CLI."""
runner = CliRunner()
command_line_slide_thumbnail(runner, sample=sample_jp2, tmp_path=tmp_path)
@pytest.mark.skipif(running_on_ci(), reason="No display on CI.")
@pytest.mark.skipif(
not os.environ.get("SHOW_TESTS"),
reason="Visual tests disabled, set SHOW_TESTS to enable.",
)
def test_command_line_jp2_slide_thumbnail_mode_show(
sample_jp2: Path,
tmp_path: Path,
) -> None:
"""Test for the jp2 slide_thumbnail CLI mode='show'."""
runner = CliRunner()
command_line_slide_thumbnail(
runner,
sample=sample_jp2,
tmp_path=tmp_path,
mode="show",
)
def test_command_line_jp2_slide_thumbnail_file_not_supported(
sample_jp2: Path,
tmp_path: Path,
) -> None:
"""Test for the jp2 slide_thumbnail CLI."""
runner = CliRunner()
slide_thumb_result = runner.invoke(
cli.main,
[
"slide-thumbnail",
"--img-input",
str(Path(sample_jp2))[:-1],
"--mode",
"save",
"--output-path",
str(Path(tmp_path)),
],
)
assert slide_thumb_result.output == ""
assert slide_thumb_result.exit_code == 1
assert isinstance(slide_thumb_result.exception, FileNotFoundError)