#! /usr/bin/env python # $Id: test_substitutions.py 6351 2010-07-03 14:19:09Z gbrandl $ # Author: David Goodger # Copyright: This module has been placed in the public domain. """ Tests for docutils.transforms.references.Substitutions. """ from .__init__ import DocutilsTestSupport from docutils.transforms.references import Substitutions from docutils.parsers.rst import Parser def suite(): parser = Parser() s = DocutilsTestSupport.TransformTestSuite(parser) s.generateTests(totest) return s totest = {} totest['substitutions'] = ((Substitutions,), [ ["""\ The |biohazard| symbol is deservedly scary-looking. .. |biohazard| image:: biohazard.png """, """\ The \n\ biohazard symbol is deservedly scary-looking. biohazard """], ["""\ Here's an |unknown| substitution. """, """\ Here's an \n\ |unknown| substitution. Undefined substitution referenced: "unknown". """], ["""\ Substitutions support case differences: .. |eacute| replace:: \u00E9 .. |Eacute| replace:: \u00C9 |Eacute|\\t\\ |eacute|, and even |EACUTE|. """, """\ Substitutions support case differences: \u00E9 \u00C9 \u00C9 t \u00E9 , and even \n\ \u00C9 . """], ["""\ Indirect substitution definitions with multiple references: |substitute| my coke for gin |substitute| you for my mum at least I'll get my washing done .. |substitute| replace:: |replace| .. |replace| replace:: swap """, """\ Indirect substitution definitions with multiple references: swap my coke for gin swap you for my mum at least I'll get my washing done swap swap """], ["""\ .. |l| unicode:: U+00AB .. left chevron .. |r| unicode:: U+00BB .. right chevron .. |.| replace:: |l|\ ``.``\ |r| .. Delete either of the following lines, and there is no error. Regular expression |.| will match any character .. Note:: Note that |.| matches *exactly* one character """, """\ \xab \xbb \xab . \xbb Delete either of the following lines, and there is no error. Regular expression \n\ \xab . \xbb will match any character Note that \n\ \xab . \xbb matches \n\ exactly one character """], ["""\ .. |sub| replace:: |sub| """, """\ Circular substitution definition detected: .. |sub| replace:: |sub| """], ["""\ .. |sub| replace:: |indirect1| .. |indirect1| replace:: |indirect2| .. |indirect2| replace:: |Sub| """, """\ Circular substitution definition detected: .. |sub| replace:: |indirect1| Circular substitution definition detected: .. |indirect1| replace:: |indirect2| Circular substitution definition detected: .. |indirect2| replace:: |Sub| """], ["""\ .. |indirect1| replace:: |indirect2| .. |indirect2| replace:: |Sub| .. |sub| replace:: |indirect1| Use |sub| and |indirect1| and |sub| again (and |sub| one more time). """, """\ Circular substitution definition detected: .. |indirect1| replace:: |indirect2| Circular substitution definition detected: .. |indirect2| replace:: |Sub| Circular substitution definition detected: .. |sub| replace:: |indirect1| Use \n\ |Sub| and \n\ |indirect1| and \n\ |sub| again (and \n\ |sub| one more time). Circular substitution definition referenced: "indirect1". Circular substitution definition referenced: "sub". Circular substitution definition referenced: "sub". Circular substitution definition referenced: "Sub". """], ]) totest['unicode'] = ((Substitutions,), [ ["""\ Insert an em-dash (|mdash|), a copyright symbol (|copy|), a non-breaking space (|nbsp|), a backwards-not-equals (|bne|), and a captial omega (|Omega|). .. |mdash| unicode:: 0x02014 .. |copy| unicode:: \\u00A9 .. |nbsp| unicode::   .. |bne| unicode:: U0003D U020E5 .. |Omega| unicode:: U+003A9 """, """\ Insert an em-dash ( \u2014 ), a copyright symbol ( \u00a9 ), a non-breaking space ( \u00a0 ), a backwards-not-equals ( = \u20e5 ), and a captial omega ( \u03a9 ). \u2014 \u00a9 \u00a0 = \u20e5 \u03a9 """], [""" Testing comments and extra text. Copyright |copy| 2003, |BogusMegaCorp (TM)|. .. |copy| unicode:: 0xA9 .. copyright sign .. |BogusMegaCorp (TM)| unicode:: BogusMegaCorp U+2122 .. with trademark sign """, """\ Testing comments and extra text. Copyright \n\ \u00a9 2003, \n\ BogusMegaCorp \u2122 . \u00a9 BogusMegaCorp \u2122 """], ["""\ Insert an em-dash |---| automatically trimming whitespace. Some substitutions |TM| only need |rarrow| trimming on one side. .. |---| unicode:: U+02014 :trim: .. |TM| unicode:: U+02122 :ltrim: .. |rarrow| unicode:: U+2192 :rtrim: """, """\ Insert an em-dash \u2014 automatically trimming whitespace. Some substitutions \u2122 only need \n\ \u2192 trimming on one side. \u2014 \u2122 \u2192 """], ["""\ Substitution definition with an illegal element: .. |target| replace:: _`target` Make sure this substitution definition is not registered: |target| """, """\ Substitution definition with an illegal element: Substitution definition contains illegal element: target .. |target| replace:: _`target` Make sure this substitution definition is not registered: \n\ |target| Undefined substitution referenced: "target". """], ]) if __name__ == '__main__': import unittest unittest.main(defaultTest='suite')