The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

# Test the GBoxed wrapper for GError.

use strict;
use warnings;
use Test::More;
use Glib ':constants';

if (Glib->CHECK_VERSION (2, 26, 0)) {
  plan tests => 5;
} else {
  plan skip_all => 'new in 2.26';
}

Glib::Type->register_object (
  'Glib::Object',
  'Foo',
  signals => {
    throw => {
      param_types => [qw(Glib::Error)],
    },
  },
);

my $foo = Glib::Object::new ('Foo');
$foo->signal_connect (throw => \&throw_handler, 23);
$foo->signal_emit ('throw', Glib::File::Error->new ('io', 'End of file reached'));

sub throw_handler {
  my ($instance, $error, $data) = @_;
  is ($instance, $foo);
  is ($data, 23);

  isa_ok ($error, 'Glib::File::Error');
  is ($error->value, 'io');
  is ($error->message, 'End of file reached');
}