# -*- coding: utf-8 -*- import pyfmi.testcase import unittest import re import locale points = 5 locale.setlocale(locale.LC_ALL, 'bg_BG') class ProblemTests(pyfmi.testcase.TestCase): def assertWikiTolerant(self, expected, tested): conversions = ( (lambda s: s.encode('cp1251'), lambda s: re.sub(r'\s+', '', s)), (lambda s: s.encode('utf-8'), lambda s: re.sub(r'\s+', '', s)), (lambda s: s, lambda s: re.sub(re.compile(r'\s+', re.U), '', s)), ) ok = [] for converter, nows in conversions: try: ok.append(nows(converter(expected)) == nows(self.user.wiki(converter(tested)))) except (UnicodeError, TypeError): pass if not any(ok): print '_' * 20 + "[ TEST FAILED ]" + '_' * 20 print for converter, nows in conversions: try: ours = nows(converter(expected)) theirs = nows(self.user.wiki(converter(tested))) if ours != theirs: print '-' * 20 print ours print '-' * 20 print theirs print '-' * 20 print else: print 'WAIT! ' * 5 + " TEST PASSES! " except (UnicodeError, TypeError), data: print data print self.assertTrue(any(ok)) def _test_sample(self): wikiText = """== Python == *Питон* (от англ. _Python_, произнася се _Пайтън_) е интерпретируем, интерактивен, обектно-ориентиран език за програмиране, създаден от [http://www.python.org/~guido/ Гуидо ван Росум] в началото на 90-те години. Често бива сравняван с Tcl, Perl, Scheme, Java и Ruby. Питон предлага добра структура и поддръжка за разработка на големи приложения. Той притежава вградени сложни типове данни като гъвкави масиви и речници, за които биха били необходими дни, за да се напишат ефикасно на C. За разлика от Perl, мистичната променлива _ отсъства. Нито може да ползвате * за глобове. === Разяснения на *Python* === Питон позволява разделянето на една програма на модули, които могат да се използват отново в други програми. Също така притежава голям набор от стандартни модули, които да се използват като основа на програмите. Съществуват и вградени модули, които обезпечават такива неща като файлов вход/изход (I/O), различни системни функции, сокети (_sockets_), програмни интерфейси към GUI-библиотеки като Тк, както и много други. == Връзки == Можете да намерите повече информация на следните места: stefan@example.org http://fmi.py-bg.net/ http://python.org/""" expectedHTML = """

Python

Питон (от англ. Python, произнася се Пайтън) е интерпретируем, интерактивен, обектно-ориентиран език за програмиране, създаден от Гуидо ван Росум в началото на 90-те години. Често бива сравняван с Tcl, Perl, Scheme, Java и Ruby.

Питон предлага добра структура и поддръжка за разработка на големи приложения. Той притежава вградени сложни типове данни като гъвкави масиви и речници, за които биха били необходими дни, за да се напишат ефикасно на C. За разлика от Perl, мистичната променлива _ отсъства. Нито може да ползвате * за глобове.

Разяснения на Python

Питон позволява разделянето на една програма на модули, които могат да се използват отново в други програми. Също така притежава голям набор от стандартни модули, които да се използват като основа на програмите. Съществуват и вградени модули, които обезпечават такива неща като файлов вход/изход (I/O), различни системни функции, сокети (sockets), програмни интерфейси към GUI-библиотеки като Тк, както и много други.

Връзки

Можете да намерите повече информация на следните места:

stefan@example.org
http://fmi.py-bg.net/
http://python.org/

""" self.assertWikiTolerant(expectedHTML, wikiText) def test_sample_headings_paragraphs(self): try: self._test_sample() except AssertionError: pass else: self.assertTrue(True) return wikiText = u"""== Пайтън == Питон (Python, произнася се Пайтън) е интерпретируем, интерактивен, обектно-ориентиран език за програмиране, създаден в началото на 90-те години. Често бива сравняван с Tcl, Perl, Scheme, Java и Ruby. Питон предлага добра структура и поддръжка за разработка на големи приложения. Той притежава вградени сложни типове данни като гъвкави масиви и речници, за които биха били необходими дни, за да се напишат ефикасно на C. === Разяснения за Python === Пайтън притежава голям набор от стандартни модули, които да се използват като основа на програмите. Съществуват и вградени модули, които обезпечават такива неща като файлов вход/изход (I/O), различни системни функции, сокети (sockets), програмни интерфейси към GUI-библиотеки като Тк, както и много други. === Повече === Можете да намерите повече информация лесно и сами. """ expectedHTML = u"""

