test/lib_event.py
author Tero Marttila <terom@fixme.fi>
Sat, 26 Sep 2009 21:50:42 +0300
changeset 52 722fc70a197a
parent 42 0ff56f7216ee
child 56 07ed878c847b
permissions -rw-r--r--
change CallbackEvent to replace fd with ev, event2 doc/style tweaks
40
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
import unittest
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
from qmsk.net.lib.event2.base import event_base
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
from qmsk.net.lib.event2.event import event
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
from qmsk.net.lib.event2.constants import *
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
import os
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
class MyEvent (event) :
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
    def __init__ (self, base, fd, ev) :
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
        event.__init__(self, base, fd, ev)
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
        self.ev_in = ev
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
        self.ev_out = None
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
        self.res = None
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
    def __call__ (self, fd, mask) :
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
        self.ev_out = mask
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
        self.res = (mask == self.ev_in)
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
class TestEventBase (unittest.TestCase) :
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
    """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
        Simple event_base bits
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
    """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
    
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
    def setUp (self) :
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
        self.ev_base = event_base()
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
    def test_loop_empty (self) :
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
        """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
            loop() on an empty event_base returns False and doesn't block
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
        """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
        self.assertFalse(self.ev_base.loop(nonblock=False, once=False))
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
    def test_loop_empty_nb (self) :
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
        """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
            loop(nonblock=False) on an empty event_base returns False
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
        """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
        self.assertFalse(self.ev_base.loop(nonblock=True))
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
42
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    45
class TestEvent (unittest.TestCase) :
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    46
    """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    47
        Simple event bits.
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    48
    """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    49
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    50
    def setUp (self) :
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    51
        self.ev_base = event_base()
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    52
        self.ev = event(self.ev_base, 0, EV_READ)
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    53
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    54
    def test_add (self) :
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    55
        """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    56
            .add() works.
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    57
        """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    58
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    59
        self.assertFalse(self.ev.pending(EV_READ))
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    60
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    61
        self.ev.add()
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    62
        
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    63
        self.assertTrue(self.ev.pending(EV_READ))
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    64
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    65
    def test_add_timeout (self) :
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    66
        """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    67
            .add() with timeout works
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    68
        """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    69
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    70
        self.ev.add(1.1)
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    71
        self.assertTrue(self.ev.pending())
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    72
    
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    73
    def test_add_del (self) :
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    74
        """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    75
            .add() and then .delete() works
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    76
        """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    77
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    78
        self.assertFalse(self.ev.pending())
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    79
        
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    80
        # add it in
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    81
        self.ev.add()
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    82
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    83
        self.assertTrue(self.ev.pending())
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    84
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    85
        # ensure that the ev_base is indeed not empty
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    86
        self.assertTrue(self.ev_base.loop(nonblock=True))
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    87
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    88
    
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    89
        # remove it again
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    90
        self.ev.delete()
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    91
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    92
        self.assertFalse(self.ev.pending())
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    93
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    94
        # ensure that the ev_base is indeed empty
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    95
        self.assertFalse(self.ev_base.loop(nonblock=True))
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    96
    
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    97
    def test_invalid_base (self) :
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    98
        """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    99
            Building an event with invalid base (None) fails
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   100
        """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   101
        
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   102
        # XXX: this doesn't actually seem to check against None, just the type..?
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   103
        self.assertRaises(TypeError, event, None, 0, EV_READ)
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   104
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   105
    def test_illegal_fd (self) :
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   106
        """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   107
            Building an event with an illegal fd (-1) fails
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   108
        """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   109
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   110
        self.assertRaises(ValueError, event, self.ev_base, -1, EV_READ)
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   111
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   112
    def test_invalid_fd (self) :
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   113
        """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   114
            Building an event with an invalid fd (>= 0) fails when calling .add()
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   115
        """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   116
        
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   117
        ev = event(self.ev_base, 666, EV_READ)
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   118
        
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   119
        # XXX: be more specific about Exception
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   120
        self.assertRaises(Exception, ev.add)
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   121
    
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   122
    def test_invalid_mask_zero (self) :
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   123
        """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   124
            Building an event with an invalid mask (0)... XXX: works?
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   125
        """
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   126
        
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   127
        ev = event(self.ev_base, 0, 0)
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   128
        ev.add()
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   129
40
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   130
class TestEventPipe (unittest.TestCase) :
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   131
    """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   132
        Test basic event stuff using a pipe.
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   133
    """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   134
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   135
    def setUp (self) :
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   136
        self.ev_base = event_base()
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   137
        self.fd_read, self.fd_write = os.pipe()
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   138
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   139
    def test_event (self) :
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   140
        """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   141
            Constructing an event works
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   142
        """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   143
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   144
        self.assertTrue(event(self.ev_base, self.fd_read, EV_READ))
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   145
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   146
    def test_read (self) :
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   147
        """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   148
            Read event on pipe with data fires
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   149
        """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   150
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   151
        ev = MyEvent(self.ev_base, self.fd_read, EV_READ)
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   152
        ev.add(0.1) # 100ms
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   153
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   154
        # trigger
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   155
        os.write(self.fd_write, "foo")
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   156
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   157
        # loop
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   158
        self.ev_base.loop(nonblock=True)
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   159
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   160
        # test
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   161
        self.assertEquals(ev.ev_out, EV_READ)
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   162
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   163
    def test_read_timeout (self) :
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   164
        """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   165
            Read event on empty pipe timeouts
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   166
        """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   167
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   168
        ev = MyEvent(self.ev_base, self.fd_read, EV_READ)
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   169
        ev.add(0.0)
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   170
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   171
        # loop
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   172
        self.ev_base.loop(once=True)
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   173
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   174
        # test
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   175
        self.assertEquals(ev.ev_out, EV_TIMEOUT)
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   176
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   177
    def test_read_nonblock (self) :
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   178
        """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   179
            Read event on empty pipe doesn't block loop with nonblock=True
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   180
        """
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   181
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   182
        ev = MyEvent(self.ev_base, self.fd_read, EV_READ)
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   183
        ev.add()
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   184
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   185
        # loop once
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   186
        self.ev_base.loop(nonblock=True)
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   187
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   188
        # test
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   189
        self.assertEquals(ev.ev_out, None)
42
0ff56f7216ee fix some segfaults with event
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   190
    
40
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   191
if __name__ == '__main__' :
a5d498bbf40a some lib.event2 unitests
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   192
    unittest.main()