1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
#!/bin/sh
###########################################################################
## ##
## Language Technologies Institute ##
## Carnegie Mellon University ##
## Copyright (c) 2016 ##
## All Rights Reserved. ##
## ##
## Permission is hereby granted, free of charge, to use and distribute ##
## this software and its documentation without restriction, including ##
## without limitation the rights to use, copy, modify, merge, publish, ##
## distribute, sublicense, and/or sell copies of this work, and to ##
## permit persons to whom this work is furnished to do so, subject to ##
## the following conditions: ##
## 1. The code must retain the above copyright notice, this list of ##
## conditions and the following disclaimer. ##
## 2. Any modifications must be clearly marked as such. ##
## 3. Original authors' names are not deleted. ##
## 4. The authors' names are not used to endorse or promote products ##
## derived from this software without specific prior written ##
## permission. ##
## ##
## CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK ##
## DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ##
## ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT ##
## SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE ##
## FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ##
## WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ##
## AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ##
## ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF ##
## THIS SOFTWARE. ##
## ##
###########################################################################
## ##
## Run tests for flite front ends ##
## ##
## flitechecks VOICE.flitechecks tests/tamil.flitecheck ##
## ##
###########################################################################
LANG=C; export LANG
if [ $# != 2 ]
then
echo "flitecheck VOICE.flitevox [TESTFILE.flitecheck]"
echo "if TESTFILE.flitecheck isn't give it will guess one from the library"
exit 1
fi
FLITE=$FLITEDIR/bin/flite
VOICE=$1
FC=$2
rm -f test.out.$$
cat $2 |
while read x
do
if [ "$x" = "INPUT" ]
then
read y
echo $y >fc.input.$$
fi
if [ "$x" = "OUTPUT" ]
then
read y
echo $y >fc.output.$$
fi
if [ "$x" = "PARAMS" ]
then
read PARAMS
fi
if [ "$x" = "TEST" ]
then
read TESTNAME
echo RUNNING TEST: $TESTNAME
fi
if [ "$x" = "DOIT" ]
then
echo TEST $TESTNAME >>fc.test.out.$$
$FLITE -voice $VOICE $PARAMS -f fc.input.$$ none >fc.output.real.$$
cat fc.input.$$ >>fc.test.out.$$
cat fc.output.$$ >>fc.test.out.$$
if diff -b fc.output.$$ fc.output.real.$$ >&2 >>fc.test.out.$$
then
echo TEST OKAY >>fc.test.out.$$
else
diff -b fc.output.$$ fc.output.real.$$
echo TEST NOT OKAY >>fc.test.out.$$
fi
fi
done
#
# Print out summary of tests
#
cat fc.test.out.$$ |
awk 'BEGIN { correct=0; total=0; wrong=0; }
{if ($1 == "TEST")
{
if ($NF == "OKAY")
{
if ($2 == "NOT")
{
wrong = wrong+1;
printf("FAILED: %s\n",testdescription);
}
else if ($2 == "OKAY")
{
correct = correct+1;
}
}
else
{
total=total+1;
testdescription = $0;
}
}}
END {if (correct == total)
printf("100%% correct ( %d / %d )\n",correct,total);
else
{
printf("%0.2f%% wrong ( %d / %d )\n",(wrong*100.0)/total,wrong,total);
printf("%0.2f%% correct ( %d / %d )\n",(correct*100.0)/total,correct,total);
}}'
rm -f fc.input.$$ fc.output.$$ fc.test.out.$$ fc.output.real.$$
|