Пайтън

Питон (Python, произнася се Пайтън) е интерпретируем, интерактивен, обектно-ориентиран език за програмиране, създаден в началото на 90-те години. Често бива сравняван с Tcl, Perl, Scheme, Java и Ruby.

Питон предлага добра структура и поддръжка за разработка на големи приложения. Той притежава вградени сложни типове данни като гъвкави масиви и речници, за които биха били необходими дни, за да се напишат ефикасно на C.

Разяснения за Python

Пайтън притежава голям набор от стандартни модули, които да се използват като основа на програмите. Съществуват и вградени модули, които обезпечават такива неща като файлов вход/изход (I/O), различни системни функции, сокети (sockets), програмни интерфейси към GUI-библиотеки като Тк, както и много други.

Повече

Можете да намерите повече информация лесно и сами.

""" self.assertWikiTolerant(expectedHTML, wikiText) def test_sample_urls_emails(self): try: self._test_sample() except AssertionError: pass else: self.assertTrue(True) return wikiText = u"""=== Връзки === Пайтън е създаден от [http://www.python.org/~guido/ Гуидо ван Росум] в началото на 90-те години. Повече информация за пайтън можете да намерите на http://python.org и http://docs.python.org python@example.org и, естествено, на http://fmi.py-bg.net/""" expectedHTML = u"""

Връзки

Пайтън е създаден от Гуидо ван Росум в началото на 90-те години. Повече информация за пайтън можете да намерите на http://python.org и http://docs.python.org python@example.org и, естествено, на http://fmi.py-bg.net/

""" self.assertWikiTolerant(expectedHTML, wikiText) def test_sample_bold_italic(self): try: self._test_sample() except AssertionError: pass else: self.assertTrue(True) return wikiText = u"""=== Термини, свързани с *Python* === *Питон* (от англ. _Python_, произнася се _Пайтън_) е интерпретируем, интерактивен, обектно-ориентиран език за програмиране. Често бива сравняван с _Tcl_, _Perl_, _Scheme_ (_Lisp_), _Java_ и _Ruby_. За разлика от Perl, отсъства мистичната променлива _, както и не може да ползвате * за глобове.""" expectedHTML = u"""

Термини, свързани с Python

Питон (от англ. Python, произнася се Пайтън) е интерпретируем, интерактивен, обектно-ориентиран език за програмиране. Често бива сравняван с Tcl, Perl, Scheme (Lisp), Java и Ruby. За разлика от Perl, отсъства мистичната променлива _, както и не може да ползвате * за глобове.

""" self.assertWikiTolerant(expectedHTML, wikiText) def test_newlines_no_headings_no_strong(self): wikiText = u"""Python е език, за който е приложим терминът duck typing. Вижте повече в Wikipedia.""" expectedHTML = u"""

Python е език, за който е приложим терминът duck typing.
Вижте повече в Wikipedia.

""" self.assertWikiTolerant(expectedHTML, wikiText) def test_newlines_paragraphs_emails(self): wikiText = u"""Python е език, за който е приложим терминът duck typing. Вижте повече в Wikipedia или пишете на stefan+kanev@example.com и имайте предвид, че потребител@хост и user@host не се валидират лесно.""" expectedHTML = u"""

Python е език, за който е приложим терминът duck typing.

Вижте повече в Wikipedia или пишете на stefan+kanev@example.com и имайте предвид, че потребител@хост и user@host не се валидират лесно.

""" self.assertWikiTolerant(expectedHTML, wikiText) if __name__ == '__main__': ProblemTests.user_filename = 'p3.py' unittest.main()