[Python-checkins] r57226 - python/branches/alex-py3k/Lib/test/test_memoryio.py

alexandre.vassalotti python-checkins at python.org
Tue Aug 21 01:59:32 CEST 2007


Author: alexandre.vassalotti
Date: Tue Aug 21 01:59:31 2007
New Revision: 57226

Modified:
   python/branches/alex-py3k/Lib/test/test_memoryio.py
Log:
Test seek() more thoroughly.
Move test_overseek into MemoryTestMixin.
Add test_relative_seek.
Add test_read1.


Modified: python/branches/alex-py3k/Lib/test/test_memoryio.py
==============================================================================
--- python/branches/alex-py3k/Lib/test/test_memoryio.py	(original)
+++ python/branches/alex-py3k/Lib/test/test_memoryio.py	Tue Aug 21 01:59:31 2007
@@ -59,6 +59,7 @@
         buf = self.buftype("1234567890")
         memio = self.ioclass(buf)
 
+        self.assertRaises(ValueError, memio.truncate, -1)
         memio.seek(6)
         self.assertEqual(memio.truncate(), 6)
         self.assertEqual(memio.getvalue(), buf[:6])
@@ -67,8 +68,6 @@
         self.assertEqual(memio.tell(), 4)
         memio.write(buf)
         self.assertEqual(memio.getvalue(), buf[:4] + buf)
-        # XXX Should truncate() fail when given a negative argument?
-        #self.assertRaises(ValueError, memio.truncate, -1)
         memio.close()
         memio.truncate(0)
 
@@ -80,6 +79,7 @@
         buf = self.buftype("1234567890")
         memio = self.ioclass(buf)
 
+        self.assertEqual(memio.read(0), self.EOF)
         self.assertEqual(memio.read(1), buf[:1])
         self.assertEqual(memio.read(4), buf[1:5])
         self.assertEqual(memio.read(900), buf[5:])
@@ -88,6 +88,8 @@
         self.assertEqual(memio.read(), buf)
         self.assertEqual(memio.read(), self.EOF)
         self.assertEqual(memio.tell(), 10)
+        memio.seek(0)
+        self.assertEqual(memio.read(-1), buf)
         memio.close()
         memio.read()
 
@@ -95,6 +97,7 @@
         buf = self.buftype("1234567890\n")
         memio = self.ioclass(buf * 2)
 
+        self.assertEqual(memio.readline(0), self.EOF)
         self.assertEqual(memio.readline(), buf)
         self.assertEqual(memio.readline(), buf)
         self.assertEqual(memio.readline(), self.EOF)
@@ -102,6 +105,10 @@
         self.assertEqual(memio.readline(5), buf[:5])
         self.assertEqual(memio.readline(5), buf[5:10])
         self.assertEqual(memio.readline(5), buf[10:15])
+        memio.seek(0)
+        self.assertEqual(memio.readline(-1), buf)
+        memio.seek(0)
+        self.assertEqual(memio.readline(0), self.EOF)
         memio.close()
         memio.readline()
 
@@ -114,6 +121,10 @@
         self.assertEqual(memio.readlines(), [buf[5:]] + [buf] * 9)
         memio.seek(0)
         self.assertEqual(memio.readlines(15), [buf] * 2)
+        memio.seek(0)
+        self.assertEqual(memio.readlines(-1), [buf] * 10)
+        memio.seek(0)
+        self.assertEqual(memio.readlines(0), [buf] * 10)
         memio.close()
         memio.readlines()
 
@@ -160,17 +171,37 @@
         memio = self.ioclass(buf)
 
         memio.read(5)
