test_highlight.py
88 lines
| 2.6 KiB
| text/x-python
|
PythonLexer
Jonathan Frederic
|
r11481 | """ | ||
Module with tests for Highlight | ||||
""" | ||||
#----------------------------------------------------------------------------- | ||||
# Copyright (c) 2013, the IPython Development Team. | ||||
# | ||||
# Distributed under the terms of the Modified BSD License. | ||||
# | ||||
# The full license is in the file COPYING.txt, distributed with this software. | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
from ...tests.base import TestsBase | ||||
MinRK
|
r15767 | from ..highlight import Highlight2HTML, Highlight2Latex | ||
Matthias BUSSONNIER
|
r13505 | from IPython.config import Config | ||
import xml | ||||
Jonathan Frederic
|
r11481 | |||
#----------------------------------------------------------------------------- | ||||
# Class | ||||
#----------------------------------------------------------------------------- | ||||
MinRK
|
r15767 | highlight2html = Highlight2HTML() | ||
Matthias BUSSONNIER
|
r13505 | highlight2latex = Highlight2Latex() | ||
c = Config() | ||||
MinRK
|
r15767 | c.Highlight2HTML.default_language='ruby' | ||
highlight2html_ruby = Highlight2HTML(config=c) | ||||
Matthias BUSSONNIER
|
r13324 | |||
Jonathan Frederic
|
r11494 | class TestHighlight(TestsBase): | ||
Jonathan Frederic
|
r11481 | """Contains test functions for highlight.py""" | ||
Jonathan Frederic
|
r11906 | #Hello world test, magics test, blank string test | ||
tests = [ | ||||
Jonathan Frederic
|
r11914 | """ | ||
#Hello World Example | ||||
def say(text): | ||||
print(text) | ||||
Jonathan Frederic
|
r11481 | |||
Matthias BUSSONNIER
|
r13505 | end | ||
Jonathan Frederic
|
r11914 | say('Hello World!') | ||
""", | ||||
""" | ||||
%%pylab | ||||
plot(x,y, 'r') | ||||
Jonathan Frederic
|
r11918 | """ | ||
Jonathan Frederic
|
r11914 | ] | ||
Jonathan Frederic
|
r11481 | |||
Jonathan Frederic
|
r11914 | tokens = [ | ||
['Hello World Example', 'say', 'text', 'print', 'def'], | ||||
['pylab', 'plot']] | ||||
Jonathan Frederic
|
r11481 | |||
Jonathan Frederic
|
r11906 | |||
def test_highlight2html(self): | ||||
Jonathan Frederic
|
r11934 | """highlight2html test""" | ||
Jonathan Frederic
|
r11906 | for index, test in enumerate(self.tests): | ||
Thomas Kluyver
|
r12373 | self._try_highlight(highlight2html, test, self.tokens[index]) | ||
Jonathan Frederic
|
r11906 | |||
def test_highlight2latex(self): | ||||
Jonathan Frederic
|
r11934 | """highlight2latex test""" | ||
Jonathan Frederic
|
r11906 | for index, test in enumerate(self.tests): | ||
Thomas Kluyver
|
r12373 | self._try_highlight(highlight2latex, test, self.tokens[index]) | ||
Jonathan Frederic
|
r11906 | |||
Matthias BUSSONNIER
|
r13505 | def test_parse_html_many_lang(self): | ||
ht = highlight2html(self.tests[0]) | ||||
rb = highlight2html_ruby(self.tests[0]) | ||||
for lang,tkns in [ | ||||
( ht, ('def','print') ), | ||||
( rb, ('def','end' ) ) | ||||
]: | ||||
root = xml.etree.ElementTree.fromstring(lang) | ||||
assert self._extract_tokens(root,'k') == set(tkns) | ||||
def _extract_tokens(self, root, cls): | ||||
return set(map(lambda x:x.text,root.findall(".//*[@class='"+cls+"']"))) | ||||
Jonathan Frederic
|
r11906 | |||
Jonathan Frederic
|
r11914 | def _try_highlight(self, method, test, tokens): | ||
Jonathan Frederic
|
r11934 | """Try highlighting source, look for key tokens""" | ||
Jonathan Frederic
|
r11914 | results = method(test) | ||
for token in tokens: | ||||
assert token in results | ||||