From 78e761eafe670ce06aca7723f239e9e52d30296f Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Tue, 16 Oct 2012 22:57:11 +0200 Subject: [PATCH] Add tests for the writelines() method of file objects. Original patch by Felipe Cruz. --- Lib/test/test_fileio.py | 21 +++++++++++++++++++++ Lib/test/test_io.py | 23 +++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/Lib/test/test_fileio.py b/Lib/test/test_fileio.py index c6863d6e7c1..71ec44c31e7 100644 --- a/Lib/test/test_fileio.py +++ b/Lib/test/test_fileio.py @@ -9,6 +9,7 @@ import unittest from array import array from weakref import proxy 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 py3k_bytes as bytes @@ -71,6 +72,26 @@ class AutoFileTests(unittest.TestCase): n = self.f.readinto(a) 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): self.f.write(b"hi\nbye\nabc") self.f.close() diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index e4507e444fc..a5d87b9d1c5 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -34,6 +34,7 @@ import signal import errno from itertools import cycle, count from collections import deque +from UserList import UserList from test import test_support as support import codecs @@ -1126,6 +1127,28 @@ class BufferedWriterTest(unittest.TestCase, CommonBufferedTests): bufio.flush() 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): writer = self.MockRawIO() bufio = self.tp(writer, 8)