#!/usr/bin/perl -w # vim: set ft=perl : use Gtk2::TestHelper tests => 9; use strict; my $thing = ICanScroll->new; isa_ok ($thing, 'ICanScroll'); my $scroller = Gtk2::ScrolledWindow->new; # this will call gtk_widget_set_scroll_adjustments() and attempt to emit # the set_scroll_adjustments signal. # this isn't a signal you're supposed to connect to, but we're cheating # so we can test it. my $id = $thing->signal_connect (set_scroll_adjustments => sub { my ($self, $hadj, $vadj) = @_; isa_ok ($thing, 'ICanScroll'); is ($hadj, $scroller->get_hadjustment, 'got scroller\'s hadj'); is ($vadj, $scroller->get_vadjustment, 'got scroller\'s vadj'); }); $scroller->add ($thing); $thing->signal_handler_disconnect ($id); # this will call gtk_widget_set_scroll_adjustments() again, this time # with undef for both adjustments. $thing->signal_connect (set_scroll_adjustments => sub { my ($self, $hadj, $vadj) = @_; isa_ok ($thing, 'ICanScroll'); is ($hadj, undef, 'got undef for hadj'); is ($vadj, undef, 'got undef for vadj'); }); $scroller->destroy; $scroller = undef; package ICanScroll; use strict; use Test::More; use Gtk2; use Glib::Object::Subclass Gtk2::HBox::, signals => { set_scroll_adjustments => { param_types => [qw(Gtk2::Adjustment Gtk2::Adjustment)], class_closure => sub { ok(1) }, }, }, ;