#! /usr/bin/env python # Author: David Goodger # Contact: goodger@users.sourceforge.net # Revision: $Revision$ # Date: $Date$ # 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". """], [u"""\ Substitutions support case differences: .. |eacute| replace:: \u00E9 .. |Eacute| replace:: \u00C9 |Eacute|\\t\\ |eacute|, and even |EACUTE|. """, u"""\ Substitutions support case differences: \u00E9 \u00C9 \u00C9 t \u00E9 , and even \n\ \u00C9 . """], [u"""\ 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 """, u"""\ 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 #""", #u"""\ # # # \xab # # \xbb # # # l # # . # # r # # 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 #"""], ]) 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 """, u"""\ 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 """, u"""\ 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 trimming on one side. .. |---| unicode:: U+02014 :trim: .. |TM| unicode:: U+02122 :ltrim: """, u"""\ Insert an em-dash \u2014 automatically trimming whitespace. Some substitutions \u2122 only need trimming on one side. \u2014 \u2122 """], ]) if __name__ == '__main__': import unittest unittest.main(defaultTest='suite')