| 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 | |||||