XML-Generator
view release on metacpan or search on metacpan
t/Generator.t view on Meta::CPAN
my $t = "g:";
$x->$t();
};
ok($@, qr{name \[g:] contains illegal character\(s\)});
$xml = $x->foo(['bar'], {'baz:foo' => 'qux', 'fob' => 'gux'});
ok($xml eq '<foo xmlns="bar" baz:foo="qux" fob="gux" />' ||
$xml eq '<foo xmlns="bar" fob="gux" baz:foo="qux" />', 1, $xml);
$xml = $x->foo(['bar' => 'bam'], {'baz:foo' => 'qux', 'fob' => 'gux'});
ok($xml eq '<bar:foo xmlns:bar="bam" baz:foo="qux" fob="gux" />' ||
$xml eq '<bar:foo xmlns:bar="bam" fob="gux" baz:foo="qux" />', 1, $xml);
$x = XML::Generator->new(
conformance => 'loose',
xml => { version => "1.0", encoding => 'UTF-8' },
);
ok(
$x->xml($x->foo),
join("\n",
'<?xml version="1.0" encoding="UTF-8"?>',
'<foo />'),
"Correct XML tag"
);
$x = XML::Generator->new(
conformance => 'loose',
xml => { version => "1.0", encoding => 'UTF-8', dtd => [ 'foo' ] },
);
ok(
$x->xml($x->foo),
join("\n",
'<?xml version="1.0" encoding="UTF-8" standalone="no"?>',
'<!DOCTYPE foo>',
'<foo />'),
"Correct XML tag with doctype"
);
eval {
XML::Generator->new(
conformance => 'loose',
xml => [],
);
};
ok $@ =~ qr/XML arguments must be a hash/;
$x = new XML::Generator;
$xml = $x->xml();
ok($xml, '<xml />');
$x = new XML::Generator 'conformance' => 'strict',
'dtd' => [ 'foo', 'SYSTEM', '"http://foo.com/foo"' ];
$xml = $x->xmldecl();
ok($xml,
'<?xml version="1.0" standalone="no"?>
<!DOCTYPE foo SYSTEM "http://foo.com/foo">
');
$xml = $x->xmlcdata("test");
ok($xml, '<![CDATA[test]]>');
$x = new XML::Generator 'pretty' => 2, 'conformance' => 'strict';
$xml = $x->foo($x->bar());
ok($xml,
'<foo>
<bar />
</foo>');
$xml = $x->foo($x->xmlcdata("bar"), $x->xmlpi("baz"));
ok($xml, '<foo><![CDATA[bar]]><?baz?></foo>');
# test that cdata is not intended when pretty printing is on
$xml = $x->foo($x->bam($x->xmlcdata("bar\nbar")));
ok($xml, '<foo>
<bam><![CDATA[bar
bar]]></bam>
</foo>');
$x = new XML::Generator 'conformance' => 'strict';
$xml = $x->foo(42);
$xml = $x->xml($xml);
ok($xml,
'<?xml version="1.0"?>
<foo>42</foo>');
eval {
$x->xml();
};
ok($@ =~ /usage/, 1);
eval {
$x->xml(3);
};
ok($@ =~ /arguments to xml/, 1);
eval {
$xml = $x->bar($xml);
};
ok($@ =~ /cannot embed/, 1);
$x = new XML::Generator 'pretty' => 2;
$xml = $x->foo($x->bar($x->baz()));
ok($xml,
'<foo>
<bar>
<baz />
</bar>
</foo>');
$xml = $x->foo("\n<bar />");
ok($xml,
'<foo>
<bar /></foo>');
$x = new XML::Generator 'empty' => 'close';
$xml = $x->foo();
ok($xml, '<foo></foo>');
$x = new XML::Generator 'empty' => 'ignore';
$xml = $x->foo();
ok($xml, '<foo>');
eval {
$x = new XML::Generator 'empty' => 'ignore', 'conformance' => 'strict';
};
ok($@ =~ /not allowed/, 1);
$x = new XML::Generator 'conformance' => 'strict';
$xml = $x->foo();
$cmnt = $x->xmlcmnt("comment");
$pi = $x->xmlpi("foo");
$xml = $x->xml($cmnt, $xml, $pi);
ok($xml, '<?xml version="1.0"?>
( run in 1.092 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )