1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 2;
BEGIN
{
use File::Spec;
use lib File::Spec->catdir(File::Spec->curdir(), "t", "lib");
}
use File::Find::Object::TreeCreate;
use File::Find::Object;
use File::Path;
package MyFFO;
use vars qw(@ISA);
@ISA=(qw(File::Find::Object));
sub DESTROY
{
my $self = shift;
$self->{'**DESTROY**'}->();
}
package main;
my $destroy_counter = 0;
sub my_destroy
{
$destroy_counter++;
}
{
my $tree =
{
'name' => "destroy--traverse-1/",
'subs' =>
[
{
'name' => "b.doc",
'contents' => "This file was spotted in the wild.",
},
{
'name' => "a/",
},
{
'name' => "foo/",
'subs' =>
[
{
'name' => "yet/",
},
],
},
],
};
my $t = File::Find::Object::TreeCreate->new();
$t->create_tree("./t/sample-data/", $tree);
my $ff =
MyFFO->new(
{},
$t->get_path("./t/sample-data/destroy--traverse-1")
);
$ff->{'**DESTROY**'} = \&my_destroy;
my @results;
for my $i (1 .. 6)
{
push @results, $ff->next();
}
# TEST
is_deeply(
\@results,
[(map { $t->get_path("t/sample-data/destroy--traverse-1/$_") }
("", qw(
a
b.doc
foo
foo/yet
))),
undef
],
"Checking for regular, lexicographically sorted order",
);
rmtree($t->get_path("./t/sample-data/destroy--traverse-1"))
}
# TEST
is ($destroy_counter, 1,
"Check that the object was destroyed when it goes out of scope."
);
|