def testEventQueueOverflow(self): evd = rpdb2.CEventDispatcher() evq = rpdb2.CEventQueue( evd, 3 ) evq.register_event_types( { rpdb2.CEventNull : {} } ) ev1 = rpdb2.CEventNull() ev2 = rpdb2.CEventNull() ev3 = rpdb2.CEventNull() ev4 = rpdb2.CEventNull() evd.fire_event( ev1 ) evd.fire_event( ev2 ) new_index, sub_events = evq.wait_for_event( 0.1, 0 ) self.assertEqual( 2, new_index ) self.assertEqual( [ev1, ev2], sub_events ) evd.fire_event( ev3 ) new_index, sub_events = evq.wait_for_event( 0.1, 2 ) self.assertEqual( 3, new_index ) self.assertEqual( [ev3], sub_events ) new_index, sub_events = evq.wait_for_event( 0.1, 0 ) self.assertEqual( 3, new_index ) self.assertEqual( [ev1, ev2, ev3], sub_events ) evd.fire_event( ev4 ) new_index, sub_events = evq.wait_for_event( 0.1, 3 ) self.assertEqual( 4, new_index ) self.assertEqual( [ev4], sub_events ) new_index, sub_events = evq.wait_for_event( 0.1, 0 ) self.assertEqual( 4, new_index ) self.assertEqual( [ev2, ev3, ev4], sub_events )
def testWaitForEvent( self ): evd = rpdb2.CEventDispatcher() evq = rpdb2.CEventQueue( evd, 5 ) evq.register_event_types( { rpdb2.CEventNull : {} } ) ev1 = rpdb2.CEventNull() evd.fire_event( ev1 ) ev2 = rpdb2.CEventNull() evd.fire_event( ev2 ) new_index, sub_events = evq.wait_for_event( 0.1, 0 ) self.assertEqual( 2, new_index ) self.assertEqual( [ev1, ev2], sub_events ) new_index, sub_events = evq.wait_for_event( 0.1, 1 ) self.assertEqual( 2, new_index ) self.assertEqual( [ ev2 ], sub_events ) new_index, sub_events = evq.wait_for_event( 0.1, 2 ) self.assertEqual( 2, new_index ) self.assertEqual( [], sub_events ) new_index, sub_events = evq.wait_for_event( 0.1, 3 ) self.assertEqual( 2, new_index ) self.assertEqual( [], sub_events )
def testChainedDispatcherChainOverride( self ): evd_first = rpdb2.CEventDispatcher() evd_second = rpdb2.CEventDispatcher( evd_first ) secondCallbackTrace = [] def secondCallback( ev ): secondCallbackTrace.append( ev ) self.assertEqual( secondCallbackTrace, [] ) self.assertEqual( self.m_callbackTrace, [] ) evd_second.register_chain_override( { rpdb2.CEventNull: {} } ) evd_first.register_callback( self.callback, { rpdb2.CEventNull: {} }, False) evd_second.register_callback( secondCallback, { rpdb2.CEventNull: {} }, False) # Event on first dispatcher ev1 = rpdb2.CEventNull() evd_first.fire_event( ev1 ) self.assertEqual( self.m_callbackTrace, [ ev1 ] ) self.assertEqual( secondCallbackTrace, [] ) # Event on second dispatcher ev2 = rpdb2.CEventNull() evd_second.fire_event( ev2 ) self.assertEqual( self.m_callbackTrace, [ ev1 ] ) self.assertEqual( secondCallbackTrace, [ ev2 ] )
def testGetEventIndex( self ): evd = rpdb2.CEventDispatcher() evq = rpdb2.CEventQueue( evd, 5 ) evq.register_event_types( { rpdb2.CEventNull : {} } ) ev1 = rpdb2.CEventNull() evd.fire_event( ev1 ) self.assertEqual( 1, evq.get_event_index() ) ev2 = rpdb2.CEventNull() evd.fire_event( ev2 ) self.assertEqual( 2, evq.get_event_index() )
def testEventCallsCallbackSingleUse( self ): evd = rpdb2.CEventDispatcher() evd.register_callback( self.callback, { rpdb2.CEventNull: {} }, True ) ev1 = rpdb2.CEventNull() evd.fire_event( ev1 ) self.assertEqual( self.m_callbackTrace, [ ev1 ] ) ev2 = rpdb2.CEventNull() evd.fire_event( ev2 ) self.assertEqual( self.m_callbackTrace, [ ev1 ] )
def testCallbackRemoval( self ): evd = rpdb2.CEventDispatcher() evd.register_callback( self.callback, { rpdb2.CEventNull: {} }, False ) ev1 = rpdb2.CEventNull() evd.fire_event( ev1 ) self.assertEqual( self.m_callbackTrace, [ ev1 ] ) evd.remove_callback( self.callback ) ev2 = rpdb2.CEventNull() evd.fire_event( ev2 ) self.assertEqual( self.m_callbackTrace, [ ev1 ] )
def testMatchNormal( self ): er = rpdb2.CEventDispatcherRecord( None, { rpdb2.CEventExit: {} }, False) self.assertEqual( False, er.is_match( rpdb2.CEventNull() ) ) self.assertEqual( True, er.is_match( rpdb2.CEventExit() ) )
def testNoMatchForEmptyCallback( self ): er = rpdb2.CEventDispatcherRecord( None, {}, False) self.assertEqual( False, er.is_match( rpdb2.CEventNull() ) )