ddc75c0
# This file is part of Pyphen
ddc75c0
#
ddc75c0
# Copyright 2013 - Guillaume Ayoub <guillaume.ayoub@kozea.fr>
ddc75c0
#
ddc75c0
# This library is free software: you can redistribute it and/or modify it under
ddc75c0
# the terms of the GNU Lesser General Public License as published by the Free
ddc75c0
# Software Foundation, either version 2.1 of the License, or (at your option)
ddc75c0
# any later version.
ddc75c0
#
ddc75c0
# This library is distributed in the hope that it will be useful, but WITHOUT
ddc75c0
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
ddc75c0
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
ddc75c0
# details.
ddc75c0
#
ddc75c0
# You should have received a copy of the GNU Lesser General Public License
ddc75c0
# along with Pyphen.  If not, see <http://www.gnu.org/licenses/>.
ddc75c0
ddc75c0
"""
ddc75c0
ddc75c0
Pyphen Tests
ddc75c0
============
ddc75c0
ddc75c0
Tests can be launched with:
ddc75c0
ddc75c0
- Pytest (``py.test test.py``).
ddc75c0
- Nose (``nosetests``).
ddc75c0
ddc75c0
"""
ddc75c0
ddc75c0
ddc75c0
from __future__ import unicode_literals
ddc75c0
ddc75c0
import pyphen
ddc75c0
ddc75c0
ddc75c0
def test_inserted():
ddc75c0
    """Test the ``inserted`` method."""
ddc75c0
    dic = pyphen.Pyphen(lang='nl_NL')
ddc75c0
    assert dic.inserted('lettergrepen') == 'let-ter-gre-pen'
ddc75c0
ddc75c0
ddc75c0
def test_wrap():
ddc75c0
    """Test the ``wrap`` method."""
ddc75c0
    dic = pyphen.Pyphen(lang='nl_NL')
ddc75c0
    assert dic.wrap('autobandventieldopje', 11) == (
ddc75c0
        'autoband-', 'ventieldopje')
ddc75c0
ddc75c0
ddc75c0
def test_iterate():
ddc75c0
    """Test the ``iterate`` method."""
ddc75c0
    dic = pyphen.Pyphen(lang='nl_NL')
ddc75c0
    assert tuple(dic.iterate('Amsterdam')) == (
ddc75c0
        ('Amster', 'dam'), ('Am', 'sterdam'))
ddc75c0
ddc75c0
ddc75c0
def test_fallback_dict():
ddc75c0
    """Test the ``iterate`` method with a fallback dict."""
ddc75c0
    dic = pyphen.Pyphen(lang='nl_NL-variant')
ddc75c0
    assert tuple(dic.iterate('Amsterdam')) == (
ddc75c0
        ('Amster', 'dam'), ('Am', 'sterdam'))
ddc75c0
ddc75c0
ddc75c0
def test_missing_dict():
ddc75c0
    """Test a missing dict."""
ddc75c0
    try:
ddc75c0
        pyphen.Pyphen(lang='mi_SS')
ddc75c0
    except KeyError:
ddc75c0
        pass
ddc75c0
    else:  # pragma: no cover
ddc75c0
        raise Exception('Importing a missing dict must raise a KeyError')
ddc75c0
ddc75c0
ddc75c0
def test_personal_dict():
ddc75c0
    """Test a personal dict."""
ddc75c0
    dic = pyphen.Pyphen(lang='fr')
ddc75c0
    assert dic.inserted('autobandventieldopje') != 'au-to-band-ven-tiel-dop-je'
ddc75c0
    pyphen.LANGUAGES['fr'] = pyphen.LANGUAGES['nl_NL']
ddc75c0
    dic = pyphen.Pyphen(lang='fr')
ddc75c0
    assert dic.inserted('autobandventieldopje') == 'au-to-band-ven-tiel-dop-je'
ddc75c0
ddc75c0
ddc75c0
def test_left_right():
ddc75c0
    """Test the ``left`` and ``right`` parameters."""
ddc75c0
    dic = pyphen.Pyphen(lang='nl_NL')
ddc75c0
    assert dic.inserted('lettergrepen') == 'let-ter-gre-pen'
ddc75c0
    dic = pyphen.Pyphen(lang='nl_NL', left=4)
ddc75c0
    assert dic.inserted('lettergrepen') == 'letter-gre-pen'
ddc75c0
    dic = pyphen.Pyphen(lang='nl_NL', right=4)
ddc75c0
    assert dic.inserted('lettergrepen') == 'let-ter-grepen'
ddc75c0
    dic = pyphen.Pyphen(lang='nl_NL', left=4, right=4)
ddc75c0
    assert dic.inserted('lettergrepen') == 'letter-grepen'
ddc75c0
ddc75c0
ddc75c0
def test_filename():
ddc75c0
    """Test the ``filename`` parameter."""
ddc75c0
    dic = pyphen.Pyphen(filename=pyphen.LANGUAGES['nl_NL'])
ddc75c0
    assert dic.inserted('lettergrepen') == 'let-ter-gre-pen'
ddc75c0
ddc75c0
ddc75c0
def test_alternative():
ddc75c0
    """Test the alternative parser."""
ddc75c0
    dic = pyphen.Pyphen(lang='hu', left=1, right=1)
ddc75c0
    assert tuple(dic.iterate('kulissza')) == (
ddc75c0
        ('kulisz', 'sza'), ('ku', 'lissza'))
ddc75c0
    assert dic.inserted('kulissza') == 'ku-lisz-sza'
ddc75c0
ddc75c0
ddc75c0
def test_upper():
ddc75c0
    """Test uppercase."""
ddc75c0
    dic = pyphen.Pyphen(lang='nl_NL')
ddc75c0
    assert dic.inserted('LETTERGREPEN') == 'LET-TER-GRE-PEN'
ddc75c0
ddc75c0
ddc75c0
def test_upper_alternative():
ddc75c0
    """Test uppercase with alternative parser."""
ddc75c0
    dic = pyphen.Pyphen(lang='hu', left=1, right=1)
ddc75c0
    assert tuple(dic.iterate('KULISSZA')) == (
ddc75c0
        ('KULISZ', 'SZA'), ('KU', 'LISSZA'))
ddc75c0
    assert dic.inserted('KULISSZA') == 'KU-LISZ-SZA'
ddc75c0
ddc75c0
ddc75c0
def test_all_dictionaries():
ddc75c0
    """Test that all included dictionaries can be parsed."""
ddc75c0
    for lang in pyphen.LANGUAGES:
ddc75c0
        pyphen.Pyphen(lang=lang)
ddc75c0
ddc75c0
ddc75c0
def test_fallback():
ddc75c0
    """Test the language fallback algorithm."""
ddc75c0
    assert pyphen.language_fallback('en') == 'en'
ddc75c0
    assert pyphen.language_fallback('en_US') == 'en_US'
ddc75c0
    assert pyphen.language_fallback('en_FR') == 'en'
ddc75c0
    assert pyphen.language_fallback('en-Latn-US') == 'en_Latn_US'
ddc75c0
    assert pyphen.language_fallback('en-Cyrl-US') == 'en'
ddc75c0
    assert pyphen.language_fallback('fr-Latn-FR') == 'fr'
ddc75c0
    assert pyphen.language_fallback('en-US_variant1-x') == 'en_US'