#!/usr/bin/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__
ok(defined $schema);
#
# Direct schema access
#
my $dirr = $schema->compile(READER => "{$SchemaNS}int");
ok(defined $dirr, 'read an int');
my $val = $dirr->('40');
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__ );
42
__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__ );
42
__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__ );
13
42
__XML__