Prev Next check_swig_xam.pl

@(@\newcommand{\B}[1]{ {\bf #1} } \newcommand{\R}[1]{ {\rm #1} }@)@
Swig Example / Test: Perl Script

Add Current Directory To Search Path

use lib "$ENV{PWD}";

Load the Module

use pl_swig_xam;

Initialize Error Count

$error_count = 0;

factorial_by_value
if( pl_swig_xam::factorial_by_value(4) == 24 )
{    print "pl_swig_xam::factorial_by_value: OK\n"; }
else
{    print "pl_swig_xam::factorial_by_value: Error\n";
     $error_count = $error_count + 1;
}
see C++ factorial_by_value .

message_of_void
if( pl_swig_xam::message_of_void() == "OK" )
{    print "pl_swig_xam::message_of_void: OK\n"; }
else
{    print "pl_swig_xam::message_of_void: Error\n";
     $error_count = $error_count + 1;
}
see C++ message_of_void .

int_class
$obj = new pl_swig_xam::int_class();
pl_swig_xam::add_by_ptr(3, 4, $obj);
if( $obj->value() == 7 )
{    print "pl_swig_xam::add_by_ptr: OK\n"; }
else
{    print "pl_swig_xam::add_by_ptr: Error\n";
     $error_count = $error_count + 1;
}
see Swig int_class and C++ add_by_ptr .

int_array_ptr
$n = 10;
$array_ptr = pl_swig_xam::new_int_array_ptr($n);
for($i = 0; $i < $n; $i++)
{    pl_swig_xam::int_array_ptr_setitem($array_ptr, $i, 2 * $i); }

if( pl_swig_xam::max_array_by_ptr($n, $array_ptr) == 18 )
{    print "pl_swig_xam::max_array_by_ptr: pointer: OK\n"; }
else
{    print "pl_swig_xam::max_array_by_ptr: pointer: Error\n";
     $error_count = $error_count + 1;
}
pl_swig_xam::delete_int_array_ptr($array_ptr);
see Swig int_array_ptr and C++ max_array_by_ptr .

int_array_class
$n         = 10;
$array_obj = new pl_swig_xam::int_array_class($n);
for($i = 0; $i < $n; $i++)
{    pl_swig_xam::int_array_ptr_setitem($array_obj, $i, 2 * $i); }
if( pl_swig_xam::max_array_by_ptr($n, $array_obj) == 18 )
{    print "pl_swig_xam::max_array_by_ptr: class: OK\n"; }
else
{    print "pl_swig_xam::max_array_by_ptr: class: Error\n";
     $error_count = $error_count + 1;
}
see Swig int_array_class and C++ max_array_by_ptr .

vector_double
$n   = 10;
$vec = new pl_swig_xam::vector_double($n);
for($i = 0; $i < $n; $i++)
{    $vec->set($i, 2.0 * $i); }

if( pl_swig_xam::max_std_vector_double($vec) == 18.0 )
{    print "pl_swig_xam::max_std_vector_double: class: OK\n"; }
else
{    print "pl_swig_xam::max_std_vector_double: class: Error\n";
     $error_count = $error_count + 1;
}
see Swig vector_double and C++ max_std_vector_double .

raise_exception
$message = "";
eval { # acts like 'try {' in other languages
     pl_swig_xam::raise_exception("test message\n");
}
; if( $@ ) { # acts like 'catch {' in other languages
     $message = pl_swig_xam::raise_exception("");
}
if( $message == "test message" )
{    print "pl_swig_xam::raise_exception: OK\n"; }
else
{    print "pl_swig_xam::raise_exception: Error\n";
     $error_count = $error_count + 1;
}
see C++ raise_exception .

normal_class
$two   = new pl_swig_xam::normal_class(2);
$three = new pl_swig_xam::normal_class(3);
$five  = $two + $three;
$check = new pl_swig_xam::normal_class(5);
$ok    = $five == $check;
$ok    = $ok and 4 < $five->value()  and $five->value() < 6;
if( ok )
{    print "pl_swig_xam::normal_class: OK\n"; }
else
{    print "pl_swig_xam::normal_class: Error\n";
     $error_count = $error_count + 1;
}
see C++ swig_xam_normal_class .

double_class
$two   = new pl_swig_xam::double_class(2.0);
$three = new pl_swig_xam::double_class(3.0);
$five  = $two + $three;
$check = new pl_swig_xam::double_class(5.0);
$ok    = $five == $check;
$ok    = $ok and 4.5 < $five->value()  and $five->value() < 5.5;
if( ok )
{    print "pl_swig_xam::double_class: OK\n"; }
else
{    print "pl_swig_xam::double_class: Error\n";
     $error_count = $error_count + 1;
}
see Swig double_class .

Set Exit Code

if( $error_count == 0 )
{    exit 0; }
exit 1;

Input File: swig_xam/perl/check_swig_xam.pl