use warnings;
use strict;
use t::DataSets (map { ("COUNT_$_", "foreach_$_") } qw(
yes_name
yes_attributes
yes_content_twine
));
use t::ErrorCases (map { ("COUNT_$_", "test_$_") } qw(
error_type_name
error_attribute_name
error_attributes
error_content_twine
error_content
));
use Test::More tests => 2 +
3*COUNT_yes_content_twine +
COUNT_error_content_twine +
3*COUNT_yes_name + 5*COUNT_yes_attributes + 6*COUNT_yes_content_twine +
COUNT_error_type_name + COUNT_error_attributes + COUNT_error_content +
2*COUNT_error_type_name + COUNT_error_attributes +
COUNT_yes_name +
COUNT_error_attribute_name;
BEGIN { $SIG{__WARN__} = sub { die "WARNING: $_[0]" }; }
use_ok "XML::Easy::Content";
use_ok "XML::Easy::Element";
my $c0 = XML::Easy::Content->new([ "bop" ]);
my $e0 = XML::Easy::Element->new("foo", {}, $c0);
foreach_yes_content_twine sub { my($twine) = @_;
my $c = XML::Easy::Content->new($twine);
is ref($c), "XML::Easy::Content";
is_deeply $c->twine, $twine;
is_deeply $c->content, $twine;
};
test_error_content_twine sub { XML::Easy::Content->new($_[0]) };
foreach_yes_name sub { my($name) = @_;
my $e = XML::Easy::Element->new($name, {}, $c0);
is ref($e), "XML::Easy::Element";
is_deeply +XML::Easy::Element->new($name, {}, [ "bop" ]), $e;
is $e->type_name, $name;
};
foreach_yes_attributes sub { my($attr) = @_;
my $e = XML::Easy::Element->new("foo", $attr, $c0);
is ref($e), "XML::Easy::Element";
is_deeply +XML::Easy::Element->new("foo", $attr, [ "bop" ]), $e;
is_deeply $e->attributes, $attr;
is $e->attribute("foo"), $attr->{foo};
is $e->attribute("bar"), $attr->{bar};
};
foreach_yes_content_twine sub { my($twine) = @_;
my $e = XML::Easy::Element->new("foo", {}, $twine);
is ref($e), "XML::Easy::Element";
is_deeply +XML::Easy::Element->new("foo", {},
XML::Easy::Content->new($twine)),
$e;
is ref($e->content_object), "XML::Easy::Content";
is_deeply $e->content_object->twine, $twine;
is_deeply $e->content_twine, $twine;
is_deeply $e->content, $twine;
};
test_error_type_name sub { XML::Easy::Element->new($_[0], {}, $c0) };
test_error_attributes sub { XML::Easy::Element->new("foo", $_[0], $c0) };
test_error_content sub { XML::Easy::Element->new("foo", {}, $_[0]) };
test_error_type_name sub { XML::Easy::Element->new($_[0], {}, undef) };
test_error_type_name sub { XML::Easy::Element->new($_[0], undef, $c0) };
test_error_attributes sub { XML::Easy::Element->new("foo", $_[0], undef) };
foreach_yes_name sub { is $e0->attribute($_[0]), undef };
test_error_attribute_name sub { $e0->attribute($_[0]) };
1;