File: xml_transform.t

package info (click to toggle)
libcatmandu-xml-perl 0.17-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 216 kB
  • sloc: perl: 387; xml: 28; makefile: 2; sh: 1
file content (45 lines) | stat: -rw-r--r-- 1,564 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use strict;
use warnings;
use Test::More;

use Catmandu::Fix::xml_transform as => 'transform';

my ($xml, $struct) = ('<doc attr="bar"/>', [ doc => { attr => "bar" }, [ ] ]);
my $data = { xml => $xml };
transform($data,'xml', file => 't/transform1.xsl');
is $data->{xml}, "<?xml version=\"1.0\"?>\n<foo>bar</foo>\n", 'xml_transform string';

$data = { xml => $struct };
transform($data,'xml', file => 't/transform1.xsl');
is_deeply $data->{xml}, [ foo => { }, ['bar'] ], 'xml_transform struct';

$data = { xml => $struct };
transform($data,'xml', file => 't/transform1.xsl', format => 'string');
is $data->{xml}, "<?xml version=\"1.0\"?>\n<foo>bar</foo>\n", 'format=string';

$data = { xml => $xml };
transform($data,'xml', file => 't/transform2.xsl');
is $data->{xml}, 'DOC: bar', 'xsl:output method=text (string)';

$data = { xml => $struct };
transform($data,'xml', file => 't/transform2.xsl');
is $data->{xml}, 'DOC: bar', 'xsl:output method=text (struct)';

$data = { xml => $struct };
transform($data,'xml', file => [] );
is_deeply $data, { xml => $struct }, 'empty transformation (struct)';

$data = { xml => $xml };
transform($data,'xml', file => [] );
is_deeply $data, { xml => "<?xml version=\"1.0\"?>\n$xml\n" },
    'empty transformation (string)';

foreach my $pipeline ( 
        't/transform1.xsl,t/transform3.xsl', 
        [qw(t/transform1.xsl t/transform3.xsl)] ) {
    $data = { xml => $struct };
    transform($data,'xml', file => $pipeline);
    is_deeply $data, { xml => [ doz => { }, ['bar'] ] }, 'transformation pipeline';
}

done_testing;