コード例 #1
0
    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 )
コード例 #2
0
    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 )
コード例 #3
0
    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 ] )
コード例 #4
0
    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() )
コード例 #5
0
    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 ] )
コード例 #6
0
    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 ] )
コード例 #7
0
 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() ) )
コード例 #8
0
 def testNoMatchForEmptyCallback( self ):
     er = rpdb2.CEventDispatcherRecord( None, {}, False)
     self.assertEqual( False, er.is_match( rpdb2.CEventNull() ) )