Gtk2-Ex-MenuView
view release on metacpan or search on metacpan
t/MenuView-weaken.t view on Meta::CPAN
#-----------------------------------------------------------------------------
{
my $leaks = Test::Weaken::leaks (sub { Gtk2::Ex::MenuView->new });
is ($leaks, undef, 'deep garbage collection');
if ($leaks && defined &explain) {
diag "Test-Weaken ", explain $leaks;
}
}
{
my $leaks = Test::Weaken::leaks
({ constructor => sub {
my $store = Gtk2::ListStore->new ('Glib::String');
my $menuview = Gtk2::Ex::MenuView->new (model => $store);
return [ $menuview, $store ];
},
contents => \&my_contents,
});
is ($leaks, undef, 'deep garbage collection -- with a model set');
if ($leaks && defined &explain) {
diag "Test-Weaken ", explain $leaks;
}
}
{
my $leaks = Test::Weaken::leaks
({ constructor => sub {
my $s1 = Gtk2::ListStore->new ('Glib::String');
my $menuview = Gtk2::Ex::MenuView->new (model => $s1);
my $s2 = Gtk2::ListStore->new ('Glib::String');
$menuview->set (model => $s2);
return [ $menuview, $s1, $s2 ];
},
contents => \&my_contents,
});
is ($leaks, undef,
'deep garbage collection -- with model set then changed to another');
if ($leaks && defined &explain) {
diag "Test-Weaken ", explain $leaks;
}
}
{
my $child_count;
my $leaks = Test::Weaken::leaks
({ constructor => sub {
my $store = Gtk2::ListStore->new ('Glib::String');
$store->set ($store->append, 0 => 'foo');
$store->set ($store->append, 0 => 'bar');
my $menuview = Gtk2::Ex::MenuView->new (model => $store);
$menuview->signal_connect
(item_create_or_update => sub {
my ($menuview, $item, $model, $path, $iter) = @_;
diag "create ",$path->to_string;
$item = Gtk2::MenuItem->new_with_label ($model->get($iter,0));
$item->show;
return $item;
});
$menuview->popup (undef, undef, undef, undef, 1, 0);
# Gtk2->main;
MyTestHelpers::wait_for_event ($menuview, 'map-event');
$child_count = scalar @{[$menuview->get_children]};
return $menuview, $store;
},
destructor => sub {
my ($menuview, $store) = @_;
$menuview->popdown;
},
contents => \&my_contents,
});
is ($child_count, 2, 'deep garbage collection -- popup, child count');
is ($leaks, undef, 'deep garbage collection -- popup');
if ($leaks && defined &explain) {
diag "Test-Weaken ", explain $leaks;
my $unfreed = $leaks->unfreed_proberefs;
foreach my $proberef (@$unfreed) {
diag " unfreed $proberef";
}
foreach my $proberef (@$unfreed) {
diag " search $proberef";
MyTestHelpers::findrefs($proberef);
}
}
}
exit 0;
( run in 0.960 second using v1.01-cache-2.11-cpan-364913b4093 )