You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.1KB

  1. #! /bin/sh
  2. base=$(dirname $0)
  3. . "${base}/md5.sh"
  4. test="${1#fate-}"
  5. SAMPLES_PATH=$2
  6. target_exec=$3
  7. BUILD_PATH=$4
  8. command=$5
  9. cmp=${6:-diff}
  10. ref=${7:-"${base}/ref/fate/${test}"}
  11. fuzz=$8
  12. outdir="tests/data/fate"
  13. outfile="${outdir}/${test}"
  14. do_tiny_psnr(){
  15. psnr=$(tests/tiny_psnr "$1" "$2" 2 0 0)
  16. val=$(expr "$psnr" : ".*$3: *\([0-9.]*\)")
  17. size1=$(expr "$psnr" : '.*bytes: *\([0-9]*\)')
  18. size2=$(expr "$psnr" : '.*bytes:[ 0-9]*/ *\([0-9]*\)')
  19. res=$(echo "$val $4 $5" | bc)
  20. if [ "$res" != 1 ] || [ $size1 != $size2 ]; then
  21. echo "$psnr"
  22. return 1
  23. fi
  24. }
  25. oneoff(){
  26. do_tiny_psnr "$1" "$2" MAXDIFF '<=' ${fuzz:-1}
  27. }
  28. stddev(){
  29. do_tiny_psnr "$1" "$2" stddev '<=' ${fuzz:-1}
  30. }
  31. if ! test -e "$ref"; then
  32. echo "reference file '$ref' not found"
  33. exit 1
  34. fi
  35. mkdir -p "$outdir"
  36. eval $target_exec $command > "$outfile" 2>/dev/null || exit
  37. case $cmp in
  38. diff) diff -u -w "$ref" "$outfile" ;;
  39. oneoff) oneoff "$ref" "$outfile" "$fuzz" ;;
  40. stddev) stddev "$ref" "$outfile" "$fuzz" ;;
  41. esac
  42. test $? = 0 && rm $outfile