#!/bin/bash
set -e

pkg=orthanc-neuro
upstream_version=1.0

CPP=g++

if [ "${AUTOPKGTEST_TMP}" = "" ] ; then
  AUTOPKGTEST_TMP=$(mktemp -d /tmp/${pkg}-test.XXXXXX)
  trap "rm -rf ${AUTOPKGTEST_TMP}" 0 INT QUIT ABRT PIPE TERM
fi


mkdir -p "${AUTOPKGTEST_TMP}"/Sources/UnitTestsSources
cp -a /usr/share/doc/${pkg}/examples/* "${AUTOPKGTEST_TMP}"/Sources

cd "${AUTOPKGTEST_TMP}"

cd Sources

mv NiftiTests.cpp ./UnitTestsSources
mv UnitTestsMain.cpp ./UnitTestsSources

# Build target object files for UnitTests
for cpp in $(find . -name "*.cpp") ; do

    ${CPP} -DHAS_ORTHANC_EXCEPTION=1 -DORTHANC_PLUGIN_VERSION=\"${upstream_version}\" -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1  \
    -I/usr/include/jsoncpp -I/usr/include/orthanc-framework -I/usr/src/gtest -I/usr/include/nifti -Wall -Wno-long-long \
    -Wno-variadic-macros -c -o $(basename ${cpp} .cpp).o ${cpp}
    
done

${CPP} -DHAS_ORTHANC_EXCEPTION=1 -DORTHANC_PLUGIN_VERSION=\"${upstream_version}\" -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE=1  \
-I/usr/include/jsoncpp -I/usr/include/orthanc-framework -I/usr/src/gtest -I/usr/include/nifti -Wall -Wno-long-long \
-Wno-variadic-macros -c -o gtest-all.cc.o /usr/src/gtest/src/gtest-all.cc

# Linking executable UnitTests
${CPP} -Wall -Wno-long-long -Wno-variadic-macros  -Wl,--as-needed *.o -o UnitTests  -lpthread -lrt -ldl -Wl,-Bstatic -lOrthancFramework -Wl,-Bdynamic -ldcmdata -ldcmjpls -ldcmimage -ldcmjpeg -lofstd -lboost_filesystem -lboost_iostreams -lboost_locale -lboost_regex -lboost_thread -lpugixml -luuid -ljsoncpp -lpng -ljpeg -lz -lniftiio -lznz -lrt -ldl -Wl,-Bstatic -lOrthancFramework -Wl,-Bdynamic -ldcmdata -ldcmjpls -ldcmimage -ldcmjpeg -lofstd -lboost_filesystem -lboost_iostreams -lboost_locale -lboost_regex -lboost_thread -lpugixml -luuid -ljsoncpp -lpng -ljpeg -lz -lniftiio -lznz

# Execute UnitTests
./UnitTests
