test/lib_event.py
changeset 42 0ff56f7216ee
parent 40 a5d498bbf40a
child 56 07ed878c847b
--- a/test/lib_event.py	Mon Aug 31 21:36:15 2009 +0300
+++ b/test/lib_event.py	Mon Aug 31 22:10:46 2009 +0300
@@ -42,7 +42,91 @@
 
         self.assertFalse(self.ev_base.loop(nonblock=True))
 
- 
+class TestEvent (unittest.TestCase) :
+    """
+        Simple event bits.
+    """
+
+    def setUp (self) :
+        self.ev_base = event_base()
+        self.ev = event(self.ev_base, 0, EV_READ)
+
+    def test_add (self) :
+        """
+            .add() works.
+        """
+
+        self.assertFalse(self.ev.pending(EV_READ))
+
+        self.ev.add()
+        
+        self.assertTrue(self.ev.pending(EV_READ))
+
+    def test_add_timeout (self) :
+        """
+            .add() with timeout works
+        """
+
+        self.ev.add(1.1)
+        self.assertTrue(self.ev.pending())
+    
+    def test_add_del (self) :
+        """
+            .add() and then .delete() works
+        """
+
+        self.assertFalse(self.ev.pending())
+        
+        # add it in
+        self.ev.add()
+
+        self.assertTrue(self.ev.pending())
+
+        # ensure that the ev_base is indeed not empty
+        self.assertTrue(self.ev_base.loop(nonblock=True))
+
+    
+        # remove it again
+        self.ev.delete()
+
+        self.assertFalse(self.ev.pending())
+
+        # ensure that the ev_base is indeed empty
+        self.assertFalse(self.ev_base.loop(nonblock=True))
+    
+    def test_invalid_base (self) :
+        """
+            Building an event with invalid base (None) fails
+        """
+        
+        # XXX: this doesn't actually seem to check against None, just the type..?
+        self.assertRaises(TypeError, event, None, 0, EV_READ)
+
+    def test_illegal_fd (self) :
+        """
+            Building an event with an illegal fd (-1) fails
+        """
+
+        self.assertRaises(ValueError, event, self.ev_base, -1, EV_READ)
+
+    def test_invalid_fd (self) :
+        """
+            Building an event with an invalid fd (>= 0) fails when calling .add()
+        """
+        
+        ev = event(self.ev_base, 666, EV_READ)
+        
+        # XXX: be more specific about Exception
+        self.assertRaises(Exception, ev.add)
+    
+    def test_invalid_mask_zero (self) :
+        """
+            Building an event with an invalid mask (0)... XXX: works?
+        """
+        
+        ev = event(self.ev_base, 0, 0)
+        ev.add()
+
 class TestEventPipe (unittest.TestCase) :
     """
         Test basic event stuff using a pipe.
@@ -103,6 +187,6 @@
 
         # test
         self.assertEquals(ev.ev_out, None)
-
+    
 if __name__ == '__main__' :
     unittest.main()