#!/usr/bin/env perl
use strict;
use warnings;
-use Test::More tests => 16;
-use Test::Exception;
+use Test::More;
my $lazy_run = 0;
default => "welp",
);
- ::throws_ok {
+ eval {
has lazy_no_default => (
is => 'rw',
lazy => 1,
);
- } qr/You cannot have lazy attribute \(lazy_no_default\) without specifying a default value for it/;
+ };
+ ::like $@, qr/You cannot have a lazy attribute \(lazy_no_default\) without specifying a default value for it/;
};
my $object = Class->new;
is($object->lazy_value, "newp", "got new value");
is($lazy_run, 1, "lazy coderef invoked once");
+is($object->lazy(42), 42);
+is($object->lazy_value(3.14), 3.14);
+
my $object2 = Class->new(lazy => 'very', lazy_value => "heh");
is($lazy_run, 1, "lazy attribute not initialized when an argument is passed to the constructor");
is($object2->lazy_value, 'heh', 'value from the constructor');
is($lazy_run, 1, "lazy coderef not invoked, we already have a value");
+done_testing;