#
# this makefile can be used to run the language specific tests
# or stestlib alone
# tests for /bin/claes /bin/clkeys and /bin/clsmime are included
#
# 14 December 2024,  Ralf Senderek
#


R1 = "\\0033[1;31m"
R0 = "\\0033[0;39m"
G1 = "\\0033[1;32m"
G0 = "\\0033[0;39m"
O1 = "\\0033[1;33m"
O0 = "\\0033[0;39m"

RED    = echo -en $(R1) $(1) $(R0)
GREEN  = echo -en $(G1) $(1) $(G0)
ORANGE = echo -en $(O1) $(1) $(O0) 

run = @$(1); RET=$$?; if [ $${RET} = 0 ]; then $(call GREEN, OK : $${RET}); else $(call RED, FAILED : exit code $${RET}); fi; echo


all:
	/bin/clear
	make ctest
	make pytest
	make pltest
	make javatest
	make toolstest

testlib:
	-$(call run, ./stestlib)

ctest:
	@$(call ORANGE, Running C tests ...\\n) 
	-$(call run, cd /lib/cryptlib/examples/c; make ; ./cryptlib-test; rm ./cryptlib-test)
	@echo "#------------------------------------------#"

pytest:
	@$(call ORANGE, Running PYTHON tests ...\\n) 
	@echo
	-$(call run, /bin/python3 ./python/python3-encrypt)
	@echo
	-$(call run, /bin/python3 ./python/python3-decrypt; rm ./outfile)
	$(call getexit, 0)
	@echo
	-$(call run, /bin/python3 ./python/python3-test)
	@echo
	@echo "#------------------------------------------#"

pltest:	
	@$(call ORANGE, Running PERL tests ...\\n) 
	@echo
	-$(call run, /bin/perl ./perl/ubuntu-perltest.pl)
	@echo
	@echo "#------------------------------------------#"

javatest:
	@$(call ORANGE, Running JAVA tests ...\\n) 
	@echo
	-$(call run, cd java; export CLASSPATH=/usr/share/java/cryptlib.jar:. ; javac encrypt.java ; java encrypt)
	@echo
	-$(call run, cd java; export CLASSPATH=/usr/share/java/cryptlib.jar:. ; javac decrypt.java ; java decrypt)
	cd java; rm ./outfile ; rm ./*.class
	@echo
	@echo "#------------------------------------------#"

toolstest:
	make claestest
	make clkeystest
	make clsmimetest

claestest:
	@/bin/mkdir -p claes
	@$(call ORANGE, Running tests on claes ...\\n) 
	@echo
	-$(call run, ./run_aes_tests)
	@echo
	@echo "#------------------------------------------#"


clkeystest:
	@/bin/mkdir -p clkeys
	@$(call ORANGE, Running tests on clkeys ...\\n) 
	@echo
	-$(call run, ./run_keys_tests)
	@echo
	@echo "#------------------------------------------#"

clsmimetest:
	@/bin/mkdir -p clsmime
	@$(call ORANGE, Running tests on clsmime ...\\n) 
	@echo
	-$(call run, ./run_smime_tests)
	@echo
	@echo "#------------------------------------------#"

cleantools:
	@echo
	@echo "ls -l toolstest/claes"
	@/bin/rm -f claes/bsd* claes/gpg* claes/ossl* claes/huge* ; /bin/ls -l claes
	@echo
	@echo "ls -l toolstest/clkeys"
	@/bin/rm -f clkeys/test* clkeys/J* clkeys/P* clkeys/CA* ; /bin/ls -l clkeys
	@echo
	@echo "ls -l toolstest/clsmime"
	@/bin/rm -f clsmime/bsd* clsmime/J* clsmime/H* clsmime/test* clsmime/CA* clsmime/*SMIME 
	@/bin/rm -rf clsmime/peter clsmime/list.good clsmime/Tom* clsmime/EVO*
	@/bin/ls -l clsmime

