From d64da71c44900a9f027b6e680f7e42a5ba1441a9 Mon Sep 17 00:00:00 2001 From: Maarten Bosma Date: Wed, 16 May 2007 18:57:21 +0000 Subject: [PATCH] - Enable display mode tests but do not tests all of them, but only the first five onces. - Add tests for AddRef, QueryInterface, Release svn path=/trunk/; revision=26809 --- rostests/dxtest/ddraw/testlist.cpp | 2 +- rostests/dxtest/ddraw/tests/CreateDDraw.cpp | 25 ++++++++++++++++---- rostests/dxtest/ddraw/tests/DisplayModes.cpp | 7 +++++- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/rostests/dxtest/ddraw/testlist.cpp b/rostests/dxtest/ddraw/testlist.cpp index daffef6d90c..c6ae06a63b8 100644 --- a/rostests/dxtest/ddraw/testlist.cpp +++ b/rostests/dxtest/ddraw/testlist.cpp @@ -14,7 +14,7 @@ TEST TestList[] = { { "DirectDrawCreate(Ex)", Test_CreateDDraw }, { "IDirectDraw::SetCooperativeLevel", Test_SetCooperativeLevel }, - // { "IDirectDraw::EnumDisplayModes/SetDisplayMode", Test_DisplayModes }, // uncomment this test if you have enough time and patience + { "IDirectDraw::EnumDisplayModes/SetDisplayMode", Test_DisplayModes }, { "IDirectDraw::CreateSurface", Test_CreateSurface }, { "IDirectDraw::GetMonitorFrequency", Test_GetMonitorFrequency }, }; diff --git a/rostests/dxtest/ddraw/tests/CreateDDraw.cpp b/rostests/dxtest/ddraw/tests/CreateDDraw.cpp index ca49258988d..5be9b98dc71 100644 --- a/rostests/dxtest/ddraw/tests/CreateDDraw.cpp +++ b/rostests/dxtest/ddraw/tests/CreateDDraw.cpp @@ -4,18 +4,35 @@ HWND CreateBasicWindow (VOID); BOOL Test_CreateDDraw (INT* passed, INT* failed) { - LPDIRECTDRAW7 DirectDraw = NULL; - IDirectDraw* DirectDraw2 = NULL; + LPDIRECTDRAW7 DirectDraw; + IDirectDraw* DirectDraw2; /*** FIXME: Test first parameter using EnumDisplayDrivers ***/ + DirectDrawCreateEx(NULL, (VOID**)&DirectDraw, IID_IDirectDraw7, NULL); TEST (DirectDrawCreateEx(NULL, (VOID**)&DirectDraw, IID_IDirectDraw7, (IUnknown*)0xdeadbeef) == CLASS_E_NOAGGREGATION); TEST (DirectDrawCreateEx(NULL, (VOID**)&DirectDraw, IID_IDirectDraw4, NULL) == DDERR_INVALIDPARAMS); TEST (DirectDrawCreateEx(NULL, NULL, IID_IDirectDraw7, NULL) == DDERR_INVALIDPARAMS); + + DirectDraw = NULL; TEST (DirectDrawCreateEx(NULL, (VOID**)&DirectDraw, IID_IDirectDraw7, NULL) == DD_OK); - //TEST (DirectDraw && DirectDraw->Release()); + if(DirectDraw) + { + TEST (DirectDraw->Release() == 0); + } + + DirectDraw2 = NULL; TEST (DirectDrawCreate(NULL ,&DirectDraw2, NULL) == DD_OK); - //TEST (DirectDraw2 && DirectDraw2->Release()); + if(DirectDraw2) + { + TEST (DirectDraw2->QueryInterface(IID_IDirectDraw7, (PVOID*)&DirectDraw) == 0); + TEST (DirectDraw2->AddRef() == 2); + TEST (DirectDraw->AddRef() == 2); + TEST (DirectDraw->Release() == 1); + TEST (DirectDraw->Release() == 0); + TEST (DirectDraw2->Release() == 1); + TEST (DirectDraw2->Release() == 0); + } return TRUE; } diff --git a/rostests/dxtest/ddraw/tests/DisplayModes.cpp b/rostests/dxtest/ddraw/tests/DisplayModes.cpp index b007655dcd8..544353c0f04 100644 --- a/rostests/dxtest/ddraw/tests/DisplayModes.cpp +++ b/rostests/dxtest/ddraw/tests/DisplayModes.cpp @@ -14,7 +14,12 @@ 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); + static int setcout = 0; + if(setcout < 5) + { + TEST ( Context->DirectDraw->SetDisplayMode (pDDSD->dwWidth, pDDSD->dwHeight, pDDSD->ddpfPixelFormat.dwRGBBitCount, pDDSD->dwRefreshRate, 0) == DD_OK); + } + setcout++; return DDENUMRET_OK; }