-        memio.seek(0)
-        self.assertEqual(buf, memio.read())
-        memio.seek(3)
-        self.assertEqual(buf[3:], memio.read())
-        memio.seek(-3, 1)
-        self.assertEqual(buf[-3:], memio.read())
-        memio.seek(-3, 2)
-        self.assertEqual(buf[-3:], memio.read())
+        self.assertRaises(ValueError, memio.seek, -1)
+        self.assertRaises(ValueError, memio.seek, 1, -1)
+        self.assertRaises(ValueError, memio.seek, 1, 3)
+        self.assertEqual(memio.seek(0), 0)
+        self.assertEqual(memio.seek(0, 0), 0)
+        self.assertEqual(memio.read(), buf)
+        self.assertEqual(memio.seek(3), 3)
+        self.assertEqual(memio.seek(0, 1), 3)
+        self.assertEqual(memio.read(), buf[3:])
+        self.assertEqual(memio.seek(len(buf)), len(buf))
+        self.assertEqual(memio.read(), self.EOF)
+        memio.seek(len(buf) + 1)
+        self.assertEqual(memio.read(), self.EOF)
+        self.assertEqual(memio.seek(0, 2), len(buf))
+        self.assertEqual(memio.read(), self.EOF)
         memio.close()
         memio.seek(0)
 
+    def test_overseek(self):
+        buf = self.buftype("1234567890")
+        memio = self.ioclass(buf)
+
+        self.assertEqual(memio.seek(len(buf) + 1), 11)
+        self.assertEqual(memio.read(), self.EOF)
+        self.assertEqual(memio.tell(), 11)
+        self.assertEqual(memio.getvalue(), buf)
+        memio.write(self.EOF)
+        self.assertEqual(memio.getvalue(), buf)
+        memio.write(buf)
+        self.assertEqual(memio.getvalue(), buf + self.buftype('\0') + buf)
+
     def test_tell(self):
         buf = self.buftype("1234567890")
         memio = self.ioclass(buf)
@@ -230,6 +261,7 @@
 
         self.assertEqual(memio.read(None), self.EOF)
         self.assertEqual(memio.readline(None), self.EOF)
+        self.assertEqual(memio.readlines(None), [])
         self.assertEqual(memio.truncate(None), 0)
 
 
@@ -238,6 +270,13 @@
     ioclass = io._BytesIO
     EOF = b""
 
+    def test_read1(self):
+        buf = self.buftype("1234567890")
+        memio = self.ioclass(buf)
+
+        self.assertRaises(TypeError, memio.read1)
+        self.assertEqual(memio.read(), buf)
+
     def test_readinto(self):
         buf = self.buftype("1234567890")
         memio = self.ioclass(buf)
@@ -260,13 +299,21 @@
         memio.close()
         memio.readinto(b)
 
-    def test_overseek(self):
+    def test_relative_seek(self):
         buf = self.buftype("1234567890")
-        memio = self.ioclass()
+        memio = self.ioclass(buf)
 
-        memio.seek(2)
-        memio.write(buf)
-        self.assertEqual(memio.getvalue(), self.buftype('\0\0') + buf)
+        self.assertEqual(memio.seek(-1, 1), 0)
+        self.assertEqual(memio.seek(3, 1), 3)
+        self.assertEqual(memio.seek(-4, 1), 0)
+        self.assertEqual(memio.seek(-1, 2), 9)
+        self.assertEqual(memio.seek(1, 1), 10)
+        self.assertEqual(memio.seek(1, 2), 11)
+        memio.seek(-3, 2)
+        self.assertEqual(memio.read(), buf[-3:])
+        memio.seek(0)
+        memio.seek(1, 1)
+        self.assertEqual(memio.read(), buf[1:])
 
     def test_unicode(self):
         buf = "1234567890"
@@ -296,6 +343,16 @@
         self.assertEqual(memio.getvalue(), self.buftype(buf + buf))
         self.write_ops(self.ioclass(), str8)
 
+    def test_relative_seek(self):
+        memio = self.ioclass()
+
+        self.assertRaises(IOError, memio.seek, -1, 1)
+        self.assertRaises(IOError, memio.seek, 3, 1)
+        self.assertRaises(IOError, memio.seek, -3, 1)
+        self.assertRaises(IOError, memio.seek, -1, 2)
+        self.assertRaises(IOError, memio.seek, 1, 1)
+        self.assertRaises(IOError, memio.seek, 1, 2)
+
 if has_c_implementation:
     class CBytesIOTest(PyBytesIOTest):
         ioclass = _bytesio.BytesIO


More information about the Python-checkins mailing list