Glib
view release on metacpan or search on metacpan
my $x = 123;
my $subr = sub { return $x };
# handler to suppress the warning message from nosuchsignal
my $logid = Glib::Log->set_handler ('GLib-GObject', ['warning'], sub { });
my $sigid = $my->signal_connect ('nosuchsignal' => $subr);
Glib::Log->remove_handler ('GLib-GObject', $logid);
ok(! $sigid, 34, "'nosuchsignal' not connected");
require Scalar::Util;
Scalar::Util::weaken ($subr);
ok(! defined $subr, 35, "subr gc'ed after bad signal name");
}
}
pass(36);
__END__
if ($pid == 0) {
# child
require POSIX;
POSIX::_exit(42); # no END etc cleanups
}
# parent
my $loop = Glib::MainLoop->new;
my $userdata = [ 'hello' ];
my $id = Glib::Child->watch_add ($pid, sub { die; }, $userdata);
require Scalar::Util;
Scalar::Util::weaken ($userdata);
print '', (defined $userdata ? 'ok' : 'not ok'),
" 26 - child userdata kept alive\n";
print '', (Glib::Source->remove($id) ? 'ok' : 'not ok'),
" 27 - child source removal\n";
print '', (! defined $userdata ? 'ok' : 'not ok'),
" 28 - child userdata now gone\n";
# No test of $status here, yet, since it may be a raw number on ms-dos,
# instead of a waitpid() style "code*256". Believe there's no
# POSIX::WIFEXITED() etc on dos either to help examining the value.
is ($args[0], 'Another-Unknown-Domain', 'sub2 domain');
isa_ok ($args[1], 'Glib::LogLevelFlags', 'sub2 flags type');
ok ($args[1] == ['warning'], 'sub2 flags value');
is ($args[2], 'a message', 'sub2 message');
is ($args[3], 'some userdata', 'sub2 userdata');
return $x
};
is (Glib::Log->set_default_handler($sub2,'some userdata'), $sub1,
'default log handler: install sub2, prev sub1');
require Scalar::Util;
Scalar::Util::weaken ($sub1);
is ($sub1, undef,
'sub1 garbage collected by weakening');
Glib->log ('Another-Unknown-Domain', ['warning'], 'a message');
is (Glib::Log->set_default_handler(undef), $sub2,
'default log handler: install undef, prev sub2');
Glib->log ('Another-Unknown-Domain', ['info'], 'this is a test message');
is (Glib::Log->set_default_handler(undef),
\&Glib::Log::default_handler,
'default log handler: install undef, prev default');
Glib->log ('Another-Unknown-Domain', ['info'], 'this is yet another a test message');
( run in 0.381 second using v1.01-cache-2.11-cpan-1f129e94a17 )