@@ -87,7 +87,7 @@ def test_register_readable(self):
8787 poller .register_readable (6 )
8888 self .assertEqual (list (poller .readables ), [6 ])
8989 self .assertEqual (len (kqueue .registered_kevents ), 1 )
90- self .assertReadEventAdded (kqueue , kqueue .registered_kevents [0 ], 6 )
90+ self .assertReadEventAdded (kqueue .registered_kevents [0 ], 6 )
9191
9292 def test_register_writable (self ):
9393 kqueue = DummyKQueue ()
@@ -96,7 +96,21 @@ def test_register_writable(self):
9696 poller .register_writable (7 )
9797 self .assertEqual (list (poller .writables ), [7 ])
9898 self .assertEqual (len (kqueue .registered_kevents ), 1 )
99- self .assertWriteEventAdded (kqueue , kqueue .registered_kevents [0 ], 7 )
99+ self .assertWriteEventAdded (kqueue .registered_kevents [0 ], 7 )
100+
101+ def test_unregister (self ):
102+ kqueue = DummyKQueue ()
103+ poller = self ._makeOne (DummyOptions ())
104+ poller ._kqueue = kqueue
105+ poller .register_writable (7 )
106+ poller .register_readable (8 )
107+ poller .unregister (7 )
108+ poller .unregister (100 ) # not registered, ignore error
109+ self .assertEqual (list (poller .writables ), [])
110+ self .assertEqual (list (poller .readables ), [8 ])
111+ self .assertWriteEventAdded (kqueue .registered_kevents [0 ], 7 )
112+ self .assertReadEventAdded (kqueue .registered_kevents [1 ], 8 )
113+ self .assertDeletedEvent (kqueue .registered_kevents [2 ], 7 )
100114
101115 def test_poll_returns_readables_and_writables (self ):
102116 kqueue = DummyKQueue (result = [(6 , select .KQ_FILTER_READ ),
@@ -168,16 +182,20 @@ def test_after_daemonize_restores_kqueue(self):
168182 poller .register_readable .assert_called_with (1 )
169183 poller .register_writable .assert_called_with (3 )
170184
171- def assertReadEventAdded (self , kqueue , kevent , fd ):
172- self .assertEventAdded (kqueue , kevent , fd , select .KQ_FILTER_READ )
185+ def assertReadEventAdded (self , kevent , fd ):
186+ self .assertKevent (kevent , fd , select .KQ_FILTER_READ , select .KQ_EV_ADD )
187+
188+ def assertWriteEventAdded (self , kevent , fd ):
189+ self .assertKevent (kevent , fd , select .KQ_FILTER_WRITE , select .KQ_EV_ADD )
173190
174- def assertWriteEventAdded (self , kqueue , kevent , fd ):
175- self .assertEventAdded (kqueue , kevent , fd , select .KQ_FILTER_WRITE )
191+ def assertDeletedEvent (self , kevent , fd ):
192+ self .assertKevent (kevent , fd , select .KQ_FILTER_READ | select .KQ_FILTER_WRITE ,
193+ select .KQ_EV_DELETE )
176194
177- def assertEventAdded (self , kqueue , kevent , fd , filter_spec ):
178- self .assertEqual (kevent .ident , fd )
179- self .assertEqual (kevent .filter , filter_spec )
180- self .assertEqual (kevent .flags , select . KQ_EV_ADD )
195+ def assertKevent (self , kevent , ident , filter , flags ):
196+ self .assertEqual (kevent .ident , ident )
197+ self .assertEqual (kevent .filter , filter )
198+ self .assertEqual (kevent .flags , flags )
181199
182200
183201if implements_poll ():
0 commit comments