[pypy-svn] r30225 - in pypy/dist/pypy/module/mmap: . test

rhymes at codespeak.net rhymes at codespeak.net
Wed Jul 19 14:34:13 CEST 2006


Author: rhymes
Date: Wed Jul 19 14:34:10 2006
New Revision: 30225

Modified:
   pypy/dist/pypy/module/mmap/interp_mmap.py
   pypy/dist/pypy/module/mmap/test/test_mmap.py
Log:
tell() and size()

Modified: pypy/dist/pypy/module/mmap/interp_mmap.py
==============================================================================
--- pypy/dist/pypy/module/mmap/interp_mmap.py	(original)
+++ pypy/dist/pypy/module/mmap/interp_mmap.py	Wed Jul 19 14:34:10 2006
@@ -295,6 +295,30 @@
         
         self._pos = where
     seek.unwrap_spec = ['self', int, int]
+    
+    def tell(self):
+        self._check_valid()
+        
+        return self.space.wrap(self._pos)
+    tell.unwrap_spec = ['self']
+    
+    def size(self):
+        self._check_valid()
+        
+        # if _MS_WINDOWS:
+        #     if self._file_handle.value != _INVALID_HANDLE_VALUE:
+        #         low, high = _get_file_size(self._file_handle)
+        #         if not high and low.value < sys.maxint:
+        #             return int(low.value)
+        #         size = (long(high.value) << 32) + low.value
+        #         return long(size)
+        #     else:
+        #         return self._size
+        if _POSIX:
+            st = os.fstat(self._fd)
+            SIZE_BIT = 6
+            return self.space.wrap(st[SIZE_BIT])
+    size.unwrap_spec = ['self']
 
 
 _mmap.typedef = TypeDef("_mmap",
@@ -312,7 +336,9 @@
         unwrap_spec=_mmap.readline.unwrap_spec),
     read = interp2app(_mmap.read, unwrap_spec=_mmap.read.unwrap_spec),
     find = interp2app(_mmap.find, unwrap_spec=_mmap.find.unwrap_spec),
-    seek = interp2app(_mmap.seek, unwrap_spec=_mmap.seek.unwrap_spec)
+    seek = interp2app(_mmap.seek, unwrap_spec=_mmap.seek.unwrap_spec),
+    tell = interp2app(_mmap.tell, unwrap_spec=_mmap.tell.unwrap_spec),
+    size = interp2app(_mmap.size, unwrap_spec=_mmap.size.unwrap_spec),
 )
 
 def _check_map_size(space, size):

Modified: pypy/dist/pypy/module/mmap/test/test_mmap.py
==============================================================================
--- pypy/dist/pypy/module/mmap/test/test_mmap.py	(original)
+++ pypy/dist/pypy/module/mmap/test/test_mmap.py	Wed Jul 19 14:34:10 2006
@@ -172,15 +172,16 @@
         raises(ValueError, m.seek, 1, 3)
         raises(ValueError, m.seek, 10)
         m.seek(0)
+        assert m.tell() == 0
+        m.read(1)
+        m.seek(1, 1)
+        assert m.tell() == 2
+        m.seek(0)
+        m.seek(-1, 2)
+        assert m.tell() == 5
         m.close()
         f.close()
-        # assert m.tell() == 0
-        # m.read(1)
-        # m.seek(1, 1)
-        # assert m.tell() == 2
-        # m.seek(0)
-        # m.seek(-1, 2)
-        # assert m.tell() == 5
+
 # 
 #     def test_write(self):
 #         self.f.seek(0)
@@ -209,19 +210,28 @@
 #         m.seek(0)
 #         assert m.read(6) == "xoobar"
 #         m.close()
-# 
-#     def test_size(self):
-#         self.f.seek(0)
-#         self.f.write("foobar")
-#         self.f.flush()
-#         m = mmap(self.f.fileno(), 5)
-#         assert m.size() > m._size
-#         m.close()
-# 
-#     def test_tell(self):
-#         m = mmap(self.f.fileno(), 1)
-#         assert m.tell() >= 0
-#         m.close()
+
+    def test_size(self):
+        from mmap import mmap
+        f = open("foo", "w+")
+        
+        f.write("foobar")
+        f.flush()
+        m = mmap(f.fileno(), 5)
+        assert m.size() == 6 # size of the underline file, not the mmap
+        m.close()
+        f.close()
+
+    def test_tell(self):
+        from mmap import mmap
+        f = open("foo", "w+")
+        
+        f.write("c")
+        f.flush()
+        m = mmap(f.fileno(), 1)
+        assert m.tell() >= 0
+        m.close()
+        f.close()
 # 
 #     def test_flush(self):
 #         self.f.seek(0)



More information about the Pypy-commit mailing list