#----------------------------------------------------------------------------- # 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 ..citation import citation2latex from nose.tools import assert_equal #----------------------------------------------------------------------------- # Tests #----------------------------------------------------------------------------- test_md = {""" # My Heading Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ac magna non augue porttitor scelerisque ac id diam Granger. Mauris elit velit, lobortis sed interdum at, vestibulum vitae libero Perez. Lorem ipsum dolor sit amet, consectetur adipiscing elit Thomas. Quisque iaculis ligula ut ipsum mattis viverra.

Here is a plain paragraph that should be unaffected. It contains simple relations like 1<2 & 4>5.

* One Jonathan. * Two Matthias. * Three Paul. """: """ # My Heading Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ac magna non augue porttitor scelerisque ac id diam \cite{granger}. Mauris elit velit, lobortis sed interdum at, vestibulum vitae libero \cite{fperez}. Lorem ipsum dolor sit amet, consectetur adipiscing elit \cite{takluyver}. Quisque iaculis ligula ut ipsum mattis viverra.

Here is a plain paragraph that should be unaffected. It contains simple relations like 1<2 & 4>5.

* One \cite{jdfreder}. * Two \cite{carreau}. * Three \cite{ivanov}. """, # No citations r"""The quick brown fox jumps over the lazy dog.""": r"""The quick brown fox jumps over the lazy dog.""", # Simple inline r"""Foo Text bar""": r"""Foo \cite{asdf} bar""", # Multiline r"""Text Foo""": r"""\cite{ewqr}Foo""", # Nested tags r"""
Text
Bar""": r"""
\cite{Foo}
Bar""", # Including Maths r"""Foo $3*2*1$
Text
Bar""": r"""Foo $3*2*1$ \cite{Foo} Bar""", # Missing end tag r"""Test Foo""": r"""\cite{asdf}""", r"""Test Foo""": r"""\cite{asdf}""", r"""Test Foo""": r"""\cite{asdf}""", # Multiple arguments r"""Test Foo""": r"""\cite{asdf} Foo""", # Wrong capitalization r"""Test Foo""": r"""\cite{asdf} Foo""", r"""Test Foo""": r"""\cite{asdf} Foo""", # Wrong end tag r""" ksjfs sdf ds """: r"""\cite{wer}""", r"""""": r"""\cite{wer}""", # Invalid tag names r""" """: r""" \cite{wer}""", # Non-nested tags r"""

Test Foo

""": r"""

\cite{asdf}Test Foo

""", # LXML errors r"""Foo \begin{eqnarray} 1 & bar1 \\ 3 & 4 \\ \end{eqnarray}""": r"""Foo \begin{eqnarray} 1 & \cite{bar} \\ 3 & 4 \\ \end{eqnarray}""", r""" 1<2 is true, but 3>4 is false. $1<2$ is true, but $3>4$ is false. 1<2 it is even worse if it is alone in a line.""": r""" 1<2 is true, but 3>4 is false. $1<2$ is true, but $3>4$ is false. 1<2 it is even worse if it is alone in a line.""", r""" 1 < 2 is true, but 3 > 4 is false $1 < 2$ is true, but $3 > 4$ is false 1 < 2 it is even worse if it is alone in a line. """: r""" 1 < 2 is true, but 3 > 4 is false $1 < 2$ is true, but $3 > 4$ is false 1 < 2 it is even worse if it is alone in a line. """} def test_citation2latex(): """Are citations parsed properly?""" for input, output in test_md.items(): yield (assert_equal, citation2latex(input), output)