File: Catmandu-XML-Transformer.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 (42 lines) | stat: -rw-r--r-- 1,454 bytes parent folder | download
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
use strict;
use warnings;
# See https://github.com/LibreCat/Catmandu-XML/issues/19
use Test::More skip_all => "Module only used internally";
use Catmandu::XML::Transformer;
use XML::LibXML;

my $transformer = Catmandu::XML::Transformer->new(
    stylesheet => 't/transform1.xsl'
);

is_deeply $transformer->stylesheet, ['t/transform1.xsl'], 'stylesheet';
is $transformer->output_format, undef, 'output_format';

is $transformer->transform( '<doc attr="bar"/>' ),
   "<?xml version=\"1.0\"?>\n<foo>bar</foo>\n", 'xml_string';

my $xml_dom = XML::LibXML->load_xml(string => '<doc attr="bar"/>');
my $result = $transformer->transform($xml_dom); 
isa_ok $result, 'XML::LibXML::Document';
is $result, "<?xml version=\"1.0\"?>\n<foo>bar</foo>\n", 'xml_dom';

$xml_dom = XML::LibXML->load_xml('string','<doc attr="bar"/>')->documentElement;
isa_ok $transformer->transform($xml_dom), 'XML::LibXML::Document';

is_deeply $transformer->transform( [ doc => { attr => "bar" }, [ ] ] ),
   [ 'foo', {}, [ 'bar' ] ], 'xml_struct';

is_deeply $transformer->transform( { doc => 0 } ),
   { foo => {} }, 'xml_simple';

$transformer = Catmandu::XML::Transformer->new( 
    stylesheet => 't/transform2.xsl' );
is $transformer->output_format, 'string', 'output method=text';

$transformer = Catmandu::XML::Transformer->new(
    stylesheet => 't/transform1.xsl',
    output_format => 'DOM',
);
is $transformer->output_format, 'dom', 'normalize output_format';

done_testing;