[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