in reply to Re^4: Writing tests when you don't know what the output should be
in thread Writing tests when you don't know what the output should be
use FindBin; use Test::More tests => 3; use Test::Exception; dies_ok { 'DupEventChecker'->new } 'dir_name not provided'; my $checker = 'DupEventChecker'->new(dir_name => $FindBin::Bin); isa_ok $checker, 'DupEventChecker'; my ($itself) = grep { 0 <= index $0, $_ } $checker->dir->read; ok $itself, 'test script found';
BTW, dir_name is required, but it isn't apparent from the declaration. dir could also have a default (e.g. '.', Cwd::getcwd or File::HomeDir->my_home).
has 'dir' => ( is => 'ro', isa => 'IO::Dir', required => 1 ); around BUILDARGS => sub { $_ = shift for my ($orig, $class); my %args = @_; die 'required dir missing' unless exists $args{dir}; return $class->$orig(dir => 'IO::Dir'->new($args{dir})) }
Or, maybe more clearly,
#!/usr/bin/perl use warnings; use strict; { package DupEventChecker; use IO::Dir; use Moose; use namespace::autoclean; has 'dir' => ( is => 'ro', isa => 'Str', required => 1 ); has '_dir' => ( is => 'ro', isa => 'IO::Dir', lazy => 1, builder => '_build_dir', handles => { read_dir => 'read' }, init_arg => undef, ); sub _build_dir { 'IO::Dir'->new(shift->dir) } __PACKAGE__->meta->make_immutable; } use FindBin; use Test::More tests => 3; use Test::Exception; dies_ok { 'DupEventChecker'->new } 'dir not provided'; my $checker = 'DupEventChecker'->new(dir => $FindBin::Bin); isa_ok $checker, 'DupEventChecker'; my $itself = grep $0 =~ m{(?:^|/)\Q$_\E$}x, $checker->read_dir; is $itself, 1, 'test script found';
Update: Example added to the BTW. Update 2: The example was improved.
($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^6: Writing tests when you don't know what the output should be
by nysus (Parson) on May 18, 2016 at 03:54 UTC | |
by choroba (Cardinal) on May 18, 2016 at 08:57 UTC | |
Re^6: Writing tests when you don't know what the output should be
by nysus (Parson) on May 19, 2016 at 15:43 UTC | |
by choroba (Cardinal) on May 19, 2016 at 15:57 UTC |