From Code to Community: Sponsoring The Perl and Raku Conference 2025 Learn more

use strict;
use version; our $VERSION = qv('0.0.1');
use YAML;
sub t004_initialize_hessian : Test(3) { #{{{
my $self = shift;
my $hessian_obj = Hessian::Translator->new( version => 2 );
ok(
!$hessian_obj->can('deserialize_message'),
"Deserialize role has not been composed."
);
ok(
!$hessian_obj->does('Hessian::Translator::V1'),
"Not ready for processing of Hessian version 1"
);
ok(
!$hessian_obj->does('Hessian::Translator::V2'),
"Not ready for processing of Hessian version 2"
);
$self->{deserializer} = $hessian_obj;
} #}}}
#sub t005_compose_role : Test(2) { #{{{
# my $self = shift;
# my $hessian_obj = $self->{deserializer};
# Hessian::Translator::Composite->meta()->apply($hessian_obj);
# Hessian::Deserializer->meta()->apply($hessian_obj);
# ok( $hessian_obj->does('Hessian::Deserializer'),
# "Object can deserialize." );
# ok(
# $hessian_obj->can('deserialize_message'),
# "Deserialize role has been composed."
# );
#} #}}}
sub t010_read_hessian_version : Test(1) { #{{{
my $self = shift;
my $deserializer = $self->{deserializer};
my $hessian_data = "H\x02\x00";
$deserializer->input_string($hessian_data);
my $result = $deserializer->deserialize_message();
cmp_deeply(
$result,
{ hessian_version => "2.0" },
"Parsed hessian version 2."
);
} #}}}
sub t015_read_envelope : Test(2) { #{{{
my $self = shift;
my $deserializer = $self->{deserializer};
my $hessian_data = "H\x02\x00E\x06Header\x90\x87R\x05hello\x90Z";
$deserializer->input_string($hessian_data);
my $tokens = $deserializer->process_message();
cmp_deeply(
$tokens->[0],
{ hessian_version => "2.0" },
"Parsed hessian version 2."
);
my $reply_data = $tokens->[1]->[0]->{packets}->[0];
my $text = "$reply_data->{reply_data}";
print "Text is $text\n";
cmp_deeply(
$reply_data,
superhashof( { reply_data => 'hello' } ),
"Parsed expected datastructure."
);
} #}}}
sub t016_multi_chunk_envelope : Test(1) { #{{{
my $self = shift;
my $deserializer = $self->{deserializer};
my $hessian_data = "H\x02\x00E\x06Header\x90\x88C\x05hello"
. "\x91\x90\x90\x8d\x0chello, world\x90Z";
$deserializer->input_string($hessian_data);
my $tokens = $deserializer->process_message();
my $second_packet = $tokens->[1]->[1]->{packets}->[0];
my $text = "$second_packet";
cmp_deeply( $second_packet, "hello, world",
"Parsed expected datastructure." );
} #}}}
sub t017_hessian_fault : Test(1) { #{{{
my $self = shift;
my $deserializer = $self->{deserializer};
my $hessian_data = "FH\x04code\x10ServiceException\x07message"
. "\x0eFile Not Found\x06detailM\x1djava.io.FileNotFoundExceptionZZ";
my $result =
$deserializer->deserialize_message( { input_string => $hessian_data } );
isa_ok( $result, 'ServiceException', "Object received from deserializer" );
} #}}}
sub t019_hessian_call : Test(3) { #{{{
my $self = shift;
my $hessian_data = "H\x02\x00C\x02eq\x92M\x07qa.Bean\x03foo\x9dZQ\x90";
my $hessian_obj = Hessian::Translator->new( version => 2 );
$hessian_obj->input_string($hessian_data);
my $datastructure = $hessian_obj->process_message();
cmp_deeply(
$datastructure->[1]->{call},
{
arguments => ignore(),
method => 'eq'
}
);
my @arguments = @{ $datastructure->[1]->{call}->{arguments} };
foreach my $argument (@arguments) {
isa_ok( $argument, 'qa.Bean', "Type parsed from call" );
}
} #}}}
"one, but we're not the same";
__END__
=head1 NAME
Datatype::v2Message - Test processing of Hessian version 2
=head1 VERSION
=head1 SYNOPSIS
=head1 DESCRIPTION
=head1 INTERFACE