From 9d37808d929b69d1526362ddc17f60774c08ac54 Mon Sep 17 00:00:00 2001 From: Tomas Farago Date: Wed, 1 Dec 2021 16:31:45 +0100 Subject: Test multi-image readers --- tests/CMakeLists.txt | 9 ++++++ tests/check-multipage-readers | 24 ++++++++++++++++ tests/make-input-multipage-readers | 18 ++++++++++++ tests/meson.build | 11 ++++++- tests/test-multipage-readers.sh | 59 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 120 insertions(+), 1 deletion(-) create mode 100755 tests/check-multipage-readers create mode 100755 tests/make-input-multipage-readers create mode 100755 tests/test-multipage-readers.sh 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 -- cgit v1.2.1