Remove tests
[pkg-perl] / deb-src / libwx-perl / libwx-perl-0.96 / t / 08_ovl_func.t
1 #!/usr/bin/perl -w
2
3 # test that overload dispatch works for
4 # specific functions
5
6 use strict;
7 use Wx;
8 use lib './t';
9 use Test::More 'tests' => 180;
10 use Tests_Helper qw(test_app);
11 use Fatal qw(open);
12
13 my $nolog = Wx::LogNull->new;
14 Wx::InitAllImageHandlers;
15
16 sub hijack {
17   while( @_ ) {
18     my( $name, $code ) = ( shift, shift );
19     no strict 'refs';
20     die $name unless defined &{$name};
21     my $old = \&{$name};
22     undef *{$name};
23     *{$name} = sub { &$code; goto &$old };
24   }
25 }
26
27 test_app( sub {
28 my $frame = Wx::Frame->new( undef, -1, 'a' );
29 my $bmpok = Wx::Bitmap->new( 'wxpl.ico', Wx::wxBITMAP_TYPE_ICO() );
30 my $imgok = Wx::Image->new( 'wxpl.ico', Wx::wxBITMAP_TYPE_ICO() );
31 my $icook = Wx::GetWxPerlIcon();
32
33 die unless $bmpok->Ok;
34 die unless $imgok->Ok;
35 die unless $icook->Ok;
36
37 ##############################################################################
38 # Wx::Brush
39 ##############################################################################
40 {
41 my( $newbmp, $newcol, $newname ) = ( 0, 0, 0 );
42 my( $scrgb, $sccol, $scname ) = ( 0, 0, 0 );
43
44 hijack( 'Wx::Brush::newBitmap'       => sub { $newbmp = 1 },
45         'Wx::Brush::newColour'       => sub { $newcol = 1 },
46         'Wx::Brush::newName'         => sub { $newname = 1 },
47         'Wx::Brush::SetColourRGB'    => sub { $scrgb = 1 },
48         'Wx::Brush::SetColourColour' => sub { $sccol = 1 },
49         'Wx::Brush::SetColourName'   => sub { $scname = 1 } );
50
51 Wx::Brush->new( Wx::Bitmap->new( 1, 1, 1 ) );
52 ok( $newbmp, 'Wx::Brush::newBitmap' );
53
54 Wx::Brush->new( Wx::wxRED(), 1 );
55 ok( $newcol, 'Wx::Brush::newColour' );
56
57 my $b = Wx::Brush->new( 'red', 2 );
58 ok( $newname, 'Wx::Brush::newName' );
59
60 $b->SetColour( 1, 2, 3 );
61 ok( $scrgb, 'Wx::Brush::SetColourRGB' );
62
63 $b->SetColour( Wx::wxRED() );
64 ok( $sccol, 'Wx::Brush::SetColourColour' );
65
66 $b->SetColour( 'red' );
67 ok( $scname, 'Wx::Brush::SetColourName' );
68 }
69
70 ##############################################################################
71 # Wx::Bitmap & Wx::Mask
72 ##############################################################################
73 {
74 my( $newbmp, $newbmpn, $newbmpcol ) = ( 0, 0, 0 );
75 my( $newempty, $newfile, $newicon, $newimage ) = ( 0, 0, 0, 0 );
76
77 hijack( 'Wx::Mask::newBitmapColour' => sub { $newbmpcol = 1 },
78         'Wx::Mask::newBitmapIndex'  => sub { $newbmpn = 1 },
79         'Wx::Mask::newBitmap'       => sub { $newbmp = 1 },
80         'Wx::Bitmap::newEmpty'      => sub { $newempty = 1 },
81         'Wx::Bitmap::newFile'       => sub { $newfile = 1 },
82         'Wx::Bitmap::newIcon'       => sub { $newicon = 1 },
83         'Wx::Bitmap::newImage'      => sub { $newimage = 1 },
84       );
85
86 my $bitmap = Wx::Bitmap->new( 1, 1, 1 );
87 ok( $newempty, "Wx::Bitmap::newEmpty" );
88
89 Wx::Bitmap->new( 'demo/data/logo.jpg', Wx::wxBITMAP_TYPE_JPEG() );
90 ok( $newfile,  "Wx::Bitmap::newFile" );
91
92 Wx::Bitmap->new( $icook );
93 ok( $newicon,  "Wx::Bitmap::newIcon" );
94
95 Wx::Bitmap->new( Wx::Image->new( 1, 1 ) );
96 ok( $newimage, "Wx::Bitmap::newImage" );
97
98 Wx::Mask->new( $bmpok, Wx::Colour->new( 'red' ) );
99 ok( $newbmpcol,"Wx::Mask::newBitmapColour" );
100
101 SKIP: {
102   skip "Does not work on wxGTK, wxMAC, wxX11 and wxMOTIF", 1
103     if Wx::wxGTK() || Wx::wxX11() || Wx::wxMOTIF() || Wx::wxMAC();
104
105   Wx::Mask->new( $bmpok, 0 );
106   ok( $newbmpn,  "Wx::Mask::newBitmapIndex" );
107 }
108
109 # does not work: colour bitmap
110 # Wx::Mask->new( $bitmap );
111 # ok( $newbmp,   "Wx::Mask::newBitmap" );
112 }
113
114 ##############################################################################
115 # Wx::Colour
116 ##############################################################################
117 {
118 my( $newrgb, $newname ) = ( 0, 0 );
119 hijack( 'Wx::Colour::newRGB'  => sub { $newrgb = 1 },
120         'Wx::Colour::newName' => sub { $newname = 1 } );
121
122 Wx::Colour->new( 1, 2, 3 );
123 ok( $newrgb, "Wx::Colour::newRGB" );
124
125 Wx::Colour->new( 'red' );
126 ok( $newname, "Wx::Colour::newName" );
127 }
128
129 ##############################################################################
130 # Wx::Caret
131 ##############################################################################
132 {
133 my( $newwh, $newsize, $movepoint, $movexy, $setsizesize, $setsizewh ) =
134   ( 0, 0, 0, 0, 0, 0 );
135 hijack( 'Wx::Caret::newWH'     => sub { $newwh = 1 },
136         'Wx::Caret::newSize'   => sub { $newsize = 1 },
137         'Wx::Caret::MovePoint' => sub { $movepoint = 1 },
138         'Wx::Caret::MoveXY'    => sub { $movexy = 1 },
139         'Wx::Caret::SetSizeSize' => sub { $setsizesize = 1 },
140         'Wx::Caret::SetSizeWH' => sub { $setsizewh = 1 } );
141
142 my $caret = Wx::Caret->new( Wx::Window->new( $frame, -1 ), 1, 1 );
143 ok( $newwh,       "Wx::Caret::newWH" );
144
145 Wx::Caret->new( Wx::Window->new( $frame, -1 ), [ 1, 1 ] );
146 ok( $newsize,     "Wx::Caret::newSize" );
147
148 $caret->Move( [ 1, 1 ] );
149 ok( $movepoint,   "Wx::Caret::MovePoint" );
150
151 Wx::Caret->new( Wx::Window->new( $frame, -1 ), 1, 1 )->Move( 1, 1 );
152 ok( $movexy,      "Wx::Caret::MoveXY" );
153
154 $caret->SetSize( [ 1, 1 ] );
155 ok( $setsizesize, "Wx::Caret::SetSizeSize" );
156
157 $caret->SetSize( 1, 1 );
158 ok( $setsizewh,   "Wx::Caret::SetSizeWH" );
159 }
160
161 ##############################################################################
162 # Wx::ControlWithItems/Wx::ComboBox
163 ##############################################################################
164 {
165 my( $cwiappendstr, $cwiappenddata, $cwiappenditems,
166     $cbappendstr, $cbappenddata, $cbsetselectionN, $cbsetselectionNN,
167     $cwiappenditemsdata, $cwiinsertitemsdata, $cwiinsertitems,
168     $cwiinsertdata, $cwiinsertstr, $cwisetitemsdata, $cwisetitems );
169 my $good_combo = 'Wx::ComboBox'->isa( 'Wx::Choice' );
170 hijack( 'Wx::ControlWithItems::AppendString' => sub { $cwiappendstr = 1 },
171         'Wx::ControlWithItems::AppendData'   => sub { $cwiappenddata = 1 },
172         'Wx::ControlWithItems::AppendItems'  => sub { $cwiappenditems = 1 },
173         ( Wx::wxVERSION() >= 2.009
174           ? ( 'Wx::ControlWithItems::AppendItemsData' => sub { $cwiappenditemsdata = 1 },
175               'Wx::ControlWithItems::InsertItemsData' => sub { $cwiinsertitemsdata = 1 },
176               'Wx::ControlWithItems::InsertItems' => sub { $cwiinsertitems = 1 },
177               'Wx::ControlWithItems::InsertData' => sub { $cwiinsertdata = 1 },
178               'Wx::ControlWithItems::InsertString' => sub { $cwiinsertstr = 1 },
179               'Wx::ControlWithItems::SetItemsData' => sub { $cwisetitemsdata = 1 },
180               'Wx::ControlWithItems::SetItems' => sub { $cwisetitems = 1 } ) : () ),
181         ( $good_combo ? () :
182           ( 'Wx::ComboBox::AppendString'     => sub { $cbappendstr = 1 },
183             'Wx::ComboBox::AppendData'       => sub { $cbappenddata = 1 } )
184         ),
185         'Wx::ComboBox::SetMark'              => sub { $cbsetselectionNN = 1 },
186         ( !Wx::wxMAC() ?
187           ( 'Wx::ComboBox::SetSelectionN'    => sub { $cbsetselectionN = 1 } )
188           : () ),
189        );
190
191 my $cwi = Wx::ListBox->new( $frame, -1 );
192 my $cb = Wx::ComboBox->new( $frame, -1, 'bar' );
193
194 $cwi->Append( 'a' );
195 ok( $cwiappendstr,    "Wx::ControlWithItems::AppendString" );
196
197 $cwi->Append( 'a', {} );
198 ok( $cwiappenddata,   "Wx::ControlWithItems::AppendData" );
199
200 $cwi->Append( [ 'c', 'd', 'e' ] );
201 ok( $cwiappenditems,  "Wx::ControlWithItems::AppendItems" );
202
203 if( Wx::wxVERSION() >= 2.009 ) {
204     $cwi->Append( [ 'c', 'd', 'e' ], [ 1, 2, 3 ] );
205     $cwi->Insert( [ 'c', 'd', 'e' ], 2, [ 1, 2, 3 ] );
206     $cwi->Insert( [ 'c', 'd', 'e' ], 3 );
207     $cwi->Insert( 'w', 4, 7 );
208     $cwi->Insert( 'w', 5 );
209     $cwi->Set( [ 'c', 'd', 'e' ], [ 1, 2, 3 ] );
210     $cwi->Set( [ 'w', 'x', 'y' ] );
211 } else {
212     ( $cwiappenditems, $cwiappenditemsdata, $cwiinsertitemsdata,
213       $cwiinsertitems, $cwiinsertdata, $cwiinsertstr, $cwisetitemsdata,
214       $cwisetitems ) = ( 1, 1, 1, 1, 1, 1, 1, 1 );
215
216     # just to check it is there
217     $cwi->Set( [ 'w', 'x', 'y' ] );
218 }
219 ok( $cwiappenditemsdata, 'Wx::ControlWithItems::AppendItemsData' );
220 ok( $cwiinsertitemsdata, 'Wx::ControlWithItems::InsertItemsData' );
221 ok( $cwiinsertitems, 'Wx::ControlWithItems::InsertItems' );
222 ok( $cwiinsertdata, 'Wx::ControlWithItems::InsertData' );
223 ok( $cwiinsertstr, 'Wx::ControlWithItems::InsertString' );
224 ok( $cwisetitemsdata, 'Wx::ControlWithItems::SetItemsData' );
225 ok( $cwisetitems, 'Wx::ControlWithItems::SetItems' );
226
227 if( !$good_combo  ) {
228   $cb->Append( 'a' );
229   $cb->Append( 'b', sub {} );
230 } else {
231   ( $cbappendstr, $cbappenddata ) = ( 1, 1 );
232 }
233 ok( $cbappendstr,     "Wx::ComboBox::AppendString" );
234 ok( $cbappenddata,    "Wx::ComboBox::AppendData" );
235
236 SKIP: {
237   skip "Segfaults on wxMAC", 1 if Wx::wxMAC();
238
239   $cb->SetSelection( 0 );
240   ok( $cbsetselectionN, "Wx::ComboBox::SetSelectionN" );
241 }
242
243 $cb->SetSelection( 0, 1 );
244 ok( $cbsetselectionNN,"Wx::ComboBox::SetMark" );
245 }
246
247 ##############################################################################
248 # Wx::Cursor
249 ##############################################################################
250 {
251 my( $newid, $newimage, $newfile ) = ( 0, 0, 0 );
252 hijack( 'Wx::Cursor::newId'    => sub { $newid = 1 },
253         ( Wx::wxVERSION() >= 2.003002 && !Wx::wxMAC()
254           ? ( 'Wx::Cursor::newImage' => sub { $newimage = 1 } )
255           : () ),
256 #        ( Wx::wxMSW()
257 #          ? ( 'Wx::Cursor::newFile'  => sub { $newfile = 1 } )
258 #          : () ),
259       );
260
261 Wx::Cursor->new( 1 );
262 ok( $newid,    "Wx::Cursor::newId" );
263
264 SKIP: {
265   skip "Only for wxWidgets 2.3.x", 1
266     unless Wx::wxVERSION() >= 2.003002 && !Wx::wxMAC();
267
268   Wx::Cursor->new( Wx::Image->new( 1, 1 ) );
269   ok( $newimage, "Wx::Cursor::newImage" );
270 }
271
272 #SKIP: {
273 #  skip "Only for wxMSW", 1 unless Wx::wxMSW();
274
275 #  Wx::Cursor->new( 'demo/data/logo.jpg', Wx::wxBITMAP_TYPE_JPEG(), 2, 2 );
276 #  ok( $newfile, "Wx::Cursor::newFile" );
277 #}
278 }
279
280 ##############################################################################
281 # Wx::Icon
282 ##############################################################################
283 {
284 my( $newnull, $newfile, $newiconloc ) = ( 0, 0, 0 );
285 hijack( 'Wx::Icon::newNull' => sub { $newnull = 1 },
286         'Wx::Icon::newFile' => sub { $newfile = 1 },
287         ( Wx::wxVERSION() >= 2.005002
288           ? ( 'Wx::Icon::newLocation' => sub { $newiconloc = 1 } )
289           : () ),
290         );
291
292 Wx::Icon->new();
293 ok( $newnull, "Wx::Icon::newNull" );
294
295 Wx::Icon->new( 'wxpl.xpm', Wx::wxBITMAP_TYPE_XPM() );
296 ok( $newfile, "Wx::Icon::newFile" );
297
298 SKIP: {
299   skip "Only for wxWidgets 2.5.2+", 1 unless Wx::wxVERSION >= 2.005002;
300   skip "Hangs under wxMotif", 1 if Wx::wxMOTIF;
301
302   my $mtm = Wx::MimeTypesManager->new;
303   my $filet = $mtm->GetFileTypeFromExtension( 'jpg' );
304
305   skip "No jpg file type", 1 unless $filet;
306   my $location = $filet->GetIcon;
307   skip "No icon for jpg file type", 1 unless $location;
308   my $icon = Wx::Icon->new( $location );
309   ok( $newiconloc, "Wx::Icon::newLocation" );
310 }
311 }
312
313 ##############################################################################
314 # Wx::ToolBar
315 ##############################################################################
316 {
317 my( $addtoollong, $addtoolshort, $setmarginsxy, $setmarginssize,
318     $addnews, $addnewl, $instoollong, $insnewl ) =
319   ( 0, 0, 0, 0, 0, 0, 0, 0 );
320 hijack( 'Wx::ToolBarBase::AddToolLong'    => sub { $addtoollong = 1 },
321         'Wx::ToolBarBase::AddToolShort'   => sub { $addtoolshort = 1 },
322         'Wx::ToolBarBase::InsertToolLong'   => sub { $instoollong = 1 },
323         ( Wx::wxVERSION >= 2.004 ?
324           ( 'Wx::ToolBarBase::AddToolNewShort'   => sub { $addnews = 1 },
325             'Wx::ToolBarBase::AddToolNewLong'    => sub { $addnewl = 1 } ) :
326           () ),
327         ( Wx::wxVERSION >= 2.006 ?
328           ( 'Wx::ToolBarBase::InsertToolNewLong' => sub { $insnewl = 1 } ) :
329           () ),
330         'Wx::ToolBarBase::SetMarginsXY'   => sub { $setmarginsxy = 1 },
331         'Wx::ToolBarBase::SetMarginsSize' => sub { $setmarginssize = 1 } );
332
333 my $tbar = Wx::ToolBar->new( $frame, -1 );
334 $tbar->SetMargins( 0, 1 );
335 ok( $setmarginsxy, "Wx::ToolBar::SetMarginsXY" );
336
337 $tbar->SetMargins( [1, 2] );
338 ok( $setmarginssize, "Wx::Toolbar::SetMarginsSize" );
339
340 $tbar->AddTool( Wx::wxID_NEW(), $bmpok, Wx::wxNullBitmap(), 0, undef, 'foo' );
341 ok( $addtoollong, "Wx::ToolBar::AddToolLong" );
342
343 $tbar->AddTool( -1, $bmpok, 'a', 'b' );
344 ok( $addtoolshort, "Wx::ToolBar::AddToolShort" );
345
346 $tbar->InsertTool( 1, Wx::wxID_NEW(), $bmpok, Wx::wxNullBitmap(), 0,
347                    undef, 'foo' );
348 ok( $instoollong, "Wx::ToolBar::InsertToolLong" );
349
350 SKIP: {
351   skip "Only for wxWidgets 2.5+", 2 unless Wx::wxVERSION >= 2.005;
352
353   $tbar->AddTool( -1, "boo", $bmpok, Wx::wxNullBitmap(), 0,
354                   'str', 'foo', 'data' );
355   ok( $addnewl, "Wx::ToolBar::AddToolNewLong" );
356
357   $tbar->AddTool( -1, "bar", $bmpok, 'a', 0 );
358   ok( $addnews, "Wx::ToolBar::AddToolNewShort" );
359 }
360 SKIP: {
361   skip "Only for wxWidgets 2.6+", 1 unless Wx::wxVERSION >= 2.006;
362
363   $tbar->InsertTool( 1, Wx::wxID_NEW(), 'lbl', $bmpok, Wx::wxNullBitmap(), 0,
364                      'foo', 'moo', undef );
365   ok( $insnewl, "Wx::ToolBar::InsertToolNewLong" );
366 }
367 }
368
369 ##############################################################################
370 # Wx::StaticBitmap
371 ##############################################################################
372 SKIP: {
373 skip "Segfaults under wxMotif 2.6.x", 2 if Wx::wxMOTIF && Wx::wxVERSION < 2.008;
374 my( $newicon, $newbitmap ) = ( 0, 0 );
375 hijack( 'Wx::StaticBitmap::newIcon'   => sub { $newicon = 1 },
376         'Wx::StaticBitmap::newBitmap' => sub { $newbitmap =1 } );
377
378 Wx::StaticBitmap->new( $frame, -1, $icook );
379 ok( $newicon,   "Wx::StaticBitmap::newIcon" );
380
381 Wx::StaticBitmap->new( $frame, -1, $bmpok );
382 ok( $newbitmap, "Wx::StaticBitmap::newBitmap" );
383 }
384
385 ##############################################################################
386 # Wx::Rect
387 ##############################################################################
388 {
389 my( $newxywh, $newps, $newpp ) = ( 0, 0, 0 );
390 hijack( 'Wx::Rect::newXYWH' => sub { $newxywh = 1 },
391         'Wx::Rect::newPS'   => sub { $newps = 1 },
392         'Wx::Rect::newPP'   => sub { $newpp = 1 } );
393
394 Wx::Rect->new( 0, 1, 2, 3 );
395 ok( $newxywh, "Wx::Rect::newXYWH" );
396
397 Wx::Rect->new( Wx::Point->new( 0, 1 ), Wx::Size->new( 1, 2 ) );
398 ok( $newps, "Wx::Rect::newPS" );
399
400 Wx::Rect->new( Wx::Point->new( 0, 1 ), Wx::Point->new( 2, 3 ) );
401 ok( $newpp, "Wx::Rect::newPP" );
402 }
403
404 ##############################################################################
405 # Wx::ScreenDC
406 ##############################################################################
407 {
408 my( $sdotwin, $sdotrec ) = ( 0, 0 );
409 hijack( 'Wx::ScreenDC::StartDrawingOnTopWindow' => sub { $sdotwin = 1 },
410         'Wx::ScreenDC::StartDrawingOnTopRect'   => sub { $sdotrec = 1 } );
411
412 my $dc = Wx::ScreenDC->new;
413
414 $dc->StartDrawingOnTop( $frame );
415 ok( $sdotwin, "Wx::ScreenDC::StartDrawingOnTopWindow" );
416
417 $dc->EndDrawingOnTop;
418 $dc->StartDrawingOnTop( Wx::Rect->new( 0, 1, 2, 3 ) );
419 ok( $sdotrec, "Wx::ScreenDC::StartDrawingOnTopRect" );
420 }
421
422 ##############################################################################
423 # Wx::Window
424 ##############################################################################
425 {
426 my( $ssxywh, $sswh, $sssize, $ssrect, $stttip, $sttstr, $ctsxy, $ctspoint,
427     $cdppoint, $cdpsize, $cpdpoint, $cpdsize, $iepoint, $ierect, $iexywh,
428     $movepoint, $movexy, $stcpoi, $stcxy, $scspoi, $scswh )
429   = ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
430 hijack( 'Wx::Window::SetSizeXYWHF' => sub { $ssxywh = 1 },
431         'Wx::Window::SetSizeWH'    => sub { $sswh = 1 },
432         'Wx::Window::SetSizeSize'  => sub { $sssize = 1 },
433         'Wx::Window::SetSizeRect'  => sub { $ssrect = 1 },
434         ( Wx::wxMOTIF() ? () :
435           ( 'Wx::Window::SetToolTipTip'    => sub { $stttip = 1 },
436             'Wx::Window::SetToolTipString' => sub { $sttstr = 1 }, ) ),
437         'Wx::Window::ClientToScreenXY'    => sub { $ctsxy = 1 },
438         'Wx::Window::ClientToScreenPoint' => sub { $ctspoint = 1 },
439         'Wx::Window::ConvertDialogPointToPixels' => sub { $cdppoint = 1 },
440         'Wx::Window::ConvertDialogSizeToPixels'  => sub { $cdpsize =1 },
441         'Wx::Window::ConvertPixelsPointToDialog' => sub { $cpdpoint = 1 },
442         'Wx::Window::ConvertPixelsSizeToDialog'  => sub { $cpdsize =1 },
443         'Wx::Window::IsExposedPoint' => sub { $iepoint = 1 },
444         'Wx::Window::IsExposedRect'  => sub { $ierect = 1 },
445         'Wx::Window::IsExposedXYWH'  => sub { $iexywh = 1 },
446         'Wx::Window::MovePoint'      => sub { $movepoint = 1 },
447         'Wx::Window::MoveXY'         => sub { $movexy = 1 },
448 #        Wx::Window::PopupMenuPoint => sub { $poppoint = 1 },
449 #        Wx::Window::PopupMenuXY    => sub { $popxy = 1 },
450         'Wx::Window::ScreenToClientPoint' => sub { $stcpoi = 1 },
451         'Wx::Window::ScreenToClientXY'    => sub { $stcxy = 1 },
452         'Wx::Window::SetClientSizeSize'   => sub { $scspoi = 1 },
453         'Wx::Window::SetClientSizeWH'     => sub { $scswh = 1 } );
454
455 $frame->SetSize( 20, 20, 30, 30 );
456 ok( $ssxywh, "Wx::Window::SetSizeXYWHF" );
457
458 $frame->SetSize( 40, 40 );
459 ok( $sswh, "Wx::Window::SetSizeWH" );
460
461 $frame->SetSize( [ 50, 50 ] );
462 ok( $sssize, "Wx::Window::SetSizeSize" );
463
464 $frame->SetSize( Wx::Rect->new( 40, 40, 60, 60 ) );
465 ok( $ssrect, "Wx::Window::SetSizeRect" );
466
467 SKIP: {
468   skip "No ToolTips under wxMOTIF", 2 if Wx::wxMOTIF();
469
470   $frame->SetToolTip( "FOO" );
471   ok( $sttstr, "Wx::Window::SetToolTipString" );
472
473   $frame->SetToolTip( Wx::ToolTip->new( "Bar" ) );
474   ok( $stttip, "Wx::Window::SetToolTipTip" );
475 }
476
477 $frame->ClientToScreen( 1, 2 );
478 ok( $ctsxy, "Wx::Window::ClientToScreenXY" );
479
480 $frame->ClientToScreen( [1, 2] );
481 ok( $ctspoint, "Wx::Window::ClientToScreenPoint" );
482
483 $frame->ConvertDialogToPixels( Wx::Point->new( 2, 3 ) );
484 ok( $cdppoint, "Wx::Window::ConvertDialogPointToPixels" );
485
486 $frame->ConvertDialogToPixels( Wx::Size->new( 1, 2 ) );
487 ok( $cdpsize, "Wx::Window::ConvertDialogSizeToPixels" );
488
489 $frame->ConvertPixelsToDialog( Wx::Point->new( 2, 3 ) );
490 ok( $cpdpoint, "Wx::Window::ConvertPixelsPointToDialog" );
491
492 $frame->ConvertPixelsToDialog( Wx::Size->new( 1, 2 ) );
493 ok( $cpdsize, "Wx::Window::ConvertPixelsSizeToDialog" );
494
495 $frame->IsExposed( Wx::Point->new( 1, 2 ) );
496 ok( $iepoint, "Wx::Window::IsExposedPoint" );
497
498 $frame->IsExposed( Wx::Rect->new( 1, 2, 3, 4 ) );
499 ok( $ierect, "Wx::Window::IsExposedRect" );
500
501 $frame->IsExposed( 1, 2, 3, 4 );
502 ok( $iexywh, "Wx::Window::IsExposedXYWH" );
503
504 $frame->Move( [ 50, 50 ] );
505 ok( $movepoint, "Wx::Window::MovePoint" );
506
507 $frame->Move( 6, 60 );
508 ok( $movexy, "Wx::Window::MoveXY" );
509
510 $frame->ScreenToClient( [ 1, 2 ] );
511 ok( $stcpoi, "Wx::Window::ScreenToClientPoint" );
512
513 $frame->ScreenToClient( 1, 2 );
514 ok( $stcxy, "Wx::Window::ScreenToClientXY" );
515
516 $frame->SetClientSize( [50, 50] );
517 ok( $scspoi, "Wx::Window::SetClientSizePoint" );
518
519 $frame->SetClientSize( 200, 200 );
520 ok( $scswh, "Wx::Window::SetClientSizeWH" );
521 }
522
523 ##############################################################################
524 # Wx::DC
525 ##############################################################################
526 {
527 my( $drawcxywh, $drawcrec, $setclxywh, $setclreg ) = ( 0, 0, 0, 0 );
528 hijack( 'Wx::DC::DrawCheckMarkXYWH' => sub { $drawcxywh = 1 },
529         'Wx::DC::DrawCheckMarkRect' => sub { $drawcrec = 1 },
530         'Wx::DC::SetClippingRegionXYWH'  => sub { $setclxywh = 1 },
531         'Wx::DC::SetClippingRegionRegion' => sub { $setclreg = 1 } );
532
533 my $dc = Wx::ClientDC->new( $frame );
534 $dc->DrawCheckMark( 1, 2, 5, 6 );
535 ok( $drawcxywh, "Wx::DC::DrawCheckMarkXYWH" );
536
537 $dc->DrawCheckMark( Wx::Rect->new( 1, 2, 5, 6 ) );
538 ok( $drawcrec, "Wx::DC::DrawCheckMarkRect" );
539
540 $dc->SetClippingRegion( 0, 0, 50, 50 );
541 ok( $setclxywh, "Wx::DC::SetClippingRegionXYWH" );
542
543 $dc->SetClippingRegion( Wx::Region->new( Wx::Rect->new( 0, 0, 40, 40 ) ) );
544 ok( $setclreg, "Wx::DC::SetClippingRegionRegion" );
545 }
546
547 ##############################################################################
548 # Wx::Timer
549 ##############################################################################
550 {
551 my( $newdefault, $neweh ) = ( 0, 0 );
552 hijack( 'Wx::Timer::newDefault' => sub { $newdefault = 1 },
553         'Wx::Timer::newEH'      => sub { $neweh = 1 } );
554
555 Wx::Timer->new->Destroy;
556 ok( $newdefault, "Wx::Timer::newDefault" );
557
558 Wx::Timer->new( $frame, 1 );
559 ok( $neweh, "Wx::Timer::newEH" );
560 }
561
562 ##############################################################################
563 # Wx::TreeCtrl
564 ##############################################################################
565 {
566 my( $tgetp, $wgetp, $iitid, $iiint ) = ( 0, 0, 0, 0 );
567 hijack( 'Wx::TreeCtrl::GetParent' => sub { $tgetp = 1 },
568         'Wx::Window::GetParent'   => sub { $wgetp = 1 },
569         'Wx::TreeCtrl::InsertItemPrev' => sub { $iitid = 1 },
570         'Wx::TreeCtrl::InsertItemBef'  => sub { $iiint = 1 } );
571
572 my $tc = Wx::TreeCtrl->new( $frame, -1 );
573 my $rt = $tc->AddRoot( 'root' );
574 my $c1 = $tc->AppendItem( $rt, 'first' );
575 my $c2 = $tc->AppendItem( $rt, 'second' );
576
577 $tc->GetParent( $c1 );
578 ok( $tgetp, "Wx::TreeCtrl::GetParent" );
579
580 $tc->GetParent;
581 ok( $wgetp, "Wx::Window::GetParent" );
582
583 $tc->InsertItem( $rt, $c1, 'insert 1' );
584 ok( $iitid, "Wx::TreeCtrl::InsertItemPrev" );
585
586 $tc->InsertItem( $rt, 1, 'insert 2' );
587 ok( $iiint, "Wx::TreeCtrl::InsertItemBef" );
588 }
589
590 ##############################################################################
591 # Wx::Pen
592 ##############################################################################
593 {
594 my( $newcol, $newbitmap, $newstring,
595     $setcolcol, $setcolrgb, $setcolname ) = ( 0, 0, 0, 0, 0, 0 );
596 hijack( 'Wx::Pen::newColour'    => sub { $newcol = 1 },
597         ( Wx::wxMSW() ?
598           ( 'Wx::Pen::newBitmap'    => sub { $newbitmap = 1 } ) :
599           () ),
600         'Wx::Pen::newString'    => sub { $newstring = 1 },
601         'Wx::Pen::SetColourColour' => sub { $setcolcol = 1 },
602         'Wx::Pen::SetColourRGB'    => sub { $setcolrgb = 1 },
603         'Wx::Pen::SetColourName'   => sub { $setcolname = 1 } );
604
605 Wx::Pen->new( Wx::Colour->new( 'red' ), 0, 0 );
606 ok( $newcol, "Wx::Pen::newColour" );
607
608 SKIP: {
609   skip "MSW-only method", 1 unless Wx::wxMSW();
610
611   Wx::Pen->new( $bmpok, 1 );
612   ok( $newbitmap, "Wx::Pen::newBitmap" );
613 }
614
615 my $pen = Wx::Pen->new( 'red', 0, 0 );
616 ok( $newstring, "Wx::Pen::newString" );
617
618 $pen->SetColour( Wx::wxRED() );
619 ok( $setcolcol, "Wx::Pen::SetColourColour" );
620
621 $pen->SetColour( 1, 2, 3 );
622 ok( $setcolrgb, "Wx::Pen::SetColourRGB" );
623
624 $pen->SetColour( 'red' );
625 ok( $setcolname, "Wx::Pen::SetColourName" );
626 }
627
628 ##############################################################################
629 # Wx::ListCtrl
630 ##############################################################################
631 {
632 my( $ici, $istr, $setii, $setstr ) = ( 0, 0, 0, 0 );
633 hijack( 'Wx::ListCtrl::InsertColumnInfo'   => sub { $ici = 1 },
634         'Wx::ListCtrl::InsertColumnString' => sub { $istr = 1 },
635         'Wx::ListCtrl::SetItemInfo'        => sub { $setii = 1 },
636         'Wx::ListCtrl::SetItemString'      => sub { $setstr = 1 } );
637
638 my $lc = Wx::ListCtrl->new( $frame, -1, [-1,-1], [-1,-1], Wx::wxLC_REPORT() );
639
640 $lc->InsertColumn( 0, 'Column' );
641 ok( $istr, "Wx::ListCtrl::InsertColumnString" );
642
643 my $li = Wx::ListItem->new; $li->SetColumn( 1 ); $li->SetText( 'Foo' );
644 $lc->InsertColumn( 1, $li );
645 ok( $ici, "Wx::ListCtrl::InsertColumnInfo" );
646
647 $lc->InsertStringItem( 0, 'Foo' );
648 $lc->SetItem( 0, 0, 'Bar' );
649 ok( $setstr, "Wx::ListCtrl::SetItemString" );
650
651 $li->SetId( 0 );
652 $lc->SetItem( $li );
653 ok( $setii, "Wx::ListCtrl::SetItemInfo" );
654 }
655
656 ##############################################################################
657 # Wx::ImageList
658 ##############################################################################
659 {
660 my( $addbitmap, $addwithcolour, $addicon, $replico, $replbmp )
661   = ( 0, 0, 0, 0, 0 );
662 hijack( 'Wx::ImageList::AddBitmap'         => sub { $addbitmap = 1 },
663         'Wx::ImageList::AddWithColourMask' => sub { $addwithcolour = 1 },
664         'Wx::ImageList::AddIcon'           => sub { $addicon = 1 },
665         'Wx::ImageList::ReplaceIcon'       => sub { $replico = 1 },
666         'Wx::ImageList::ReplaceBitmap'     => sub { $replbmp = 1 } );
667
668 my $img = Wx::Image->new( 16, 16 );
669 my( $bmp, $ico ) = ( Wx::Bitmap->new( $img ), Wx::GetWxPerlIcon( 1 ) );
670 my $imgl = Wx::ImageList->new( 16, 16 );
671
672 $imgl->Add( $bmp );
673 ok( $addbitmap, "Wx::ImageList::AddBitmap" );
674
675 $imgl->Add( $bmp, Wx::wxBLACK() );
676 ok( $addwithcolour, "Wx::ImageList::AddWithColourMask" );
677
678 $imgl->Add( $ico );
679 ok( $addicon, "Wx::ImageList::AddIcon" );
680
681 $imgl->Replace( 0, $bmp );
682 ok( $replbmp, "Wx::ImageList::ReplaceBitmap" );
683
684 $imgl->Replace( 1, $ico );
685 ok( $replico, "Wx::ImageList::ReplaceIcon" );
686 }
687
688 ##############################################################################
689 # Wx::Menu
690 ##############################################################################
691 {
692 my( $appmen, $appstr, $appite, $delite, $delid, $desite, $desid,
693     $remite, $remid, $prepite, $prepstr, $insite, $insstr )
694   = ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
695 hijack( 'Wx::Menu::AppendSubMenu_'=> sub { $appmen = 1 },
696         'Wx::Menu::AppendString'  => sub { $appstr = 1 },
697         'Wx::Menu::AppendItem'    => sub { $appite = 1 },
698         'Wx::Menu::DeleteItem'    => sub { $delite = 1 },
699         'Wx::Menu::DeleteId'      => sub { $delid = 1 },
700         'Wx::Menu::DestroyItem'   => sub { $desite = 1 },
701         'Wx::Menu::DestroyId'     => sub { $desid = 1 },
702         'Wx::Menu::RemoveItem'    => sub { $remite = 1 },
703         'Wx::Menu::RemoveId'      => sub { $remid = 1 },
704         'Wx::Menu::PrependString' => sub { $prepstr = 1 },
705         'Wx::Menu::PrependItem'   => sub { $prepite = 1 },
706         'Wx::Menu::InsertString'  => sub { $insstr = 1 },
707         'Wx::Menu::InsertItem'    => sub { $insite = 1 } );
708
709 my $me = Wx::Menu->new;
710 my $me2 = Wx::Menu->new;
711
712 my $i1 = Wx::MenuItem->new( $me, 1, 'Foo' );
713 my $i2 = Wx::MenuItem->new( $me, 2, 'Bar' );
714 my $i3 = Wx::MenuItem->new( $me, 3, 'Baz' );
715 my $i4 = Wx::MenuItem->new( $me, 4, 'Baz' );
716
717 $me->Append( 11, 'My' );
718 ok( $appstr, "Wx::Menu::AppendString" );
719
720 $me->Append( 12, 'Sub', $me2 );
721 ok( $appmen, "Wx::Menu::AppendSubMenu_" );
722
723 $me->Append( $i1 );
724 ok( $appite, "Wx::Menu::AppendItem" );
725
726 $me->Delete( $i1 );
727 ok( $delite, "Wx::Menu::DeleteItem" );
728
729 $me->Delete( 12 );
730 ok( $delid, "Wx::Menu::DeleteId" );
731
732 $me->Append( $i2 ); $me->Append( $i3 );
733 $me->Append( 12, 'Fubar' ); $me->Append( 13, 'Fubar' );
734
735 $me->Destroy( $i2 );
736 ok( $desite, "Wx::Menu::DestroyItem" );
737
738 $me->Destroy( 12 );
739 ok( $desid, "Wx::Menu::DestroyId" );
740
741 $me->Remove( $i3 );
742 ok( $remite, "Wx::Menu::RemoveItem" );
743
744 $me->Remove( 13 );
745 ok( $remid, "Wx::Menu::RemoveId" );
746
747 $me->Prepend( $i3 );
748 ok( $prepite, "Wx::Menu::PrependItem" );
749
750 $me->Prepend( 15, 'Myself' );
751 ok( $prepstr, "Wx::Menu::PrependString" );
752
753 $me->Insert( 0, $i4 );
754 ok( $insite, "Wx::Menu::InsertItem" );
755
756 $me->Insert( 0, 17, 'Foo' );
757 ok( $insstr, "Wx::Menu::InsertString" );
758 }
759
760 ##############################################################################
761 # Wx::RadioBox
762 ##############################################################################
763 {
764 my( $wenable, $renable, $wgetlabel, $rgetlabel, $wsetlabel,
765     $rsetlabel, $wshow, $rshow ) = ( 0, 0, 0, 0, 0, 0, 0, 0 );
766 hijack( 'Wx::Window::Enable'         => sub { $wenable = 1 },
767         'Wx::RadioBox::EnableItem'   => sub { $renable = 1 },
768         'Wx::Window::GetLabel'       => sub { $wgetlabel = 1 },
769         'Wx::RadioBox::GetItemLabel' => sub { $rgetlabel = 1 },
770         'Wx::Window::SetLabel'       => sub { $wsetlabel = 1 },
771         'Wx::RadioBox::SetItemLabel' => sub { $rsetlabel = 1 },
772         'Wx::Window::Show'           => sub { $wshow = 1 },
773         'Wx::RadioBox::ShowItem'     => sub { $rshow = 1 } );
774
775 my $rb = Wx::RadioBox->new( $frame, -1, 'Foo', [-1,-1], [-1,-1],
776                             [ qw(a b c) ] );
777
778 $rb->Enable( 1 );
779 ok( $wenable, "Wx::Window::Enable" );
780
781 $rb->Enable( 1, 1 );
782 ok( $renable, "Wx::RadioBox::EnableItem" );
783
784 $rb->GetLabel;
785 ok( $wgetlabel, "Wx::Window::GetLabel" );
786
787 $rb->GetLabel( 1 );
788 ok( $rgetlabel, "Wx::RadioBox::GetItemLabel" );
789
790 $rb->SetLabel( 'Foo' );
791 ok( $wsetlabel, "Wx::Window::SetLabel" );
792
793 $rb->SetLabel( 1, 'My' );
794 ok( $rsetlabel, "Wx::RadioBox::SetLabel" );
795
796 $rb->Show( 1 );
797 ok( $wshow, "Wx::Window::Show" );
798
799 $rb->Show( 1, 1 );
800 ok( $rshow, "Wx::RadioBox::ShowItem" );
801 }
802
803 ##############################################################################
804 # Wx::Region
805 ##############################################################################
806 {
807 my( $newempty, $newxywh, $newpp, $newrect, $cxywh, $cxy, $cpoint,
808     $crect, $ixywh, $irect, $iregion, $srect, $sregion,
809     $uxywh, $urect, $uregion, $xxywh, $xrect, $xregion )
810   = ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
811 hijack( 'Wx::Region::newEmpty'     => sub { $newempty = 1 },
812         'Wx::Region::newXYWH'      => sub { $newxywh = 1 },
813         'Wx::Region::newPP'        => sub { $newpp = 1 },
814         'Wx::Region::newRect'      => sub { $newrect = 1 },
815 #        Wx::Region::newPolygon'   => sub { $newpolygon = 1 },
816         'Wx::Region::ContainsXYWH'  => sub { $cxywh = 1 },
817         'Wx::Region::ContainsXY'    => sub { $cxy = 1 },
818         'Wx::Region::ContainsPoint' => sub { $cpoint = 1 },
819         'Wx::Region::ContainsRect'  => sub { $crect = 1 },
820         'Wx::Region::IntersectXYWH'   => sub { $ixywh = 1 },
821         'Wx::Region::IntersectRect'   => sub { $irect = 1 },
822         'Wx::Region::IntersectRegion' => sub { $iregion = 1 },
823         'Wx::Region::SubtractRect'    => sub { $srect = 1 },
824         'Wx::Region::SubtractRegion'  => sub { $sregion = 1 },
825         'Wx::Region::UnionXYWH'   => sub { $uxywh = 1 },
826         'Wx::Region::UnionRect'   => sub { $urect = 1 },
827         'Wx::Region::UnionRegion' => sub { $uregion = 1 },
828         'Wx::Region::XorXYWH'   => sub { $xxywh = 1 },
829         'Wx::Region::XorRect'   => sub { $xrect = 1 },
830         'Wx::Region::XorRegion' => sub { $xregion = 1 } );
831
832 Wx::Region->new;
833 ok( $newempty, "Wx::Region::newEmpty" );
834
835 Wx::Region->new( 1, 2, 3, 4 );
836 ok( $newxywh, "Wx::Region::newXYWH" );
837
838 Wx::Region->new( [0, 0], [50, 50] );
839 ok( $newpp, "Wx::Region::newPP" );
840
841 my $r = Wx::Region->new( Wx::Rect->new( 0, 0, 50, 50 ) );
842 ok( $newrect, "Wx::Region::newRect" );
843
844 $r->Contains( 0, 0, 1, 2 );
845 ok( $cxywh, "Wx::Region::ContainsXYWH" );
846
847 $r->Contains( 1, 2 );
848 ok( $cxy, "Wx::Region::ContainsXY" );
849
850 $r->Contains( [ 1, 2 ] );
851 ok( $cpoint, "Wx::Region::ContainsPoint" );
852
853 $r->Contains( Wx::Rect->new( 0, 1, 2, 3 ) );
854 ok( $crect, "Wx::Region::ContainsRect" );
855
856 $r->Intersect( 0, 1, 2, 3 );
857 ok( $ixywh, "Wx::Region::IntersectXYWH" );
858
859 $r->Intersect( Wx::Rect->new( 0, 1, 2, 3 ) );
860 ok( $irect, "Wx::Region::IntersectRect" );
861
862 $r->Intersect( Wx::Region->new( 0, 0, 50, 50 ) );
863 ok( $iregion, "Wx::Region::IntersectRegion" );
864
865 $r->Subtract( Wx::Rect->new( 0, 1, 2, 3 ) );
866 ok( $srect, "Wx::Region::SubtractRect" );
867
868 $r->Subtract( $r );
869 ok( $sregion, "Wx::Region::SubtractRegion" );
870
871 $r->Union( 0, 0, 50, 50 );
872 ok( $uxywh, "Wx::Region::UnionXYWH" );
873
874 $r->Union( Wx::Rect->new( Wx::Point->new( 0, 0 ), Wx::Size->new( 50, 50 ) ) );
875 ok( $urect, "Wx::Region::UnionRect" );
876
877 SKIP: {
878   skip "Does not work with wxGTK 2.2", 1
879     if Wx::wxGTK && Wx::wxVERSION < 2.003;
880
881   $r->Union( $r );
882   ok( $uregion, "Wx::Region::UnionRegion" );
883 }
884
885 $r->Xor( 0, 0, 1, 1 );
886 ok( $xxywh, "Wx::Region::XorXYWH" );
887
888 $r->Xor( Wx::Rect->new( 0, 0, 1, 2 ) );
889 ok( $xrect, "Wx::Region::XorRect" );
890
891 SKIP: {
892   skip "Does not work with wxGTK 2.2", 1
893     if Wx::wxGTK && Wx::wxVERSION < 2.003;
894
895   $r->Xor( $r );
896   ok( $xregion, "Wx::Region::XorRegion" );
897 }
898 }
899
900 ##############################################################################
901 # Wx::Image
902 ##############################################################################
903 {
904 my( $newnull, $newicon, $newbitmap, $newstreamt, $newstreamm,
905     $newwh, $newdata, $newnametype, $newnamemime,
906     $lsm, $lst, $lft, $lfm, $ssm, $sst, $sft, $sfm, $sfo )
907   = ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
908 hijack( 'Wx::Image::newNull'        => sub { $newnull = 1 },
909         'Wx::Image::newIcon'        => sub { $newicon = 1 },
910         'Wx::Image::newBitmap'      => sub { $newbitmap = 1 },
911         'Wx::Image::newStreamType'  => sub { $newstreamt = 1 },
912         'Wx::Image::newStreamMIME'  => sub { $newstreamm = 1 },
913         'Wx::Image::newWH'          => sub { $newwh = 1 },
914         'Wx::Image::newData'        => sub { $newdata = 1 },
915         'Wx::Image::newNameType'    => sub { $newnametype = 1 },
916         'Wx::Image::newNameMIME'    => sub { $newnamemime = 1 },
917         'Wx::Image::LoadStreamType' => sub { $lst = 1 },
918         'Wx::Image::LoadStreamMIME' => sub { $lsm = 1 },
919         'Wx::Image::LoadFileType'   => sub { $lft = 1 },
920         'Wx::Image::LoadFileMIME'   => sub { $lfm = 1 },
921 #        Wx::Image::SaveFileSType  => sub { $sst = 1 },
922 #        Wx::Image::SaveFileSMIME  => sub { $ssm = 1 },
923 #        Wx::Image::SaveFileType   => sub { $sft = 1 },
924 #        Wx::Image::SaveFileMIME   => sub { $sfm = 1 },
925 #        Wx::Image::SaveFileOnly   => sub { $sfo = 1 }
926       );
927
928 my $op = '< wxpl.xpm';
929 Wx::Image->new;
930 ok( $newnull, "Wx::Image::newNull" );
931
932 Wx::Image->new( $icook );
933 ok( $newicon, "Wx::Image::newIcon" );
934
935 Wx::Image->new( $bmpok );
936 ok( $newbitmap, "Wx::Image::newBitmap" );
937
938 open IN, $op; binmode IN;
939 Wx::Image->new( *IN, Wx::wxBITMAP_TYPE_XPM() );
940 ok( $newstreamt, "Wx::Image::newStreamType" );
941
942 open IN, $op; binmode IN;
943 Wx::Image->new( *IN, 'image/xpm' );
944 ok( $newstreamm, "Wx::Image::newStreamMIME" );
945
946 Wx::Image->new( 1, 2 );
947 ok( $newwh, "Wx::Image::newWH" );
948
949 Wx::Image->new( 3, 4, ' ' x 3 x 4 x 3 );
950 ok( $newdata, "Wx::Image::newData" );
951
952 Wx::Image->new( 'wxpl.ico', Wx::wxBITMAP_TYPE_ICO() );
953 ok( $newnametype, "Wx::Image::newNameType" );
954
955 Wx::Image->new( 'wxpl.xpm', 'image/xpm' );
956 ok( $newnametype, "Wx::Image::newNameMIME" );
957
958 my $img = Wx::Image->new;
959 open IN, "wxpl.xpm"; binmode IN;
960 $img->LoadFile( \*IN, Wx::wxBITMAP_TYPE_XPM() );
961 ok( $lst, "Wx::Image::LoadStreamType" );
962
963 open IN, $op; binmode IN;
964 $img->LoadFile( \*IN, 'image/xpm' );
965 ok( $lsm, "Wx::Image::LoadStreamMIME" );
966
967 $img->LoadFile( 'wxpl.xpm', Wx::wxBITMAP_TYPE_XPM() );
968 ok( $lft, "Wx::Image::LoadFileType" );
969
970 $img->LoadFile( 'wxpl.xpm', 'image/xpm' );
971 ok( $lfm, "Wx::Image::LoadFileMIME" );
972 }
973
974 $frame->Destroy;
975 } );
976
977 ##############################################################################
978 # Wx::Buffered{Paint}DC
979 ##############################################################################
980 {
981 my( $newd, $newb, $news, $initb, $inits ) = ( 0, 0, 0, 0, 0, );
982 hijack( 'Wx::BufferedDC::newDefault'     => sub { $newd = 1 },
983         'Wx::BufferedDC::newBitmap'      => sub { $newb = 1 },
984         'Wx::BufferedDC::newSize'        => sub { $news = 1 },
985         'Wx::BufferedDC::InitBitmap'     => sub { $initb = 1 },
986         'Wx::BufferedDC::InitSize'       => sub { $inits = 1 },
987         );
988 my $frame = Wx::Frame->new( undef, -1, 'Frame' );
989 my $cdc = Wx::ClientDC->new( $frame );
990 my $dc;
991
992 $dc = Wx::BufferedDC->new;
993 ok( $newd, 'Wx::BufferedDC::newDefault' );
994
995 my $backing = Wx::Bitmap->new( 20, 20 );
996 $dc = Wx::BufferedDC->new( $cdc, $backing );
997 ok( $newb, 'Wx::BufferedDC::newBitmap' );
998
999 $dc = Wx::BufferedDC->new( $cdc, [20, 20] );
1000 ok( $news, 'Wx::BufferedDC::newSize' );
1001
1002 SKIP: {
1003     skip 'Broken inheritance for 2.6.x', 2 if ref $dc eq 'Wx::MemoryDC';
1004     skip 'Does not work with 2.7.1', 2 if Wx::wxVERSION < 2.007002;
1005
1006     $dc = Wx::BufferedDC->new;
1007     my $backing = Wx::Bitmap->new( 200, 100 );
1008     $dc->Init( $cdc, $backing );
1009     ok( $initb, 'Wx::BufferedDC::InitBitmap' );
1010
1011     $dc = Wx::BufferedDC->new;
1012     $dc->Init( $cdc, [200, 100] );
1013     ok( $inits, 'Wx::BufferedDC::InitSize' );
1014 }
1015
1016 undef $dc;
1017 undef $cdc;
1018 }
1019
1020 ##############################################################################
1021 # Wx::Sizer/Wx::SizerItem
1022 ##############################################################################
1023 {
1024 my( $showw, $shows, $showi, $srfloat, $srwh, $srsize, $addsiz,
1025     $addwin, $addspa, $inssiz, $inswin, $insspa, $presiz, $prewin, $prespa,
1026     $remwin, $remsiz, $remnth, $smsxy, $smssize, $siswin, $sissiz, $sisnth ) =
1027   ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );
1028 hijack( 'Wx::Sizer::ShowWindow'       => sub { $showw = 1 },
1029         'Wx::Sizer::ShowSizer'        => sub { $shows = 1 },
1030 #        'Wx::Sizer::ShowItem'         => sub { $showi = 1 },
1031         'Wx::SizerItem::SetRatioFloat' => sub { $srfloat = 1 },
1032         'Wx::SizerItem::SetRatioWH'   => sub { $srwh = 1 },
1033         'Wx::SizerItem::SetRatioSize' => sub { $srsize = 1 },
1034         'Wx::Sizer::AddSizer'         => sub { $addsiz = 1 },
1035         'Wx::Sizer::AddWindow'        => sub { $addwin = 1 },
1036         'Wx::Sizer::AddSpace'         => sub { $addspa = 1 },
1037         'Wx::Sizer::InsertSizer'      => sub { $inssiz = 1 },
1038         'Wx::Sizer::InsertWindow'     => sub { $inswin = 1 },
1039         'Wx::Sizer::InsertSpace'      => sub { $insspa = 1 },
1040         'Wx::Sizer::PrependSizer'     => sub { $presiz = 1 },
1041         'Wx::Sizer::PrependWindow'    => sub { $prewin = 1 },
1042         'Wx::Sizer::PrependSpace'     => sub { $prespa = 1 },
1043         ( $Wx::wxVERSION < 2.007 ?
1044           ( 'Wx::Sizer::RemoveWindow'     => sub { $remwin = 1 } ) :
1045           () ),
1046         'Wx::Sizer::RemoveSizer'      => sub { $remsiz = 1 },
1047         'Wx::Sizer::RemoveNth'        => sub { $remnth = 1 },
1048         'Wx::Sizer::SetMinSizeXY'     => sub { $smsxy  = 1 },
1049         'Wx::Sizer::SetMinSizeSize'   => sub { $smssize= 1 },
1050         'Wx::Sizer::SetItemMinSizeWindow' => sub { $siswin = 1 },
1051         'Wx::Sizer::SetItemMinSizeSizer'  => sub { $sissiz = 1 },
1052         'Wx::Sizer::SetItemMinSizeNth'    => sub { $sisnth = 1 },
1053        );
1054
1055 my $win = Wx::Frame->new( undef, -1, 'Foo' );
1056 my $siz = Wx::BoxSizer->new( Wx::wxVERTICAL() );
1057 $siz->Add( Wx::BoxSizer->new( Wx::wxVERTICAL() ) );
1058 $win->SetSizer( $siz );
1059
1060 $siz->Show( $win );
1061 ok( $showw, 'Wx::Sizer::ShowWindow' );
1062
1063 $siz->Show( $siz, 1 );
1064 ok( $shows, 'Wx::Sizer::ShowSizer' );
1065
1066 #$siz->Show( 0 );
1067 #ok( $showi, 'Wx::Sizer::ShowItem' );
1068
1069 sub siz1 { Wx::BoxSizer->new( Wx::wxHORIZONTAL() ) }
1070 sub win1 { Wx::Window->new( $win, -1 ) }
1071
1072 my $item = ( $siz->GetChildren )[0];
1073
1074 $item->SetRatio( 1.234 );
1075 ok( $srfloat, 'Wx::SizerItem::SetRatioFloat' );
1076
1077 $item->SetRatio( 1, 2 );
1078 ok( $srfloat, 'Wx::SizerItem::SetRatioWH' );
1079
1080 $item->SetRatio( [ 1, 3 ] );
1081 ok( $srfloat, 'Wx::SizerItem::SetRatioSize' );
1082
1083 $siz->Add( siz1 );
1084 $siz->Add( siz1, 1, 1, 1, 1 );
1085 ok( $addsiz, 'Wx::Sizer::AddSizer' );
1086
1087 $siz->Add( win1 );
1088 $siz->Add( win1, 1, 1, 1, 1 );
1089 ok( $addwin, 'Wx::Sizer::AddWindow' );
1090
1091 $siz->Add( 100, 100 );
1092 $siz->Add( 100, 100, 1, 1, 1, 1 );
1093 ok( $addspa, 'Wx::Sizer::AddSpace' );
1094
1095 $siz->Insert( 2, siz1 );
1096 $siz->Insert( 2, siz1, 1, 1, 1, 1 );
1097 ok( $inssiz, 'Wx::Sizer::InsertSizer' );
1098
1099 $siz->Insert( 3, win1 );
1100 $siz->Insert( 3, win1, 1, 1, 1, 1 );
1101 ok( $inswin, 'Wx::Sizer::InsertWindow' );
1102
1103 $siz->Insert( 4, 100, 100 );
1104 $siz->Insert( 4, 100, 100, 1, 1, 1, 1 );
1105 ok( $insspa, 'Wx::Sizer::InsertSpace' );
1106
1107 $siz->Prepend( siz1 );
1108 $siz->Prepend( siz1, 1, 1, 1, 1 );
1109 ok( $presiz, 'Wx::Sizer::PrependSizer' );
1110
1111 $siz->Prepend( win1 );
1112 $siz->Prepend( win1, 1, 1, 1, 1 );
1113 ok( $prewin, 'Wx::Sizer::PrependWindow' );
1114
1115 $siz->Prepend( 100, 100 );
1116 $siz->Prepend( 100, 100, 1, 1, 1, 1 );
1117 ok( $prespa, 'Wx::Sizer::PrependSpace' );
1118
1119 $siz->Remove( 3 );
1120 ok( $remnth, 'Wx::Sizer::RemoveNth' );
1121
1122 $siz->Remove( siz1 );
1123 ok( $remsiz, 'Wx::Sizer::RemoveSizer' );
1124
1125 if( $Wx::wxVERSION < 2.007 ) {
1126     $siz->Remove( win1 );
1127     ok( $remwin, 'Wx::Sizer::RemoveWindow' );
1128 } else {
1129     ok( 1, 'dummy' );
1130 }
1131
1132 $siz->SetItemMinSize( win1, 100, 100 );
1133 ok( $siswin, 'Wx::Sizer::SetItemMinSizeWindow' );
1134
1135 $siz->SetItemMinSize( siz1, 100, 100 );
1136 ok( $sissiz, 'Wx::Sizer::SetItemMinSizeSizer' );
1137
1138 $siz->SetItemMinSize( 4, 100, 100 );
1139 ok( $sisnth, 'Wx::Sizer::SetItemMinSizeNth' );
1140
1141 $siz->SetMinSize( 100, 100 );
1142 ok( $smsxy, 'Wx::Sizer::SetMinSizeXY' );
1143
1144 $siz->SetMinSize( [ 100, 100 ] );
1145 ok( $smssize, 'Wx::Sizer::SetMinSizeSize' );
1146
1147 $win->Destroy;
1148 }
1149
1150 # local variables:
1151 # mode: cperl
1152 # end: