
# don't call this makefile directly, the upper durectory makefile
# does that for you.

# OBJ_DIR and EXEC_EXTRA_SUFFIX must be set correctly

EHRHART_TESTS = t1 t2 t3 t31 t4 \
		e0 e1 e2 e3 e4 e5 e6 e8 e9 e12 e13 e14 c3 e10 e11 e15 isnm \
		g12 g13 g2 g4 g5
# These last do not pass in 32 bits mode without GMP:  c3 e10 e11 e15 isnm
# e7 is degenerate

PP_TESTS = c4 c5
GENERAL_TESTS = convex1 convex2 simpl1 simpl2 \
		simpl3 simpl4 simpl5 simpl6 test1 herve

LONG_EHRHART_TESTS = g1 isnm2 c4

all_tests : general_tests pp$(EXEC_EXTRA_SUFFIX)_tests \
		ehrhart$(EXEC_EXTRA_SUFFIX)_tests
	-@\rm -f xyz
	@echo "----------------------------------------------------"
	@echo "all tests successful"
	@echo "----------------------------------------------------"

#=====================================================================
# these tests are much slower...
long_tests::
	@echo "----------------------------------------------------"
	@echo "Begin long tests"
	@echo "----------------------------------------------------"
long_tests:: $(LONG_EHRHART_TESTS:%=ehrhart/%) \
		verif_ehrhart$(EXEC_EXTRA_SUFFIX)_tests
	-@\rm -f xyz
	@echo "----------------------------------------------------"
	@echo "all long tests successful"
	@echo "----------------------------------------------------"

#=====================================================================
general_tests ::
	@echo "----------------------------------------------------"
	@echo "Begin general tests"
	@echo "----------------------------------------------------"
general_tests :: libtest $(GENERAL_TESTS)
	@echo "General tests successful"

libtest:
	$(OBJ_DIR)/testlib$(EXEC_EXTRA_SUFFIX) <general/test.in >xyz
	diff xyz general/test.out

$(GENERAL_TESTS):
	$(OBJ_DIR)/polytest$(EXEC_EXTRA_SUFFIX) <general/$@.in >xyz
	diff xyz general/$@.out

#=====================================================================
ehrhart$(EXEC_EXTRA_SUFFIX)_tests ::
	@echo "----------------------------------------------------"
	@echo "Begin 'ehrhart$(EXEC_EXTRA_SUFFIX)' tests"
	@echo "----------------------------------------------------"
ehrhart$(EXEC_EXTRA_SUFFIX)_tests :: $(EHRHART_TESTS:%=ehrhart/%)
	@echo "'ehrhart$(EXEC_EXTRA_SUFFIX)' tests successful"

ehrhart/%:
	$(OBJ_DIR)/ehrhart$(EXEC_EXTRA_SUFFIX) <$@.in >xyz
	diff xyz $@.out

#=====================================================================
verif_ehrhart$(EXEC_EXTRA_SUFFIX)_tests ::
	@echo "----------------------------------------------------"
	@echo "Begin 'verif_ehrhart$(EXEC_EXTRA_SUFFIX)' tests"
	@echo "----------------------------------------------------"
verif_ehrhart$(EXEC_EXTRA_SUFFIX)_tests :: $(EHRHART_TESTS:%=verif_ehrhart/%) \
		$(LONG_EHRHART_TESTS:%=verif_ehrhart/%)
	@echo "'verif_ehrhart$(EXEC_EXTRA_SUFFIX)' tests successful"

verif_ehrhart/%:
	$(OBJ_DIR)/verif_ehrhart$(EXEC_EXTRA_SUFFIX) <$(@:verif_ehrhart/%=ehrhart/%).in

#=====================================================================
pp$(EXEC_EXTRA_SUFFIX)_tests ::
	@echo "----------------------------------------------------"
	@echo "Begin 'pp$(EXEC_EXTRA_SUFFIX)' tests"
	@echo "----------------------------------------------------"
pp$(EXEC_EXTRA_SUFFIX)_tests :: $(PP_TESTS:%=pp/%)
	@echo "'pp$(EXEC_EXTRA_SUFFIX)' tests successful"

pp/%:
	$(OBJ_DIR)/pp$(EXEC_EXTRA_SUFFIX) <$@.in >xyz
	diff xyz $@.out

#=====================================================================

