diff --git a/OpenSSL/test/test_rand.py b/OpenSSL/test/test_rand.py
index 05bf8c8..ecc5b97 100644
--- a/OpenSSL/test/test_rand.py
+++ b/OpenSSL/test/test_rand.py
@@ -29,6 +29,17 @@
         self.assertEqual(str(exc), "num_bytes must not be negative")
 
 
+    def test_add_wrong_args(self):
+        """
+        When called with the wrong number of arguments, or with arguments not of
+        type C{str} and C{int}, L{OpenSSL.rand.add} raises L{TypeError}.
+        """
+        self.assertRaises(TypeError, rand.add)
+        self.assertRaises(TypeError, rand.add, "foo", None)
+        self.assertRaises(TypeError, rand.add, None, 3)
+        self.assertRaises(TypeError, rand.add, "foo", 3, None)
+
+
     def test_add(self):
         """
         L{OpenSSL.rand.add} adds entropy to the PRNG.
@@ -36,6 +47,16 @@
         rand.add('hamburger', 3)
 
 
+    def test_seed_wrong_args(self):
+        """
+        When called with the wrong number of arguments, or with a non-C{str}
+        argument, L{OpenSSL.rand.seed} raises L{TypeError}.
+        """
+        self.assertRaises(TypeError, rand.seed)
+        self.assertRaises(TypeError, rand.seed, None)
+        self.assertRaises(TypeError, rand.seed, "foo", None)
+
+
     def test_seed(self):
         """
         L{OpenSSL.rand.seed} adds entropy to the PRNG.
@@ -43,6 +64,14 @@
         rand.seed('milk shake')
 
 
+    def test_status_wrong_args(self):
+        """
+        L{OpenSSL.rand.status} raises L{TypeError} when called with any
+        arguments.
+        """
+        self.assertRaises(TypeError, rand.status, None)
+
+
     def test_status(self):
         """
         L{OpenSSL.rand.status} returns C{True} if the PRNG has sufficient
@@ -54,11 +83,68 @@
         self.assertTrue(rand.status() in (1, 2))
 
 
+    def test_egd_wrong_args(self):
+        """
+        L{OpenSSL.rand.egd} raises L{TypeError} when called with the wrong
+        number of arguments or with arguments not of type C{str} and C{int}.
+        """
+        self.assertRaises(TypeError, rand.egd)
+        self.assertRaises(TypeError, rand.egd, None)
+        self.assertRaises(TypeError, rand.egd, "foo", None)
+        self.assertRaises(TypeError, rand.egd, None, 3)
+        self.assertRaises(TypeError, rand.egd, "foo", 3, None)
+
+
+    def test_egd_missing(self):
+        """
+        L{OpenSSL.rand.egd} returns C{0} if the EGD socket passed to it does not
+        exist.
+        """
+        self.assertEquals(rand.egd(self.mktemp()), 0)
+
+
+    def test_cleanup_wrong_args(self):
+        """
+        L{OpenSSL.rand.cleanup} raises L{TypeError} when called with any
+        arguments.
+        """
+        self.assertRaises(TypeError, rand.cleanup, None)
+
+
+    def test_cleanup(self):
+        """
+        L{OpenSSL.rand.cleanup} releases the memory used by the PRNG and returns
+        C{None}.
+        """
+        self.assertIdentical(rand.cleanup(), None)
+
+
+    def test_load_file_wrong_args(self):
+        """
+        L{OpenSSL.rand.load_file} raises L{TypeError} when called the wrong
+        number of arguments or arguments not of type C{str} and C{int}.
+        """
+        self.assertRaises(TypeError, rand.load_file)
+        self.assertRaises(TypeError, rand.load_file, "foo", None)
+        self.assertRaises(TypeError, rand.load_file, None, 1)
+        self.assertRaises(TypeError, rand.load_file, "foo", 1, None)
+
+
+    def test_write_file_wrong_args(self):
+        """
+        L{OpenSSL.rand.write_file} raises L{TypeError} when called with the
+        wrong number of arguments or a non-C{str} argument.
+        """
+        self.assertRaises(TypeError, rand.write_file)
+        self.assertRaises(TypeError, rand.write_file, None)
+        self.assertRaises(TypeError, rand.write_file, "foo", None)
+
+
     def test_files(self):
         """
         Test reading and writing of files via rand functions.
         """
-        # Write random bytes to a file 
+        # Write random bytes to a file
         tmpfile = self.mktemp()
         # Make sure it exists (so cleanup definitely succeeds)
         fObj = file(tmpfile, 'w')
@@ -68,7 +154,7 @@
             # Verify length of written file
             size = os.stat(tmpfile)[stat.ST_SIZE]
             self.assertEquals(size, 1024)
-            # Read random bytes from file 
+            # Read random bytes from file
             rand.load_file(tmpfile)
             rand.load_file(tmpfile, 4)  # specify a length
         finally:
