summaryrefslogtreecommitdiff
path: root/tests/test_rtf_formatter.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_rtf_formatter.py')
-rw-r--r--tests/test_rtf_formatter.py192
1 files changed, 95 insertions, 97 deletions
diff --git a/tests/test_rtf_formatter.py b/tests/test_rtf_formatter.py
index c95bfdaf..35179df4 100644
--- a/tests/test_rtf_formatter.py
+++ b/tests/test_rtf_formatter.py
@@ -1,109 +1,107 @@
# -*- coding: utf-8 -*-
"""
Pygments RTF formatter tests
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
+ :copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
-import unittest
-
from pygments.util import StringIO
from pygments.formatters import RtfFormatter
from pygments.lexers.special import TextLexer
-class RtfFormatterTest(unittest.TestCase):
- foot = (r'\par' '\n' r'}')
-
- def _escape(self, string):
- return(string.replace("\n", r"\n"))
-
- def _build_message(self, *args, **kwargs):
- string = kwargs.get('string', None)
- t = self._escape(kwargs.get('t', ''))
- expected = self._escape(kwargs.get('expected', ''))
- result = self._escape(kwargs.get('result', ''))
-
- if string is None:
- string = (u"The expected output of '{t}'\n"
- u"\t\tShould be '{expected}'\n"
- u"\t\tActually outputs '{result}'\n"
- u"\t(WARNING: Partial Output of Result!)")
-
- end = -(len(self._escape(self.foot)))
- start = end-len(expected)
-
- return string.format(t=t,
- result = result[start:end],
- expected = expected)
-
- def format_rtf(self, t):
- tokensource = list(TextLexer().get_tokens(t))
- fmt = RtfFormatter()
- buf = StringIO()
- fmt.format(tokensource, buf)
- result = buf.getvalue()
- buf.close()
- return result
-
- def test_rtf_header(self):
- t = u''
- result = self.format_rtf(t)
- expected = r'{\rtf1\ansi\uc0'
- msg = (u"RTF documents are expected to start with '{expected}'\n"
- u"\t\tStarts intead with '{result}'\n"
- u"\t(WARNING: Partial Output of Result!)".format(
- expected = expected,
- result = result[:len(expected)]))
- self.assertTrue(result.startswith(expected), msg)
-
- def test_rtf_footer(self):
- t = u''
- result = self.format_rtf(t)
- expected = self.foot
- msg = (u"RTF documents are expected to end with '{expected}'\n"
- u"\t\tEnds intead with '{result}'\n"
- u"\t(WARNING: Partial Output of Result!)".format(
- expected = self._escape(expected),
- result = self._escape(result[-len(expected):])))
- self.assertTrue(result.endswith(expected), msg)
-
- def test_ascii_characters(self):
- t = u'a b c d ~'
- result = self.format_rtf(t)
- expected = (r'a b c d ~')
- if not result.endswith(self.foot):
- return(unittest.skip('RTF Footer incorrect'))
- msg = self._build_message(t=t, result=result, expected=expected)
- self.assertTrue(result.endswith(expected+self.foot), msg)
-
- def test_escape_characters(self):
- t = u'\\ {{'
- result = self.format_rtf(t)
- expected = r'\\ \{\{'
- if not result.endswith(self.foot):
- return(unittest.skip('RTF Footer incorrect'))
- msg = self._build_message(t=t, result=result, expected=expected)
- self.assertTrue(result.endswith(expected+self.foot), msg)
-
- def test_single_characters(self):
- t = u'â € ¤ каждой'
- result = self.format_rtf(t)
- expected = (r'{\u226} {\u8364} {\u164} '
- r'{\u1082}{\u1072}{\u1078}{\u1076}{\u1086}{\u1081}')
- if not result.endswith(self.foot):
- return(unittest.skip('RTF Footer incorrect'))
- msg = self._build_message(t=t, result=result, expected=expected)
- self.assertTrue(result.endswith(expected+self.foot), msg)
-
- def test_double_characters(self):
- t = u'က 힣 ↕ ↕︎ 鼖'
- result = self.format_rtf(t)
- expected = (r'{\u4096} {\u55203} {\u8597} '
- r'{\u8597}{\u65038} {\u55422}{\u56859}')
- if not result.endswith(self.foot):
- return(unittest.skip('RTF Footer incorrect'))
- msg = self._build_message(t=t, result=result, expected=expected)
- self.assertTrue(result.endswith(expected+self.foot), msg)
+foot = (r'\par' '\n' r'}')
+
+
+def _escape(string):
+ return string.replace("\n", r"\n")
+
+
+def _build_message(*args, **kwargs):
+ string = kwargs.get('string', None)
+ t = _escape(kwargs.get('t', ''))
+ expected = _escape(kwargs.get('expected', ''))
+ result = _escape(kwargs.get('result', ''))
+
+ if string is None:
+ string = (u"The expected output of '{t}'\n"
+ u"\t\tShould be '{expected}'\n"
+ u"\t\tActually outputs '{result}'\n"
+ u"\t(WARNING: Partial Output of Result!)")
+
+ end = -len(_escape(foot))
+ start = end - len(expected)
+
+ return string.format(t=t,
+ result = result[start:end],
+ expected = expected)
+
+
+def format_rtf(t):
+ tokensource = list(TextLexer().get_tokens(t))
+ fmt = RtfFormatter()
+ buf = StringIO()
+ fmt.format(tokensource, buf)
+ result = buf.getvalue()
+ buf.close()
+ return result
+
+
+def test_rtf_header():
+ t = u''
+ result = format_rtf(t)
+ expected = r'{\rtf1\ansi\uc0'
+ msg = (u"RTF documents are expected to start with '{expected}'\n"
+ u"\t\tStarts intead with '{result}'\n"
+ u"\t(WARNING: Partial Output of Result!)".format(
+ expected=expected,
+ result=result[:len(expected)]))
+ assert result.startswith(expected), msg
+
+
+def test_rtf_footer():
+ t = u''
+ result = format_rtf(t)
+ expected = ''
+ msg = (u"RTF documents are expected to end with '{expected}'\n"
+ u"\t\tEnds intead with '{result}'\n"
+ u"\t(WARNING: Partial Output of Result!)".format(
+ expected=_escape(expected),
+ result=_escape(result[-len(expected):])))
+ assert result.endswith(expected+foot), msg
+
+
+def test_ascii_characters():
+ t = u'a b c d ~'
+ result = format_rtf(t)
+ expected = (r'a b c d ~')
+ msg = _build_message(t=t, result=result, expected=expected)
+ assert result.endswith(expected+foot), msg
+
+
+def test_escape_characters():
+ t = u'\\ {{'
+ result = format_rtf(t)
+ expected = r'\\ \{\{'
+ msg = _build_message(t=t, result=result, expected=expected)
+ assert result.endswith(expected+foot), msg
+
+
+def test_single_characters():
+ t = u'â € ¤ каждой'
+ result = format_rtf(t)
+ expected = (r'{\u226} {\u8364} {\u164} '
+ r'{\u1082}{\u1072}{\u1078}{\u1076}{\u1086}{\u1081}')
+ msg = _build_message(t=t, result=result, expected=expected)
+ assert result.endswith(expected+foot), msg
+
+
+def test_double_characters():
+ t = u'က 힣 ↕ ↕︎ 鼖'
+ result = format_rtf(t)
+ expected = (r'{\u4096} {\u55203} {\u8597} '
+ r'{\u8597}{\u65038} {\u55422}{\u56859}')
+ msg = _build_message(t=t, result=result, expected=expected)
+ assert result.endswith(expected+foot), msg