XML-Declare
view release on metacpan or search on metacpan
t/01-basic.t view on Meta::CPAN
is + ($doc = doc {}), qq{<?xml version="1.0" encoding="utf-8"?>\n}, 'empty doc';
is $warn, 1, 'have warn'; $warn = 0;
is + ($doc = doc {} '1.1'), qq{<?xml version="1.1" encoding="utf-8"?>\n}, 'empty doc 1.1';
is $warn, 1, 'have warn'; $warn = 0;
is + ($doc = doc {} undef,'cp1251'), qq{<?xml version="1.0" encoding="cp1251"?>\n}, 'empty doc cp1251';
is $warn, 1, 'have warn'; $warn = 0;
is + ($doc = doc {} '1.1','cp1251'), qq{<?xml version="1.1" encoding="cp1251"?>\n}, 'empty doc 1.1 cp1251';
is $warn, 1, 'have warn'; $warn = 0;
is + ($doc = doc { comment 'test'; }), qq{<?xml version="1.0" encoding="utf-8"?>\n<!--test-->\n}, 'empty doc with comment';
is $warn, 1, 'have warn'; $warn = 0;
}
is
$doc = doc { element 'test'; },
qq{<?xml version="1.0" encoding="utf-8"?>\n<test/>\n},
'doc + element'
or diag $doc;
XML::LibXML->new->parse_string("$doc");
eval { $doc = doc { element '<'; } };
ok $@, 'bad node name' or diag "No error: $doc";
eval { $doc = doc { element t => sub { attr '<' => 'attrval'; }; } };
ok $@, 'bad attr name' or diag "No error: $doc";
is
$doc = doc { element 'test', 'text', a => 'attrval'; },
qq{<?xml version="1.0" encoding="utf-8"?>\n<test a="attrval">text</test>\n},
'doc + element + attrs'
or diag $doc;
XML::LibXML->new->parse_string("$doc");
is
$doc = doc { element test => a => 'attrval', sub { text 'text'; }; },
qq{<?xml version="1.0" encoding="utf-8"?>\n<test a="attrval">text</test>\n},
'doc + element-sub'
or diag $doc;
XML::LibXML->new->parse_string("$doc");
# Element have overloaded 'eq' magic, so force stringify
is +
''.($doc = element( test => a => 'attrval', sub { element "a","b";text 'text';element "x","y"; } )),
qq{<test a="attrval"><a>b</a>text<x>y</x></test>},
'nodoc element + element-sub'
or diag $doc;
XML::LibXML->new->parse_string("$doc");
is
$doc = doc { element test => sub { text 'text'; attr a => 'attrval'; }; },
qq{<?xml version="1.0" encoding="utf-8"?>\n<test a="attrval">text</test>\n},
'doc + element-sub + attr'
or diag $doc;
XML::LibXML->new->parse_string("$doc");
is
$doc = doc { element test => sub { text 'text'; attr a => 'attrval'; comment 'zzzz'; cdata 'something <![CDATA[:)]]>'; }; },
qq{<?xml version="1.0" encoding="utf-8"?>\n<test a="attrval">text<!--zzzz--><![CDATA[something <![CDATA[:)]]]]><![CDATA[>]]></test>\n},
'doc + element-sub + attr,comm,cdata';
XML::LibXML->new->parse_string("$doc");
eval { $doc = doc { element test => sub { comment '--'; } } };
like $@, qr/double-hyphen.* MUST NOT occur within/i, 'comment with --' or diag "No error: $doc";
eval { $doc = doc { element test => sub { comment 'test-'; } } };
like $@, qr/MUST NOT end with .*hyphen/i, 'comment with -' or diag "No error: $doc";
$doc = doc { element test => sub { comment '-B, B+, B, or B- '; }; };
$back = XML::LibXML->new->parse_string("$doc");
is $back->documentElement->firstChild->textContent, "-B, B+, B, or B- ", 'comment parsed back';
$doc = doc { element test => sub { cdata '<![CDATA[:)]]>'; } };
$back = XML::LibXML->new->parse_string("$doc");
is $back->documentElement->firstChild->textContent, '<![CDATA[:)]]>', 'cdata parsed back';
Test::NoWarnings::had_no_warnings();
local $SIG{__WARN__} = sub {
diag "warned: @_";
};
is
$doc = doc { text 'x'; element test => 'root'; text 'x'; },
qq{<?xml version="1.0" encoding="utf-8"?>\n<test>root</test>\n},
'doc + text,element,text';
is
$doc = doc { text 'x'; element test => 'root'; element dummy => "dummy"; text 'x'; },
qq{<?xml version="1.0" encoding="utf-8"?>\n<test>root</test>\n},
'doc + text,element,text';
is
$doc = doc { text ' ';element test => 'root'; text ' '; },
qq{<?xml version="1.0" encoding="utf-8"?>\n<test>root</test>\n},
'doc + wsp,element,wsp';
exit;
require Test::NoWarnings; # Stupid hack for cpants::kwalitee
( run in 0.383 second using v1.01-cache-2.11-cpan-39bf76dae61 )