1use Test::More tests => 11; 2use lib '../lib'; 3use File::Basename qw(dirname); 4use Cwd; 5 6my $path = dirname __FILE__; 7 8use_ok(qw/SOAP::WSDL::Expat::WSDLParser/); 9 10my $filter; 11 12my $parser; 13 14ok($parser = SOAP::WSDL::Expat::WSDLParser->new() ); 15 16eval { $parser->parse_file( "$path/test.wsdl" ) }; 17if ($@) 18{ 19 fail("parsing WSDL: $@"); 20 die "Can't test without parsed WSDL"; 21} 22else 23{ 24 pass("parsing XML"); 25} 26 27my $wsdl; 28ok( $wsdl = $parser->get_data() , "get object tree"); 29 30my $schema = $wsdl->first_types(); 31 32my $opt = { 33 readable => 0, 34 autotype => 1, 35 namespace => $wsdl->get_xmlns(), 36 indent => "\t", 37 typelib => $schema, 38}; 39 40is( $schema->find_type( 'urn:myNamespace', 'testSimpleType1' )->serialize( 41 'test', 1 , $opt ), 42 q{<test type="tns:testSimpleType1">1</test>} , "serialize simple type"); 43 44is( $schema->find_type( 'urn:myNamespace', 'testSimpleList' )->serialize( 45 'testList', [ 1, 2, 3 ] , $opt), 46 q{<testList type="tns:testSimpleList">1 2 3</testList>}, 47 "serialize simple list type" 48); 49 50is( $schema->find_element( 'urn:myNamespace', 'TestElement' )->serialize( 51 undef, 1 , $opt), 52 q{<TestElement type="xsd:int">1</TestElement>}, "Serialize element" 53); 54 55$opt->{ readable } = 0; 56 57is( $schema->find_type( 'urn:myNamespace', 'length3')->serialize( 58 'TestComplex', { size => -13, unit => 'BLA' } , 59 $opt ), 60 q{<TestComplex type="tns:length3" >} 61 . q{<size type="xsd:nonPositiveInteger">-13</size>} 62 . q{<unit type="xsd:NMTOKEN">BLA</unit></TestComplex>} 63 , "serialize complex type" ); 64 65is( $schema->find_element( 'urn:myNamespace', 'TestElementComplexType')->serialize( 66 undef, { size => -13, unit => 'BLA' } , 67 $opt ), 68 q{<TestElementComplexType type="tns:length3" >} 69 . q{<size type="xsd:nonPositiveInteger">-13</size>} 70 . q{<unit type="xsd:NMTOKEN">BLA</unit></TestElementComplexType>}, 71 "element with complex type" 72); 73 74is( $schema->find_type( 'urn:myNamespace', 'complex')->serialize( 75 'complexComplex', 76 { 'length' => { size => -13, unit => 'BLA' }, 'int' => 1 }, 77 $opt ), 78 q{<complexComplex type="tns:complex" >} 79 . q{<length type="tns:length3" >} 80 . q{<size type="xsd:nonPositiveInteger">-13</size>} 81 . q{<unit type="xsd:NMTOKEN">BLA</unit></length>} 82 . q{<int type="xsd:int">1</int></complexComplex>}, 83 "nested complex type" 84); 85 86is( $wsdl->find_message('urn:myNamespace', 'testRequest')->first_part()->serialize( 87 undef, { test => { length => { size => -13, unit => 'BLA' } , int => 3 } }, 88 $opt ), 89 q{<test type="tns:complex" >} 90 . q{<length type="tns:length3" >} 91 . q{<size type="xsd:nonPositiveInteger">-13</size>} 92 . q{<unit type="xsd:NMTOKEN">BLA</unit>} 93 . q{</length><int type="xsd:int">3</int></test>} 94 , "Message part" 95); 96 97