The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
use strict;
use Gtk2::TestHelper tests => 32;

# $Id$

my @depths = Gtk2::Gdk -> query_depths();
like($depths[0], qr/^\d+$/);

my @types = Gtk2::Gdk -> query_visual_types();
ok(defined($types[0]));

my @visuals = Gtk2::Gdk -> list_visuals();
isa_ok($visuals[0], "Gtk2::Gdk::Visual");

like(Gtk2::Gdk::Visual -> get_best_depth(), qr/^\d+$/);
ok(defined(Gtk2::Gdk::Visual -> get_best_type()));

isa_ok(my $visual = Gtk2::Gdk::Visual -> get_system(), "Gtk2::Gdk::Visual");
isa_ok(Gtk2::Gdk::Visual -> get_best(), "Gtk2::Gdk::Visual");
isa_ok(Gtk2::Gdk::Visual -> get_best_with_type($types[0]), "Gtk2::Gdk::Visual");
SKIP: {
  my $best = Gtk2::Gdk::Visual -> get_best_with_both($depths[0], $types[0]);
  skip 'best test', 1 unless defined $best;
  isa_ok($best, "Gtk2::Gdk::Visual");
}

SKIP: {
  skip("get_best_with_depth seems to be broken in 2.2", 1)
    if ((Gtk2 -> GET_VERSION_INFO())[0] == 2 &&
        (Gtk2 -> GET_VERSION_INFO())[1] == 2);

  isa_ok(Gtk2::Gdk::Visual -> get_best_with_depth($depths[0]), "Gtk2::Gdk::Visual");
}

SKIP: {
  skip("GdkScreen is new in 2.2", 1)
    unless (Gtk2 -> CHECK_VERSION(2, 2, 0));

  isa_ok($visual -> get_screen(), "Gtk2::Gdk::Screen");
}

ok(defined($visual -> type));
ok(defined($visual -> byte_order));
like($visual -> colormap_size, qr/^\d+$/);
like($visual -> bits_per_rgb, qr/^\d+$/);
like($visual -> red_mask, qr/^\d+$/);
like($visual -> red_shift, qr/^\d+$/);
like($visual -> red_prec, qr/^\d+$/);
like($visual -> green_mask, qr/^\d+$/);
like($visual -> green_shift, qr/^\d+$/);
like($visual -> green_prec, qr/^\d+$/);
like($visual -> blue_mask, qr/^\d+$/);
like($visual -> blue_shift, qr/^\d+$/);
like($visual -> blue_prec, qr/^\d+$/);

SKIP: {
  skip 'new 2.22 stuff', 8
    unless Gtk2->CHECK_VERSION(2, 22, 0);

  my $visual = Gtk2::Gdk::Visual -> get_system();

  my ($mask, $shift, $precision) = $visual -> get_blue_pixel_details();
  ok(defined $mask && defined $shift && defined $precision);
  ($mask, $shift, $precision) = $visual -> get_green_pixel_details();
  ok(defined $mask && defined $shift && defined $precision);
  ($mask, $shift, $precision) = $visual -> get_red_pixel_details();
  ok(defined $mask && defined $shift && defined $precision);

  ok(defined $visual -> get_bits_per_rgb());
  ok(defined $visual -> get_byte_order());
  ok(defined $visual -> get_colormap_size());
  ok(defined $visual -> get_depth());
  ok(defined $visual -> get_visual_type());
}

__END__

Copyright (C) 2004 by the gtk2-perl team (see the file AUTHORS for the
full list).  See LICENSE for more information.