#!/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 => 95; set_compile_defaults elements_qualified => 'NONE'; my $schema = XML::Compile::Schema->new( <<__SCHEMA__ ); __SCHEMA__ ok(defined $schema); ## test 1 my %t1 = (t1_a => 10, t1_b => 9, a1_a => 11, a1_b => 12); test_rw($schema, test1 => <<__XML, \%t1); 10 9 __XML my %t1_b = (t1_a => 20, t1_b => 21, a1_b => 23); test_rw($schema, test1 => <<__XML, \%t1_b); 20 21 __XML my $error = error_r($schema, test1 => <<__XML); 25 26 __XML is($error, "attribute `a1_b' is required at {http://test-types}test1/\@a1_b"); my %t1_c = (a1_b => 24, t1_a => 25); $error = error_w($schema, test1 => \%t1_c); is($error, "required value for element `t1_b' missing at {http://test-types}test1"); ## test 2 attributeGroup my %t2_a = (a2_a => 30, a2_b => 31, a2_c => 29, t2_b => 100); test_rw($schema, test2 => <<__XML, \%t2_a); 100 __XML my %t2_b = (a2_a => 32, a2_b => 33, a2_c => 34, a2_d => 35 , t2_a => 99, t2_b => 101); test_rw($schema, test2 => <<__XML, \%t2_b); 99101 __XML $error = error_r($schema, test2 => <<__XML); 102 __XML is($error, "attribute `a2_e' is prohibited at {http://test-types}test2/\@a2_e"); $error = error_w($schema, test2 => {a2_c => 29, a2_e => 666, t2_b => 77} ); is($error, "attribute `a2_e' is prohibited at {http://test-types}test2/\@a2_e"); test_rw($schema, test3 => '', { a3 => 41 }); ### toplevel attributes # test 4 test_rw($schema, test4 => '', { a4 => 42 }); test_rw($schema, a4 => XML::LibXML::Attr->new('a4', 43), 43, ' a4="43"'); # test 5 test_rw($schema, test5 => '', { a5 => 'only-one' }); $error = error_r($schema, test5 => ''); is($error, "invalid enumerate `not-two' at {http://test-types}test5#facet"); test_rw($schema, a5 => XML::LibXML::Attr->new(a5 => 'only-one') , 'only-one', ' a5="only-one"');