-
Notifications
You must be signed in to change notification settings - Fork 197
/
Copy pathflitechecks
executable file
·127 lines (120 loc) · 4.76 KB
/
flitechecks
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.$$