# Path: pymorphy/morph_tests/base.py
# class MorphTestCase(unittest2.TestCase):
# class TestMorph(MorphTestCase):
# class TestGramInfo(unittest2.TestCase):
#     def _msg(self, fmt, w1, w2):
#     def assertEqualRu(self, word1, word2):
#     def assertNotEqualRu(self, word1, word2):
#     def assertNormal(self, input, output):
#     def assertNormalEn(self, input, output):
#     def assertPlural(self, word, plural, *args, **kwargs):
#     def assertInflected(self, word, form, result, *args, **kwargs):
#     def assertHasInfo(self, word, norm=None, cls=None, method=None, scan=False, form=None, standard=False, has_info=True):
#         def is_correct(frm):
#     def assertStandard(self, word, norm, cls=None, form=None, has_info=True, scan=False):
#     def test_normalize(self):
#     def test_global_prefix_normalize(self):
#     def test_rule_prefix_normalize(self):
#     def test_prefix_predict(self):
#     def test_EE_bug(self):
#     def test_pronouns(self):
#     def test_no_base(self):
#     def test_predict(self):
#     def test_no_prod_classes_in_prediction(self):
#     def test_female(self):
#     def test_verbs(self):
#     def test_verb_products(self):
#     def test_drop_gender(self):
#     def test_encoding_bugs(self):
#     def test_lemma_graminfo(self):
# 
# Path: pymorphy/contrib/tokenizers.py
# def extract_tokens(text):
#     """
#     Разбивает текст на токены - слова, пробелы, знаки препинания и возвращает
#     полученный массив строк.
#     """
#     return filter(None, GROUPING_SPACE_REGEX.split(text))
# 
# def extract_words(text):
#     """
#     Разбивает текст на слова. Пунктуация игнорируется.
#     Слова, пишущиеся через дефис, считаются 1 словом.
#     Пример использования::
# 
#         from pymorphy.contrib import tokenizers
# 
#         for word in tokenizers.extract_words(text):
#             print word
# 
#     Возвращает генератор, выдающий слова из текста (не list).
# 
#     """
#     for word in SPACE_REGEX.split(text):
#         test_word = word.replace('-','')
#         if not test_word or test_word.isspace() or test_word.isdigit():
#             continue
#         word = word.strip('-')
#         yield word


from pymorphy.morph_tests.base import unittest2
from pymorphy.contrib.tokenizers import extract_tokens, extract_words
    def assertSplitted(self, text, words):
        self.assertEqual(list(extract_tokens(text)), words)

    def test_split_simple(self):
        self.assertSplitted('Мама мыла раму', ['Мама', ' ', 'мыла', ' ', 'раму'])
        self.assertSplitted('Постой, паровоз!', ['Постой', ',', ' ', 'паровоз', '!'])

    def test_split_hyphen(self):
        self.assertSplitted('Ростов-на-Дону', ['Ростов-на-Дону'])
        self.assertSplitted('Ура - победа', ['Ура', ' ', '-', ' ', 'победа'])

    def test_split_signs(self):
        self.assertSplitted('a+b=c_1', ['a','+','b','=','c_1'])


class ExtractWordsTest(unittest2.TestCase):

    def test_exctract_words(self):
        txt = '''Это  отразилось: на количественном,и на качествен_ном
                - росте карельско-финляндского сотрудничества - офигеть! кони+лошади=масло.
                -сказал кто-то --нет--'''
        words = list(extract_words(txt))
        self.assertListEqual(words, [
            'Это', 'отразилось', 'на', 'количественном', 'и', 'на',
            'качествен_ном', 'росте', 'карельско-финляндского',
            'сотрудничества', 'офигеть', 'кони', 'лошади', 'масло',
            'сказал', 'кто-то', 'нет',
        ])

if __name__ == '__main__':

# Path: pymorphy/morph_tests/base.py
# class MorphTestCase(unittest2.TestCase):
# class TestMorph(MorphTestCase):
# class TestGramInfo(unittest2.TestCase):
#     def _msg(self, fmt, w1, w2):
#     def assertEqualRu(self, word1, word2):
#     def assertNotEqualRu(self, word1, word2):
#     def assertNormal(self, input, output):
#     def assertNormalEn(self, input, output):
#     def assertPlural(self, word, plural, *args, **kwargs):
#     def assertInflected(self, word, form, result, *args, **kwargs):
#     def assertHasInfo(self, word, norm=None, cls=None, method=None, scan=False, form=None, standard=False, has_info=True):
#         def is_correct(frm):
#     def assertStandard(self, word, norm, cls=None, form=None, has_info=True, scan=False):
#     def test_normalize(self):
#     def test_global_prefix_normalize(self):
#     def test_rule_prefix_normalize(self):
#     def test_prefix_predict(self):
#     def test_EE_bug(self):
#     def test_pronouns(self):
#     def test_no_base(self):
#     def test_predict(self):
#     def test_no_prod_classes_in_prediction(self):
#     def test_female(self):
#     def test_verbs(self):
#     def test_verb_products(self):
#     def test_drop_gender(self):
#     def test_encoding_bugs(self):
#     def test_lemma_graminfo(self):
# 
# Path: pymorphy/contrib/tokenizers.py
# def extract_tokens(text):
#     """
#     Разбивает текст на токены - слова, пробелы, знаки препинания и возвращает
#     полученный массив строк.
#     """
#     return filter(None, GROUPING_SPACE_REGEX.split(text))
# 
# def extract_words(text):
#     """
#     Разбивает текст на слова. Пунктуация игнорируется.
#     Слова, пишущиеся через дефис, считаются 1 словом.
#     Пример использования::
# 
#         from pymorphy.contrib import tokenizers
# 
#         for word in tokenizers.extract_words(text):
#             print word
# 
#     Возвращает генератор, выдающий слова из текста (не list).
# 
#     """
#     for word in SPACE_REGEX.split(text):
#         test_word = word.replace('-','')
#         if not test_word or test_word.isspace() or test_word.isdigit():
#             continue
#         word = word.strip('-')
#         yield word


# Path: pymorphy/morph_tests/tokenizers.py
from pymorphy.morph_tests.base import unittest2
from pymorphy.contrib.tokenizers import extract_tokens, extract_words

    def assertSplitted(self, text, words):
        self.assertEqual(list(extract_tokens(text)), words)

    def test_split_simple(self):
        self.assertSplitted('Мама мыла раму', ['Мама', ' ', 'мыла', ' ', 'раму'])
        self.assertSplitted('Постой, паровоз!', ['Постой', ',', ' ', 'паровоз', '!'])

    def test_split_hyphen(self):
        self.assertSplitted('Ростов-на-Дону', ['Ростов-на-Дону'])
        self.assertSplitted('Ура - победа', ['Ура', ' ', '-', ' ', 'победа'])

    def test_split_signs(self):
        self.assertSplitted('a+b=c_1', ['a','+','b','=','c_1'])


class ExtractWordsTest(unittest2.TestCase):

    def test_exctract_words(self):
        txt = '''Это  отразилось: на количественном,и на качествен_ном
                - росте карельско-финляндского сотрудничества - офигеть! кони+лошади=масло.
                -сказал кто-то --нет--'''
        words = list(extract_words(txt))
        self.assertListEqual(words, [
            'Это', 'отразилось', 'на', 'количественном', 'и', 'на',
            'качествен_ном', 'росте', 'карельско-финляндского',
            'сотрудничества', 'офигеть', 'кони', 'лошади', 'масло',
            'сказал', 'кто-то', 'нет',
        ])

if __name__ == '__main__':

    unittest2.main()