#!/usr/bin/perl -w
use strict;
use Gtk2::TestHelper tests => 76;
# $Id$
my $entry = Gtk2::Entry -> new();
isa_ok($entry, "Gtk2::Entry");
ginterfaces_ok($entry);
$entry -> set_text("Bla");
is($entry -> get_text(), "Bla");
$entry -> set_visibility(1);
is($entry -> get_visibility(), 1);
$entry -> set_invisible_char("!");
is($entry -> get_invisible_char(), "!");
$entry -> set_max_length(8);
is($entry -> get_max_length(), 8);
$entry -> set_activates_default(1);
is($entry -> get_activates_default(), 1);
$entry -> set_has_frame(1);
is($entry -> get_has_frame(), 1);
$entry -> set_width_chars(23);
is($entry -> get_width_chars(), 23);
isa_ok($entry -> get_layout(), "Gtk2::Pango::Layout");
my ($x, $y) = $entry -> get_layout_offsets();
like($x, qr/^-?\d+$/);
like($y, qr/^-?\d+$/);
SKIP: {
skip("[sg]et_completion are new in 2.4", 2)
unless Gtk2->CHECK_VERSION (2, 4, 0);
my $completion = Gtk2::EntryCompletion -> new();
$entry -> set_completion($completion);
is($entry -> get_completion(), $completion);
$entry -> set_completion(undef);
is($entry -> get_completion(), undef);
}
SKIP: {
skip("[sg]et_alignment are new in 2.4", 1)
unless Gtk2->CHECK_VERSION (2, 4, 0);
$entry -> set_alignment(0.23);
is(int($entry -> get_alignment() * 100) / 100, 0.23);
}
SKIP: {
skip("layout_index_to_text_index and text_index_to_layout_index are new in 2.6", 2)
unless Gtk2->CHECK_VERSION (2, 6, 0);
is($entry -> layout_index_to_text_index(1), 1);
is($entry -> text_index_to_layout_index(1), 1);
}
SKIP: {
skip("inner border stuff", 2)
unless Gtk2->CHECK_VERSION (2, 10, 0);
$entry -> set_inner_border(undef);
is($entry -> get_inner_border(), undef);
$entry -> set_inner_border({left=>1, right=>2, top=>3, bottom=>4});
is_deeply($entry -> get_inner_border(), {left=>1, right=>2, top=>3, bottom=>4});
}
SKIP: {
skip("cursor hadjustment stuff", 2)
unless Gtk2->CHECK_VERSION (2, 12, 0);
$entry -> set_cursor_hadjustment(undef);
is($entry -> get_cursor_hadjustment(), undef);
my $adj = Gtk2::Adjustment -> new(0.0, -1.0, 1.0, 0.1, 0.2, 0.5);
$entry -> set_cursor_hadjustment($adj);
is($entry -> get_cursor_hadjustment(), $adj);
}
SKIP: {
skip 'new 2.14 stuff', 2
unless Gtk2->CHECK_VERSION(2, 14, 0);
my $entry = Gtk2::Entry -> new();
$entry -> set_text("Bla");
is ($entry -> get_text_length(), 3);
$entry -> set_overwrite_mode(FALSE);
is ($entry -> get_overwrite_mode(), FALSE);
}
SKIP: {
skip '2.16 stuff', 48
unless Gtk2->CHECK_VERSION(2, 16, 0);
## progress methods
my $entry = Gtk2::Entry -> new();
is($entry -> get_icon_at_pos(0, 0), -1);
delta_ok($entry -> get_progress_fraction(), 0.0);
delta_ok($entry -> get_progress_pulse_step(), 0.1);
$entry -> progress_pulse(); # We can't see the changes :(
$entry -> set_progress_fraction(0.3);
delta_ok($entry -> get_progress_fraction(), 0.3);
$entry -> set_progress_pulse_step(0.2);
## unset_invisible_char
# Try the new password methods
my $password = Gtk2::Entry -> new();
$password -> set_visibility(FALSE);
# Change the default character
my $default = $password -> get_invisible_char();
my $char = $default eq 'X' ? '?' : 'X';
$password -> set_invisible_char($char);
is($password -> get_invisible_char(), $char);
# Restore the default character
$password -> unset_invisible_char();
is($password -> get_invisible_char(), $default);
## icon methods
test_icon_methods('primary');
test_icon_methods('secondary');
}
SKIP: {
skip 'new 2.18 stuff', 2
unless Gtk2->CHECK_VERSION(2, 18, 0);
my $buffer = Gtk2::EntryBuffer->new;
my $entry = Gtk2::Entry->new_with_buffer ($buffer);
isa_ok ($entry, 'Gtk2::Entry');
$entry->set_buffer ($buffer);
is ($entry->get_buffer, $buffer);
}
SKIP: {
skip 'new 2.20 stuff', 2
unless Gtk2->CHECK_VERSION(2, 20, 0);
my $entry = Gtk2::Entry->new;
my $window = Gtk2::Window->new;
$window->add ($entry);
$entry->realize;
$entry->set_icon_from_icon_name ('primary', 'gtk-yes');
isa_ok ($entry->get_icon_window ('primary'), 'Gtk2::Gdk::Window');
isa_ok ($entry->get_text_window, 'Gtk2::Gdk::Window');
}
SKIP: {
skip 'new 2.22 stuff', 1
unless Gtk2->CHECK_VERSION(2, 22, 0);
my $entry = Gtk2::Entry->new;
my $window = Gtk2::Window->new;
$window->add ($entry);
$entry->realize;
my $event = Gtk2::Gdk::Event->new ('key-press');
$event->window ($entry->window);
ok (defined $entry->im_context_filter_keypress ($event));
$entry->reset_im_context;
}
sub test_icon_methods {
my ($icon_pos) = @_;
my $entry = Gtk2::Entry -> new();
is($entry -> get_icon_name($icon_pos), undef);
is($entry -> get_icon_pixbuf($icon_pos), undef);
is($entry -> get_icon_stock($icon_pos), undef);
is($entry -> get_icon_storage_type($icon_pos), 'empty');
$entry -> set_icon_sensitive($icon_pos, TRUE);
is($entry -> get_icon_sensitive($icon_pos), TRUE);
$entry -> set_icon_activatable($icon_pos, TRUE);
is($entry -> get_icon_activatable($icon_pos), TRUE);
# Is an 'icon name' the same as a 'stock icon'?
is($entry -> get_icon_name($icon_pos), undef);
$entry -> set_icon_from_icon_name($icon_pos, 'gtk-yes');
is($entry -> get_icon_name($icon_pos), 'gtk-yes');
ok($entry -> get_icon_pixbuf($icon_pos));
# Reset through icon_name
$entry -> set_icon_from_icon_name($icon_pos, undef);
is($entry -> get_icon_pixbuf($icon_pos), undef);
# Set and unset the icon through a stock image
$entry -> set_icon_from_stock($icon_pos, 'gtk-yes');
ok($entry -> get_icon_pixbuf($icon_pos));
$entry -> set_icon_from_stock($icon_pos, undef);
is($entry -> get_icon_pixbuf($icon_pos), undef);
# Reset
$entry -> set_icon_from_stock($icon_pos, undef);
is($entry -> get_icon_name($icon_pos), undef);
is($entry -> get_icon_pixbuf($icon_pos), undef);
# Set and unset the icon through a pixbuf
my $pixbuf = Gtk2::Gdk::Pixbuf->new('rgb', TRUE, 8, 16, 16);
$entry -> set_icon_from_pixbuf($icon_pos, $pixbuf);
is($entry -> get_icon_pixbuf($icon_pos), $pixbuf);
$entry -> set_icon_from_pixbuf($icon_pos, undef);
is($entry -> get_icon_pixbuf($icon_pos), undef);
# Icon tooltips
$entry -> set_icon_tooltip_markup($icon_pos, "PanGo tooltip");
is($entry -> get_icon_tooltip_markup($icon_pos), "PanGo tooltip");
$entry -> set_icon_tooltip_markup($icon_pos, undef);
is($entry -> get_icon_tooltip_markup($icon_pos), undef);
$entry -> set_icon_tooltip_text($icon_pos, "Text tooltip");
is($entry -> get_icon_tooltip_text($icon_pos), "Text tooltip");
$entry -> set_icon_tooltip_text($icon_pos, undef);
is($entry -> get_icon_tooltip_text($icon_pos), undef);
$entry -> set_icon_drag_source(
$icon_pos,
Gtk2::TargetList->new({target => 'TEXT', flags => 'same-app', info => 23 }),
'move');
ok(defined $entry -> get_current_icon_drag_source());
}
__END__
Copyright (C) 2003-2006 by the gtk2-perl team (see the file AUTHORS for the
full list). See LICENSE for more information.