use strict;
use Test::More;
my $have_scalar_util = 0;
if (eval "use Scalar::Util 1.09 (); 1") {
$have_scalar_util = 1;
plan tests => 8;
} else {
plan tests => 6;
}
use_ok('Email::Address');
# We want to copy-on-write if we've got an object that is referenced by a
# cache. If we don't... bad things happen.
my $ORIGINAL = 'original@example.com';
my $UPDATED = 'updated@example.com';
my $orig_refaddr;
{
my ($addr) = Email::Address->parse($ORIGINAL);
isa_ok($addr, 'Email::Address');
$orig_refaddr = Scalar::Util::refaddr($addr) if $have_scalar_util;
is($addr->address, $ORIGINAL, "address is parsed in properly");
$addr->address($UPDATED);
is($addr->address, $UPDATED, "the address udpated properly");
}
my ($addr) = Email::Address->parse($ORIGINAL);
if ($have_scalar_util) {
isnt(
Scalar::Util::refaddr($addr),
$orig_refaddr,
"the new copy isn't the same refaddr as we had previously",
);
}
isa_ok($addr, 'Email::Address');
is($addr->address, $ORIGINAL, "address is parsed in properly");
if ($have_scalar_util) {
my ($addr2) = Email::Address->parse($ORIGINAL);
is(
Scalar::Util::refaddr($addr),
Scalar::Util::refaddr($addr2),
"we still get a cached copy",
);
}