Add tests for the writelines() method of file objects.

Original patch by Felipe Cruz.
This commit is contained in:
Antoine Pitrou 2012-10-16 22:57:11 +02:00
parent ce5a56e985
commit 78e761eafe
2 changed files with 44 additions and 0 deletions

View File

@ -9,6 +9,7 @@ import unittest
from array import array from array import array
from weakref import proxy from weakref import proxy
from functools import wraps from functools import wraps
from UserList import UserList
from test.test_support import TESTFN, check_warnings, run_unittest, make_bad_fd from test.test_support import TESTFN, check_warnings, run_unittest, make_bad_fd
from test.test_support import py3k_bytes as bytes from test.test_support import py3k_bytes as bytes
@ -71,6 +72,26 @@ class AutoFileTests(unittest.TestCase):
n = self.f.readinto(a) n = self.f.readinto(a)
self.assertEqual(array(b'b', [1, 2]), a[:n]) self.assertEqual(array(b'b', [1, 2]), a[:n])
def testWritelinesList(self):
l = [b'123', b'456']
self.f.writelines(l)
self.f.close()
self.f = _FileIO(TESTFN, 'rb')
buf = self.f.read()
self.assertEqual(buf, b'123456')
def testWritelinesUserList(self):
l = UserList([b'123', b'456'])
self.f.writelines(l)
self.f.close()
self.f = _FileIO(TESTFN, 'rb')
buf = self.f.read()
self.assertEqual(buf, b'123456')
def testWritelinesError(self):
self.assertRaises(TypeError, self.f.writelines, [1, 2, 3])
self.assertRaises(TypeError, self.f.writelines, None)
def test_none_args(self): def test_none_args(self):
self.f.write(b"hi\nbye\nabc") self.f.write(b"hi\nbye\nabc")
self.f.close() self.f.close()

View File

@ -34,6 +34,7 @@ import signal
import errno import errno
from itertools import cycle, count from itertools import cycle, count
from collections import deque from collections import deque
from UserList import UserList
from test import test_support as support from test import test_support as support
import codecs import codecs
@ -1126,6 +1127,28 @@ class BufferedWriterTest(unittest.TestCase, CommonBufferedTests):
bufio.flush() bufio.flush()
self.assertEqual(b"abc", writer._write_stack[0]) self.assertEqual(b"abc", writer._write_stack[0])
def test_writelines(self):
l = [b'ab', b'cd', b'ef']
writer = self.MockRawIO()
bufio = self.tp(writer, 8)
bufio.writelines(l)
bufio.flush()
self.assertEqual(b''.join(writer._write_stack), b'abcdef')
def test_writelines_userlist(self):
l = UserList([b'ab', b'cd', b'ef'])
writer = self.MockRawIO()
bufio = self.tp(writer, 8)
bufio.writelines(l)
bufio.flush()
self.assertEqual(b''.join(writer._write_stack), b'abcdef')
def test_writelines_error(self):
writer = self.MockRawIO()
bufio = self.tp(writer, 8)
self.assertRaises(TypeError, bufio.writelines, [1, 2, 3])
self.assertRaises(TypeError, bufio.writelines, None)
def test_destructor(self): def test_destructor(self):
writer = self.MockRawIO() writer = self.MockRawIO()
bufio = self.tp(writer, 8) bufio = self.tp(writer, 8)