#! /bin/sh

# Run PCRE tests

cf=diff

# Select which tests to run; if no selection, run all

do1=no
do2=no
do3=no
do4=no

while [ $# -gt 0 ] ; do
  case $1 in
    1) do1=yes;;
    2) do2=yes;;
    3) do3=yes;;
    4) do4=yes;;
    *) echo "Unknown test number $1"; exit 1;;
  esac
  shift
done

if [ $do1 = no -a $do2 = no -a $do3 = no -a $do4 = no ] ; then
  do1=yes
  do2=yes
  do3=yes
  do4=yes
fi

# Primary test, Perl-compatible

if [ $do1 = yes ] ; then
  echo "Testing main functionality (Perl compatible)"
  ./pcretest testdata/testinput1 testtry
  if [ $? = 0 ] ; then
    $cf testtry testdata/testoutput1
    if [ $? != 0 ] ; then exit 1; fi
  else exit 1
  fi
fi

# PCRE tests that are not Perl-compatible - API & error tests, mostly

if [ $do2 = yes ] ; then
  echo "Testing API and error handling (not Perl compatible)"
  ./pcretest -i testdata/testinput2 testtry
  if [ $? = 0 ] ; then
    $cf testtry testdata/testoutput2
    if [ $? != 0 ] ; then exit 1; fi
  else exit 1
  fi
fi

# Additional Perl-compatible tests for Perl 5.005's new features

if [ $do3 = yes ] ; then
  echo "Testing Perl 5.005 features (Perl 5.005 compatible)"
  ./pcretest testdata/testinput3 testtry
  if [ $? = 0 ] ; then
    $cf testtry testdata/testoutput3
    if [ $? != 0 ] ; then exit 1; fi
  else exit 1
  fi
fi

if [ $do1 = yes -a $do2 = yes -a $do3 = yes ] ; then
  echo "The three main tests all ran OK"
  echo " " 
fi

# Locale-specific tests, provided the "fr" locale is available

if [ $do4 = yes ] ; then
  locale -a | grep '^fr$' >/dev/null
  if [ $? -eq 0 ] ; then
    echo "Testing locale-specific features (using 'fr' locale)"
    ./pcretest testdata/testinput4 testtry
    if [ $? = 0 ] ; then
      $cf testtry testdata/testoutput4
      if [ $? != 0 ] ; then exit 1; fi
      echo "Locale test ran OK" 
      echo " " 
    else exit 1
    fi
  else
    echo "Cannot test locale-specific features - 'fr' locale not found,"
    echo "or the \"locale\" command is not available to check for it."
    echo " " 
  fi
fi

# End
