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

rhymes at codespeak.net rhymes at codespeak.net
Wed Jul 19 13:20:50 CEST 2006


Author: rhymes
Date: Wed Jul 19 13:20:47 2006
New Revision: 30221

Modified:
   pypy/dist/pypy/module/mmap/interp_mmap.py
   pypy/dist/pypy/module/mmap/test/test_mmap.py
Log:
read_byte()

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 13:20:47 2006
@@ -188,13 +188,27 @@
             if self._data:
                 libc.munmap(self._data, self._size)
     close.unwrap_spec = ['self']
+    
+    def read_byte(self):
+        self._check_valid()
+
+        if self._pos < self._size:
+            value = self._data[self._pos]
+            self._pos += 1
+            return self.space.wrap(value)
+        else:
+            raise OperationError(self.space.w_ValueError,
+                self.space.wrap("read byte out of range"))
+    read_byte.unwrap_spec = ['self']
 
 _mmap.typedef = TypeDef("_mmap",
     _to_str = interp2app(_mmap._to_str, unwrap_spec=_mmap._to_str.unwrap_spec),
     _check_valid = interp2app(_mmap._check_valid,
         unwrap_spec=_mmap._check_valid.unwrap_spec),
     close = interp2app(_mmap.close, unwrap_spec=_mmap.close.unwrap_spec),
-    )
+    read_byte = interp2app(_mmap.read_byte,
+        unwrap_spec=_mmap.read_byte.unwrap_spec),
+)
 
 def _check_map_size(space, size):
     if size < 0:

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 13:20:47 2006
@@ -85,13 +85,17 @@
         m.close()
         raises(ValueError, m._check_valid)
 
-#     def test_read_byte(self):
-#         self.f.write("c")
-#         self.f.flush()
-#         m = mmap(self.f.fileno(), 1)
-#         assert m.read_byte() == "c"
-#         py.test.raises(ValueError, m.read_byte)
-#         m.close()
+    def test_read_byte(self):
+        from mmap import mmap
+        f = open("foo", "w+")
+
+        f.write("c")
+        f.flush()
+        m = mmap(f.fileno(), 1)
+        assert m.read_byte() == "c"
+        raises(ValueError, m.read_byte)
+        m.close()
+        f.close()
 # 
 #     def test_readline(self):
 #         self.f.seek(0)



More information about the Pypy-commit mailing list