# 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/word_case.py
# def restore_word_case(word, original_word):
#     """
#     Восстанавливает регистр слова (расположение строчных-заглавных букв).
# 
#     * word - слово, у которого требуется восстановить
#       регистр (в любом регистре);
#     * original_word - исходное слово (в исходном регистре);
# 
#     Пример:
# 
#     >>> from pymorphy.contrib.word_case import restore_word_case
#     >>> print restore_word_case(u'ЛЮДИ', u'Человек')
#     Люди
# 
#     Если сопоставить регистр слов не удается, то результат возвращается
#     в нижнем регистре.
#     """
#     if '-' in original_word:
#         parts = zip(word.split('-'), original_word.split('-'))
#         return '-'.join(restore_word_case(*p) for p in parts)
# 
#     if original_word.isupper():
#         return word.upper()
#     elif original_word.islower():
#         return word.lower()
#     elif original_word.istitle():
#         return word.title()
#     else:
#         return word.lower()


from pymorphy.morph_tests.base import unittest2, MorphTestCase
from pymorphy.contrib.word_case import restore_word_case
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

class RestoreCaseTest(MorphTestCase):

    def assertRestored(self, word, original_word, result):
        self.assertEqualRu(restore_word_case(word, original_word), result)

    def test_upper(self):
        self.assertRestored('ЛЮДИ', 'ЧЕЛОВЕК', 'ЛЮДИ')

    def test_lower(self):
        self.assertRestored('ЛЮДИ', 'человек', 'люди')

    def test_title(self):
        self.assertRestored('ЛЮДИ', 'Человек', 'Люди')

    def test_hyphenated(self):
        self.assertRestored('ЛЮДИ-ГОРЫ-МАЛЕНЬКИЙ', 'Человек-ГОРА-небольшая', 'Люди-ГОРЫ-маленький')

    # сейчас не поддерживается, т.к. неясен алгоритм
    @unittest2.expectedFailure
    def test_mixed(self):
        self.assertRestored('ЛюДи', 'ЛюДи', 'ЛюДи')

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/word_case.py
# def restore_word_case(word, original_word):
#     """
#     Восстанавливает регистр слова (расположение строчных-заглавных букв).
# 
#     * word - слово, у которого требуется восстановить
#       регистр (в любом регистре);
#     * original_word - исходное слово (в исходном регистре);
# 
#     Пример:
# 
#     >>> from pymorphy.contrib.word_case import restore_word_case
#     >>> print restore_word_case(u'ЛЮДИ', u'Человек')
#     Люди
# 
#     Если сопоставить регистр слов не удается, то результат возвращается
#     в нижнем регистре.
#     """
#     if '-' in original_word:
#         parts = zip(word.split('-'), original_word.split('-'))
#         return '-'.join(restore_word_case(*p) for p in parts)
# 
#     if original_word.isupper():
#         return word.upper()
#     elif original_word.islower():
#         return word.lower()
#     elif original_word.istitle():
#         return word.title()
#     else:
#         return word.lower()


# Path: pymorphy/morph_tests/word_case.py
from pymorphy.morph_tests.base import unittest2, MorphTestCase
from pymorphy.contrib.word_case import restore_word_case

# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals

class RestoreCaseTest(MorphTestCase):

    def assertRestored(self, word, original_word, result):
        self.assertEqualRu(restore_word_case(word, original_word), result)

    def test_upper(self):
        self.assertRestored('ЛЮДИ', 'ЧЕЛОВЕК', 'ЛЮДИ')

    def test_lower(self):
        self.assertRestored('ЛЮДИ', 'человек', 'люди')

    def test_title(self):
        self.assertRestored('ЛЮДИ', 'Человек', 'Люди')

    def test_hyphenated(self):
        self.assertRestored('ЛЮДИ-ГОРЫ-МАЛЕНЬКИЙ', 'Человек-ГОРА-небольшая', 'Люди-ГОРЫ-маленький')

    # сейчас не поддерживается, т.к. неясен алгоритм
    @unittest2.expectedFailure
    def test_mixed(self):
        self.assertRestored('ЛюДи', 'ЛюДи', 'ЛюДи')

if __name__ == '__main__':

    unittest2.main()