Commit af2b04dc by Chris Jerdonek

Added Reader.unicode().

parent 43cc3d1f
......@@ -42,17 +42,18 @@ class Reader(object):
self.decode_errors = decode_errors
self.encoding = encoding
def unicode(self, text, encoding=None):
if encoding is None:
encoding = self.encoding
return unicode(text, encoding, self.decode_errors)
def read(self, path, encoding=None):
"""
Read the template at the given path, and return it as a unicode string.
"""
if encoding is None:
encoding = self.encoding
with open(path, 'r') as f:
text = f.read()
text = unicode(text, encoding, self.decode_errors)
return text
return self.unicode(text, encoding)
......@@ -36,6 +36,45 @@ class ReaderTestCase(unittest.TestCase):
reader = Reader(encoding='foo')
self.assertEquals(reader.encoding, 'foo')
def test_unicode(self):
"""
Test unicode(): default values.
"""
reader = Reader()
actual = reader.unicode("foo")
self.assertEquals(type(actual), unicode)
self.assertEquals(actual, u"foo")
def test_unicode__encoding_attribute(self):
"""
Test unicode(): encoding attribute.
"""
reader = Reader()
non_ascii = u'é'.encode('utf-8')
self.assertRaises(UnicodeDecodeError, reader.unicode, non_ascii)
reader.encoding = 'utf-8'
self.assertEquals(reader.unicode(non_ascii), u"é")
def test_unicode__encoding_argument(self):
"""
Test unicode(): encoding argument.
"""
reader = Reader()
non_ascii = u'é'.encode('utf-8')
self.assertRaises(UnicodeDecodeError, reader.unicode, non_ascii)
self.assertEquals(reader.unicode(non_ascii, encoding='utf-8'), u'é')
def test_read(self):
"""
Test read().
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment