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 6603118125
commit 131a489903
2 changed files with 46 additions and 1 deletions

View file

@ -9,6 +9,7 @@ from weakref import proxy
from functools import wraps from functools import wraps
from test.support import TESTFN, check_warnings, run_unittest, make_bad_fd from test.support import TESTFN, check_warnings, run_unittest, make_bad_fd
from collections import UserList
from _io import FileIO as _FileIO from _io import FileIO as _FileIO
@ -67,6 +68,27 @@ class AutoFileTests(unittest.TestCase):
n = self.f.readinto(a) n = self.f.readinto(a)
self.assertEqual(array('b', [1, 2]), a[:n]) self.assertEqual(array('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)
self.assertRaises(TypeError, self.f.writelines, "abc")
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

@ -32,7 +32,7 @@ import errno
import warnings import warnings
import pickle import pickle
from itertools import cycle, count from itertools import cycle, count
from collections import deque from collections import deque, UserList
from test import support from test import support
import codecs import codecs
@ -1177,6 +1177,29 @@ 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)
self.assertRaises(TypeError, bufio.writelines, 'abc')
def test_destructor(self): def test_destructor(self):
writer = self.MockRawIO() writer = self.MockRawIO()
bufio = self.tp(writer, 8) bufio = self.tp(writer, 8)