diff options
Diffstat (limited to 't/lib')
-rw-r--r-- | t/lib/Alfa.pm | 9 | ||||
-rw-r--r-- | t/lib/Baker.pm | 10 | ||||
-rw-r--r-- | t/lib/Charlie.pm | 28 | ||||
-rw-r--r-- | t/lib/Delta.pm | 30 | ||||
-rw-r--r-- | t/lib/Echo.pm | 22 | ||||
-rw-r--r-- | t/lib/Foxtrot.pm | 10 | ||||
-rw-r--r-- | t/lib/Golf.pm | 12 | ||||
-rw-r--r-- | t/lib/Hotel.pm | 14 | ||||
-rw-r--r-- | t/lib/India.pm | 10 | ||||
-rw-r--r-- | t/lib/Juliett.pm | 10 | ||||
-rw-r--r-- | t/lib/TestUtils.pm | 28 |
11 files changed, 183 insertions, 0 deletions
diff --git a/t/lib/Alfa.pm b/t/lib/Alfa.pm new file mode 100644 index 0000000..9d1326c --- /dev/null +++ b/t/lib/Alfa.pm @@ -0,0 +1,9 @@ +use 5.006; +use strict; +use warnings; + +package Alfa; + +use Class::Tiny qw/foo bar/; + +1; diff --git a/t/lib/Baker.pm b/t/lib/Baker.pm new file mode 100644 index 0000000..f9caf3e --- /dev/null +++ b/t/lib/Baker.pm @@ -0,0 +1,10 @@ +use 5.006; +use strict; +use warnings; + +package Baker; +use base 'Alfa'; + +use Class::Tiny qw/baz/; + +1; diff --git a/t/lib/Charlie.pm b/t/lib/Charlie.pm new file mode 100644 index 0000000..7d312bd --- /dev/null +++ b/t/lib/Charlie.pm @@ -0,0 +1,28 @@ +use 5.006; +use strict; +use warnings; + +package Charlie; + +use subs qw/bar baz/; + +use Class::Tiny qw/foo bar/, { baz => 23 }; + +sub bar { + my $self = shift; + if (@_) { + $self->{bar} = [@_]; + } + return $self->{bar}; +} + +sub baz { + my $self = shift; + if (@_) { + $self->{baz} = shift; + } + return $self->{baz} ||= + Class::Tiny->get_all_attribute_defaults_for( ref $self )->{baz}; +} + +1; diff --git a/t/lib/Delta.pm b/t/lib/Delta.pm new file mode 100644 index 0000000..119bb4f --- /dev/null +++ b/t/lib/Delta.pm @@ -0,0 +1,30 @@ +use 5.006; +use strict; +use warnings; + +package Delta; + +our $counter = 0; +our $exception = 0; + +use Carp (); + +use Class::Tiny qw/foo bar/; + +sub BUILD { + my $self = shift; + my $args = shift; + Carp::croak("foo must be positive") + unless defined $self->foo && $self->foo > 0; + + $self->bar(42) unless defined $self->bar; + $counter++; +} + +sub DEMOLISH { + my $self = shift; + $counter-- if $counter > 0; + $exception++ if keys %$self > 2; # Echo will delete first +} + +1; diff --git a/t/lib/Echo.pm b/t/lib/Echo.pm new file mode 100644 index 0000000..5bf2ae8 --- /dev/null +++ b/t/lib/Echo.pm @@ -0,0 +1,22 @@ +use 5.006; +use strict; +use warnings; + +package Echo; +use base 'Delta'; + +use Class::Tiny qw/baz/; + +sub BUILD { + my $self = shift; + $self->baz( $self->bar + 1 ); +} + +sub DEMOLISH { + my $self = shift; + delete $self->{baz}; # or else Delta::DEMOLISH dies +} + +sub a_method { 1 } + +1; diff --git a/t/lib/Foxtrot.pm b/t/lib/Foxtrot.pm new file mode 100644 index 0000000..b757d47 --- /dev/null +++ b/t/lib/Foxtrot.pm @@ -0,0 +1,10 @@ +use 5.006; +use strict; +use warnings; + +package Foxtrot; + +use Class::Tiny 'foo'; +use Class::Tiny { bar => 42, baz => sub { time } }; + +1; diff --git a/t/lib/Golf.pm b/t/lib/Golf.pm new file mode 100644 index 0000000..5e07438 --- /dev/null +++ b/t/lib/Golf.pm @@ -0,0 +1,12 @@ +use 5.006; +use strict; +use warnings; + +package Golf; + +use Class::Tiny qw/foo bar/, { + wibble => 42, + wobble => sub { [] }, +}, qw/zig zag/; + +1; diff --git a/t/lib/Hotel.pm b/t/lib/Hotel.pm new file mode 100644 index 0000000..eabe099 --- /dev/null +++ b/t/lib/Hotel.pm @@ -0,0 +1,14 @@ +use 5.006; +use strict; +use warnings; + +package Hotel; + +use base 'Golf'; + +use Class::Tiny { + wibble => 23, + wobble => sub { {} }, +}; + +1; diff --git a/t/lib/India.pm b/t/lib/India.pm new file mode 100644 index 0000000..ea39909 --- /dev/null +++ b/t/lib/India.pm @@ -0,0 +1,10 @@ +use 5.006; +use strict; +use warnings; + +package India; +use base 'Alfa'; + +use Class::Tiny qw/qux/; + +1; diff --git a/t/lib/Juliett.pm b/t/lib/Juliett.pm new file mode 100644 index 0000000..52857ff --- /dev/null +++ b/t/lib/Juliett.pm @@ -0,0 +1,10 @@ +use 5.006; +use strict; +use warnings; + +package Juliett; +use base 'Baker', 'India'; + +use Class::Tiny qw/kit/; + +1; diff --git a/t/lib/TestUtils.pm b/t/lib/TestUtils.pm new file mode 100644 index 0000000..c66b8b3 --- /dev/null +++ b/t/lib/TestUtils.pm @@ -0,0 +1,28 @@ +use 5.006; +use strict; +use warnings; +package TestUtils; + +use Carp; + +use Exporter; +our @ISA = qw/Exporter/; +our @EXPORT = qw( + exception +); + +# If we have Test::FailWarnings, use it +BEGIN { + eval { require Test::FailWarnings; 1 } and do { Test::FailWarnings->import }; +} + +sub exception(&) { + my $code = shift; + my $success = eval { $code->(); 1 }; + my $err = $@; + return '' if $success; + croak "Execution died, but the error was lost" unless $@; + return $@; +} + +1; |