#!/usr/bin/env -S bats --report-formatter junit --formatter tap -j 4
# -*-sh-*-

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

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

setup_file() {
	TESTNAME="libs/MFEM"
	NODES=2
	TASKS=$(tasks_count 8)
	TIMEOUT="00:05:00"

	check_rms

	export TESTNAME NODES TASKS TIMEOUT
}

@test "[${TESTNAME}] p_laplace MPI binary runs under resource manager (${RESOURCE_MANAGER}/${LMOD_FAMILY_COMPILER}/${LMOD_FAMILY_MPI})" {
	if [ ! -s p_laplace ]; then
		flunk "p_laplace binary does not exist"
	fi

	run_mpi_binary -t "${TIMEOUT}" ./p_laplace "-no-vis" "${NODES}" "${TASKS}"
	assert_success
}

@test "[${TESTNAME}] p_laplace_perf MPI binary runs under resource manager (${RESOURCE_MANAGER}/${LMOD_FAMILY_COMPILER}/${LMOD_FAMILY_MPI})" {
	if [ ! -s p_laplace_perf ]; then
		flunk "p_laplace_perf binary does not exist"
	fi

	run_mpi_binary -t "${TIMEOUT}" ./p_laplace_perf "-no-vis -rs 2" "${NODES}" "${TASKS}"
	assert_success
}

@test "[${TESTNAME}] p_cantilever MPI binary runs under resource manager (${RESOURCE_MANAGER}/${LMOD_FAMILY_COMPILER}/${LMOD_FAMILY_MPI})" {
	if [ ! -s p_cantilever ]; then
		flunk "p_cantilever binary does not exist"
	fi

	run_mpi_binary -t "${TIMEOUT}" ./p_cantilever "-no-vis" "${NODES}" "${TASKS}"
	assert_success
}

@test "[${TESTNAME}] p_diffusion MPI binary runs under resource manager (${RESOURCE_MANAGER}/${LMOD_FAMILY_COMPILER}/${LMOD_FAMILY_MPI})" {
	if [ ! -s p_diffusion ]; then
		flunk "p_diffusion binary does not exist"
	fi

	run_mpi_binary -t "${TIMEOUT}" ./p_diffusion "-no-vis" "${NODES}" "${TASKS}"
	assert_success
}
