#!/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 LANGif [ $# != 2 ]then echo "flitecheck VOICE.flitevox [TESTFILE.flitecheck]" echo "if TESTFILE.flitecheck isn't give it will guess one from the library" exit 1fiFLITE=$FLITEDIR/bin/fliteVOICE=$1FC=$2rm -f test.out.$$cat $2 |while read xdo 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 fidone## 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.$$
#!/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.$$