blob: 9a4f35f2166608aa9dd73105f533b9801b67cd27 [file] [log] [blame]
Barry Warsaw04f357c2002-07-23 19:04:11 +00001from test import test_support
2import unittest
Marc-André Lemburga37171d2001-06-19 20:09:28 +00003import codecs
4import StringIO
5
6class UTF16Test(unittest.TestCase):
7
8 spamle = '\xff\xfes\x00p\x00a\x00m\x00s\x00p\x00a\x00m\x00'
9 spambe = '\xfe\xff\x00s\x00p\x00a\x00m\x00s\x00p\x00a\x00m'
10
11 def test_only_one_bom(self):
12 _,_,reader,writer = codecs.lookup("utf-16")
13 # encode some stream
14 s = StringIO.StringIO()
15 f = writer(s)
16 f.write(u"spam")
17 f.write(u"spam")
18 d = s.getvalue()
19 # check whether there is exactly one BOM in it
20 self.assert_(d == self.spamle or d == self.spambe)
21 # try to read it back
22 s = StringIO.StringIO(d)
23 f = reader(s)
24 self.assertEquals(f.read(), u"spamspam")
25
Walter Dörwald8709a422002-09-03 13:53:40 +000026class EscapeDecodeTest(unittest.TestCase):
27 def test_empty_escape_decode(self):
28 self.assertEquals(codecs.escape_decode(""), ("", 0))
29
Marc-André Lemburg29273c82003-02-04 19:35:03 +000030class RecodingTest(unittest.TestCase):
31 def test_recoding(self):
32 f = StringIO.StringIO()
33 f2 = codecs.EncodedFile(f, "unicode_internal", "utf-8")
34 f2.write(u"a")
35 f2.close()
36 # Python used to crash on this at exit because of a refcount
37 # bug in _codecsmodule.c
Fred Drake2e2be372001-09-20 21:33:42 +000038
39def test_main():
Walter Dörwald8709a422002-09-03 13:53:40 +000040 suite = unittest.TestSuite()
41 suite.addTest(unittest.makeSuite(UTF16Test))
42 suite.addTest(unittest.makeSuite(EscapeDecodeTest))
Marc-André Lemburg29273c82003-02-04 19:35:03 +000043 suite.addTest(unittest.makeSuite(RecodingTest))
Walter Dörwald8709a422002-09-03 13:53:40 +000044 test_support.run_suite(suite)
Fred Drake2e2be372001-09-20 21:33:42 +000045
46
47if __name__ == "__main__":
48 test_main()