1#!/usr/bin/perl -w 2package Pod::WSDL::Method; 3 4use Test::More tests => 21; 5BEGIN {use_ok('Pod::WSDL::Method')} 6use strict; 7use warnings; 8use Pod::WSDL::Return; 9use Pod::WSDL::Param; 10use Pod::WSDL::Doc; 11use Pod::WSDL::Fault; 12use Pod::WSDL::Writer; 13 14my $m; 15 16eval {$m = new Pod::WSDL::Method(writer => 1);}; 17ok($@ =~ /a method needs a name/i, 'new dies, if it does not get a name'); 18 19eval {$m = new Pod::WSDL::Method(name => 'bla');}; 20ok($@ =~ /a method needs a writer/i, 'new dies, if it does not get a writer'); 21 22my $ret1 = new Pod::WSDL::Return('_RETURN $string This returns blah ...'); 23my $ret2 = new Pod::WSDL::Return('_RETURN $boolean This returns blah blah ...'); 24my $doc1 = new Pod::WSDL::Doc('_DOC This method is for blah ...'); 25my $doc2 = new Pod::WSDL::Doc('_DOC This method is for blah blah ...'); 26my $par1 = new Pod::WSDL::Param('_IN myParam $string This parameter is for blah ...'); 27my $par2 = new Pod::WSDL::Param('_OUT yourParam $string This parameter is for blah ...'); 28my $fau1 = new Pod::WSDL::Fault('_FAULT My::Fault This happens if something happens'); 29my $fau2 = new Pod::WSDL::Fault('_FAULT My::Fault This happens if nothing happens'); 30 31$m = new Pod::WSDL::Method(name => "myMethod", return => $ret1, doc => $doc1, params => [$par1], faults => [$fau1], writer => new Pod::WSDL::Writer); 32 33ok($m->name eq 'myMethod', 'Retrieving name works'); 34ok($m->oneway == 0, 'Default for oneway set correctly'); 35ok((ref $m->return eq 'Pod::WSDL::Return' and $m->return->type eq 'string'), 'Retrieving return works'); 36ok((ref $m->doc eq 'Pod::WSDL::Doc' and $m->doc->descr eq 'This method is for blah ...'), 'Retrieving doc works'); 37ok((ref $m->params->[0] eq 'Pod::WSDL::Param' and $m->params->[0]->name eq 'myParam'), 'Retrieving param works'); 38ok((ref $m->faults->[0] eq 'Pod::WSDL::Fault' and $m->faults->[0]->type eq 'My::Fault'), 'Retrieving fault works'); 39ok(ref $m->writer eq 'Pod::WSDL::Writer', 'Pod::WSDL::Writer correctly initialized'); 40 41$m->return($ret2); 42$m->doc($doc2); 43 44ok((ref $m->return eq 'Pod::WSDL::Return' and $m->return->type eq 'boolean'), 'Setting return works'); 45ok((ref $m->doc eq 'Pod::WSDL::Doc' and $m->doc->descr eq 'This method is for blah blah ...'), 'Setting doc works'); 46 47$m->addParam($par2); 48$m->addFault($fau2); 49 50ok((ref $m->params->[0] eq 'Pod::WSDL::Param' and $m->params->[0]->name eq 'myParam'), 'Adding param does not influence existing params'); 51ok((ref $m->faults->[0] eq 'Pod::WSDL::Fault' and $m->faults->[0]->type eq 'My::Fault'), 'Adding fault does not influence existing faults'); 52ok((ref $m->params->[1] eq 'Pod::WSDL::Param' and $m->params->[1]->name eq 'yourParam'), 'Setting param works'); 53ok((ref $m->faults->[1] eq 'Pod::WSDL::Fault' and $m->faults->[1]->descr eq 'This happens if nothing happens'), 'Setting fault works'); 54 55$m->oneway(1); 56ok($m->oneway == 1, 'Setting param oneway works'); 57 58$m->oneway(0); 59ok($m->oneway == 0, 'Unsetting param oneway works'); 60 61eval { 62 $m->name('foo'); 63}; 64 65{ 66 no warnings; 67 ok($@ == undef, 'Renaming method is forbidden.'); 68} 69 70ok($m->requestName eq 'fooRequest', 'Method requestName() works'); 71ok($m->responseName eq 'fooResponse', 'Method responseName() works'); 72