#!../../../common/bats/bin/bats
# -*-sh-*-

load ./common/test_helper_functions
source ./common/functions || exit 1

if [ -s ./common/TEST_ENV ];then
    source ./common/TEST_ENV
fi

check_rms
rm=$RESOURCE_MANAGER

testname="libs/NetCDF"
delimiter="$RESOURCE_MANAGER/$LMOD_FAMILY_COMPILER/$LMOD_FAMILY_MPI"


@test "[$testname] C parallel I/O  ($delimiter)" {
    if [ ! -x C_parallel ];then
        flunk "C_parallel binary not available"
    fi

    rm -f tst_parallel.nc

    run_mpi_binary ./C_parallel "atest" 2 4
    assert_success

    run ls tst_parallel.nc
    assert_success

    # Verify contents against reference file

    ncdump -n test tst_parallel.nc.ref > .ref.data.ascii
    ncdump -n test tst_parallel.nc     > .test.data.ascii

    run ls .ref.data.ascii
    assert_success

    run ls .test.data.ascii
    assert_success

    run diff .ref.data.ascii .test.data.ascii
    assert_success

    rm -f .ref.data.ascii
    rm -f .test.data.ascii
    rm -f tst_parallel.nc
}


@test "[$testname] Fortran parallel I/O ($delimiter)" {
    if [ "$ALL_ENABLED" == "no" ]; then
        skip "Skipping Fortran tests as requested"
    fi
    if [ ! -x F90_parallel ];then
        flunk "F90_parallel binary not available"
    fi

    rm -f f90tst_parallel.nc

    run_mpi_binary -t "00:02:00" ./F90_parallel "atest" 2 4
    assert_success

    run ls f90tst_parallel.nc
    assert_success

    # Verify contents against reference file

    ncdump -n test f90tst_parallel.nc.ref > .ref.data.ascii
    ncdump -n test f90tst_parallel.nc     > .test.data.ascii

    run ls .ref.data.ascii
    assert_success

    run ls .test.data.ascii
    assert_success

    run diff .ref.data.ascii .test.data.ascii
    assert_success

    rm -f .ref.data.ascii
    rm -f .test.data.ascii
    rm -f f90tst_parallel.nc
}


