#!/usr/bin/env perl
# reproduce the examples from
# http://www.cafeconleche.org/books/xmljava/chapters/ch02s05.html
use warnings;
use strict;
use XML::Compile::RPC::Client;
use XML::Compile::Tester;
use Test::More tests => 7;
my $rpc = XML::Compile::RPC::Client->new(destination => 'dummy');
my $xml = $rpc->_callmsg('getQuote', string => 'RHAT');
compare_xml($xml, <<'__EXPECT');
getQuote
RHAT
__EXPECT
my ($rc, $data) = $rpc->_respmsg(<<'__RESPONSE');
4.12
__RESPONSE
cmp_ok($rc, '==', 0, 'correct messsage');
is_deeply($data, 4.12);
my @values = ({string => 'RHAT'}, {double => 4.12}, {double => 4.25});
my $xml2 = $rpc->_callmsg('getQuote', array => {data => {value => \@values}});
compare_xml($xml2, <<'__EXPECT');
getQuote
RHAT
4.12
4.25
__EXPECT
my @members = ( {name => 'symbol', value => {string => 'RHAT'}}
, {name => 'limit', value => {double => 2.25}}
, {name => 'expires', value =>
{ 'dateTime.iso8601' => '2002-07-09T20:00:00Z' }} );
my $xml3 = $rpc->_callmsg('bid', struct => { member => \@members });
compare_xml($xml3, <<'__EXPECT');
bid
symbol
RHAT
limit
2.25
expires
2002-07-09T20:00:00Z
__EXPECT
my ($rc2, $data2) = $rpc->_respmsg(<<'__RESPONSE');
faultCode
23
faultString
Unknown stock symbol ABCD
__RESPONSE
cmp_ok($rc2, '==', 23, 'fault messsage');
is_deeply($data2, 'Unknown stock symbol ABCD');