BEGIN { $|=1; $^W=1; }
use strict;
BEGIN {
if (!eval q{
use Test::More;
1;
}) {
print "1..0 # skip: no Test::More module\n";
exit;
}
}
use Tk;
BEGIN { plan tests => 19 };
my $mw = Tk::MainWindow->new;
$mw->geometry('+0+0');
my $w = $mw->Label(-text=>'a widget but not a Wm')->grid;
##
## appname (missing until Tk800 until .004)
##
{
my $name;
eval { $name = $w->appname; };
is($@, "", "\$w->appname works");
my ($leaf) = $name =~ /^(\w+)/;
is( $leaf, 'widget', "Appname matches filename" );
is( $mw->name, $name, "\$mw->name is equal to appname");
}
##
## scaling (missing until Tk800 until .004)
##
{
my $scale;
eval { $scale = $w->scaling; };
is($@, "", "\$w->scaling works");
like($scale, qr/^[0-9.]+$/, "Scaling factor is a number: '$scale'" );
}
##
## pathname did not work until Tk800.004
##
{
my $path;
my $c = $w->PathName;
eval { $path = $mw->pathname($w->id); };
is($@, "", "\$mw->pathname works");
is( $path, $c, "Pathname and pathname agree" );
}
##
## Busy/Unbusy
##
{
my $oldcursor = $mw->cget(-cursor);
$mw->update; # make main window viewable, necessary for Busy
$mw->Busy;
is($mw->cget(-cursor), "watch", "The busy cursor");
$mw->after(10);
$mw->Unbusy;
is($mw->cget(-cursor), $oldcursor, "Old cursor restored");
}
##
## Busy/Unbusy with recursion
##
{
my $oldcursor = $mw->cget(-cursor);
my $w2 = $mw->Label(-cursor => "cross")->grid;
$mw->Busy(-recurse => 1, -cursor => "watch");
is($mw->cget(-cursor), "watch", "The busy cursor");
is($w2->cget(-cursor), "watch", "Subwidget has also the busy cursor");
$mw->after(10);
$mw->Unbusy;
is($mw->cget(-cursor), $oldcursor, "Old cursor restored");
is($w2->cget(-cursor), "cross", "Oldsubwidget cursor also restored");
$w2->destroy;
}
## [rt.cpan.org #32858]
{
my $top = $mw->Toplevel;
$top->geometry('+0+0');
$mw->update;
$mw->Busy(-recurse => 1);
for my $w ($mw, $top) {
is(($w->bindtags)[0], 'Busy', "tag 'Busy' set for $w");
is($w->cget('-cursor'), 'watch', "cursor 'watch'set for $w");
}
$mw->Unbusy;
$top->destroy;
}
##
## PathName vs. Widget
##
{
my $path = $w->PathName;
is($mw->Widget($path), $w, "PathName() and Widget()");
}
## [rt.cpan.org #49515]
SKIP: {
skip 'Probably does not work on monochrome displays', 1
if $w->depth == 1;
my $w2 = $mw->Label;
$w2->RecolorTree({background => 'green'});
is($w2->cget('-background'), 'green', 'RecolorTree was effective');
}
1;
__END__