# 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):


from .base import MorphTestCase, unittest2

    def test_immutable_left(self):
        self.assertHasInfo('ИНТЕРНЕТ-МАГАЗИНА', 'ИНТЕРНЕТ-МАГАЗИН', 'С', 'hyphen-prefix')
        self.assertHasInfo('PDF-ДОКУМЕНТОВ', 'PDF-ДОКУМЕНТ', 'С', 'hyphen-prefix')
        self.assertHasInfo('АММИАЧНО-СЕЛИТРОВОГО', 'АММИАЧНО-СЕЛИТРОВЫЙ', 'П', 'hyphen-prefix')

    def test_mutable_left(self):
        self.assertHasInfo('БЫСТРО-БЫСТРО', 'БЫСТРО-БЫСТРО', 'Н', 'word-formation')
        self.assertHasInfo('КОМАНД-УЧАСТНИЦ', 'КОМАНДА-УЧАСТНИЦА', 'С', 'word-formation')
        self.assertHasInfo('БЕГАЕТ-ПРЫГАЕТ', 'БЕГАТЬ-ПРЫГАТЬ', 'Г', 'word-formation')
        self.assertHasInfo('ДУЛ-НАДУВАЛСЯ', 'ДУТЬ-НАДУВАТЬСЯ', 'Г', 'word-formation')

    def test_extra_prefix(self):
        self.assertHasInfo('ПОЧТОВО-БАНКОВСКИЙ', 'ПОЧТОВО-БАНКОВСКИЙ', 'П', 'hyphen-prefix(ПОЧТОВО)')
        self.assertHasInfo('ПО-ПРЕЖНЕМУ', 'ПО-ПРЕЖНЕМУ', 'Н', 'lemma(ПО-ПРЕЖНЕМУ)')
        self.assertHasInfo('ПО-ПРЕЖНЕМУ', 'ПРЕЖНИЙ', 'П', 'hyphen-prefix()')

    @unittest2.expectedFailure
    def test_train_bug(self):
        self.assertHasInfo('ПОЕЗДОВ-ЭКСПРЕССОВ', 'ПОЕЗД-ЭКСПРЕСС', 'С', 'word-formation')
        self.assertHasInfo('ПОДРОСТКАМИ-ПРАКТИКАНТАМИ', 'ПОДРОСТОК-ПРАКТИКАНТ')
        self.assertHasInfo('ПОДВОДНИКОВ-СЕВЕРОМОРЦЕВ', 'ПОДВОДНИК-СЕВЕРОМОРЕЦ', 'С', 'word-formation')

    def test_strip_hyphens(self):
        self.assertStandard('ПО-ПРЕЖНЕМУ', 'ПРЕЖНИЙ')
        self.assertStandard('ПО-ПРЕЖНЕМУ', 'ПРЕЖНИЙ', scan=True)

    def test_rostov(self):
        self.assertStandard('РОСТОВЕ-НА-ДОНУ', 'РОСТОВ-НА-ДОНУ')


# 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/morph_tests/hyphen.py
from .base import MorphTestCase, unittest2


    def test_immutable_left(self):
        self.assertHasInfo('ИНТЕРНЕТ-МАГАЗИНА', 'ИНТЕРНЕТ-МАГАЗИН', 'С', 'hyphen-prefix')
        self.assertHasInfo('PDF-ДОКУМЕНТОВ', 'PDF-ДОКУМЕНТ', 'С', 'hyphen-prefix')
        self.assertHasInfo('АММИАЧНО-СЕЛИТРОВОГО', 'АММИАЧНО-СЕЛИТРОВЫЙ', 'П', 'hyphen-prefix')

    def test_mutable_left(self):
        self.assertHasInfo('БЫСТРО-БЫСТРО', 'БЫСТРО-БЫСТРО', 'Н', 'word-formation')
        self.assertHasInfo('КОМАНД-УЧАСТНИЦ', 'КОМАНДА-УЧАСТНИЦА', 'С', 'word-formation')
        self.assertHasInfo('БЕГАЕТ-ПРЫГАЕТ', 'БЕГАТЬ-ПРЫГАТЬ', 'Г', 'word-formation')
        self.assertHasInfo('ДУЛ-НАДУВАЛСЯ', 'ДУТЬ-НАДУВАТЬСЯ', 'Г', 'word-formation')

    def test_extra_prefix(self):
        self.assertHasInfo('ПОЧТОВО-БАНКОВСКИЙ', 'ПОЧТОВО-БАНКОВСКИЙ', 'П', 'hyphen-prefix(ПОЧТОВО)')
        self.assertHasInfo('ПО-ПРЕЖНЕМУ', 'ПО-ПРЕЖНЕМУ', 'Н', 'lemma(ПО-ПРЕЖНЕМУ)')
        self.assertHasInfo('ПО-ПРЕЖНЕМУ', 'ПРЕЖНИЙ', 'П', 'hyphen-prefix()')

    @unittest2.expectedFailure
    def test_train_bug(self):
        self.assertHasInfo('ПОЕЗДОВ-ЭКСПРЕССОВ', 'ПОЕЗД-ЭКСПРЕСС', 'С', 'word-formation')
        self.assertHasInfo('ПОДРОСТКАМИ-ПРАКТИКАНТАМИ', 'ПОДРОСТОК-ПРАКТИКАНТ')
        self.assertHasInfo('ПОДВОДНИКОВ-СЕВЕРОМОРЦЕВ', 'ПОДВОДНИК-СЕВЕРОМОРЕЦ', 'С', 'word-formation')

    def test_strip_hyphens(self):
        self.assertStandard('ПО-ПРЕЖНЕМУ', 'ПРЕЖНИЙ')
        self.assertStandard('ПО-ПРЕЖНЕМУ', 'ПРЕЖНИЙ', scan=True)

    def test_rostov(self):
        self.assertStandard('РОСТОВЕ-НА-ДОНУ', 'РОСТОВ-НА-ДОНУ')


class InflectHyphenTest(MorphTestCase):