Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111/* * PROJECT: ReactOS api tests * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory * PURPOSE: Test for CMyComputer * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org> */
#include "shelltest.h"
#define NDEBUG#include <debug.h>#include <stdio.h>#include <shellutils.h>
#define INVALID_POINTER ((PVOID)(ULONG_PTR)0xdeadbeefdeadbeefULL)
staticVOIDTestShellFolder( _In_ IShellFolder2 *psf2){ HRESULT hr; CComPtr<IDropTarget> pdt; CComPtr<IDropTarget> pdt_2; CComPtr<IContextMenu> pcm; CComPtr<IContextMenu> pcm_2; CComPtr<IShellView> psv; CComPtr<IShellView> psv_2;
hr = psf2->CreateViewObject(NULL, IID_PPV_ARG(IDropTarget, &pdt)); ok(hr == S_OK, "hr = %lx\n", hr);
hr = psf2->CreateViewObject(NULL, IID_PPV_ARG(IDropTarget, &pdt_2)); ok(hr == S_OK, "hr = %lx\n", hr); ok(pdt != pdt_2, "Expected %p != %p\n", static_cast<PVOID>(pdt), static_cast<PVOID>(pdt_2));
if (GetNTVersion() < _WIN32_WINNT_WIN10) { hr = psf2->CreateViewObject(NULL, IID_PPV_ARG(IContextMenu, &pcm)); ok(hr == S_OK, "hr = %lx\n", hr);
hr = psf2->CreateViewObject(NULL, IID_PPV_ARG(IContextMenu, &pcm_2)); ok(hr == S_OK, "hr = %lx\n", hr); ok(pcm != pcm_2, "Expected %p != %p\n", static_cast<PVOID>(pcm), static_cast<PVOID>(pcm_2));
hr = psf2->CreateViewObject(NULL, IID_PPV_ARG(IShellView, &psv)); ok(hr == S_OK, "hr = %lx\n", hr);
hr = psf2->CreateViewObject(NULL, IID_PPV_ARG(IShellView, &psv_2)); ok(hr == S_OK, "hr = %lx\n", hr); ok(psv != psv_2, "Expected %p != %p\n", static_cast<PVOID>(psv), static_cast<PVOID>(psv_2)); }}
VOID TestInitialize(_In_ IShellFolder2 *psf2){ CComPtr<IPersistFolder2> ppf2; HRESULT hr = psf2->QueryInterface(IID_PPV_ARG(IPersistFolder2, &ppf2)); ok(hr == S_OK, "hr = %lx\n", hr);
if (GetNTVersion() < _WIN32_WINNT_WIN10) { hr = ppf2->Initialize(NULL); ok(hr == S_OK, "hr = %lx\n", hr);
hr = ppf2->Initialize((LPCITEMIDLIST)INVALID_POINTER); ok(hr == S_OK, "hr = %lx\n", hr);
CComHeapPtr<ITEMIDLIST> pidl; hr = ppf2->GetCurFolder(&pidl); ok(hr == S_OK, "hr = %lx\n", hr); // 0 in early win10, 14 in xp; crashes on late win10 ok(pidl->mkid.cb == 0x14, "expected empty pidl got cb = %x\n", pidl->mkid.cb); }}
START_TEST(CMyComputer){ HRESULT hr; CComPtr<IShellFolder2> psf2; CComPtr<IShellFolder2> psf2_2; CComPtr<IShellFolder> psf;
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
hr = CoCreateInstance(CLSID_MyComputer, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARG(IShellFolder2, &psf2)); ok(hr == S_OK, "hr = %lx\n", hr); if (FAILED(hr)) { skip("Could not instantiate CShellDesktop\n"); return; }
if (GetNTVersion() < _WIN32_WINNT_VISTA) { /* NT5.x returns a pointer to the same object but not NT6.x and newer. */ hr = CoCreateInstance(CLSID_MyComputer, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARG(IShellFolder2, &psf2_2)); ok(hr == S_OK, "hr = %lx\n", hr); ok(psf2 == psf2_2, "Expected %p == %p\n", static_cast<PVOID>(psf2), static_cast<PVOID>(psf2_2)); }
TestShellFolder(psf2); TestInitialize(psf2);}