require IO::Socket;
require Config;
require Net::Daemon::Test;
require RPC::PlClient;
sub Test($) {
my $result = shift;
printf("%sok %d\n", ($result ? "" : "not "), ++$numTest);
$result;
}
sub RunTests (@) {
my $client;
my $key;
if ($_[0] && $_[0] eq 'usercipher') {
shift;
$key = shift;
}
Test($client = eval { RPC::PlClient->new(@_) })
or print "Failed to make second connection: $@\n";
if ($key) { $client->{'cipher'} = $key }
my $calculator = eval { $client->ClientObject('Calculator', 'new') };
Test($calculator) or print "Failed to create calculator: $@\n";
print "Calculator is $calculator.\n";
print "Handle is $calculator->{'object'}.\n";
print "Client is $calculator->{'client'}.\n";
my $result = eval { $calculator->add(4, 6, 7) };
Test($result and $result eq 17)
or printf("Expected 17, got %s, errstr $@\n",
(defined($result) ? $result : "undef"));
$result = eval { $calculator->multiply(2, 3, 4) };
Test($result and $result eq 24);
$result = eval { $calculator->subtract(27, 12) };
Test($result and $result eq 15);
$result = eval { $calculator->subtract(27, 12, 7) };
Test($@ and $@ =~ /Usage/);
$result = eval { $calculator->divide(15, 3) };
Test($result and $result eq 5);
$result = eval { $calculator->divide(27, 12, 7) };
Test($@ and $@ =~ /Usage/);
$result = eval { $calculator->divide(27, 0) };
Test($@ and $@ =~ /zero/);
($client, $calculator);
}
1;