#!/usr/bin/perl
use warnings;
use strict;
use Gtk2::TestHelper tests => 6;
# Gtk2::Widget's size-request
{
package TestSizeRequestChain::Base;
use strict;
use warnings;
use Gtk2;
use Glib::Object::Subclass
'Gtk2::Widget',
signals => { size_request => \&_do_size_request };
our $size_request_runs = 0;
sub _do_size_request {
my ($self, $req) = @_;
$size_request_runs = 1;
$req->width (123);
$req->height (456);
}
package TestSizeRequestChain::Sub;
use strict;
use warnings;
use Gtk2;
use Glib::Object::Subclass
'TestSizeRequestChain::Base',
signals => { size_request => \&_do_size_request };
our $size_request_runs = 0;
sub _do_size_request {
my ($self, $req) = @_;
$size_request_runs = 1;
$self->signal_chain_from_overridden ($req);
}
package main;
my $widget = TestSizeRequestChain::Sub->new;
my $req = $widget->size_request;
ok ($TestSizeRequestChain::Sub::size_request_runs,
'TestSizeRequestChain::Sub size_request() runs');
ok ($TestSizeRequestChain::Base::size_request_runs,
'TestSizeRequestChain::Base size_request() runs');
is ($req->width, 123,
'TestSizeRequestChain width');
is ($req->height, 456,
'TestSizeRequestChain width');
}
# Gtk2::TextBuffer's insert-text
{
package TestInsertTextChain;
use strict;
use warnings;
use Gtk2;
use Glib::Object::Subclass
'Gtk2::TextBuffer',
signals => { insert_text => \&_do_insert_text };
our $insert_text_runs = 0;
sub _do_insert_text {
my ($self, $iter, $text, $length) = @_;
$insert_text_runs++;
$text =~ s/bla/blub/g;
$self->signal_chain_from_overridden ($iter, $text, length($text));
}
package main;
my $tb = TestInsertTextChain->new;
my $iter = $tb->get_start_iter;
for (my $i = 0; $i < 10; $i++) {
# reuse $iter here to test whether it is correctly updated by the custom
# insert-text handler
$tb->insert ($iter, 'bla');
}
is ($TestInsertTextChain::insert_text_runs, 10,
'TestInsertTextChain insert_text() runs');
is ($tb->get_text ($tb->get_start_iter, $tb->get_end_iter, TRUE),
'blub' x 10,
'TestInsertTextChain buffer contents');
}