#!/bin/bash

OKCOUNT=0
BADCOUNT=0
TOTCOUNT=0

runtest() {
    #echo "TEST $@"
    TOTCOUNT=`expr $TOTCOUNT + 1`
    if [ $# == 1 ]
    then
        name="$1"
    else
        name=$1
        shift
    fi
    if eval $@
    then
        echo -n '.'
        OKCOUNT=`expr $OKCOUNT + 1`
    else
        echo "Failed: $name"
        BADCOUNT=`expr $BADCOUNT + 1`
    fi
}

testtotals() {
    echo "$TOTCOUNT tests, $OKCOUNT ok, $BADCOUNT fail"

    if [ ! -z "$SERVERPAUSE" ]
    then
	    bash
    fi
}

ensure_has_key() {
    path="$1"
    val="$2"
    runtest 'test x"`$CFGET -q $path`" == x"$val"'
    runtest '$CFGET -q $path > /dev/null; test $? == 0'
}

ensure_not_has_key() {
    path="$1"
    val="$2"
    runtest 'test x"`$CFGET -q $path`" == x'
    runtest '$CFGET -q $path; test $? != 0'
}

# Setup test environment
export CFGET_CFG=general.ini:local.ini
export CFGET_PLUGINS=dynamic.py
CFGET=../cfget
cd testdata

# Run tests
ensure_not_has_key missing/missing
ensure_not_has_key general/missing
ensure_has_key general/name "Test run"
ensure_has_key General/name "Test run"
ensure_has_key general/Name "Test run"
ensure_has_key general/instance "Local name"
ensure_has_key general/duration "32 days, 1:01:01"
ensure_not_has_key general/loop
runtest 'test x"$( (eval $($CFGET --dump=exports); echo $GENERAL_NAME) )" == x"Test run"'
runtest 'test x"$( (eval $($CFGET --dump=exports); echo $GENERAL_DURATION) )" == x"32 days, 1:01:01"'
runtest 'test x"$( (eval $($CFGET --dump=exports general/name); echo $GENERAL_DURATION) )" == x""'

# Print totals
testtotals
exit $BADCOUNT
