#!/usr/bin/perl -w use strict; sub on_unthreaded_freebsd { if ($^O eq 'freebsd') { require Config; if ($Config::Config{ldflags} !~ m/-pthread\b/) { return 1; } } return 0; } use Gtk2::TestHelper tests => 13, at_least_version => [2, 10, 0, "GtkRecentFilter"], (on_unthreaded_freebsd () ? (skip_all => 'need a perl compiled with "-pthread" on freebsd') : ()); # $Id$ my $filter = Gtk2::RecentFilter -> new(); isa_ok($filter, "Gtk2::RecentFilter"); $filter -> set_name("Test"); is($filter -> get_name(), "Test"); $filter -> add_mime_type("image/png"); $filter -> add_pattern("*.png"); $filter -> add_pixbuf_formats(); $filter -> add_group("Images"); $filter -> add_age(23); sub filter_cb { my ($info, $data) = @_; return TRUE if ($info -> {age} == 23); return TRUE if ($info -> {mime_type} eq "image/png"); return FALSE; } $filter = Gtk2::RecentFilter -> new(); $filter -> add_custom([qw/age mime-type/], \&filter_cb); ok($filter -> get_needed() >= [qw/age mime-type/]); ok( $filter -> filter({ contains => [qw/age mime-type/], age => 23, mime_type => "image/jpeg" })); ok( $filter -> filter({ contains => [qw/age mime-type/], age => 42, mime_type => "image/png" })); ok(!$filter -> filter({ contains => [qw/age mime-type/], age => 42, mime_type => "image/jpeg" })); my $stuff = { contains => [qw/display-name mime-type application group age/], display_name => "Bla", mime_type => "bla", applications => ["bla", "blub"], groups => ["Bla", "Blub"], age => 42, }; sub test_cb { my ($info, $data) = @_; is($info -> {display_name}, $stuff -> {display_name}); is($info -> {mime_type}, $stuff -> {mime_type}); is_deeply($info -> {applications}, $stuff -> {applications}); is_deeply($info -> {groups}, $stuff -> {groups}); is($info -> {age}, $stuff -> {age}); is($data, "data"); return TRUE; } $filter = Gtk2::RecentFilter -> new(); $filter -> add_custom([qw/display-name mime-type application group age/], \&test_cb, "data"); ok($filter -> filter($stuff)); __END__ Copyright (C) 2006 by the gtk2-perl team (see the file AUTHORS for the full list). See LICENSE for more information.