##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
#
##############################################################################
"""
$Id: tests.py 41188 2006-01-08 09:27:48Z philikon $
"""
import sys
import os
import unittest
import StringIO
from zope.structuredtext import stng
from zope.structuredtext.document import Document, DocumentWithImages
from zope.structuredtext.html import HTML, HTMLWithImages
package_dir = os.path.dirname(stng.__file__)
regressions = os.path.join(package_dir, 'regressions')
files = ['index.stx','Acquisition.stx','ExtensionClass.stx',
'MultiMapping.stx','examples.stx','Links.stx','examples1.stx',
'table.stx','InnerLinks.stx']
def readFile(dirname,fname):
myfile = open(os.path.join(dirname, fname), "r")
lines = myfile.readlines()
myfile.close()
return ''.join(lines)
class StngTests(unittest.TestCase):
def testDocumentClass(self):
# testing Document
# *cough* *cough* this can't be enough...
for f in files:
doc = Document()
raw_text = readFile(regressions, f)
text = stng.structurize(raw_text)
self.assert_(doc(text))
def testRegressionsTests(self):
# HTML regression test
for f in files:
raw_text = readFile(regressions, f)
doc = stng.structurize(raw_text)
doc = Document()(doc)
html = HTML()(doc)
reg_fname = f.replace('.stx','.ref')
reg_html = readFile(regressions , reg_fname)
self.assertEqual(reg_html.strip(), html.strip())
class BasicTests(unittest.TestCase):
def _test(self, stxtxt, expected):
doc = stng.structurize(stxtxt)
doc = DocumentWithImages()(doc)
output = HTMLWithImages()(doc, level=1)
if not expected in output:
print "Text: ", stxtxt.encode('utf-8')
print "Converted:", output.encode('utf-8')
print "Expected: ", expected.encode('utf-8')
self.fail("'%s' not in result" % expected)
def testUnderline(self):
self._test("xx _this is html_ xx",
"xx this is html xx")
def testUnderline1(self):
self._test("xx _this is html_",
"this is html")
def testEmphasis(self):
self._test("xx *this is html* xx",
"xx this is html xx")
def testStrong(self):
self._test("xx **this is html** xx",
"xx this is html xx")
def testUnderlineThroughoutTags(self):
self._test('index_html',
'index_html')
def testUnderscoresInLiteral1(self):
self._test("def __init__(self)",
"def __init__(self)")
def testUnderscoresInLiteral2(self):
self._test("this is '__a_literal__' eh",
"__a_literal__
")
def testUnderlinesWithoutWithspaces(self):
self._test("Zopes structured_text is sometimes a night_mare",
"Zopes structured_text is sometimes a night_mare")
def testAsterisksInLiteral(self):
self._test("this is a '*literal*' eh",
"*literal*
")
def testDoubleAsterisksInLiteral(self):
self._test("this is a '**literal**' eh",
"**literal**
")
def testLinkInLiteral(self):
self._test("this is a '\"literal\":http://www.zope.org/.' eh",
'"literal":http://www.zope.org/.
')
def testLink(self):
self._test('"foo":http://www.zope.org/foo/bar',
'