test_fzn_cs.sh 5.63 KB
#!/bin/bash

#fzn tests retrived from Mistral-2.0-master at https://github.com/ehebrard/Mistral-2.0/tree/master/fz/fcts/passed

ARR=(src/utils/flatzinc/tests/*.fzn)

echo "Testing all FlatZinc constraints in folder src/utils/flatzinc/tests"
echo "________________________________________________________________________"

for ((i=0; i<${#ARR[@]}; i++));
do
	
	echo "${ARR[$i]}"
	OUTPUT="$(CL_CONFIG_USE_VECTORIZER=false ./PHACT -FZN ${ARR[$i]} -D CPU:1/1/1 -V -COUNT)"
	#OUTPUT="$(CL_CONFIG_USE_VECTORIZER=false ./PHACT -FZN ${ARR[$i]} -D CPU:1/1/1 -V)"
	echo "${OUTPUT}"
	
	echo " "
	
	if [ ${ARR[$i]} == "src/utils/flatzinc/tests/array_bool_and.fzn" ]; 
	then
  		echo "Correct solution: 4"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/array_bool_element.fzn" ]; 
	then
  		echo "Correct solution: 2"
  		
	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/array_bool_or.fzn" ];
  	then
  		echo "Correct solution: 4"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/array_bool_xor.fzn" ];
  	then
  		echo "Correct solution: 8"
  	
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/array_int_element.fzn" ];
  	then
  		echo "Correct solution: 2"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/array_var_bool_element.fzn" ];
  	then
  		echo "Correct solution: 8"
  	
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/array_var_int_element.fzn" ];
  	then
  		echo "Correct solution: 8"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/bool2int.fzn" ];
  	then
  		echo "Correct solution: 2"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/bool_and.fzn" ];
  	then
  		echo "Correct solution: 4"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/bool_clause.fzn" ];
  	then
  		echo "Correct solution: 3"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/bool_eq.fzn" ];
  	then
  		echo "Correct solution: 2"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/bool_eq_reif.fzn" ];
  	then
  		echo "Correct solution: 4"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/bool_le.fzn" ];
  	then
  		echo "Correct solution: 3"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/bool_le_reif.fzn" ];
  	then
  		echo "Correct solution: 4"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/bool_lin_eq.fzn" ];
  	then
  		echo "Correct solution: 8"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/bool_lin_le.fzn" ];
  	then
  		echo "Correct solution: 3"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/bool_lt.fzn" ];
  	then
  		echo "Correct solution: 1"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/bool_lt_reif.fzn" ];
  	then
  		echo "Correct solution: 4"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/bool_not.fzn" ];
  	then
  		echo "Correct solution: 2"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/bool_or.fzn" ];
  	then
  		echo "Correct solution: 4"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/bool_xor.fzn" ];
  	then
  		echo "Correct solution: 4"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_div.fzn" ];
  	then
  		echo "Correct solution: 36"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_eq.fzn" ];
  	then
  		echo "Correct solution: 9"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_eq_reif.fzn" ];
  	then
  		echo "Correct solution: 96"
  		
	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_le.fzn" ];
  	then
  		echo "Correct solution: 22"
  		
	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_le_reif.fzn" ];
  	then
  		echo "Correct solution: 32"
  	
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_lin_eq.fzn" ];
  	then
  		echo "Correct solution: 7"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_lin_eq_reif.fzn" ];
  	then
  		echo "Correct solution: 16"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_lin_le_reif.fzn" ];
  	then
  		echo "Correct solution: 336"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_lin_le.fzn" ];
  	then
  		echo "Correct solution: 41"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_lin_ne_reif.fzn" ];
  	then
  		echo "Correct solution: 24"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_lin_ne.fzn" ];
  	then
  		echo "Correct solution: 131"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_lt_reif.fzn" ];
  	then
  		echo "Correct solution: 18"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_lt.fzn" ];
  	then
  		echo "Correct solution: 35"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_max.fzn" ];
  	then
  		echo "Correct solution: 28"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_min.fzn" ];
  	then
  		echo "Correct solution: 8"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_mod_2.fzn" ];
  	then
  		echo "Correct solution: 11"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_ne.fzn" ];
  	then
  		echo "Correct solution: 8"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_ne_reif.fzn" ];
  	then
  		echo "Correct solution: 12"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_plus.fzn" ];
  	then
  		echo "Correct solution: 9"
  		
  	elif [ ${ARR[$i]} == "src/utils/flatzinc/tests/int_times.fzn" ];
  	then
  		echo "Correct solution: 22"
  	
  	else
  		echo "No correct solution found in script for ${ARR[$i]}"
  		exit 0
	fi

	echo " "
	echo "________________________________________________________________________"
	echo "________________________________________________________________________"
	echo "________________________________________________________________________"
	echo " "
	echo "Press any key to continue"
	read -n 1 -p "Press any key to continue"
	echo " "
	
done
echo "________________________ Finish _______________________________"