#!/bin/bash
set -e

pkg=aevol

if [ "${AUTOPKGTEST_TMP}" = "" ] ; then
  AUTOPKGTEST_TMP=$(mktemp -d /tmp/${pkg}-test.XXXXXX)
  # Double quote below to expand the temporary directory variable now versus
  # later is on purpose.
  # shellcheck disable=SC2064
  trap "rm -rf ${AUTOPKGTEST_TMP}" 0 INT QUIT ABRT PIPE TERM
fi

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

cd "${AUTOPKGTEST_TMP}"
gunzip -r *

# Run simulation
cd workflow/wild_type
aevol_create
xvfb-run --auto-servernum --server-args="-screen 0 1024x768x24" aevol_run -n 100 -p -1

# Test setup
outdirsA="line01 line02 line03 line04 line05"
outdirsB="line06 line07 line08 line09 line10"
outdirsC="line11 line12 line13 line14 line15"
for mydir in $outdirsA $outdirsB $outdirsC
do
  xvfb-run --auto-servernum --server-args="-screen 0 1024x768x24" aevol_propagate -o ../$mydir
done

cd ..

# For each experiment, create a file with the parameters to change
echo "# New environment
ENV_GAUSSIAN  0.5   0.2   0.05
ENV_GAUSSIAN  0.5   0.4   0.05
ENV_GAUSSIAN  0.5   0.8   0.05
ENV_VARIATION none
# New rearrangement rates
DUPLICATION_RATE    1e-4
DELETION_RATE       1e-4
TRANSLOCATION_RATE  1e-4
INVERSION_RATE      1e-4" > newparam-groupA.in

echo "# New environment
ENV_GAUSSIAN  0.5   0.2   0.05
ENV_GAUSSIAN  0.5   0.4   0.05
ENV_GAUSSIAN  0.5   0.8   0.05
ENV_VARIATION none
# New rearrangement rates
DUPLICATION_RATE    1e-6
DELETION_RATE       1e-6
TRANSLOCATION_RATE  1e-6
INVERSION_RATE      1e-6" > newparam-groupB.in

echo "# New environment
ENV_GAUSSIAN  0.5   0.2   0.05
ENV_GAUSSIAN  0.5   0.4   0.05
ENV_GAUSSIAN  0.5   0.8   0.05
ENV_VARIATION none" > newparam-groupC.in


# Apply these modifications
#
for mydir in $outdirsA
do
   cd $mydir
   xvfb-run --auto-servernum --server-args="-screen 0 1024x768x24" aevol_modify -f ../newparam-groupA.in
   cd ..
done

for mydir in $outdirsB
do
  cd $mydir
  xvfb-run --auto-servernum --server-args="-screen 0 1024x768x24" aevol_modify -f ../newparam-groupB.in
  cd ..
done

for mydir in $outdirsC
do
  cd $mydir
  xvfb-run --auto-servernum --server-args="-screen 0 1024x768x24" aevol_modify -f ../newparam-groupC.in
  cd ..
done

# Run the simulations
#
for mydir in $outdirsA $outdirsB $outdirsC
do
  cd $mydir
  xvfb-run --auto-servernum --server-args="-screen 0 1024x768x24" aevol_run -e 200 -p -1
  cd ..
done

# aevol_misc_create_eps 
for mydir in $outdirsA $outdirsB $outdirsC
do
  cd $mydir
  aevol_misc_create_eps &
  cd ..
done


# aevol_misc_robustness 
for mydir in $outdirsA $outdirsB $outdirsC
do
   cd $mydir
   aevol_misc_robustness &
   cd ..
done


# aevol_misc_lineage 
for mydir in $outdirsA $outdirsB $outdirsC
do
   cd $mydir
   # FIXME: Added '|| true' since this test contains errors
   #        We want to see those errors in the test logs but
   #        it should not make the whole test fail
   aevol_misc_lineage || true
   cd ..
done


# aevol_misc_ancstats 
for mydir in $outdirsA $outdirsB $outdirsC
do
   cd $mydir
   aevol_misc_ancestor_stats lineage-*.ae -M &
   cd ..
done
