The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# -*- perl -*-
BEGIN { $|=1; $^W=1; }

use strict;
use Test;

BEGIN { plan tests => 19 };

use Tk;
use Tk::Button;

my $mw = Tk::MainWindow->new;
eval { $mw->geometry('+10+10'); };  # This works for mwm and interactivePlacement

##
## More than simple tests
##
{

    my $b = $mw->Button();

    my $method;
    for my $mgr ( qw/grid pack form/ )  # 'place' needs args so ignored here
       {
         print "testing manager: $mgr ...\n";

         $method = $mgr;
         eval { $b->$method(); };
         ok ($@, '', "Fatal!. Even managing one widget with $mgr failed");
         eval { $mw->update; };
         ok ($@, '', "Uh. Idletask problem after $mgr widget");

         $method = $mgr . 'Info';
         eval { my %opts = $b->$method(); };
         ok ($@, '', "Fatal!. Even info on one widget failed with $mgr");

         $method = $mgr . 'Forget';
         eval { $b->$method(); };
         ok ($@, '', "Fatal!. Even unmanage one widget failed with $mgr");
         eval { $mw->update; };
         ok ($@, '', "Uh. $mgr idletask problem with unmanage");
       }

    $b->destroy;
    eval { $mw->update; };
    ok ($@, '', "Uh. Idletask problem on destroy widget");
}
##
##
##
{
   print "grid serveral buttons at once\n";
   my $b1 = $mw->Button;
   my $b2 = $mw->Button;
   eval { $b1->grid($b2); };
   ok ($@, '', "Failed to place 2 buttons with one grid call");
   $b1->destroy;
   $b2->destroy;
}
##
## Relative placement grid tests that fail in Tk800.005
##
{
    print "grid and rel. placements\n";

    my $b = $mw->Button();
    #eval { $b->grid('-'); };
    $b->grid('-');
    ok ($@, '', "Problem with relative extent the column span by 1");
    my %opt;
    %opt = $b->gridInfo;
    ok ($opt{-columnspan}, 2, "'-' gives wrong column span");

    $b->destroy;
}
1;
__END__