mirror of
https://github.com/reactos/reactos.git
synced 2025-05-18 16:51:18 +00:00
Add debugging macro to get error code and test for display modes (commented out because it checks every single display mode and thus takes fairly long).
svn path=/trunk/; revision=26750
This commit is contained in:
parent
ba36cacf56
commit
57f86bb38b
4 changed files with 173 additions and 4 deletions
111
rostests/dxtest/ddraw/debug.cpp
Normal file
111
rostests/dxtest/ddraw/debug.cpp
Normal file
|
@ -0,0 +1,111 @@
|
|||
|
||||
#define GetCode(X) printf("%s\n", DDErrorString(X));
|
||||
|
||||
PCHAR DDErrorString (HRESULT hResult)
|
||||
{
|
||||
switch (hResult)
|
||||
{
|
||||
case DD_OK: return "DD_OK";
|
||||
case DDERR_ALREADYINITIALIZED: return "DDERR_ALREADYINITIALIZED";
|
||||
case DDERR_CANNOTATTACHSURFACE: return "DDERR_CANNOTATTACHSURFACE";
|
||||
case DDERR_CANNOTDETACHSURFACE: return "DDERR_CANNOTDETACHSURFACE";
|
||||
case DDERR_CURRENTLYNOTAVAIL: return "DDERR_CURRENTLYNOTAVAIL";
|
||||
case DDERR_EXCEPTION: return "DDERR_EXCEPTION";
|
||||
case DDERR_GENERIC: return "DDERR_GENERIC";
|
||||
case DDERR_HEIGHTALIGN: return "DDERR_HEIGHTALIGN";
|
||||
case DDERR_INCOMPATIBLEPRIMARY: return "DDERR_INCOMPATIBLEPRIMARY";
|
||||
case DDERR_INVALIDCAPS: return "DDERR_INVALIDCAPS";
|
||||
case DDERR_INVALIDCLIPLIST: return "DDERR_INVALIDCLIPLIST";
|
||||
case DDERR_INVALIDMODE: return "DDERR_INVALIDMODE";
|
||||
case DDERR_INVALIDOBJECT: return "DDERR_INVALIDOBJECT";
|
||||
case DDERR_INVALIDPARAMS: return "DDERR_INVALIDPARAMS";
|
||||
case DDERR_INVALIDPIXELFORMAT: return "DDERR_INVALIDPIXELFORMAT";
|
||||
case DDERR_INVALIDRECT: return "DDERR_INVALIDRECT";
|
||||
case DDERR_LOCKEDSURFACES: return "DDERR_LOCKEDSURFACES";
|
||||
case DDERR_NO3D: return "DDERR_NO3D";
|
||||
case DDERR_NOALPHAHW: return "DDERR_NOALPHAHW";
|
||||
case DDERR_NOCLIPLIST: return "DDERR_NOCLIPLIST";
|
||||
case DDERR_NOCOLORCONVHW: return "DDERR_NOCOLORCONVHW";
|
||||
case DDERR_NOCOOPERATIVELEVELSET: return "DDERR_NOCOOPERATIVELEVELSET";
|
||||
case DDERR_NOCOLORKEY: return "DDERR_NOCOLORKEY";
|
||||
case DDERR_NOCOLORKEYHW: return "DDERR_NOCOLORKEYHW";
|
||||
case DDERR_NODIRECTDRAWSUPPORT: return "DDERR_NODIRECTDRAWSUPPORT";
|
||||
case DDERR_NOEXCLUSIVEMODE: return "DDERR_NOEXCLUSIVEMODE";
|
||||
case DDERR_NOFLIPHW: return "DDERR_NOFLIPHW";
|
||||
case DDERR_NOGDI: return "DDERR_NOGDI";
|
||||
case DDERR_NOMIRRORHW: return "DDERR_NOMIRRORHW";
|
||||
case DDERR_NOTFOUND: return "DDERR_NOTFOUND";
|
||||
case DDERR_NOOVERLAYHW: return "DDERR_NOOVERLAYHW";
|
||||
case DDERR_NORASTEROPHW: return "DDERR_NORASTEROPHW";
|
||||
case DDERR_NOROTATIONHW: return "DDERR_NOROTATIONHW";
|
||||
case DDERR_NOSTRETCHHW: return "DDERR_NOSTRETCHHW";
|
||||
case DDERR_NOT4BITCOLOR: return "DDERR_NOT4BITCOLOR";
|
||||
case DDERR_NOT4BITCOLORINDEX: return "DDERR_NOT4BITCOLORINDEX";
|
||||
case DDERR_NOT8BITCOLOR: return "DDERR_NOT8BITCOLOR";
|
||||
case DDERR_NOTEXTUREHW: return "DDERR_NOTEXTUREHW";
|
||||
case DDERR_NOVSYNCHW: return "DDERR_NOVSYNCHW";
|
||||
case DDERR_NOZBUFFERHW: return "DDERR_NOZBUFFERHW";
|
||||
case DDERR_NOZOVERLAYHW: return "DDERR_NOZOVERLAYHW";
|
||||
case DDERR_OUTOFCAPS: return "DDERR_OUTOFCAPS";
|
||||
case DDERR_OUTOFMEMORY: return "DDERR_OUTOFMEMORY";
|
||||
case DDERR_OUTOFVIDEOMEMORY: return "DDERR_OUTOFVIDEOMEMORY";
|
||||
case DDERR_OVERLAYCANTCLIP: return "DDERR_OVERLAYCANTCLIP";
|
||||
case DDERR_OVERLAYCOLORKEYONLYONEACTIVE: return "DDERR_OVERLAYCOLORKEYONLYONEACTIVE";
|
||||
case DDERR_PALETTEBUSY: return "DDERR_PALETTEBUSY";
|
||||
case DDERR_COLORKEYNOTSET: return "DDERR_COLORKEYNOTSET";
|
||||
case DDERR_SURFACEALREADYATTACHED: return "DDERR_SURFACEALREADYATTACHED";
|
||||
case DDERR_SURFACEALREADYDEPENDENT: return "DDERR_SURFACEALREADYDEPENDENT";
|
||||
case DDERR_SURFACEBUSY: return "DDERR_SURFACEBUSY";
|
||||
case DDERR_CANTLOCKSURFACE: return "DDERR_CANTLOCKSURFACE";
|
||||
case DDERR_SURFACEISOBSCURED: return "DDERR_SURFACEISOBSCURED";
|
||||
case DDERR_SURFACELOST: return "DDERR_SURFACELOST";
|
||||
case DDERR_SURFACENOTATTACHED: return "DDERR_SURFACENOTATTACHED";
|
||||
case DDERR_TOOBIGHEIGHT: return "DDERR_TOOBIGHEIGHT";
|
||||
case DDERR_TOOBIGSIZE: return "DDERR_TOOBIGSIZE";
|
||||
case DDERR_TOOBIGWIDTH: return "DDERR_TOOBIGWIDTH";
|
||||
case DDERR_UNSUPPORTED: return "DDERR_UNSUPPORTED";
|
||||
case DDERR_UNSUPPORTEDFORMAT: return "DDERR_UNSUPPORTEDFORMAT";
|
||||
case DDERR_UNSUPPORTEDMASK: return "DDERR_UNSUPPORTEDMASK";
|
||||
case DDERR_VERTICALBLANKINPROGRESS: return "DDERR_VERTICALBLANKINPROGRESS";
|
||||
case DDERR_WASSTILLDRAWING: return "DDERR_WASSTILLDRAWING";
|
||||
case DDERR_XALIGN: return "DDERR_XALIGN";
|
||||
case DDERR_INVALIDDIRECTDRAWGUID: return "DDERR_INVALIDDIRECTDRAWGUID";
|
||||
case DDERR_DIRECTDRAWALREADYCREATED: return "DDERR_DIRECTDRAWALREADYCREATED";
|
||||
case DDERR_NODIRECTDRAWHW: return "DDERR_NODIRECTDRAWHW";
|
||||
case DDERR_PRIMARYSURFACEALREADYEXISTS: return "DDERR_PRIMARYSURFACEALREADYEXISTS";
|
||||
case DDERR_NOEMULATION: return "DDERR_NOEMULATION";
|
||||
case DDERR_REGIONTOOSMALL: return "DDERR_REGIONTOOSMALL";
|
||||
case DDERR_CLIPPERISUSINGHWND: return "DDERR_CLIPPERISUSINGHWND";
|
||||
case DDERR_NOCLIPPERATTACHED: return "DDERR_NOCLIPPERATTACHED";
|
||||
case DDERR_NOHWND: return "DDERR_NOHWND";
|
||||
case DDERR_HWNDSUBCLASSED: return "DDERR_HWNDSUBCLASSED";
|
||||
case DDERR_HWNDALREADYSET: return "DDERR_HWNDALREADYSET";
|
||||
case DDERR_NOPALETTEATTACHED: return "DDERR_NOPALETTEATTACHED";
|
||||
case DDERR_NOPALETTEHW: return "DDERR_NOPALETTEHW";
|
||||
case DDERR_BLTFASTCANTCLIP: return "DDERR_BLTFASTCANTCLIP";
|
||||
case DDERR_NOBLTHW: return "DDERR_NOBLTHW";
|
||||
case DDERR_NODDROPSHW: return "DDERR_NODDROPSHW";
|
||||
case DDERR_OVERLAYNOTVISIBLE: return "DDERR_OVERLAYNOTVISIBLE";
|
||||
case DDERR_NOOVERLAYDEST: return "DDERR_NOOVERLAYDEST";
|
||||
case DDERR_INVALIDPOSITION: return "DDERR_INVALIDPOSITION";
|
||||
case DDERR_NOTAOVERLAYSURFACE: return "DDERR_NOTAOVERLAYSURFACE";
|
||||
case DDERR_EXCLUSIVEMODEALREADYSET: return "DDERR_EXCLUSIVEMODEALREADYSET";
|
||||
case DDERR_NOTFLIPPABLE: return "DDERR_NOTFLIPPABLE";
|
||||
case DDERR_CANTDUPLICATE: return "DDERR_CANTDUPLICATE";
|
||||
case DDERR_NOTLOCKED: return "DDERR_NOTLOCKED";
|
||||
case DDERR_CANTCREATEDC: return "DDERR_CANTCREATEDC";
|
||||
case DDERR_NODC: return "DDERR_NODC";
|
||||
case DDERR_WRONGMODE: return "DDERR_WRONGMODE";
|
||||
case DDERR_IMPLICITLYCREATED: return "DDERR_IMPLICITLYCREATED";
|
||||
case DDERR_NOTPALETTIZED: return "DDERR_NOTPALETTIZED";
|
||||
case DDERR_UNSUPPORTEDMODE: return "DDERR_UNSUPPORTEDMODE";
|
||||
case DDERR_NOMIPMAPHW: return "DDERR_NOMIPMAPHW";
|
||||
case DDERR_INVALIDSURFACETYPE: return "DDERR_INVALIDSURFACETYPE";
|
||||
case DDERR_DCALREADYCREATED: return "DDERR_DCALREADYCREATED";
|
||||
case DDERR_CANTPAGELOCK: return "DDERR_CANTPAGELOCK";
|
||||
case DDERR_CANTPAGEUNLOCK: return "DDERR_CANTPAGEUNLOCK";
|
||||
case DDERR_NOTPAGELOCKED: return "DDERR_NOTPAGELOCKED";
|
||||
case DDERR_NOTINITIALIZED: return "DDERR_NOTINITIALIZED";
|
||||
}
|
||||
return "Unknown Error";
|
||||
}
|
|
@ -2,15 +2,18 @@
|
|||
#define _DDRAWTESTLIST_H
|
||||
|
||||
#include "ddrawtest.h"
|
||||
#include "debug.cpp"
|
||||
|
||||
/* include the tests */
|
||||
#include "tests/CreateDDraw.cpp"
|
||||
#include "tests/DisplayModes.cpp"
|
||||
|
||||
/* The List of tests */
|
||||
TEST TestList[] =
|
||||
{
|
||||
{ "DirectDrawCreate(Ex)", Test_CreateDDraw },
|
||||
{ "IDirectDraw::SetCooperativeLevel", Test_SetCooperativeLevel }
|
||||
{ "IDirectDraw::SetCooperativeLevel", Test_SetCooperativeLevel },
|
||||
// { "IDirectDraw::EnumDisplayModes/SetDisplayMode", Test_DisplayModes } // uncomment this test if you have enough time and patience
|
||||
};
|
||||
|
||||
/* The function that gives us the number of tests */
|
||||
|
|
|
@ -7,7 +7,7 @@ BOOL Test_CreateDDraw (INT* passed, INT* failed)
|
|||
LPDIRECTDRAW7 DirectDraw;
|
||||
IDirectDraw* DirectDraw2;
|
||||
|
||||
/*** FIXME: Test first parameter ***/
|
||||
/*** FIXME: Test first parameter using EnumDisplayDrivers ***/
|
||||
|
||||
TEST (DirectDrawCreateEx(NULL, (VOID**)&DirectDraw, IID_IDirectDraw7, (IUnknown*)0xdeadbeef) == CLASS_E_NOAGGREGATION);
|
||||
TEST (DirectDrawCreateEx(NULL, (VOID**)&DirectDraw, IID_IDirectDraw4, NULL) == DDERR_INVALIDPARAMS);
|
||||
|
@ -36,16 +36,16 @@ BOOL Test_SetCooperativeLevel (INT* passed, INT* failed)
|
|||
DirectDraw->Release();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/* The Test */
|
||||
TEST ( DirectDraw->SetCooperativeLevel (NULL, DDSCL_FULLSCREEN) == DDERR_INVALIDPARAMS );
|
||||
TEST ( DirectDraw->SetCooperativeLevel (NULL, DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE) == DDERR_INVALIDPARAMS );
|
||||
TEST ( DirectDraw->SetCooperativeLevel (hwnd, DDSCL_FULLSCREEN) == DDERR_INVALIDPARAMS);
|
||||
TEST ( DirectDraw->SetCooperativeLevel (hwnd, DDSCL_NORMAL | DDSCL_ALLOWMODEX) == DDERR_INVALIDPARAMS );
|
||||
TEST ( DirectDraw->SetCooperativeLevel ((HWND)0xdeadbeef, DDSCL_NORMAL) == DDERR_INVALIDPARAMS);
|
||||
|
||||
TEST ( DirectDraw->SetCooperativeLevel (hwnd, DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE) == DD_OK);
|
||||
TEST ( DirectDraw->SetCooperativeLevel (hwnd, DDSCL_FULLSCREEN | DDSCL_EXCLUSIVE | DDSCL_ALLOWMODEX) == DD_OK);
|
||||
TEST ( DirectDraw->SetCooperativeLevel (hwnd, DDSCL_NORMAL | DDSCL_FULLSCREEN) == DD_OK);
|
||||
TEST ( DirectDraw->SetCooperativeLevel (NULL, DDSCL_NORMAL) == DD_OK );
|
||||
TEST ( DirectDraw->SetCooperativeLevel (hwnd, DDSCL_NORMAL) == DD_OK );
|
||||
|
||||
|
|
55
rostests/dxtest/ddraw/tests/DisplayModes.cpp
Normal file
55
rostests/dxtest/ddraw/tests/DisplayModes.cpp
Normal file
|
@ -0,0 +1,55 @@
|
|||
typedef struct
|
||||
{
|
||||
INT* passed;
|
||||
INT* failed;
|
||||
LPDIRECTDRAW7 DirectDraw;
|
||||
} ENUMCONTEXT;
|
||||
|
||||
HRESULT CALLBACK DummyEnumDisplayModes( LPDDSURFACEDESC2 pDDSD, ENUMCONTEXT* Context )
|
||||
{
|
||||
return DDENUMRET_OK;
|
||||
}
|
||||
|
||||
HRESULT CALLBACK EnumDisplayModes( LPDDSURFACEDESC2 pDDSD, ENUMCONTEXT* Context )
|
||||
{
|
||||
INT* passed = Context->passed;
|
||||
INT* failed = Context->failed;
|
||||
TEST ( Context->DirectDraw->SetDisplayMode (pDDSD->dwWidth, pDDSD->dwHeight, pDDSD->ddpfPixelFormat.dwRGBBitCount, pDDSD->dwRefreshRate, 0) == DD_OK);
|
||||
return DDENUMRET_OK;
|
||||
}
|
||||
|
||||
BOOL Test_DisplayModes (INT* passed, INT* failed)
|
||||
{
|
||||
/*** FIXME: Also test with surface as parameter; try busy/locked surface as well ***/
|
||||
LPDIRECTDRAW7 DirectDraw;
|
||||
|
||||
/* Preparations */
|
||||
if (DirectDrawCreateEx(NULL, (VOID**)&DirectDraw, IID_IDirectDraw7, NULL) != DD_OK)
|
||||
{
|
||||
printf("ERROR: Failed to set up ddraw\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
ENUMCONTEXT Context = {passed, failed, DirectDraw};
|
||||
|
||||
/* The Test */
|
||||
|
||||
// First try with some generic display modes
|
||||
TEST ( DirectDraw->SetDisplayMode (1586, 895, 0, 0, 0) == DDERR_UNSUPPORTED );
|
||||
TEST ( DirectDraw->SetDisplayMode (0, 0, 0, 0, 0x123) == DDERR_INVALIDPARAMS );
|
||||
|
||||
TEST ( DirectDraw->SetDisplayMode (0, 0, 0, 0, 0) == DD_OK );
|
||||
TEST ( DirectDraw->SetDisplayMode (800, 600, 0, 0, 0) == DD_OK );
|
||||
TEST ( DirectDraw->SetDisplayMode (0, 0, 16, 0, 0) == DD_OK );
|
||||
|
||||
// Now try getting vaild modes from driver
|
||||
TEST (DirectDraw->EnumDisplayModes(DDEDM_STANDARDVGAMODES, NULL, (PVOID)&Context, NULL) == DDERR_INVALIDPARAMS);
|
||||
TEST (DirectDraw->EnumDisplayModes(0, NULL, (PVOID)&Context, (LPDDENUMMODESCALLBACK2)DummyEnumDisplayModes) == DD_OK );
|
||||
TEST (DirectDraw->EnumDisplayModes(DDEDM_REFRESHRATES, NULL, (PVOID)&Context, (LPDDENUMMODESCALLBACK2)DummyEnumDisplayModes) == DD_OK );
|
||||
TEST (DirectDraw->EnumDisplayModes(DDEDM_STANDARDVGAMODES, NULL, (PVOID)&Context, (LPDDENUMMODESCALLBACK2)DummyEnumDisplayModes) == DD_OK );
|
||||
TEST (DirectDraw->EnumDisplayModes(DDEDM_STANDARDVGAMODES|DDEDM_REFRESHRATES, NULL, (PVOID)&Context, (LPDDENUMMODESCALLBACK2)EnumDisplayModes) == DD_OK);
|
||||
|
||||
DirectDraw->Release();
|
||||
|
||||
return TRUE;
|
||||
}
|
Loading…
Reference in a new issue