4 # Author: Felix Wiemann <Felix.Wiemann@ososo.de>
5 # Copyright: This module has been placed in the public domain.
12 import DocutilsTestSupport
# must be imported before docutils
13 from docutils
import io
16 class InputTests(unittest
.TestCase
):
19 input = io
.StringInput(source
='\xef\xbb\xbf foo \xef\xbb\xbf bar',
21 # Assert BOMs are gone.
22 self
.assertEquals(input.read(), u
' foo bar')
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 -*-
35 self
.assertEquals(input.successful_encoding
, 'ascii')
36 input = io
.StringInput(source
="""\
38 # -*- coding: ascii -*-
42 self
.assertEquals(input.successful_encoding
, 'ascii')
43 input = io
.StringInput(source
="""\
45 # extraneous comment; prevents coding slug from being read
46 # -*- coding: ascii -*-
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'))
56 self
.assertEquals(input.successful_encoding
, 'utf-16-be')
57 input = io
.StringInput(source
=source
.encode('utf-16-le'))
59 self
.assertEquals(input.successful_encoding
, 'utf-16-le')
60 input = io
.StringInput(source
=source
.encode('utf-8'))
62 self
.assertEquals(input.successful_encoding
, 'utf-8')
65 if __name__
== '__main__':