#!/usr/bin/perl # # $Id$ # ######################### # GtkImage Tests # - rm ######################### use Data::Dumper; use Gtk2::TestHelper tests => 45; # get some things ready to use below ########################################### # borrowed from xsane-icons.c my @pixbuf_data = ( " 20 20 4 1", " none", ". c #000000", "+ c #208020", "a c #ffffff", " ", " ................. ", " .+++++++++++++++. ", " .+ . +. ", " .+ ... +. ", " .+ . . . +. ", " .+ . +. ", " .+ . +. ", " .+ . . . +. ", " .+ . . . +. ", " .+.............+. ", " .+ . . . +. ", " .+ . . . +. ", " .+ . +. ", " .+ . . . +. ", " .+ ... +. ", " .+ . +. ", " .+++++++++++++++. ", " ................. ", " ", ); my $pixbuf = Gtk2::Gdk::Pixbuf->new_from_xpm_data (@pixbuf_data); my ($pixmap, $mask) = $pixbuf->render_pixmap_and_mask (255); my $iconset = Gtk2::IconSet->new_from_pixbuf ($pixbuf); # Plain old new ################################################################ ok (my $img = Gtk2::Image->new, 'Gtk2::Image->new'); ok (eq_array ([$img->get_icon_set], [undef, 'button']), 'get_icon_set empty'); is ($img->get_image, undef, 'get_image empty'); is ($img->get_pixbuf, undef, 'get_pixbuf empty'); is ($img->get_pixmap, undef, 'get_pixmap empty'); ok (eq_array ([$img->get_stock ()], [undef, 'button']), 'get_stock empty'); is ($img->get_animation, undef, 'get_animation empty'); is ($img->get_storage_type, 'empty', 'get_storage_type empty'); # new from stock ############################################################### ok ($img = Gtk2::Image->new_from_stock ('gtk-cancel', 'menu'), 'Gtk2::Image->new_from_stock'); is ($img->get_storage_type, 'stock', 'new_from_stock get_storage_type'); ok (eq_array ([$img->get_stock ()], ['gtk-cancel', 'menu']), 'new_from_stock get_stock'); # new from icon set ############################################################ ok ($img = Gtk2::Image->new_from_icon_set ($iconset, 'small-toolbar'), 'Gtk2::Image->new_from_icon_set'); my @ret = $img->get_icon_set; is (scalar (@ret), 2, 'new_from_icon_set get_icon_set num rets'); isa_ok ($ret[0], 'Gtk2::IconSet', 'new_from_icon_set get_icon_set icon_set'); is ($ret[1], 'small-toolbar', 'new_from_icon_set get_icon_set size'); # new from image ############################################################### ok ($img = Gtk2::Image->new_from_image (undef, undef), 'Gtk2::Image->new_from_pixbuf undef'); is ($img->get_image, undef, 'new_from_image get_image empty'); # TODO: from a valid image # new from pixbuf ############################################################## ok ($img = Gtk2::Image->new_from_pixbuf ($pixbuf), 'Gtk2::Image->new_from_pixbuf'); isa_ok ($img->get_pixbuf, 'Gtk2::Gdk::Pixbuf', 'new_from_pixbuf get_pixbuf'); # new from pixmap ############################################################## ok ($img = Gtk2::Image->new_from_pixmap (undef, undef), 'Gtk2::Image->new_from_pixbuf'); ok ($img = Gtk2::Image->new_from_pixmap ($pixmap, $mask), 'Gtk2::Image->new_from_pixbuf'); @ret = $img->get_pixmap; is (scalar(@ret), 2, 'new_from_pixmap get_pixmap num rets'); isa_ok ($ret[0], 'Gtk2::Gdk::Pixmap', 'new_from_pixmap get_pixbuf pixmap'); isa_ok ($ret[1], 'Gtk2::Gdk::Bitmap', 'new_from_pixmap get_pixbuf mask'); # set from stock ############################################################### $img->set_from_stock ('gtk-quit', 'dialog'); is ($img->get_storage_type, 'stock', 'set_from_stock get_storage_type'); ok (eq_array ([$img->get_stock ()], ['gtk-quit', 'dialog']), 'set_from_stock get_stock'); # set from icon set ############################################################ $img->set_from_icon_set ($iconset, 'small-toolbar'); @ret = $img->get_icon_set; is (scalar (@ret), 2, 'set_from_icon_set get_icon_set num rets'); isa_ok ($ret[0], 'Gtk2::IconSet', 'set_from_icon_set get_icon_set icon_set'); is ($ret[1], 'small-toolbar', 'set_from_icon_set get_icon_set size'); # set from image ############################################################### $img->set_from_image (undef, undef); is ($img->get_image, undef, 'set_from_image get_image empty'); # TODO: from a valid image # set from pixbuf ############################################################## $img->set_from_pixbuf (undef); $img->set_from_pixbuf ($pixbuf); isa_ok ($img->get_pixbuf, 'Gtk2::Gdk::Pixbuf', 'set_from_pixbuf get_pixbuf'); # set from pixmap ############################################################## $img->set_from_pixmap (undef, undef); $img->set_from_pixmap ($pixmap, $mask); @ret = $img->get_pixmap; is (scalar(@ret), 2, 'set_from_pixmap get_pixmap num rets'); isa_ok ($ret[0], 'Gtk2::Gdk::Pixmap', 'set_from_pixmap get_pixbuf pixmap'); isa_ok ($ret[1], 'Gtk2::Gdk::Bitmap', 'set_from_pixmap get_pixbuf mask'); # These require access to a file, so they may be skipped my $testfile = './gtk-demo/gnome-foot.png'; SKIP: { skip "unable to find test file, $testfile", 1 unless (-R $testfile); my $animation = Gtk2::Gdk::PixbufAnimation->new_from_file ($testfile); # new from file ################################################################ ok ($img = Gtk2::Image->new_from_file (undef), 'Gtk2::Image->new_from_file undef'); ok ($img = Gtk2::Image->new_from_file ($testfile), 'Gtk2::Image->new_from_file'); isa_ok ($img->get_pixbuf, 'Gtk2::Gdk::Pixbuf', 'new_from_file get_pixbuf'); # new from animation ########################################################### ok ($img = Gtk2::Image->new_from_animation ($animation), 'Gtk2::Image->new_from_animation'); isa_ok ($img->get_animation, 'Gtk2::Gdk::PixbufAnimation', 'new_from_animation get_animationf'); # set from file ################################################################ $img->set_from_file (undef); $img->set_from_file ($testfile); isa_ok ($img->get_pixbuf, 'Gtk2::Gdk::Pixbuf', 'set_from_file get_pixbuf'); # set from animation ########################################################### $img->set_from_animation ($animation); isa_ok ($img->get_animation, 'Gtk2::Gdk::PixbufAnimation', 'set_from_animation get_animationf'); } SKIP: { skip 'new stuff in 2.6', 4 unless Gtk2->CHECK_VERSION (2, 6, 0); $img = Gtk2::Image->new_from_icon_name ('gtk-ok', 'button'); isa_ok ($img, 'Gtk2::Image'); is_deeply ([$img->get_icon_name], ['gtk-ok', 'button']); $img->set_from_icon_name ('gtk-cancel', 'menu'); is_deeply ([$img->get_icon_name], ['gtk-cancel', 'menu']); $img->set_pixel_size (23); is ($img->get_pixel_size, 23); } SKIP: { skip 'new stuff in 2.8', 0 unless Gtk2->CHECK_VERSION (2, 8, 0); $img->clear; } __END__ Copyright (C) 2003-2005 by the gtk2-perl team (see the file AUTHORS for the full list). See LICENSE for more information.