summaryrefslogtreecommitdiff
path: root/t/lib
diff options
context:
space:
mode:
Diffstat (limited to 't/lib')
-rw-r--r--t/lib/Alfa.pm9
-rw-r--r--t/lib/Baker.pm10
-rw-r--r--t/lib/Charlie.pm28
-rw-r--r--t/lib/Delta.pm30
-rw-r--r--t/lib/Echo.pm22
-rw-r--r--t/lib/Foxtrot.pm10
-rw-r--r--t/lib/Golf.pm12
-rw-r--r--t/lib/Hotel.pm14
-rw-r--r--t/lib/India.pm10
-rw-r--r--t/lib/Juliett.pm10
-rw-r--r--t/lib/TestUtils.pm28
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;