2 # Test script for the winetest program
9 ################################################################
10 # Declarations for functions we use in this script
12 wine
::declare
( "kernel32",
13 SetLastError
=> "void",
14 GetLastError
=> "int",
15 GlobalAddAtomA
=> "word",
16 GlobalGetAtomNameA
=> "int",
17 GetCurrentThread
=> "int",
18 GetExitCodeThread
=> "int",
22 ################################################################
23 # Test some simple function calls
25 # Test string arguments
26 $atom = GlobalAddAtomA
("foo");
27 assert
( $atom >= 0xc000 && $atom <= 0xffff );
28 assert
( !defined($wine::err
) );
30 # Test integer and string reference arguments
32 $ret = GlobalGetAtomNameA
( $atom, \
$buffer, length(buffer
) );
33 assert
( !defined($wine::err
) );
35 assert
( lc $buffer eq "foo\000xx" );
37 # Test integer reference
39 $ret = GetExitCodeThread
( GetCurrentThread
(), \
$code );
40 assert
( !defined($wine::err
) );
42 assert
( $code == 0x103 );
44 # Test string return value
45 $str = lstrcatA
( "foo\0foo", "bar" );
46 assert
( !defined($wine::err
) );
47 assert
( $str eq "foobar" );
49 ################################################################
50 # Test last error handling
53 $ret = GetLastError
();
54 assert
( $ret == 123 );
56 ################################################################
57 # Test various error cases
59 eval { SetLastError
(1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7); };
60 assert
( $@
=~ /Too many arguments at/ );
62 eval { wine
::call_wine_API
( "kernel32", "SetLastError", 10, $wine::debug
, 0); };
63 assert
( $@
=~ /Bad return type 10 at/ );
65 eval { foobar
(1,2,3); };
66 assert
( $@
=~ /Function 'foobar' not declared at/ );