Completed some testcase in w32knapi testkit for NtGdiDdQueryDirectDrawObject

svn path=/trunk/; revision=32918
This commit is contained in:
Magnus Olsen 2008-04-12 11:44:41 +00:00
parent 91020015c1
commit db575d112b

View file

@ -43,15 +43,18 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
/* Get currenet display mode */
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &devmode);
/* Create hdc that we can use */
hdc = CreateDCW(L"DISPLAY",NULL,NULL,NULL);
ASSERT(hdc != NULL);
hDirectDraw = (HANDLE) Syscall(L"NtGdiDdCreateDirectDrawObject", 1, &hdc);
/* Create ReactX handle */
hDirectDraw = (HANDLE) NtGdiDdCreateDirectDrawObject(hdc);
ASSERT(hDirectDraw != NULL);
/* Test ReactX */
hDirectDraw = (HANDLE) Syscall(L"NtGdiDdCreateDirectDrawObject", 1, &hdc);
/* Start Test ReactX NtGdiDdQueryDirectDrawObject function */
/* testing OsThunkDdQueryDirectDrawObject( NULL, .... */
RTEST(NtGdiDdQueryDirectDrawObject( NULL, pHalInfo,
pCallBackFlags, puD3dCallbacks,
puD3dDriverData, puD3dBufferCallbacks,
@ -70,6 +73,7 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
RTEST(puNumHeaps == NULL);
RTEST(puvmList == NULL);
/* testing NtGdiDdQueryDirectDrawObject( hDirectDrawLocal, NULL, .... */
RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
pCallBackFlags, puD3dCallbacks,
puD3dDriverData, puD3dBufferCallbacks,
@ -88,6 +92,7 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
RTEST(puNumHeaps == NULL);
RTEST(puvmList == NULL);
/* testing OsThunkDdQueryDirectDrawObject( hDirectDrawLocal, pHalInfo, NULL, .... */
pHalInfo = &HalInfo;
RTEST(NtGdiDdQueryDirectDrawObject( hDirectDraw, pHalInfo,
pCallBackFlags, puD3dCallbacks,
@ -95,7 +100,10 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
puD3dTextureFormats, puNumHeaps,
puvmList, puNumFourCC,
puFourCC)== FALSE);
RTEST(pHalInfo != NULL);
ASSERT(pHalInfo != NULL);
RTEST(pCallBackFlags == NULL);
RTEST(puD3dCallbacks == NULL);
RTEST(puD3dDriverData == NULL);
@ -103,7 +111,6 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
RTEST(puD3dTextureFormats == NULL);
RTEST(puNumFourCC == NULL);
RTEST(puFourCC == NULL);
ASSERT(pHalInfo != NULL);
RTEST(puNumHeaps == NULL);
RTEST(puvmList == NULL);
@ -125,14 +132,18 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
/* Check the res */
RTEST(pHalInfo->vmiData.dwDisplayWidth == devmode.dmPelsWidth );
RTEST(pHalInfo->vmiData.dwDisplayHeight == devmode.dmPelsHeight );
/* FIXME
RTEST(pHalInfo->vmiData.lDisplayPitch == 0x1700;
*/
/* This can never be test for it is who big the line is after it been align displayPitch */
RTEST(pHalInfo->vmiData.lDisplayPitch != 0);
RTEST(pHalInfo->vmiData.ddpfDisplay.dwSize == sizeof(DDPIXELFORMAT) );
ASSERT(pHalInfo->vmiData.ddpfDisplay.dwSize == sizeof(DDPIXELFORMAT));
/* Fail on 8bit screen deep */
RTEST(pHalInfo->vmiData.ddpfDisplay.dwFlags == DDPF_RGB);
/* We can not check if it DDPF_RGB flags been set for primary surface
* for it can be DDPF_PALETTEINDEXED1,DDPF_PALETTEINDEXED2,DDPF_PALETTEINDEXED4,DDPF_PALETTEINDEXED8, DDPF_PALETTEINDEXEDTO8, DDPF_RGB, DDPF_YUV
*/
RTEST( (pHalInfo->vmiData.ddpfDisplay.dwFlags & (DDPF_PALETTEINDEXED1 | DDPF_PALETTEINDEXED2 | DDPF_PALETTEINDEXED4 |
DDPF_PALETTEINDEXED8 | DDPF_PALETTEINDEXEDTO8 | DDPF_RGB | DDPF_YUV)) != 0);
/* No fourcc are use on primary screen */
@ -141,27 +152,42 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
/* Count RGB Bits 8/16/24/32 */
RTEST(pHalInfo->vmiData.ddpfDisplay.dwRGBBitCount == devmode.dmBitsPerPel );
/* FIXME RGB mask */
//RTEST(pHalInfo->vmiData.ddpfDisplay.dwRBitMask == 0 );
//RTEST(pHalInfo->vmiData.ddpfDisplay.dwGBitMask == 0 );
//RTEST(pHalInfo->vmiData.ddpfDisplay.dwBBitMask == 0 );
/* The rgb mask can not be detected in user mode, for it can be 15Bpp convert to 16Bpp mode, so we have no way detect correct mask
* But the mask can never be Zero
*/
RTEST(pHalInfo->vmiData.ddpfDisplay.dwRBitMask != 0 );
RTEST(pHalInfo->vmiData.ddpfDisplay.dwGBitMask != 0 );
RTEST(pHalInfo->vmiData.ddpfDisplay.dwBBitMask != 0 );
/* primary never set the alpha blend mask */
RTEST(pHalInfo->vmiData.ddpfDisplay.dwRGBAlphaBitMask == 0 );
/* FIXME do not known how test follow thing, for it is diffent for each drv */
// pHalInfo->vmiData->dwOffscreenAlign : 0x00000100
// pHalInfo->vmiData->dwOverlayAlign : 0x00000010
// pHalInfo->vmiData->dwTextureAlign : 0x00000020
// pHalInfo->vmiData->dwZBufferAlign : 0x00001000
// pHalInfo->vmiData->dwAlphaAlign : 0x00000000
/* This can not be test at usermode it is each hardware drv that fill in it,
* only way to found them is to use this call */
// pHalInfo->vmiData->dwOffscreenAlign
// pHalInfo->vmiData->dwOverlayAlign
// pHalInfo->vmiData->dwTextureAlign
// pHalInfo->vmiData->dwZBufferAlign
// pHalInfo->vmiData->dwAlphaAlign
/* the primary display address */
/* test see if it in kmode memory or not */
RTEST(pHalInfo->vmiData.pvPrimary != 0 );
/* Test see if we got any hardware acclartions for 2d or 3d */
//RTEST(pHalInfo->ddCaps.dwSize == sizeof(DDCORECAPS));
/* test see if it in kmode memory or not, t */
RTEST(pHalInfo->vmiData.pvPrimary != 0 );
RTEST( ( (DWORD)pHalInfo->vmiData.pvPrimary & (~0x80000000)) != 0 );
/* test see if we got back the pvmList here
* acording msdn vmiData.dwNumHeaps and vmiData.pvmList
* exists for _VIDEOMEMORYINFO but they do not, it reviews
* in ddk and wdk and own testcase
*/
// RTEST(pHalInfo->vmiData.dwNumHeaps != 0 );
// RTEST(pHalInfo->vmiData.pvmList != 0 );
/* Test see if we got any hardware acclartions for 2d or 3d, this always fill in
* that mean we found a bugi drv and dx does not work on this drv
*/
RTEST(pHalInfo->ddCaps.dwSize == sizeof(DDCORECAPS));
/* Testing see if we got any hw support for
* This test can fail on video card that does not support 2d/overlay/3d
@ -182,7 +208,6 @@ Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
}
}
/* FIXME DD_HALINFO_V4 test */
/* Next Start 2 */
RtlCopyMemory(&oldHalInfo, &HalInfo, sizeof(DD_HALINFO));