2009-02-25 20:00:43 +00:00
|
|
|
#!/usr/bin/env python2.6
|
2009-01-04 22:02:59 +00:00
|
|
|
import unittest
|
2009-03-04 05:31:24 +00:00
|
|
|
from pyparsley import PyParsley
|
2009-01-05 00:32:38 +00:00
|
|
|
from inspect import currentframe
|
|
|
|
from os.path import dirname
|
2009-01-04 22:02:59 +00:00
|
|
|
|
2009-03-04 05:31:24 +00:00
|
|
|
class TestPyParsley(unittest.TestCase):
|
2009-01-04 22:02:59 +00:00
|
|
|
|
2009-01-05 00:32:38 +00:00
|
|
|
def setUp(self):
|
2009-03-04 05:31:24 +00:00
|
|
|
self.parsley = PyParsley({'title': 'title'})
|
|
|
|
self.alt_parsley = PyParsley('{"title": "title"}')
|
2009-04-02 01:29:20 +00:00
|
|
|
self.a_parsley = PyParsley({'links': ['regexp:match(a @href, ".*sign.*")']})
|
2009-01-05 00:32:38 +00:00
|
|
|
self.__file__ = currentframe().f_code.co_filename
|
|
|
|
self.__dir__ = dirname(self.__file__)
|
2009-03-04 06:22:19 +00:00
|
|
|
self.file = self.__dir__ + '/yelp.html'
|
2009-01-05 00:32:38 +00:00
|
|
|
self.json = '{ "title": "\\t\\tNick\'s Crispy Tacos - Russian Hill - San Francisco, CA\\n" }'
|
2009-04-02 01:29:20 +00:00
|
|
|
self.native = { "title": "\t\tNick's Crispy Tacos - Russian Hill - San Francisco, CA\n" }
|
|
|
|
self.links = '{ "links": [ "\\/signup?return_url=%2Fuser_details", "\\/signup?return_url=%2Fwriteareview", "\\/signup?return_url=%2Finvite_friends", "\\/signup?return_url=%2Fmail", "\\/signup?return_url=%2Fprofile", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup", "\\/signup" ] }'
|
2009-12-24 21:49:23 +00:00
|
|
|
self.unicode_string = u'\u2019blah blah blah\u2019'
|
|
|
|
self.unicode_document = u'<html><title>\u2019blah blah blah\u2019</title></html>'
|
|
|
|
|
|
|
|
def test_unicode(self):
|
|
|
|
parsed = self.parsley.parse(string = self.unicode_document.encode("utf-8"), output = "python", utf8 = 1)
|
|
|
|
self.assertEquals(parsed['title'].decode("utf-8"), self.unicode_string)
|
2009-01-05 00:32:38 +00:00
|
|
|
|
|
|
|
def test_file_xml(self):
|
2009-03-04 05:31:24 +00:00
|
|
|
parsed = self.parsley.parse(file = self.file, output = "json")
|
2009-01-05 00:32:38 +00:00
|
|
|
self.assertEquals(self.json, parsed)
|
2009-04-02 01:29:20 +00:00
|
|
|
|
|
|
|
def test_pruning(self):
|
2009-12-24 21:49:23 +00:00
|
|
|
parsed = self.a_parsley.parse(file = self.file, output = "json")
|
|
|
|
self.assertEquals(self.links, parsed)
|
2009-04-02 01:29:20 +00:00
|
|
|
|
2009-01-05 00:32:38 +00:00
|
|
|
def test_json_file_xml(self):
|
2009-03-04 05:31:24 +00:00
|
|
|
parsed = self.alt_parsley.parse(file = self.file, output = "json")
|
2009-01-05 00:32:38 +00:00
|
|
|
self.assertEquals(self.json, parsed)
|
|
|
|
|
|
|
|
def test_native(self):
|
2009-03-04 05:31:24 +00:00
|
|
|
parsed = self.alt_parsley.parse(file = self.file, output = "python")
|
2009-04-02 01:29:20 +00:00
|
|
|
self.assertEquals(self.native, parsed)
|
|
|
|
parsed = self.alt_parsley.parse(file = self.file)
|
|
|
|
self.assertEquals(self.native, parsed)
|
2009-01-04 22:02:59 +00:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
unittest.main()
|