# DECO regression tests

CTESTS = t1.c t2.c ncworms.c
CCTESTS = t1.cc t2.cc t3.cc t4.cc t5.cc t6.cc t7.cc t8.cc t9.cc t10.cc t11.cc
DHTESTS = td1.dh
DCTESTS = td1.dc tty.dc

CRESULTS = ${CTESTS:.c=.c.out}
CCRESULTS = ${CCTESTS:.cc=.cc.out}
DHRESULTS = ${DHTESTS:.dh=.dh.out}
DCRESULTS = ${DCTESTS:.dc=.dc.out}

LINKFILES += ${CTESTS} ${CCTESTS} ${DHTESTS} ${DCTESTS} \
	     ${CRESULTS} ${CCRESULTS} ${DHRESULTS} ${DCRESULTS} \
		t_circle.dh t_ellipse.dh D_Circle.dh D_Ellipse.dh otest1.cc

COMMANDS +=	ctests pass_ctests \
		cctests pass_cctests \
		dhtests pass_dhtests \
		dctests pass_dctests \
		tests passall


ctests: ${CTESTS} ${CRESULTS} deco
	@for i in ${CTESTS}; do \
		$(BINDIR)/runtest pass $$i "./deco -x c -"; \
	done

pass_ctests: ${CTESTS} ${CRESULTS} deco
	@for i in ${CTESTS}; do \
		$(BINDIR)/runtest pass $$i "./deco -x c -" update; \
	done

cctests: ${CCTESTS} ${CCRESULTS} deco
	@for i in ${CCTESTS}; do \
		$(BINDIR)/runtest pass $$i "./deco -x c++ -"; \
	done

pass_cctests: ${CCTESTS} ${CCRESULTS} deco
	@for i in ${CCTESTS}; do \
		$(BINDIR)/runtest pass $$i "./deco -x c++ -" update; \
	done

dhtests: ${DHTESTS} ${DHRESULTS} deco
	@for i in ${DHTESTS}; do \
		$(BINDIR)/runtest pass $$i "./deco -x dc++hdr -"; \
	done

pass_dhtests: ${DHTESTS} ${DHRESULTS} deco
	@for i in ${DHTESTS}; do \
		$(BINDIR)/runtest pass $$i "./deco -x dc++hdr -" update; \
	done

dctests: ${DCTESTS} ${DCRESULTS} deco
	@for i in ${DCTESTS}; do \
		$(BINDIR)/runtest pass $$i "./deco -x dc++ -"; \
	done

pass_dctests: ${DCTESTS} ${DCRESULTS} deco
	@for i in ${DCTESTS}; do \
		$(BINDIR)/runtest pass $$i "./deco -x dc++ -" update; \
	done

tests: ctests cctests dhtests dctests
	@echo All tests passed

# for updating version numbers, minor formatting, etc:
passall: pass_ctests pass_cctests pass_dhtests pass_dctests


# Manually invoke a particular test to get the results:
%.c.r: %.c deco
	$(BINDIR)/runtest /dev/null $< "./deco -x c -"

%.cc.r: %.cc deco
	$(BINDIR)/runtest /dev/null $< "./deco -x c++ -"

%.c.pass: %.c deco
	$(BINDIR)/runtest pass $< "./deco -x c -" update

%.cc.pass: %.cc deco
	$(BINDIR)/runtest pass $< "./deco -x c++ -" update


otest1: otest1.cc t_circle.dh t_ellipse.dh D_Circle.dh D_Ellipse.dh
	./deco t_circle.dh > t_circle.dh.h
	./deco t_ellipse.dh > t_ellipse.dh.h
	# ./deco D_Circle.dh > D_Circle.dh.h
	# ./deco D_Ellipse.dh > D_Ellipse.dh.h
	g++ $(Includes_Wanted_cc) $(Includes_Wanted) -c otest1.cc
	g++ -o otest1 otest1.o

