Commit e6b9071b authored by Antoine Pitrou's avatar Antoine Pitrou

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

Original patch by Felipe Cruz.
parent bf35a19a
...@@ -9,6 +9,7 @@ from weakref import proxy ...@@ -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): ...@@ -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()
......
...@@ -32,7 +32,7 @@ import errno ...@@ -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): ...@@ -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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment