Added enumlist styles (loweralpha, lowerroman, etc).
[docutils.git] / test / test_io.py
blobdfcd0f3c7a81cca365664e51869861da56277d8f
1 #! /usr/bin/env python
3 # $Id$
4 # Author: Lea Wiemann <LeWiemann@gmail.com>
5 # Copyright: This module has been placed in the public domain.
7 """
8 Test module for io.py.
9 """
11 import unittest
12 import DocutilsTestSupport # must be imported before docutils
13 from docutils import io
16 class InputTests(unittest.TestCase):
18 def test_bom(self):
19 input = io.StringInput(source='\xef\xbb\xbf foo \xef\xbb\xbf bar',
20 encoding='utf8')
21 # Assert BOMs are gone.
22 self.assertEquals(input.read(), u' foo bar')
23 # With unicode input:
24 input = io.StringInput(source=u'\ufeff foo \ufeff bar')
25 # Assert BOMs are still there.
26 self.assertEquals(input.read(), u'\ufeff foo \ufeff bar')
28 def test_coding_slug(self):
29 input = io.StringInput(source="""\
30 .. -*- coding: ascii -*-
31 data
32 blah
33 """)
34 data = input.read()
35 self.assertEquals(input.successful_encoding, 'ascii')
36 input = io.StringInput(source="""\
37 #! python
38 # -*- coding: ascii -*-
39 print "hello world"
40 """)
41 data = input.read()
42 self.assertEquals(input.successful_encoding, 'ascii')
43 input = io.StringInput(source="""\
44 #! python
45 # extraneous comment; prevents coding slug from being read
46 # -*- coding: ascii -*-
47 print "hello world"
48 """)
49 data = input.read()
50 self.assertNotEquals(input.successful_encoding, 'ascii')
52 def test_bom_detection(self):
53 source = u'\ufeffdata\nblah\n'
54 input = io.StringInput(source=source.encode('utf-16-be'))
55 data = input.read()
56 self.assertEquals(input.successful_encoding, 'utf-16-be')
57 input = io.StringInput(source=source.encode('utf-16-le'))
58 data = input.read()
59 self.assertEquals(input.successful_encoding, 'utf-16-le')
60 input = io.StringInput(source=source.encode('utf-8'))
61 data = input.read()
62 self.assertEquals(input.successful_encoding, 'utf-8')
65 if __name__ == '__main__':
66 unittest.main()