quixote/test test_html.py,NONE,1.1

Neil Schemenauer <nascheme-fVcApmY9cLvQ3/1i3zOLAti2O/[email protected]>
Newsgroups gmane.comp.web.quixote.cvs
Message-ID <[email protected]>
Update of /home/cvs/quixote/test
In directory hewson:/tmp/cvs-serv1948/test

Added Files:
	test_html.py 
Log Message:
Basic tests for htmltext and htmlescape.


--- NEW FILE: test_html.py ---
from sancho.unittest import TestScenario, parse_args, run_scenarios
from quixote.html import htmltext, htmlescape

tested_modules = [ "quixote.html" ]

class Wrapper:
    def __init__ (self, s):
        self.s = s

    def __repr__ (self):
        return self.s

    def __str__ (self):
        return self.s

markupchars = '<>&"'
quotedchars = '&lt;&gt;&amp;&quot;'

class HTMLTest (TestScenario):

    def setup (self):
        pass

    def shutdown (self):
        pass


    def check_init (self):
        self.test_val("str(htmltext('foo'))", 'foo')
        self.test_val("str(htmltext(markupchars))", markupchars)
        self.test_val("str(htmltext(None))", 'None')
        self.test_val("str(htmltext(1))", '1')

    def check_quote (self):
        self.test_val("htmlescape(markupchars)", quotedchars)
        self.test_val("htmltext.quote(markupchars)", quotedchars)
        self.test_val("htmlescape(htmlescape(markupchars))", quotedchars)
        
    def check_cmp (self):
        s = htmltext("foo")
        self.test_bool("s == 'foo'")
        self.test_bool("s != 'bar'")

    def check_len (self):
        self.test_val("len(htmltext('foo'))", 3)
        self.test_val("len(htmltext(markupchars))", len(markupchars))
        self.test_val("len(htmlescape(markupchars))", len(quotedchars))

    def check_hash (self):
        self.test_val("hash(htmltext('foo'))", hash('foo'))
        self.test_val("hash(htmltext(markupchars))", hash(markupchars))
        self.test_val("hash(htmlescape(markupchars))", hash(quotedchars))
        
    def check_concat (self):
        s = htmltext("foo")
        self.test_val("s + 'bar'", "foobar")
        self.test_val("'bar' + s", "barfoo")
        self.test_val("s + htmltext('bar')", "foobar")
        self.test_val("s + markupchars", "foo" + quotedchars)
        self.test_val("markupchars + s", quotedchars + "foo")

    def check_repeat (self):
        self.test_val("htmltext('a') * 3", "aaa")
        self.test_val("htmlescape(markupchars) * 3", quotedchars * 3)
        
    def check_format (self):
        self.test_val("htmltext('%s') % 'foo'", "foo")
        self.test_val("htmltext('%s') % markupchars", quotedchars)
        self.test_val("htmltext('%s') % None", "None")
        self.test_val("htmltext('%r') % Wrapper(markupchars)", quotedchars)
        self.test_val("htmltext('%s%s') % ('foo', htmltext(markupchars))",
                      "foo" + markupchars)
        self.test_val("htmltext('%d') % 10", "10")
        self.test_val("htmltext('%.1f') % 10", "10.0")

    def check_dict_format (self):
        self.test_val("htmltext('%(a)s %(a)r %(b)s') % "
                      " {'a': 'foo', 'b': htmltext('bar')}", "foo 'foo' bar")

    def check_join (self):
        self.test_val("htmltext(' ').join(['foo', 'bar'])", "foo bar")
        self.test_val("htmltext(' ').join(['foo', markupchars])",
                      "foo " + quotedchars)
        self.test_val("htmlescape(markupchars).join(['foo', 'bar'])",
                      "foo" + quotedchars + "bar")
        self.test_val("htmltext(' ').join([htmltext(markupchars), 'bar'])",
                      markupchars + " bar")

    def check_startswith (self):
        self.test_bool("htmltext('foo').startswith('fo')")
        self.test_bool("htmlescape(markupchars).startswith(markupchars[:3])")
        self.test_bool("htmltext(markupchars).startswith("
                       "  htmltext(markupchars[:3]))")

    def check_endswith (self):
        self.test_bool("htmltext('foo').endswith('oo')")
        self.test_bool("htmlescape(markupchars).endswith(markupchars[-3:])")
        self.test_bool("htmltext(markupchars).endswith("
                       "  htmltext(markupchars[-3:]))")
        
    def check_replace (self):
        self.test_val("htmlescape('&').replace('&', 'foo')", "foo")
        self.test_val("htmltext('&').replace(htmltext('&'), 'foo')", "foo")
        self.test_val("htmltext('foo').replace('foo', htmltext('&'))", "&")

        

if __name__ == "__main__":
    (scenarios, options) = parse_args()
    run_scenarios (scenarios, options)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.