File: 30compile.t

package info (click to toggle)
libxml-compile-perl 1.64-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,304 kB
  • sloc: perl: 11,616; makefile: 7
file content (108 lines) | stat: -rw-r--r-- 2,146 bytes parent folder | download | duplicates (6)
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
#!/usr/bin/env perl

use warnings;
use strict;

use lib 'lib','t';
use TestTools;

use XML::Compile::Schema;
use XML::Compile::Tester;

use Test::More tests => 14;

my $schema   = XML::Compile::Schema->new( <<__SCHEMA__ );
<schema targetNamespace="$TestNS"
   xmlns="$SchemaNS"
   xmlns:me="$TestNS"
   elementFormDefault="qualified">

<element name="test1" type="int" />

<element name="test2" type="me:test2" />
<simpleType name="test2">
  <restriction base="int" />
</simpleType>

<element name="test3" type="me:test3" />
<complexType name="test3">
  <sequence>
    <element name="test3_1" type="int" />
    <element name="test3_2" type="int" />
  </sequence>
</complexType>

</schema>
__SCHEMA__

ok(defined $schema);

#
# Direct schema access
#

my $dirr = $schema->compile(READER => "{$SchemaNS}int");
ok(defined $dirr, 'read an int');
my $val = $dirr->('<some>40</some>');
cmp_ok($val, '==', 40);

my $dirw = $schema->compile(WRITER => "{$SchemaNS}int");
my $doc  = XML::LibXML->createDocument('1.0', 'UTF-8');
ok(defined $dirw, 'write an int');
my $node = $dirw->($doc, '41');
ok(ref $node, 'created XML node');
isa_ok($node, 'XML::LibXML::Text');
compare_xml($node, '41');

#
# simple element type
#

my $read_t1   = $schema->compile
 ( READER      => "{$TestNS}test1"
 , check_values => 1
 );

ok(defined $read_t1, "reader element test1");
cmp_ok(ref($read_t1), 'eq', 'CODE');

my $t1 = $read_t1->( <<__XML );
<test1 xmlns="$TestNS">42</test1>
__XML

cmp_ok($t1, '==', 42);

#
# the simpleType, less simple type
#

my $read_t2   = $schema->compile
 ( READER       => "{$TestNS}test2"
 , check_values => 1
 );

ok(defined $read_t2, "reader simpleType test2");
cmp_ok(ref($read_t2), 'eq', 'CODE');

my $hash = $read_t2->( <<__XML );
<test2 xmlns="$TestNS">42</test2>
__XML

#
# The not so complex complexType
#

my $read_t3   = $schema->compile
 ( READER       => "{$TestNS}test3"
 , check_values => 1
 );

ok(defined $read_t3, "reader complexType test3");
cmp_ok(ref($read_t3), 'eq', 'CODE');

my $hash2 = $read_t3->( <<__XML );
<me:test3 xmlns:me="$TestNS">
  <me:test3_1>13</me:test3_1>
  <me:test3_2>42</me:test3_2>
</me:test3>
__XML