File: 04-h2x-lx.t

package info (click to toggle)
libxml-hash-xs-perl 0.64-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 736 kB
  • sloc: ansic: 5,177; perl: 322; xml: 15; makefile: 9
file content (121 lines) | stat: -rw-r--r-- 2,870 bytes parent folder | download | duplicates (2)
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121

use strict;
use warnings;

use Test::More tests => 15;

use XML::Hash::XS 'hash2xml';

$XML::Hash::XS::method = 'LX';
$XML::Hash::XS::trim   = 1;

our $xml_decl = qq{<?xml version="1.0" encoding="utf-8"?>\n};

{
    is
        hash2xml( { root => { '#text' => ' zzzz ' } } ),
        qq{$xml_decl<root>zzzz</root>},
        'text',
    ;
}
{
    is
        hash2xml( { root => { sub => 'test' } } ),
        qq{$xml_decl<root><sub>test</sub></root>},
        'node',
    ;
}
{
    is
        hash2xml( { root => { -attr => "test < > & \" \t \n \r end" } } ),
        qq{$xml_decl<root attr="test &lt; &gt; &amp; &quot; &#9; &#10; &#13; end"></root>},
        'attr',
    ;
}
{
    is
        hash2xml( { root => { _attr => "test" } }, attr => '_' ),
        qq{$xml_decl<root attr="test"></root>},
        'attr _',
    ;
}
{
    is
        hash2xml( { root => { '~' => "zzzz < > & \r end" } }, text => '~' ),
        qq{$xml_decl<root>zzzz &lt; &gt; &amp; &#13; end</root>},
        'text ~',
    ;
}
{
    is
        hash2xml( { root => " \t\ntest" }, trim => 1 ),
        qq{$xml_decl<root>test</root>},
        'trim 1',
    ;
    is
        hash2xml( { root => " \t\ntest" }, trim => 0 ),
        qq{$xml_decl<root> \t\ntest</root>},
        'trim 0',
    ;
}
{
    is
        hash2xml( { root => { sub => { '@' => "cdata < > & \" \t \n \r end" } } }, cdata => '@' ),
        qq{$xml_decl<root><sub><![CDATA[cdata < > & \" \t \n \r end]]></sub></root>},
        'cdata @',
    ;
}
{
    is
        hash2xml( { root => { sub => { '/' => "comment < > & \" \t \n \r end" } } },comm => '/' ),
        qq{$xml_decl<root><sub><!--comment < > & \" \t \n \r end--></sub></root>},
        'comm /',
    ;
}
{
    is
        hash2xml( { root => { -attr => undef } } ),
        qq{$xml_decl<root attr=""></root>},
        'empty attr',
    ;
}
{
    is
        hash2xml( { root => { '#cdata' => undef } }, cdata => '#cdata' ),
        qq{$xml_decl<root></root>},
        'empty cdata',
    ;
}
{
    is
        hash2xml( { root => { '/' => undef } }, comm => '/' ),
        qq{$xml_decl<root><!----></root>},
        'empty comment',
    ;
}
{
    is
        hash2xml( { root => { x=>undef } } ),
        qq{$xml_decl<root><x/></root>},
        'empty tag',
    ;
}
{
    is
        hash2xml( { root => { item => [1, 2, 3, { -attr => 4, node => 5 }, [6, 7] ] } } ),
        qq{$xml_decl<root><item>1</item><item>2</item><item>3</item><item attr="4"><node>5</node></item><item><item>6</item><item>7</item></item></root>},
        'array',
    ;
}
SKIP: {
    my $data;
    eval { $data = hash2xml( { root => {  test => "Тест" } }, encoding => 'cp1251' ) };
    my $err = $@;
    chomp $err;
    skip $err, 1 if $err;
    is
        $data,
        qq{<?xml version="1.0" encoding="cp1251"?>\n<root><test>\322\345\361\362</test></root>},
        'encoding support',
    ;
}