#!/usr/bin/env bash

if [ "$1" == 'full' ]; then
    fulltest=1
elif [ "$1" == 'each' ]; then
    testeach=1
else
    fulltest=0
fi

PHP_VERSION=$(php -r "echo PHP_VERSION_ID;")

echo
echo -e "\033[33mBegin Unit Testing\033[0m"
# Run the testing suite
echo "Basic test suite:"
php vendor/bin/phpunit tests/unit
if [ $? -ne 0 ]; then
    # Test failure
    exit 1
fi
echo "With open_basedir enabled:"
php -d open_basedir=`pwd` vendor/bin/phpunit tests/unit
if [ $? -ne 0 ]; then
    # Test failure
    exit 1
fi
echo "With open_basedir enabled, allowing /dev:"
php -d open_basedir=`pwd`:/dev vendor/bin/phpunit tests/unit
if [ $? -ne 0 ]; then
    # Test failure
    exit 1
fi
echo "With mbstring.func_overload enabled:"
php -d mbstring.func_overload=7 vendor/bin/phpunit tests/unit
if [ $? -ne 0 ]; then
    # Test failure
    exit 1
fi

if [[ "$testeach" == "1" ]]; then
    echo "    CAPICOM:"
    php vendor/bin/phpunit --bootstrap tests/specific/capicom.php tests/unit
    echo "    /dev/urandom:"
    php vendor/bin/phpunit --bootstrap tests/specific/dev_urandom.php tests/unit
    echo "    libsodium:"
    php vendor/bin/phpunit --bootstrap tests/specific/libsodium.php tests/unit
    echo "    mcrypt:"
    php vendor/bin/phpunit --bootstrap tests/specific/mcrypt.php tests/unit
    echo "    openssl:"
    php vendor/bin/phpunit --bootstrap tests/specific/openssl.php tests/unit
fi

# Should we perform full statistical analyses?
if [[ "$fulltest" == "1" ]]; then
    php vendor/bin/phpunit tests/full
    if [ $? -ne 0 ]; then
        # Test failure
        exit 1
    fi
fi