#!/usr/bin/perl -w # The script tests Arch::Inventory methods. use FindBin; use lib "$FindBin::Bin/../perllib"; use Test::More tests => 11; BEGIN { use_ok("Arch::Inventory", qw(:category :type)); use_ok("Arch::Test::Framework"); } my $framework = Arch::Test::Framework->new; my $archive = $framework->make_archive; my $version = $archive->make_version; my $tree = Arch::Test::Cases::generate_complex_tree($framework, $version); my $inv = Arch::Inventory->new($tree->root); isa_ok($inv, 'Arch::Inventory', 'new inventory'); is($inv->directory, $tree->root, 'correct root directory'); my $root = $inv->get_root_entry; isa_ok($root, 'HASH', 'root entry'); is($inv->to_string($root), "T d \t???", 'correct root entry string'); is($inv->get_entry(''), $root, 'root entry via ->get_entry'); my @inv_listing = $tree->run_tla('inventory', '-Btspbju', '--kind', '--ids'); my ($ok, $cnt); $cnt = 0; $inv->foreach(sub { ++$cnt }); is($cnt, scalar @inv_listing + 1, '->foreach count'); $ok = 1; foreach my $line (@inv_listing) { my (undef, undef, $path) = split /\s+/, $line; my $entry = $inv->get_entry($path); $ok &&= $entry->{path} eq $path; } ok($ok, 'scalar ->get_entry'); $ok = 1; foreach my $line (@inv_listing) { my (undef, undef, $path) = split /\s+/, $line; my $entry = $inv->get_entry(split /\//, $path); $ok &&= $entry->{path} eq $path; } ok($ok, 'list ->get_entry'); ok( eq_set( [split /\n/, $inv->get_listing], [@inv_listing] ), 'correct inventory listing' );