diff --git a/cifti/CMakeLists.txt b/cifti/CMakeLists.txt index d19b7524..9e539c20 100644 --- a/cifti/CMakeLists.txt +++ b/cifti/CMakeLists.txt @@ -26,3 +26,19 @@ if(NIFTI_BUILD_APPLICATIONS) install_nifti_target(${NIFTI_PACKAGE_PREFIX}afni_xml_tool) install_nifti_target(${NIFTI_PACKAGE_PREFIX}cifti_tool) endif() + +if(NIFTI_BUILD_TESTING AND NIFTI_BUILD_APPLICATIONS) + set(TEST_PREFIX "${NIFTI_PACKAGE_PREFIX}cifti") + # An unrecognized MatrixIndicesMap child is skipped, not dispatched on. + add_test( NAME ${TEST_PREFIX}_mim_summary_unknown_child + COMMAND $ + -as_cext -eval_cext -eval_type show_summary + -input ${CMAKE_CURRENT_LIST_DIR}/testdata/mim_unknown_child.xml ) + # A recognized child is still displayed. + add_test( NAME ${TEST_PREFIX}_mim_summary_known_child + COMMAND $ + -as_cext -eval_cext -eval_type show_summary + -input ${CMAKE_CURRENT_LIST_DIR}/testdata/mim_known_child.xml ) + set_tests_properties( ${TEST_PREFIX}_mim_summary_known_child + PROPERTIES PASS_REGULAR_EXPRESSION "BrainModel" ) +endif() diff --git a/cifti/afni_xml_io.c b/cifti/afni_xml_io.c index a59f5c3e..a06229e4 100644 --- a/cifti/afni_xml_io.c +++ b/cifti/afni_xml_io.c @@ -263,7 +263,8 @@ int axio_show_mim_summary(FILE * fp, const char * mesg, afni_xml_t * ax, int ver for( kid=0; kidnchild; kid++ ) { mind = get_map_index(xt->xchild[kid]); - if( kid >= 0 ) MIM_disp_funcs[mind](ofp, xt->xchild[kid], verb); + /* get_map_index() returns -1 for an unrecognized element name */ + if( mind >= 0 ) MIM_disp_funcs[mind](ofp, xt->xchild[kid], verb); } } diff --git a/cifti/cifti_tool.c b/cifti/cifti_tool.c index 488b70fb..b895c09f 100644 --- a/cifti/cifti_tool.c +++ b/cifti/cifti_tool.c @@ -193,6 +193,9 @@ int process(opts_t * opts) if( opts->disp_cext ) disp_cifti_extension(nim, opts); if( opts->eval_cext ) eval_cifti_extension(ax, opts); + axml_free_xml_t(ax); + nifti_image_free(nim); + return 0; } diff --git a/cifti/testdata/mim_known_child.xml b/cifti/testdata/mim_known_child.xml new file mode 100644 index 00000000..30eecbdf --- /dev/null +++ b/cifti/testdata/mim_known_child.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/cifti/testdata/mim_unknown_child.xml b/cifti/testdata/mim_unknown_child.xml new file mode 100644 index 00000000..83c64772 --- /dev/null +++ b/cifti/testdata/mim_unknown_child.xml @@ -0,0 +1,7 @@ + + + + + + +