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 => 11,
  at_least_version => [2, 10, 0, "GtkPrintContext is new in 2.10"];

# $Id$

use File::Temp qw(tempdir);
my $dir = tempdir(CLEANUP => 1);

# I hope that signal will always fire ...

my $op = Gtk2::PrintOperation -> new();
$op -> signal_connect(begin_print => sub {
  my ($op, $context) = @_;

  isa_ok($context, "Gtk2::PrintContext");
  isa_ok(my $cr = $context -> get_cairo_context(), "Cairo::Context");
  isa_ok($context -> get_page_setup(), "Gtk2::PageSetup");
  ok(defined $context -> get_width());
  ok(defined $context -> get_height());
  ok(defined $context -> get_dpi_x());
  ok(defined $context -> get_dpi_y());
  isa_ok($context -> get_pango_fontmap(), "Gtk2::Pango::FontMap");
  isa_ok($context -> create_pango_context(), "Gtk2::Pango::Context");
  isa_ok($context -> create_pango_layout(), "Gtk2::Pango::Layout");

  $context -> set_cairo_context($cr, 72, 72);

  SKIP: {
    skip 'new 2.20 stuff', 1
      unless Gtk2->CHECK_VERSION(2, 20, 0);

    my ($top, $bottom, $left, $right) = $context -> get_hard_margins();
    ok((defined $top && defined $bottom && defined $left && defined $right) ||
       (!defined $top && !defined $bottom && !defined $left && !defined $right));
  }
});

$op -> set_n_pages(1);
$op -> set_allow_async(TRUE);
$op -> set_export_filename("$dir/test.pdf");

$op -> run("export", undef);
$op -> cancel();

__END__

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