Added first version of the Perl regression testing framework.
[wine/testsucceed.git] / programs / winetest / test.pl
blob89cce691b837174fca26cb779ad85aac21bd25b7
2 # Test script for the winetest program
5 use wine;
7 $wine::debug = 0;
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",
19 lstrcatA => "ptr"
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
31 $buffer = "xxxxxx";
32 $ret = GlobalGetAtomNameA( $atom, \$buffer, length(buffer) );
33 assert( !defined($wine::err) );
34 assert( $ret == 3 );
35 assert( lc $buffer eq "foo\000xx" );
37 # Test integer reference
38 $code = 0;
39 $ret = GetExitCodeThread( GetCurrentThread(), \$code );
40 assert( !defined($wine::err) );
41 assert( $ret );
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
52 SetLastError( 123 );
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/ );