MESSAGE=$2 | MESSAGE=$2 | ||||
EXPECTED=$3 | EXPECTED=$3 | ||||
TEST_TEXT=$4 | TEST_TEXT=$4 | ||||
TEST_BROKEN=${5:-false} | |||||
if [ "x$MESSAGE" = x- ] ; then | if [ "x$MESSAGE" = x- ] ; then | ||||
echo "testing ${TEST_LANG}" | echo "testing ${TEST_LANG}" | ||||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ||||
src/espeak-ng -xq -v ${TEST_LANG} "${TEST_TEXT}" > actual.txt | src/espeak-ng -xq -v ${TEST_LANG} "${TEST_TEXT}" > actual.txt | ||||
echo "${EXPECTED}" > expected.txt | echo "${EXPECTED}" > expected.txt | ||||
diff expected.txt actual.txt || exit 1 | |||||
if [ x$TEST_BROKEN = xbroken ] ; then | |||||
diff expected.txt actual.txt || (echo "... ignoring error (broken)" && true) | |||||
else | |||||
diff expected.txt actual.txt || exit 1 | |||||
fi | |||||
} | } | ||||
test_phonemes bg "Latin characters spoken in English" \ | test_phonemes bg "Latin characters spoken in English" \ | ||||
# This uses a pangram for Cyrillic letter coverage. | # This uses a pangram for Cyrillic letter coverage. | ||||
test_phonemes bs "Cyrillic" \ | test_phonemes bs "Cyrillic" \ | ||||
" l^'ub&znI f'@ 'E slovo_|tS'EtIRI_|S'Est_|p'Et_: R'@ slovo_|tS'EtIRI_|S'Est_|d'EvEt_: I j'@2 & & tS'@_:_: & slovo_|tS'EtIRI_|S'Est_|j'ed&n_: v'@ tS'@ g'@ l'its& x'otS;E d'a m'i p'ok&ZE St'os" \ | |||||
"Љубазни фењерџија чађавог лица хоће да ми покаже штос." | |||||
" l^'ub&znI f'En^eRdZ,Ij& tS'adZ;&vog l'its& x'otS;E d'a m'i p'ok&ZE St'os" \ | |||||
"Љубазни фењерџија чађавог лица хоће да ми покаже штос." broken | |||||
test_phonemes bs "Latin" \ | test_phonemes bs "Latin" \ | ||||
" l^'ub&znI f'En^eRdZ,Ij& tS'adZ;&vog l'its& x'otS;E d'a m'i p'ok&ZE St'os" \ | " l^'ub&znI f'En^eRdZ,Ij& tS'adZ;&vog l'its& x'otS;E d'a m'i p'ok&ZE St'os" \ | ||||
"Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos." | "Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos." | ||||
# This uses a pangram for Cyrillic letter coverage. | # This uses a pangram for Cyrillic letter coverage. | ||||
test_phonemes hr "Cyrillic" \ | test_phonemes hr "Cyrillic" \ | ||||
" l^'ub&znI f'@ 'E slovo_|tS'EtIRI_|S'Est_|p'Et_: R'@ slovo_|tS'EtIRI_|S'Est_|d'EvEt_: I j'@2 & & tS'@_:_: & slovo_|tS'EtIRI_|S'Est_|j'ed&n_: v'@ tS'@ g'@ l'its& x'otS;E d'a m'i p'ok&ZE St'os" \ | |||||
"Љубазни фењерџија чађавог лица хоће да ми покаже штос." | |||||
" l^'ub&znI f'En^eRdZ,Ij& tS'adZ;&vog l'its& x'otS;E d'a m'i p'ok&ZE St'os" \ | |||||
"Љубазни фењерџија чађавог лица хоће да ми покаже штос." broken | |||||
test_phonemes hr "Latin" \ | test_phonemes hr "Latin" \ | ||||
" l^'ub&znI f'En^eRdZ,Ij& tS'adZ;&vog l'its& x'otS;E d'a m'i p'ok&ZE St'os" \ | " l^'ub&znI f'En^eRdZ,Ij& tS'adZ;&vog l'its& x'otS;E d'a m'i p'ok&ZE St'os" \ | ||||
"Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos." | "Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos." | ||||
# This uses a pangram for Cyrillic letter coverage. | # This uses a pangram for Cyrillic letter coverage. | ||||
test_phonemes sr "Cyrillic" \ | test_phonemes sr "Cyrillic" \ | ||||
" l^'ub&znI f'@ 'E slovo_|tS'EtIRI_|S'Est_|p'Et_: R'@ slovo_|tS'EtIRI_|S'Est_|d'EvEt_: I j'@2 & & tS'@_:_: & slovo_|tS'EtIRI_|S'Est_|j'ed&n_: v'@ tS'@ g'@ l'its& x'otS;E d'a m'i p'ok&ZE St'os" \ | |||||
"Љубазни фењерџија чађавог лица хоће да ми покаже штос." | |||||
" l^'ub&znI f'En^eRdZ,Ij& tS'adZ;&vog l'its& x'otS;E d'a m'i p'ok&ZE St'os" \ | |||||
"Љубазни фењерџија чађавог лица хоће да ми покаже штос." broken | |||||
test_phonemes sr "Latin" \ | test_phonemes sr "Latin" \ | ||||
" l^'ub&znI f'En^eRdZ,Ij& tS'adZ;&vog l'its& x'otS;E d'a m'i p'ok&ZE St'os" \ | " l^'ub&znI f'En^eRdZ,Ij& tS'adZ;&vog l'its& x'otS;E d'a m'i p'ok&ZE St'os" \ | ||||
"Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos." | "Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos." |
test_replace() { | test_replace() { | ||||
TEST_LANG=$1 | TEST_LANG=$1 | ||||
TEST_TEXT=$2 | TEST_TEXT=$2 | ||||
TEST_BROKEN=${3:-false} | |||||
echo "testing ${TEST_LANG}" | echo "testing ${TEST_LANG}" | ||||
ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ESPEAK_DATA_PATH=`pwd` LD_LIBRARY_PATH=src:${LD_LIBRARY_PATH} \ | ||||
src/espeak-ng -Xq -v ${TEST_LANG} "${TEST_TEXT}" | grep -P "(Translate|Found:) " | sed -e 's/ \[.*][ ]*$//g' > actual.txt | src/espeak-ng -Xq -v ${TEST_LANG} "${TEST_TEXT}" | grep -P "(Translate|Found:) " | sed -e 's/ \[.*][ ]*$//g' > actual.txt | ||||
diff expected.txt actual.txt || exit 1 | |||||
if [ x$TEST_BROKEN = xbroken ] ; then | |||||
diff expected.txt actual.txt || (echo "... ignoring error (broken)" && true) | |||||
else | |||||
diff expected.txt actual.txt || exit 1 | |||||
fi | |||||
} | } | ||||
##### bs: Bosnian | ##### bs: Bosnian | ||||
# Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos. | # Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos. | ||||
cat > expected.txt <<EOF | cat > expected.txt <<EOF | ||||
Translate 'ljubazni' | Translate 'ljubazni' | ||||
Translate 'feѥrѩijaa' | |||||
Found: 'f' | |||||
Translate 'e' | |||||
Translate 'ѥ' | |||||
Found: '_?A' | |||||
Found: '_4' | |||||
Found: '_6' | |||||
Found: '_5' | |||||
Found: 'r' | |||||
Translate 'ѩ' | |||||
Found: '_?A' | |||||
Found: '_4' | |||||
Found: '_6' | |||||
Found: '_9' | |||||
Translate 'i' | |||||
Found: 'j' | |||||
Translate 'a' | |||||
Translate 'a' | |||||
Translate 'čaѡvčg' | |||||
Found: 'č' | |||||
Translate 'a' | |||||
Translate 'ѡ' | |||||
Found: '_?A' | |||||
Found: '_4' | |||||
Found: '_6' | |||||
Found: '_1' | |||||
Found: 'v' | |||||
Found: 'č' | |||||
Found: 'g' | |||||
Translate 'fenjerdžija' | |||||
Translate 'čađavog' | |||||
Translate 'lica' | Translate 'lica' | ||||
Translate 'hoće' | Translate 'hoće' | ||||
Translate 'da' | Translate 'da' | ||||
Translate 'pokaže' | Translate 'pokaže' | ||||
Translate 'štos' | Translate 'štos' | ||||
EOF | EOF | ||||
#test_replace bs "Љубазни фењерџија чађавог лица хоће да ми покаже штос." | |||||
test_replace bs "Љубазни фењерџија чађавог лица хоће да ми покаже штос." broken | |||||
##### en: English | ##### en: English | ||||
# Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos. | # Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos. | ||||
cat > expected.txt <<EOF | cat > expected.txt <<EOF | ||||
Translate 'ljubazni' | Translate 'ljubazni' | ||||
Translate 'feѥrѩijaa' | |||||
Found: 'f' | |||||
Translate 'e' | |||||
Translate 'ѥ' | |||||
Found: '_?A' | |||||
Found: '_4' | |||||
Found: '_6' | |||||
Found: '_5' | |||||
Found: 'r' | |||||
Translate 'ѩ' | |||||
Found: '_?A' | |||||
Found: '_4' | |||||
Found: '_6' | |||||
Found: '_9' | |||||
Translate 'i' | |||||
Found: 'j' | |||||
Translate 'a' | |||||
Translate 'a' | |||||
Translate 'čaѡvčg' | |||||
Found: 'č' | |||||
Translate 'a' | |||||
Translate 'ѡ' | |||||
Found: '_?A' | |||||
Found: '_4' | |||||
Found: '_6' | |||||
Found: '_1' | |||||
Found: 'v' | |||||
Found: 'č' | |||||
Found: 'g' | |||||
Translate 'fenjerdžija' | |||||
Translate 'čađavog' | |||||
Translate 'lica' | Translate 'lica' | ||||
Translate 'hoće' | Translate 'hoće' | ||||
Translate 'da' | Translate 'da' | ||||
Translate 'pokaže' | Translate 'pokaže' | ||||
Translate 'štos' | Translate 'štos' | ||||
EOF | EOF | ||||
#test_replace hr "Љубазни фењерџија чађавог лица хоће да ми покаже штос." | |||||
test_replace hr "Љубазни фењерџија чађавог лица хоће да ми покаже штос." broken | |||||
##### sr: Serbian | ##### sr: Serbian | ||||
# Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos. | # Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos. | ||||
cat > expected.txt <<EOF | cat > expected.txt <<EOF | ||||
Translate 'ljubazni' | Translate 'ljubazni' | ||||
Translate 'feѥrѩijaa' | |||||
Found: 'f' | |||||
Translate 'e' | |||||
Translate 'ѥ' | |||||
Found: '_?A' | |||||
Found: '_4' | |||||
Found: '_6' | |||||
Found: '_5' | |||||
Found: 'r' | |||||
Translate 'ѩ' | |||||
Found: '_?A' | |||||
Found: '_4' | |||||
Found: '_6' | |||||
Found: '_9' | |||||
Translate 'i' | |||||
Found: 'j' | |||||
Translate 'a' | |||||
Translate 'a' | |||||
Translate 'čaѡvčg' | |||||
Found: 'č' | |||||
Translate 'a' | |||||
Translate 'ѡ' | |||||
Found: '_?A' | |||||
Found: '_4' | |||||
Found: '_6' | |||||
Found: '_1' | |||||
Found: 'v' | |||||
Found: 'č' | |||||
Found: 'g' | |||||
Translate 'fenjerdžija' | |||||
Translate 'čađavog' | |||||
Translate 'lica' | Translate 'lica' | ||||
Translate 'hoće' | Translate 'hoće' | ||||
Translate 'da' | Translate 'da' | ||||
Translate 'pokaže' | Translate 'pokaže' | ||||
Translate 'štos' | Translate 'štos' | ||||
EOF | EOF | ||||
#test_replace sr "Љубазни фењерџија чађавог лица хоће да ми покаже штос." | |||||
test_replace sr "Љубазни фењерџија чађавог лица хоће да ми покаже штос." broken | |||||