3 # tests the ability of sending events directly
9 use Test::More 'tests' => 17;
10 use Tests_Helper qw(test_frame);
12 test_frame( 'MyFrame' );
16 use base 'Wx::PlCommandEvent';
18 our $destroyed; BEGIN { $destroyed = 0 };
23 $_[0]->SUPER::DESTROY;
28 my $class = ref $self;
29 # my $c = $class->new( $self->GetEventType, $self->GetId ); print "C: $c\n"; return $c;
30 return $class->new( $self->GetEventType, $self->GetId );
36 use Wx::Event qw(EVT_BUTTON);
40 my $this = $class->SUPER::new( undef, -1, 'Test' );
42 my $button = Wx::Button->new( $this, -1, 'Button' );
46 EVT_BUTTON( $this, $button,
48 my( $this, $evt ) = @_;
54 my $event = Wx::CommandEvent->new( &Wx::wxEVT_COMMAND_BUTTON_CLICKED,
57 $button->GetEventHandler->ProcessEvent( $event );
59 main::ok( $var, "event succesfully received" );
60 main::is( $MyEvent::destroyed, 0, "no object destroyed" );
64 my $event = MyEvent->new( &Wx::wxEVT_COMMAND_BUTTON_CLICKED,
67 $button->GetEventHandler->ProcessEvent( $event );
68 main::is( $MyEvent::destroyed, 0, "still no object destroyed" );
70 main::ok( $var, "event succesfully received" );
71 main::is( $MyEvent::destroyed, 1, "one event destroyed" );
75 my $event = MyEvent->new( &Wx::wxEVT_COMMAND_BUTTON_CLICKED,
77 # print "E: $event\n";
78 $button->GetEventHandler->AddPendingEvent( $event );
79 main::is( $MyEvent::destroyed, 1, "still one event destroyed" );
81 main::is( $MyEvent::destroyed, 2, "original event destroyed" );
82 main::ok( !$var, "event not received before yield" );
83 Wx::wxTheApp->ProcessPendingEvents;
84 main::ok( $var, "event received after yield" );
85 main::is( $MyEvent::destroyed, 3, "cloned event destroyed" );
88 EVT_BUTTON( $this, $button, undef );
90 my $event = MyEvent->new( &Wx::wxEVT_COMMAND_BUTTON_CLICKED,
94 main::is( $MyEvent::destroyed, 4 );
97 my $event = MyEvent->new( &Wx::wxEVT_COMMAND_BUTTON_CLICKED,
100 $button->GetEventHandler->ProcessEvent( $event );
102 main::ok( !$var, "event handler disconnected" );
103 main::is( $MyEvent::destroyed, 5 );
107 my $event = MyEvent->new( &Wx::wxEVT_COMMAND_BUTTON_CLICKED,
110 $button->GetEventHandler->AddPendingEvent( $event );
112 main::is( $MyEvent::destroyed, 6, "original event destroyed" );
113 main::ok( !$var, "event not received before yield" );
114 Wx::wxTheApp->ProcessPendingEvents;
115 main::ok( !$var, "event not received after yield" );
116 main::is( $MyEvent::destroyed, 7, "cloned event destroyed" );