aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2020-06-23 17:57:37 +0200
committerThomas White <taw@physics.org>2020-07-29 18:53:44 +0200
commitbed1e11f220c315e1a01b917abf200e927a1621a (patch)
tree5fca620942d0588b13d27e421cfa999d1c10075b /tests
parent83f4aece3488f72496aad2ed2d9d559a06271557 (diff)
Path part of event expansion
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt6
-rw-r--r--tests/ev_enum1.c95
-rw-r--r--tests/ev_enum1.h5bin0 -> 46504 bytes
-rw-r--r--tests/gen-ev-test.py23
4 files changed, 124 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 78d39115..8be42f28 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -137,3 +137,9 @@ add_executable(evparse7 evparse7.c)
target_include_directories(evparse7 PRIVATE ${COMMON_INCLUDES})
target_link_libraries(evparse7 ${COMMON_LIBRARIES} -lhdf5)
add_test(evparse7 evparse7)
+
+add_executable(ev_enum1 ev_enum1.c)
+target_include_directories(ev_enum1 PRIVATE ${COMMON_INCLUDES})
+target_link_libraries(ev_enum1 ${COMMON_LIBRARIES} -lhdf5)
+add_test(NAME ev_enum1
+ COMMAND ev_enum1 ${CMAKE_CURRENT_SOURCE_DIR}/ev_enum1.h5)
diff --git a/tests/ev_enum1.c b/tests/ev_enum1.c
new file mode 100644
index 00000000..9c414dc5
--- /dev/null
+++ b/tests/ev_enum1.c
@@ -0,0 +1,95 @@
+/*
+ * ev_enum1.c
+ *
+ * Check that event enumeration works
+ *
+ * Copyright © 2020 Deutsches Elektronen-Synchrotron DESY,
+ * a research centre of the Helmholtz Association.
+ *
+ * Authors:
+ * 2020 Thomas White <taw@physics.org>
+ *
+ * This file is part of CrystFEL.
+ *
+ * CrystFEL is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * CrystFEL 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with CrystFEL. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <hdf5.h>
+
+#include "../libcrystfel/src/image-hdf5.c"
+
+int main(int argc, char *argv[])
+{
+ hid_t fh;
+ char **event_ids;
+ int n_event_ids;
+ int i;
+
+ fh = H5Fopen(argv[1], H5F_ACC_RDONLY, H5P_DEFAULT);
+ if ( fh < 0 ) {
+ ERROR("Couldn't open file\n");
+ return 1;
+ }
+
+ event_ids = expand_paths(fh,
+ "/data/panelA/%/panel_data1t/%/array",
+ &n_event_ids);
+
+ if ( event_ids == NULL ) {
+ STATUS("event_ids = NULL\n");
+ return 1;
+ }
+
+ if ( n_event_ids != 4 ) {
+ STATUS("Number of event IDs = %i\n", n_event_ids);
+ return 1;
+ }
+
+ if ( strcmp(event_ids[0], "/ev_1/dataABCset") != 0 ) {
+ STATUS("Wrong event id '%s'\n", event_ids[0]);
+ return 1;
+ }
+
+ if ( strcmp(event_ids[1], "/ev_2/dataDEFset") != 0 ) {
+ STATUS("Wrong event id '%s'\n", event_ids[1]);
+ return 1;
+ }
+
+ if ( strcmp(event_ids[2], "/ev_3/dataGHIset") != 0 ) {
+ STATUS("Wrong event id '%s'\n", event_ids[2]);
+ return 1;
+ }
+
+ if ( strcmp(event_ids[3], "/ev_5/dataNOPset") != 0 ) {
+ STATUS("Wrong event id '%s'\n", event_ids[3]);
+ return 1;
+ }
+
+ for ( i=0; i<n_event_ids; i++ ) {
+ free(event_ids[i]);
+ }
+ free(event_ids);
+
+ H5Fclose(fh);
+
+ return 0;
+}
diff --git a/tests/ev_enum1.h5 b/tests/ev_enum1.h5
new file mode 100644
index 00000000..448fa539
--- /dev/null
+++ b/tests/ev_enum1.h5
Binary files differ
diff --git a/tests/gen-ev-test.py b/tests/gen-ev-test.py
new file mode 100644
index 00000000..dc7c0f0a
--- /dev/null
+++ b/tests/gen-ev-test.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+
+import h5py
+import numpy
+
+blank = numpy.zeros((1,1), dtype=float)
+
+with h5py.File('ev_enum1.h5', 'w') as fh:
+ fh.create_dataset('/data/panelA/ev_1/panel_data1t/dataABCset/array', data=blank)
+ fh.create_dataset('/data/panelA/ev_2/panel_data1t/dataDEFset/array', data=blank)
+ fh.create_dataset('/data/panelA/ev_3/panel_data1t/dataGHIset/array', data=blank)
+ fh.create_dataset('/data/panelA/ev_4/panel_data1t/dataKLMset/nomatch', data=blank)
+ fh.create_dataset('/data/panelA/ev_5/panel_data1t/dataNOPset/array', data=blank)
+ fh.create_dataset('/data/panelB/ev_1/panel_data1t/dataABCset/array', data=blank)
+ fh.create_dataset('/data/panelB/ev_2/panel_data1t/dataDEFset/array', data=blank)
+ fh.create_dataset('/data/panelB/ev_3/panel_data1t/dataGHIset/array', data=blank)
+ fh.create_dataset('/data/panelB/ev_4/panel_data1t/dataKLMset/array', data=blank)
+ fh.create_dataset('/data/panelB/ev_5/panel_data1t/dataNOPset/array', data=blank)
+ fh.create_dataset('/data/panelB/ev_1/dataABCset/array', data=blank)
+ fh.create_dataset('/data/panelB/ev_2/dataDEFset/array', data=blank)
+ fh.create_dataset('/data/panelB/ev_3/dataGHIset/array', data=blank)
+ fh.create_dataset('/data/panelB/ev_4/dataKLMset/array', data=blank)
+ fh.create_dataset('/data/panelB/ev_5/dataNOPset/array', data=blank)