diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py
new file mode 100644
index 0000000..0e3b03d
--- /dev/null
+++ b/Lib/test/test_io.py
@@ -0,0 +1,62 @@
+import unittest
+from test import test_support
+
+import io
+
+class IOTest(unittest.TestCase):
+
+    def write_ops(self, f):
+        f.write(b"blah.")
+        f.seek(0)
+        f.write(b"Hello.")
+        self.assertEqual(f.tell(), 6)
+        f.seek(-1, 1)
+        self.assertEqual(f.tell(), 5)
+        f.write(" world\n\n\n")
+        f.seek(0)
+        f.write("h")
+        f.seek(-2, 2)
+        f.truncate()
+
+    def read_ops(self, f):
+        data = f.read(5)
+        self.assertEqual(data, b"hello")
+        f.readinto(data)
+        self.assertEqual(data, b" worl")
+        f.readinto(data)
+        self.assertEqual(data, b"d\n")
+        f.seek(0)
+        self.assertEqual(f.read(20), b"hello world\n")
+        f.seek(-6, 2)
+        self.assertEqual(f.read(5), b"world")
+        f.seek(-6, 1)
+        self.assertEqual(f.read(5), b" worl")
+        self.assertEqual(f.tell(), 10)
+
+    def test_raw_file_io(self):
+        f = io.open(test_support.TESTFN, "wb", buffering=0)
+        self.assertEqual(f.readable(), False)
+        self.assertEqual(f.writable(), True)
+        self.assertEqual(f.seekable(), True)
+        self.write_ops(f)
+        f.close()
+        f = io.open(test_support.TESTFN, "rb", buffering=0)
+        self.assertEqual(f.readable(), True)
+        self.assertEqual(f.writable(), False)
+        self.assertEqual(f.seekable(), True)
+        self.read_ops(f)
+        f.close()
+
+    def test_raw_bytes_io(self):
+        f = io.BytesIO()
+        self.write_ops(f)
+        data = f.getvalue()
+        self.assertEqual(data, b"hello world\n")
+        f = io.BytesIO(data)
+        self.read_ops(f)
+
+def test_main():
+    test_support.run_unittest(IOTest)
+
+if __name__ == "__main__":
+    test_main()
