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
|