2 * Tests for recycle bin functions
4 * Copyright 2011 Jay Yang
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #define WIN32_LEAN_AND_MEAN
26 #include "wine/test.h"
28 static int (WINAPI
*pSHQueryRecycleBinA
)(LPCSTR
,LPSHQUERYRBINFO
);
29 static int (WINAPI
*pSHFileOperationA
)(LPSHFILEOPSTRUCTA
);
31 static void setup_pointers(void)
33 HMODULE hshell32
= GetModuleHandleA("shell32.dll");
34 pSHQueryRecycleBinA
= (void*)GetProcAddress(hshell32
, "SHQueryRecycleBinA");
35 pSHFileOperationA
= (void*)GetProcAddress(hshell32
, "SHFileOperationA");
38 static void test_query_recyclebin(void)
40 SHQUERYRBINFO info1
={sizeof(info1
),0xdeadbeef,0xdeadbeef};
41 SHQUERYRBINFO info2
={sizeof(info2
),0xdeadbeef,0xdeadbeef};
46 CHAR temp_path
[MAX_PATH
-14], buf
[MAX_PATH
+1];
47 if(!pSHQueryRecycleBinA
)
49 skip("SHQueryRecycleBinA does not exist\n");
52 if(!pSHFileOperationA
)
54 skip("SHFileOperationA does not exist\n");
57 ok(GetTempPathA(sizeof(temp_path
), temp_path
), "GetTempPath failed\n");
58 ok(GetTempFileNameA(temp_path
, "trash", 0, buf
), "GetTempFileName failed\n");
59 buf
[strlen(buf
) + 1] = '\0';
60 hr
= pSHQueryRecycleBinA(buf
,&info1
);
61 ok(hr
== S_OK
, "SHQueryRecycleBinA failed with error 0x%lx\n", hr
);
62 ok(info1
.i64Size
!=0xdeadbeef,"i64Size not set\n");
63 ok(info1
.i64NumItems
!=0xdeadbeef,"i64NumItems not set\n");
64 /*create and send a file to the recycle bin*/
65 file
= CreateFileA(buf
,GENERIC_WRITE
,0,NULL
,CREATE_ALWAYS
,0,NULL
);
66 ok(file
!= INVALID_HANDLE_VALUE
, "Failure to open file %s\n",buf
);
67 WriteFile(file
,buf
,strlen(buf
),&written
,NULL
);
70 shfo
.wFunc
= FO_DELETE
;
73 shfo
.fFlags
= FOF_FILESONLY
| FOF_NOCONFIRMATION
| FOF_SILENT
| FOF_ALLOWUNDO
;
74 shfo
.hNameMappings
= NULL
;
75 shfo
.lpszProgressTitle
= NULL
;
76 ok(!pSHFileOperationA(&shfo
), "Deletion was not successful\n");
77 hr
= pSHQueryRecycleBinA(buf
,&info2
);
78 ok(hr
== S_OK
, "SHQueryRecycleBinA failed with error 0x%lx\n", hr
);
79 ok(info2
.i64Size
==info1
.i64Size
+written
,"Expected recycle bin to have 0x%s bytes\n",wine_dbgstr_longlong(info1
.i64Size
+written
));
80 ok(info2
.i64NumItems
==info1
.i64NumItems
+1,"Expected recycle bin to have 0x%s items\n",wine_dbgstr_longlong(info1
.i64NumItems
+1));
84 START_TEST(recyclebin
)
87 test_query_recyclebin();