#!/bin/bash
set -e

pkg=libdicom

export LC_ALL=C.UTF-8
if [ "${AUTOPKGTEST_TMP}" = "" ] ; then
  AUTOPKGTEST_TMP=$(mktemp -d /tmp/${pkg}-test.XXXXXX)
  # shellcheck disable=SC2064
  trap "rm -rf ${AUTOPKGTEST_TMP}" 0 INT QUIT ABRT PIPE TERM
fi

cp -a /usr/share/doc/${pkg}/examples/* "${AUTOPKGTEST_TMP}"

cd "${AUTOPKGTEST_TMP}"

gunzip *.gz

# Samples are from the README file.
set -x
cat > sample.c <<'END'
#include <stdlib.h>
#include <dicom/dicom.h>

int main() {
    const char *file_path = "./generated_encapsulated_defined_bot_2_to_2.dcm";
    DcmError *error = NULL;

    printf("Started running libdicom sample.\n");

    DcmFilehandle *filehandle = dcm_filehandle_create_from_file(&error, file_path);
    printf("dcm_filehandle_create_from_file run.\n");
    if (filehandle == NULL) {
        printf("No filehandle was returned\n");
        dcm_error_log(error);
        dcm_error_clear(&error);
        return 1;
    }

    const DcmDataSet *metadata =
        dcm_filehandle_get_metadata_subset(&error, filehandle);
    if (metadata == NULL) {
        printf("No metadata was returned\n");
        dcm_error_log(error);
        dcm_error_clear(&error);
        dcm_filehandle_destroy(filehandle);
        return 1;
    }

    const char *num_frames;
    uint32_t tag = dcm_dict_tag_from_keyword("NumberOfFrames");
    DcmElement *element = dcm_dataset_get(&error, metadata, tag);
    if (element == NULL ||
        !dcm_element_get_value_string(&error, element, 0, &num_frames)) {
        printf("No element was returned.\n");
        dcm_error_log(error);
        dcm_error_clear(&error);
        dcm_filehandle_destroy(filehandle);
        return 1;
    }

    printf("NumberOfFrames == %s\n", num_frames);

    dcm_filehandle_destroy(filehandle);

    return 0;
}
END
cc sample.c -o sample -ldicom
./sample
