The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
use strict;
use warnings;

use lib '../lib';
use lib '../../lib';

use Test::More;

my $pi = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';

use_ok('XML::Loy');

my $i = 1;

ok(my $xml = XML::Loy->new('root'), 'Constructor String');
ok(my $child = $xml->add('test'), 'Add child');
ok(my $string = $xml->to_pretty_xml, 'Pretty Print');
like($string, qr{<test />}, 'Check ' . $i++);
like($string, qr{\Q$pi\E}, 'Check ' . $i++);

ok($child->comment('MyComment'), 'Set comment');
ok($string = $xml->to_pretty_xml, 'Pretty Print');
like($string, qr{<!-- MyComment -->}, 'Check ' . $i++);

ok(my $obj = $child->add(test => { foo => 'bar' }), 'Add object');

ok($obj->comment('My New Comment'), 'New Comment');

ok($string = $xml->to_pretty_xml, 'Pretty Print');

$string =~ s/\s//g;

like($string, qr{<test>}, 'Check ' . $i++);
like($string, qr{</test>}, 'Check ' . $i++);
like($string, qr{<!--MyComment-->}, 'Check ' . $i++);
like($string, qr{<!--MyNewComment-->}, 'Check ' . $i++);
like($string, qr{<!--MyNewComment--><testfoo}, 'Check ' . $i++);
ok($obj->comment('My New Comment 2'), 'New Comment');

ok($string = $xml->to_pretty_xml, 'Pretty Print');

$string =~ s/\s//g;
like($string, qr{<!--MyNewCommentMyNewComment2--><testfoo}, 'Check ' . $i++);


ok($xml = XML::Loy->new('entry'), 'New document');
ok($obj = XML::Loy->new('child'), 'Add child');

ok($obj = $xml->add($obj), 'Add child');

$obj->comment('Comment1')->comment('Comment2')->comment('Comment3');

ok($string = $xml->to_pretty_xml, 'Pretty Print');

$string =~ s/\s//g;
like($string, qr{<!--Comment1Comment2Comment3--><child}, 'Check ' . $i++);


done_testing;