X7ROOT File Manager
Current Path:
/usr/share/doc/perl-Sub-Exporter/t
usr
/
share
/
doc
/
perl-Sub-Exporter
/
t
/
📁
..
📄
00-compile.t
(987 B)
📄
000-report-versions-tiny.t
(2.56 KB)
📄
col-init.t
(1.13 KB)
📄
collection.t
(2.83 KB)
📄
expand-group.t
(5.27 KB)
📄
faux-export.t
(2.97 KB)
📄
gen-callable.t
(574 B)
📄
group-generator.t
(3.69 KB)
📄
inherited.t
(613 B)
📄
into-level.t
(3.06 KB)
📁
lib
📄
real-export-groupgen.t
(1.86 KB)
📄
real-export-href.t
(4.12 KB)
📄
real-export-setup.t
(3.6 KB)
📄
util-curry.t
(1.69 KB)
📄
util-currychain.t
(1.68 KB)
📄
util-like.t
(3.03 KB)
📄
util-merge.t
(1.71 KB)
📄
util-mixin.t
(2.73 KB)
📄
util-namemap.t
(568 B)
📄
valid-config.t
(1.27 KB)
Editing: collection.t
#!/usr/bin/perl -T use strict; use warnings; =head1 TEST PURPOSE These tests exercise the handling of collections in the exporter option lists. =cut use Test::More tests => 8; use Data::OptList qw(mkopt_hash); BEGIN { use_ok('Sub::Exporter'); } sub is_defined { my ($class, $value, $arg) = @_; return defined $value; } my $config = { exports => [ qw(circsaw drill handsaw nailgun), hammer => sub { sub { print "BANG BANG BANG\n" } }, ], groups => { default => [ 'handsaw', 'hammer' => { claw => 1 }, ], cutters => [ qw(circsaw handsaw), circsaw => { as => 'buzzsaw' } ], }, collectors => [ 'defaults', brand_preference => sub { 0 }, model_preference => sub { 1 }, sets_own_value => sub { $_[0] = { foo => 10 } }, definedp => \'is_defined', ] }; $config->{$_} = mkopt_hash($config->{$_}) for qw(exports collectors); { my $collection = Sub::Exporter::_collect_collections( $config, [ [ circsaw => undef ], [ defaults => { foo => 1, bar => 2 } ] ], 'main', ); is_deeply( $collection, { defaults => { foo => 1, bar => 2 } }, "collection returned properly from collector", ); } { my $collection = Sub::Exporter::_collect_collections( $config, [ [ sets_own_value => undef ] ], 'main', ); is_deeply( $collection, { sets_own_value => { foo => 10} }, "a collector can alter the stack to change its own value", ); } { my $arg = [ [ defaults => [ 1 ] ], [ defaults => { foo => 1, bar => 2 } ] ]; eval { Sub::Exporter::_collect_collections($config, $arg, 'main'); }; like( $@, qr/collection \S+ provided multiple/, "can't provide multiple collection values", ); } { # because the brand_preference validator always fails, this should die my $arg = [ [ brand_preference => [ 1, 2, 3 ] ] ]; eval { Sub::Exporter::_collect_collections($config, $arg, 'main') }; like( $@, qr/brand_preference failed validation/, "collector validator prevents bad export" ); } { # the definedp collector should require a defined value; this should be ok my $arg = [ [ definedp => {} ] ]; my $collection = Sub::Exporter::_collect_collections($config, $arg, 'main'); is_deeply( $collection, { definedp => {} }, "collector validator allows collection" ); } { # the definedp collector should require a defined value; this should die my $arg = [ [ definedp => undef ] ]; eval { Sub::Exporter::_collect_collections($config, $arg, 'main') }; like( $@, qr/definedp failed validation/, "collector validator prevents bad export" ); } { my $arg = [ [ model_preference => [ 1, 2, 3 ] ] ]; my $collection = Sub::Exporter::_collect_collections($config, $arg, 'main'); is_deeply( $collection, { model_preference => [ 1, 2, 3 ] }, "true-returning validator allows collection", ); }
Upload File
Create Folder