1require IO::Socket; 2require Config; 3require Net::Daemon::Test; 4require RPC::PlClient; 5 6 7sub Test($) { 8 my $result = shift; 9 printf("%sok %d\n", ($result ? "" : "not "), ++$numTest); 10 $result; 11} 12 13sub RunTests (@) { 14 my $client; 15 my $key; 16 17 if ($_[0] && $_[0] eq 'usercipher') { 18 shift; 19 $key = shift; 20 } 21 22 # Making a new connection 23 Test($client = eval { RPC::PlClient->new(@_) }) 24 or print "Failed to make second connection: $@\n"; 25 if ($key) { $client->{'cipher'} = $key } 26 27 # Creating a calculator object 28 my $calculator = eval { $client->ClientObject('Calculator', 'new') }; 29 Test($calculator) or print "Failed to create calculator: $@\n"; 30 print "Calculator is $calculator.\n"; 31 print "Handle is $calculator->{'object'}.\n"; 32 print "Client is $calculator->{'client'}.\n"; 33 34 # Let him do calculations ... 35 my $result = eval { $calculator->add(4, 6, 7) }; 36 Test($result and $result eq 17) 37 or printf("Expected 17, got %s, errstr $@\n", 38 (defined($result) ? $result : "undef")); 39 40 $result = eval { $calculator->multiply(2, 3, 4) }; 41 Test($result and $result eq 24); 42 43 $result = eval { $calculator->subtract(27, 12) }; 44 Test($result and $result eq 15); 45 46 $result = eval { $calculator->subtract(27, 12, 7) }; 47 Test($@ and $@ =~ /Usage/); 48 49 $result = eval { $calculator->divide(15, 3) }; 50 Test($result and $result eq 5); 51 52 $result = eval { $calculator->divide(27, 12, 7) }; 53 Test($@ and $@ =~ /Usage/); 54 55 $result = eval { $calculator->divide(27, 0) }; 56 Test($@ and $@ =~ /zero/); 57 58 ($client, $calculator); 59} 60 61 621; 63