cleanup file permissions from windows, add use Carp
[perl-ctypes:perl-ctypes.git] / t / 001-math.t
1 #!perl
2
3 use Test::More tests => 3;
4
5 use Ctypes;
6 use DynaLoader;
7 use Carp;
8
9 # Adapted from http://github.com/rurban/c-dynalib/blob/master/lib/C/DynaLib.pm, 31/05/2010
10 my ($lib, $func, $sig, $ret);
11
12 $sig = "cdd";
13 if ($^O eq 'cygwin') {
14   $lib = DynaLoader::dl_load_file( "/bin/cygwin1.dll" );
15   ok( defined $lib, 'Load cygwin1.dll' );
16 } elsif ($^O eq 'MSWin32') {
17   $lib = DynaLoader::dl_load_file($ENV{SYSTEMROOT}."\\System32\\MSVCRT.DLL" );
18   ok( defined $lib,   'Load msvcrt.dll' );
19   $sig = "sdd";
20 } else {
21   my $found = DynaLoader::dl_findfile( '-lm' ) or diag("-lm not found");
22   $lib = DynaLoader::dl_load_file( $found );
23   ok( defined $lib, 'Load libm' ) or diag( DynaLoader::dl_error() );
24 }
25
26 $func = DynaLoader::dl_find_symbol( $lib, 'sqrt' );
27 diag( sprintf("sqrt addr: 0x%x", $func ));
28 ok( defined $func, 'Load sqrt() function' );
29
30 $ret = Ctypes::call( $func, $sig, 16 )
31     or croak( "Call to Ctypes::call failed: $@" );
32 is( $ret, 4, "Gave 16 to sqrt(), got $ret" );