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

    def test_inflect_prefix(self):
        self.assertInflected('ИНТЕРНЕТ-МАГАЗИН', 'дт,мн', 'ИНТЕРНЕТ-МАГАЗИНАМ')

    @unittest2.expectedFailure
    def test_inflect_word_formation(self):
        self.assertInflected('ЧЕЛОВЕК-ГОРА', 'дт,ед', 'ЧЕЛОВЕКУ-ГОРЕ')

    def test_inflect_rostov(self):
        self.assertInflected('РОСТОВ-НА-ДОНУ', 'пр', 'РОСТОВЕ-НА-ДОНУ')


class PluralHyphenTest(MorphTestCase):

    def test_plural(self):
        self.assertPlural('ИНТЕРНЕТ-МАГАЗИН', 'ИНТЕРНЕТ-МАГАЗИНЫ')


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

    def test_inflect_prefix(self):
        self.assertInflected('ИНТЕРНЕТ-МАГАЗИН', 'дт,мн', 'ИНТЕРНЕТ-МАГАЗИНАМ')

    @unittest2.expectedFailure
    def test_inflect_word_formation(self):
        self.assertInflected('ЧЕЛОВЕК-ГОРА', 'дт,ед', 'ЧЕЛОВЕКУ-ГОРЕ')

    def test_inflect_rostov(self):
        self.assertInflected('РОСТОВ-НА-ДОНУ', 'пр', 'РОСТОВЕ-НА-ДОНУ')


class PluralHyphenTest(MorphTestCase):

    def test_plural(self):
        self.assertPlural('ИНТЕРНЕТ-МАГАЗИН', 'ИНТЕРНЕТ-МАГАЗИНЫ')


    @unittest2.expectedFailure