#!/usr/bin/env perl
use strict;
use warnings;
-use Test::More tests => 13;
+use Test::More tests => 15;
use Test::Exception;
do {
isa => 'HashRef',
auto_deref => 1,
);
+
+ ::throws_ok {
+ has any => (
+ is => 'rw',
+ auto_deref => 1,
+ );
+ } qr/You cannot auto-dereference without specifying a type constraint on attribute any/;
+
+ ::throws_ok {
+ has scalar => (
+ is => 'rw',
+ isa => 'Value',
+ auto_deref => 1,
+ );
+ } qr/You cannot auto-dereference anything other than a ArrayRef or HashRef on attribute scalar/;
};
my $obj;
is($obj->array, undef, "array without value is undef in scalar context");
is($obj->hash, undef, "hash without value is undef in scalar context");
-TODO: {
- local $TODO = "auto_deref not implemented";
- is(@array, 0, "array without value is empty in list context");
- is(keys %hash, 0, "hash without value is empty in list context");
-};
+is(@array, 0, "array without value is empty in list context");
+is(keys %hash, 0, "hash without value is empty in list context");
@array = $obj->array([1, 2, 3]);
%hash = $obj->hash({foo => 1, bar => 2});
-TODO: {
- local $TODO = "auto_deref not implemented";
- is_deeply(\@array, [1, 2, 3], "setter returns the dereferenced list");
- is_deeply(\%hash, {foo => 1, bar => 2}, "setter returns the dereferenced hash");
-};
+is_deeply(\@array, [1, 2, 3], "setter returns the dereferenced list");
+is_deeply(\%hash, {foo => 1, bar => 2}, "setter returns the dereferenced hash");
lives_ok {
@array = $obj->array;
is_deeply($array, [1, 2, 3], "auto_deref in scalar context gives the reference");
is_deeply($hash, {foo => 1, bar => 2}, "auto_deref in scalar context gives the reference");
-TODO: {
- local $TODO = "auto_deref not implemented";
- is_deeply(\@array, [1, 2, 3], "auto_deref in list context gives the list");
- is_deeply(\%hash, {foo => 1, bar => 2}, "auto_deref in list context gives the hash");
-};
+is_deeply(\@array, [1, 2, 3], "auto_deref in list context gives the list");
+is_deeply(\%hash, {foo => 1, bar => 2}, "auto_deref in list context gives the hash");