summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Farago <sensej007@email.cz>2021-12-01 16:31:45 +0100
committerTomas Farago <sensej007@email.cz>2021-12-01 17:15:03 +0100
commit9d37808d929b69d1526362ddc17f60774c08ac54 (patch)
treeaa0070093494a79bb356d43f89d2b1e7a89e88ab
parent32f25d2f2095c13110640f27c99d0c95f2d49255 (diff)
downloadufo-filters-9d37808d929b69d1526362ddc17f60774c08ac54.tar.gz
ufo-filters-9d37808d929b69d1526362ddc17f60774c08ac54.tar.bz2
ufo-filters-9d37808d929b69d1526362ddc17f60774c08ac54.tar.xz
ufo-filters-9d37808d929b69d1526362ddc17f60774c08ac54.zip
Test multi-image readers
-rw-r--r--tests/CMakeLists.txt9
-rwxr-xr-xtests/check-multipage-readers24
-rwxr-xr-xtests/make-input-multipage-readers18
-rw-r--r--tests/meson.build11
-rwxr-xr-xtests/test-multipage-readers.sh59
5 files changed, 120 insertions, 1 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 8de94f1..d2edac1 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -23,3 +23,12 @@ add_test(test_core_149
add_test(test_nlm
${BASH} "${CMAKE_CURRENT_SOURCE_DIR}/test-nlm.sh")
+
+add_test(test_multipage_readers
+ ${BASH} "${CMAKE_CURRENT_SOURCE_DIR}/test-multipage-readers.sh")
+
+file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/make-input-multipage-readers
+ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/tests)
+
+file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/check-multipage-readers
+ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/tests)
diff --git a/tests/check-multipage-readers b/tests/check-multipage-readers
new file mode 100755
index 0000000..4e1bd9e
--- /dev/null
+++ b/tests/check-multipage-readers
@@ -0,0 +1,24 @@
+#!/usr/bin/env python3
+
+import sys
+import numpy as np
+import tifffile
+
+
+def main(gt):
+ im = tifffile.imread('multipage-out.tif')
+ if im.ndim == 2:
+ im = im[np.newaxis]
+
+ collected = []
+ for i in range(im.shape[0]):
+ collected.append(int(im[i, 0, 0]))
+ if int(gt[i]) != collected[i]:
+ print('Sequences do not match', gt[:i + 1], collected[:i + 1])
+ return 1
+
+ return 0
+
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv[1:]))
diff --git a/tests/make-input-multipage-readers b/tests/make-input-multipage-readers
new file mode 100755
index 0000000..a565122
--- /dev/null
+++ b/tests/make-input-multipage-readers
@@ -0,0 +1,18 @@
+#!/usr/bin/env python3
+
+import h5py
+import numpy as np
+import tifffile
+
+
+base = np.ones((15, 128, 128), dtype=np.uint16) * np.arange(15, dtype=np.uint16)[:, np.newaxis, np.newaxis]
+fmt = 'multipage-image-{:>02}.{}'
+
+
+for i in range(4):
+ current = base + i * len(base)
+ tifffile.imsave(fmt.format(i, 'tif'), current)
+ with h5py.File(fmt.format(i, 'h5'), 'w') as f:
+ dset = f.create_dataset('images', data=current)
+ with open(fmt.format(i, 'raw'), 'wb') as f:
+ f.write(current.tostring())
diff --git a/tests/meson.build b/tests/meson.build
index 6b720d2..4ab4156 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -4,7 +4,8 @@ tests = [
'test-161',
'test-core-149',
'test-file-write-regression',
- 'test-nlm'
+ 'test-nlm',
+ 'test-multipage-readers'
]
tiffinfo = find_program('tiffinfo', required : false)
@@ -17,6 +18,14 @@ test_env = [
'UFO_PLUGIN_PATH=@0@'.format(join_paths(meson.build_root(), 'src'))
]
+configure_file(input: 'make-input-multipage-readers',
+ output: 'make-input-multipage-readers',
+ copy: true)
+
+configure_file(input: 'check-multipage-readers',
+ output: 'check-multipage-readers',
+ copy: true)
+
foreach t: tests
test(t, find_program('@0@.sh'.format(t)), env: test_env)
endforeach
diff --git a/tests/test-multipage-readers.sh b/tests/test-multipage-readers.sh
new file mode 100755
index 0000000..ab5845b
--- /dev/null
+++ b/tests/test-multipage-readers.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+tests/make-input-multipage-readers
+
+# TIFF
+ufo-launch -q read path=multipage-image*.tif image-start=5 image-step=8 ! write filename=multipage-out.tif tiff-bigtiff=False
+tests/check-multipage-readers 5 13 21 29 37 45 53
+if [ $? -ne 0 ]; then
+ exit 1;
+fi
+ufo-launch -q read path=multipage-image*.tif image-start=17 image-step=8 ! write filename=multipage-out.tif tiff-bigtiff=False
+tests/check-multipage-readers 17 25 33 41 49 57
+if [ $? -ne 0 ]; then
+ exit 1;
+fi
+ufo-launch -q read path=multipage-image*.tif image-start=5 image-step=30 ! write filename=multipage-out.tif tiff-bigtiff=False
+tests/check-multipage-readers 5 35
+if [ $? -ne 0 ]; then
+ exit 1;
+fi
+ufo-launch -q read path=multipage-image*.tif image-start=17 image-step=30 ! write filename=multipage-out.tif tiff-bigtiff=False
+tests/check-multipage-readers 17 47
+if [ $? -ne 0 ]; then
+ exit 1;
+fi
+
+# RAW
+ufo-launch -q read raw-width=128 raw-height=128 raw-bitdepth=16 path=multipage-image*.raw image-start=5 image-step=8 ! write filename=multipage-out.tif tiff-bigtiff=False
+tests/check-multipage-readers 5 13 21 29 37 45 53
+if [ $? -ne 0 ]; then
+ exit 1;
+fi
+ufo-launch -q read raw-width=128 raw-height=128 raw-bitdepth=16 path=multipage-image*.raw image-start=17 image-step=8 ! write filename=multipage-out.tif tiff-bigtiff=False
+tests/check-multipage-readers 17 25 33 41 49 57
+if [ $? -ne 0 ]; then
+ exit 1;
+fi
+ufo-launch -q read raw-width=128 raw-height=128 raw-bitdepth=16 path=multipage-image*.raw image-start=5 image-step=30 ! write filename=multipage-out.tif tiff-bigtiff=False
+tests/check-multipage-readers 5 35
+if [ $? -ne 0 ]; then
+ exit 1;
+fi
+ufo-launch -q read raw-width=128 raw-height=128 raw-bitdepth=16 path=multipage-image*.raw image-start=17 image-step=30 ! write filename=multipage-out.tif tiff-bigtiff=False
+tests/check-multipage-readers 17 47
+if [ $? -ne 0 ]; then
+ exit 1;
+fi
+
+# HDF5 (no multiple files reading support, so just work with one)
+ufo-launch -q read path=multipage-image-00.h5:/images image-start=5 image-step=8 ! write filename=multipage-out.tif tiff-bigtiff=False
+tests/check-multipage-readers 5 13
+if [ $? -ne 0 ]; then
+ exit 1;
+fi
+ufo-launch -q read path=multipage-image-00.h5:/images image-start=5 image-step=80 ! write filename=multipage-out.tif tiff-bigtiff=False
+tests/check-multipage-readers 5
+if [ $? -ne 0 ]; then
+ exit 1;
+fi