From: Maarten Bosma Date: Mon, 21 May 2007 15:24:57 +0000 (+0000) Subject: Test for IDirectDraw7::GetFourCCCodes X-Git-Tag: backups/ddk2003@36850~336 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=16abbb4536a1c3f45cc03244c091aed625e77523 Test for IDirectDraw7::GetFourCCCodes svn path=/trunk/; revision=26850 --- diff --git a/rostests/dxtest/ddraw/testlist.cpp b/rostests/dxtest/ddraw/testlist.cpp index e69bf099aed..1c9fbe1ccb1 100644 --- a/rostests/dxtest/ddraw/testlist.cpp +++ b/rostests/dxtest/ddraw/testlist.cpp @@ -15,6 +15,7 @@ TEST TestList[] = { "IDirectDraw: COM Stuff", Test_CreateDDraw }, { "IDirectDraw: Display Modes", Test_DisplayModes }, { "IDirectDraw: Available Video Memory", Test_GetAvailableVidMem }, + { "IDirectDraw: GetFourCC", Test_GetFourCCCodes }, { "IDirectDraw: Cooperative Levels", Test_SetCooperativeLevel }, { "IDirectDraw: CreateSurface", Test_CreateSurface }, }; diff --git a/rostests/dxtest/ddraw/tests/CreateDDraw.cpp b/rostests/dxtest/ddraw/tests/CreateDDraw.cpp index 3b06a250acf..1cfdc176809 100644 --- a/rostests/dxtest/ddraw/tests/CreateDDraw.cpp +++ b/rostests/dxtest/ddraw/tests/CreateDDraw.cpp @@ -97,6 +97,7 @@ BOOL Test_GetAvailableVidMem (INT* passed, INT* failed) TEST (DirectDraw->GetAvailableVidMem(NULL, &Total, &Free) == DDERR_INVALIDPARAMS); TEST (DirectDraw->GetAvailableVidMem(&Caps, &Total, &Free) == DD_OK && Total == 0 && Free == 0 ); + // TODO: Try to produce DDERR_INVALIDCAPS Caps.dwCaps = DDSCAPS_VIDEOMEMORY; TEST (DirectDraw->GetAvailableVidMem(&Caps, &Total, &Free) == DD_OK ); @@ -105,6 +106,32 @@ BOOL Test_GetAvailableVidMem (INT* passed, INT* failed) return TRUE; } +BOOL Test_GetFourCCCodes (INT* passed, INT* failed) +{ + LPDIRECTDRAW7 DirectDraw; + + /* Preparations */ + if (DirectDrawCreateEx(NULL, (VOID**)&DirectDraw, IID_IDirectDraw7, NULL) != DD_OK) + { + printf("ERROR: Failed to set up ddraw\n"); + return FALSE; + } + + /* Here we go */ + DWORD dwNumCodes, *lpCodes; + TEST (DirectDraw->GetFourCCCodes(NULL, NULL) == DDERR_INVALIDPARAMS); + TEST ( DirectDraw->GetFourCCCodes(NULL, lpCodes) == DDERR_INVALIDPARAMS ); + + TEST (DirectDraw->GetFourCCCodes(&dwNumCodes, NULL) == DD_OK && dwNumCodes); + lpCodes = (PDWORD)HeapAlloc(GetProcessHeap(), 0, sizeof(DWORD)*dwNumCodes); + *lpCodes = 0; + TEST (DirectDraw->GetFourCCCodes(&dwNumCodes, lpCodes) == DD_OK && *lpCodes ); + + DirectDraw->Release(); + + return TRUE; +} + LONG WINAPI BasicWindowProc (HWND hwnd, UINT message, UINT wParam, LONG lParam) { switch (message) diff --git a/rostests/dxtest/ddraw/tests/DisplayModes.cpp b/rostests/dxtest/ddraw/tests/DisplayModes.cpp index b16683879c2..e77a8ef03db 100644 --- a/rostests/dxtest/ddraw/tests/DisplayModes.cpp +++ b/rostests/dxtest/ddraw/tests/DisplayModes.cpp @@ -12,25 +12,27 @@ HRESULT CALLBACK DummyEnumDisplayModes( LPDDSURFACEDESC2 pDDSD, ENUMCONTEXT* Con HRESULT CALLBACK EnumDisplayModes( LPDDSURFACEDESC2 pDDSD, ENUMCONTEXT* Context ) { + static int setcout = 0; + if(setcout >= 5) + return DDENUMRET_OK; + DWORD lpdwFrequency = 0; INT* passed = Context->passed; INT* failed = Context->failed; - static int setcout = 0; - DDSURFACEDESC2 DisplayMode = {0}; DisplayMode.dwSize = sizeof(DDSURFACEDESC2); - if(setcout < 5) - { - TEST ( Context->DirectDraw->SetDisplayMode (pDDSD->dwWidth, pDDSD->dwHeight, pDDSD->ddpfPixelFormat.dwRGBBitCount, pDDSD->dwRefreshRate, 0) == DD_OK); - TEST ( Context->DirectDraw->GetMonitorFrequency (&lpdwFrequency) == DD_OK && lpdwFrequency == pDDSD->dwRefreshRate); - TEST ( Context->DirectDraw->GetDisplayMode (&DisplayMode) == DD_OK - && pDDSD->dwHeight == DisplayMode.dwHeight - && pDDSD->dwWidth == DisplayMode.dwWidth - && pDDSD->dwRefreshRate == DisplayMode.dwRefreshRate - && pDDSD->ddpfPixelFormat.dwRGBBitCount == DisplayMode.ddpfPixelFormat.dwRGBBitCount); - - } + TEST ( pDDSD->dwFlags == DDSD_HEIGHT | DDSD_WIDTH | DDSD_PITCH | DDSD_PIXELFORMAT | DDSD_REFRESHRATE); + TEST ( pDDSD->ddpfPixelFormat.dwFlags == DDPF_RGB | DDPF_PALETTEINDEXED8 || pDDSD->ddpfPixelFormat.dwFlags == DDPF_RGB ); + TEST ( Context->DirectDraw->SetDisplayMode (pDDSD->dwWidth, pDDSD->dwHeight, pDDSD->ddpfPixelFormat.dwRGBBitCount, pDDSD->dwRefreshRate, 0) == DD_OK); + TEST ( Context->DirectDraw->GetMonitorFrequency (&lpdwFrequency) == DD_OK && lpdwFrequency == pDDSD->dwRefreshRate); + TEST ( Context->DirectDraw->GetDisplayMode (&DisplayMode) == DD_OK + && pDDSD->dwHeight == DisplayMode.dwHeight + && pDDSD->dwWidth == DisplayMode.dwWidth + && pDDSD->dwRefreshRate == DisplayMode.dwRefreshRate + && pDDSD->ddpfPixelFormat.dwRGBBitCount == DisplayMode.ddpfPixelFormat.dwRGBBitCount + && DisplayMode.dwFlags == DDSD_HEIGHT | DDSD_WIDTH | DDSD_PITCH | DDSD_PIXELFORMAT | DDSD_REFRESHRATE ); + setcout++; return DDENUMRET_OK; }