[ros-diffs] [tkreuzer] 28160: - implement quick 'n dirty HTML api status output - change test function return type to INT - add ASSERT macro - include some more headers

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Sat Aug 4 18:45:12 CEST 2007


Author: tkreuzer
Date: Sat Aug  4 20:45:12 2007
New Revision: 28160

URL: http://svn.reactos.org/svn/reactos?rev=28160&view=rev
Log:
- implement quick 'n dirty HTML api status output
- change test function return type to INT
- add ASSERT macro
- include some more headers

Modified:
    trunk/rostests/apitests/apitest.c
    trunk/rostests/apitests/apitest.h
    trunk/rostests/apitests/w32knapi/ntdd/NtGdiDdCreateDirectDrawObject.c
    trunk/rostests/apitests/w32knapi/ntdd/NtGdiDdDeleteDirectDrawObject.c
    trunk/rostests/apitests/w32knapi/ntdd/NtGdiDdQueryDirectDrawObject.c
    trunk/rostests/apitests/w32knapi/ntgdi/NtGdiArcInternal.c
    trunk/rostests/apitests/w32knapi/ntgdi/NtGdiGetBitmapBits.c
    trunk/rostests/apitests/w32knapi/ntgdi/NtGdiSetBitmapBits.c
    trunk/rostests/apitests/w32knapi/ntuser/NtUserCountClipboardFormats.c
    trunk/rostests/apitests/w32knapi/testlist.c
    trunk/rostests/apitests/w32knapi/w32knapi.c
    trunk/rostests/apitests/w32knapi/w32knapi.h

Modified: trunk/rostests/apitests/apitest.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/apitest.c?rev=28160&r1=28159&r2=28160&view=diff
==============================================================================
--- trunk/rostests/apitests/apitest.c (original)
+++ trunk/rostests/apitests/apitest.c Sat Aug  4 20:45:12 2007
@@ -1,24 +1,74 @@
 #include "apitest.h"
 
+const char szFileHeader[] = "<html><head><style>\ntd.red {color:red}\ntd.green{color:green}\n</style>\n</head>\n<body>\n<head>\n";
+const char szTableHeader[] = "<table width = '800'><tr><th align='left'>Function</th><th align='left'>Status</th><th align='left'>Tests (all/passed/failed)</th><th align='left'>Regressions</th></tr>";
+const char szFileFooter[] = "</table></body></html>";
+
 void
-OutputUsage(LPWSTR pszExe)
+OutputUsage(LPWSTR pszName)
 {
 	printf("\nUsage:\n\n");
-	printf("%ls <TestName> - perform individual test\n", pszExe);
-	printf("%ls all - perform all tests\n", pszExe);
-	printf("%ls status - create api status file\n", pszExe);
-	printf("%ls -r ... - perform regression testing\n", pszExe);
+	printf("%ls.exe <TestName> - perform individual test\n", pszName);
+	printf("%ls.exe all - perform all tests\n", pszName);
+	printf("%ls.exe status - create api status file\n", pszName);
+	printf("%ls.exe -r ... - perform regression testing\n", pszName);
 	printf("\n");
 }
 
+BOOL
+WriteFileHeader(UINT hFile, LPWSTR pszModule)
+{
+	char szHeader[100];
+
+	write(hFile, szFileHeader, strlen(szFileHeader));
+	sprintf(szHeader, "<H1>Test results for %ls</H1>", pszModule);
+	write(hFile, szHeader, strlen(szHeader));
+	write(hFile, szTableHeader, strlen(szTableHeader));
+	return TRUE;
+}
+
+BOOL
+WriteRow(UINT hFile, LPWSTR pszFunction, PTESTINFO pti)
+{
+	char szLine[500];
+
+	sprintf(szLine, "<tr><td>%ls</td>", pszFunction);
+
+	switch(pti->nApiStatus)
+	{
+		case APISTATUS_NOT_FOUND:
+			strcat(szLine, "<td class='red'>not found</td>");
+			break;
+		case APISTATUS_UNIMPLEMENTED:
+			strcat(szLine, "<td class='red'>unimplemented</td>");
+			break;
+		case APISTATUS_ASSERTION_FAILED:
+			strcat(szLine, "<td class='red'>assertion failed</td>");
+			break;
+		case APISTATUS_REGRESSION:
+			strcat(szLine, "<td class='red'>Regression!</td>");
+			break;
+		case APISTATUS_NORMAL:
+			strcat(szLine, "<td class='green'>Implemented</td>");
+			break;
+	}
+
+	sprintf(szLine + strlen(szLine), "<td>%d / %d / %d</td><td>%d</td></tr>\n",
+	        pti->passed+pti->failed, pti->passed, pti->failed, pti->rfailed);
+
+	write(hFile, szLine, strlen(szLine));
+	return TRUE;
+}
+
 int
-TestMain(LPWSTR pszExe)
+TestMain(LPWSTR pszName, LPWSTR pszModule)
 {
 	INT argc, i, j;
 	LPWSTR *argv;
 	TESTINFO ti;
 	INT opassed, ofailed, orfailed;
 	BOOL bAll, bStatus;
+	UINT hFile = 0;
 
 	ti.bRegress = FALSE;
 	bAll = FALSE;
@@ -29,7 +79,7 @@
 
 	if (argc < 2)
 	{
-		OutputUsage(pszExe);
+		OutputUsage(pszName);
 		return 0;
 	}
 
@@ -53,8 +103,16 @@
 
 	if (bStatus)
 	{
-		printf("Output of API status is unimplemented.\n");
-		return 0;
+		ti.bRegress = TRUE;
+		char szOutputFile[MAX_PATH];
+		wsprintf(szOutputFile, "%ls.html", pszName);
+		hFile = open(szOutputFile, O_CREAT | O_TRUNC | O_RDWR, 00700);
+		if (hFile == -1)
+		{
+			printf("Could not create output file.\n");
+			return 0;
+		}
+		WriteFileHeader(hFile, pszModule);
 	}
 
 	for (i = 0; i < NumTests(); i++)
@@ -69,15 +127,22 @@
 				if (!IsFunctionPresent(TestList[i].Test))
 				{
 					printf("Function %ls was not found!\n", TestList[i].Test);
+					ti.nApiStatus = APISTATUS_NOT_FOUND;
 				}
 				else
 				{
 					printf("Executing test: %ls\n", TestList[i].Test);
-					TestList[i].Proc(&ti);
+					ti.nApiStatus = TestList[i].Proc(&ti);
 					opassed += ti.passed;
 					ofailed += ti.failed;
 					orfailed += ti.rfailed;
 					printf(" tests: %d, passed: %d, failed: %d\n\n", ti.passed+ti.failed, ti.passed, ti.failed);
+				}
+				if (bStatus)
+				{
+					if (ti.rfailed > 0)
+						ti.nApiStatus = APISTATUS_REGRESSION;
+					WriteRow(hFile, TestList[i].Test, &ti);
 				}
 				break;
 			}
@@ -94,5 +159,11 @@
 	if (ti.bRegress)
 		return ti.rfailed;
 
+	if (bStatus)
+	{
+		write(hFile, szFileFooter, strlen(szFileFooter));
+		close(hFile);
+	}
+
 	return ti.failed;
 }

Modified: trunk/rostests/apitests/apitest.h
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/apitest.h?rev=28160&r1=28159&r2=28160&view=diff
==============================================================================
--- trunk/rostests/apitests/apitest.h (original)
+++ trunk/rostests/apitests/apitest.h Sat Aug  4 20:45:12 2007
@@ -4,11 +4,16 @@
 #define WINVER 0x501
 
 #include <stdlib.h>
-
 #include <stdarg.h>
 #include <stdio.h>
+#include <fcntl.h>
 #include <windows.h>
 
+#define APISTATUS_NORMAL 0
+#define APISTATUS_NOT_FOUND 1
+#define APISTATUS_UNIMPLEMENTED 2
+#define APISTATUS_ASSERTION_FAILED 3
+#define APISTATUS_REGRESSION 4
 
 /* type definitions */
 
@@ -18,9 +23,10 @@
 	INT failed;
 	INT rfailed;
 	BOOL bRegress;
+	INT nApiStatus;
 } TESTINFO, *PTESTINFO;
 
-typedef BOOL (*TESTPROC)(PTESTINFO);
+typedef INT (*TESTPROC)(PTESTINFO);
 
 typedef struct tagTEST
 {
@@ -77,7 +83,14 @@
 	}
 
 
-int TestMain(LPWSTR pszExe);
+#define ASSERT(x) \
+	if (!(x)) \
+	{ \
+			printf("Assertion failed in %s:%d (%s)\n", __FILE__, __LINE__, #x);\
+			return APISTATUS_ASSERTION_FAILED; \
+	}
+
+int TestMain(LPWSTR pszExe, LPWSTR pszModule);
 extern TESTENTRY TestList[];
 INT NumTests(void);
 BOOL IsFunctionPresent(LPWSTR lpszFunction);

Modified: trunk/rostests/apitests/w32knapi/ntdd/NtGdiDdCreateDirectDrawObject.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/w32knapi/ntdd/NtGdiDdCreateDirectDrawObject.c?rev=28160&r1=28159&r2=28160&view=diff
==============================================================================
--- trunk/rostests/apitests/w32knapi/ntdd/NtGdiDdCreateDirectDrawObject.c (original)
+++ trunk/rostests/apitests/w32knapi/ntdd/NtGdiDdCreateDirectDrawObject.c Sat Aug  4 20:45:12 2007
@@ -10,7 +10,7 @@
 	return (HANDLE)Syscall(L"NtGdiDdCreateDirectDrawObject", 1, &hdc);
 }
 
-BOOL
+INT
 Test_NtGdiDdCreateDirectDrawObject(PTESTINFO pti)
 {
     HDC hdc=CreateDCW(L"Display",NULL,NULL,NULL);
@@ -21,5 +21,5 @@
     
     DeleteDC(hdc);
 
-    return TRUE;
+    return APISTATUS_NORMAL;
 }

Modified: trunk/rostests/apitests/w32knapi/ntdd/NtGdiDdDeleteDirectDrawObject.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/w32knapi/ntdd/NtGdiDdDeleteDirectDrawObject.c?rev=28160&r1=28159&r2=28160&view=diff
==============================================================================
--- trunk/rostests/apitests/w32knapi/ntdd/NtGdiDdDeleteDirectDrawObject.c (original)
+++ trunk/rostests/apitests/w32knapi/ntdd/NtGdiDdDeleteDirectDrawObject.c Sat Aug  4 20:45:12 2007
@@ -10,10 +10,10 @@
 	return (BOOL)Syscall(L"NtGdiDdDeleteDirectDrawObject", 1, &hDirectDrawLocal);
 }
 
-BOOL
+INT
 Test_NtGdiDdDeleteDirectDrawObject(PTESTINFO pti)
 {
     TEST(NtGdiDdDeleteDirectDrawObject(NULL) == 0);
 
-    return TRUE;
+    return APISTATUS_NORMAL;
 }

Modified: trunk/rostests/apitests/w32knapi/ntdd/NtGdiDdQueryDirectDrawObject.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/w32knapi/ntdd/NtGdiDdQueryDirectDrawObject.c?rev=28160&r1=28159&r2=28160&view=diff
==============================================================================
--- trunk/rostests/apitests/w32knapi/ntdd/NtGdiDdQueryDirectDrawObject.c (original)
+++ trunk/rostests/apitests/w32knapi/ntdd/NtGdiDdQueryDirectDrawObject.c Sat Aug  4 20:45:12 2007
@@ -19,9 +19,9 @@
 	return (HANDLE)Syscall("NtGdiDdQueryDirectDrawObject", 11, &hDirectDrawLocal);
 }
 #endif
-BOOL
+INT
 Test_NtGdiDdQueryDirectDrawObject(PTESTINFO pti)
 {
 
-    return TRUE;
+    return APISTATUS_NORMAL;
 }

Modified: trunk/rostests/apitests/w32knapi/ntgdi/NtGdiArcInternal.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/w32knapi/ntgdi/NtGdiArcInternal.c?rev=28160&r1=28159&r2=28160&view=diff
==============================================================================
--- trunk/rostests/apitests/w32knapi/ntgdi/NtGdiArcInternal.c (original)
+++ trunk/rostests/apitests/w32knapi/ntgdi/NtGdiArcInternal.c Sat Aug  4 20:45:12 2007
@@ -1,6 +1,4 @@
 #include "../w32knapi.h"
-
-typedef int ARCTYPE;
 
 BOOL
 STDCALL
@@ -19,7 +17,7 @@
 	return (BOOL)Syscall(L"NtGdiArcInternal", 10, &arctype);
 }
 
-BOOL
+INT
 Test_NtGdiArcInternal(PTESTINFO pti)
 {
 	HDC hDC = CreateDCW(L"Display",NULL,NULL,NULL);
@@ -53,5 +51,5 @@
 
 	DeleteDC(hDC);
 
-	return TRUE;
+	return APISTATUS_NORMAL;
 }

Modified: trunk/rostests/apitests/w32knapi/ntgdi/NtGdiGetBitmapBits.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/w32knapi/ntgdi/NtGdiGetBitmapBits.c?rev=28160&r1=28159&r2=28160&view=diff
==============================================================================
--- trunk/rostests/apitests/w32knapi/ntgdi/NtGdiGetBitmapBits.c (original)
+++ trunk/rostests/apitests/w32knapi/ntgdi/NtGdiGetBitmapBits.c Sat Aug  4 20:45:12 2007
@@ -10,7 +10,7 @@
 }
 
 
-BOOL
+INT
 Test_NtGdiGetBitmapBits(PTESTINFO pti)
 {
 	BYTE Bits[50] = {0,1,2,3,4,5,6,7,8,9};
@@ -70,5 +70,5 @@
 
 	DeleteObject(hBitmap);
 
-	return TRUE;
+	return APISTATUS_NORMAL;
 }

Modified: trunk/rostests/apitests/w32knapi/ntgdi/NtGdiSetBitmapBits.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/w32knapi/ntgdi/NtGdiSetBitmapBits.c?rev=28160&r1=28159&r2=28160&view=diff
==============================================================================
--- trunk/rostests/apitests/w32knapi/ntgdi/NtGdiSetBitmapBits.c (original)
+++ trunk/rostests/apitests/w32knapi/ntgdi/NtGdiSetBitmapBits.c Sat Aug  4 20:45:12 2007
@@ -10,7 +10,7 @@
 }
 
 
-BOOL
+INT
 Test_NtGdiSetBitmapBits(PTESTINFO pti)
 {
 	BYTE Bits[50] = {0,1,2,3,4,5,6,7,8,9};
@@ -70,5 +70,5 @@
 
 	DeleteObject(hBitmap);
 
-	return TRUE;
+	return APISTATUS_NORMAL;
 }

Modified: trunk/rostests/apitests/w32knapi/ntuser/NtUserCountClipboardFormats.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/w32knapi/ntuser/NtUserCountClipboardFormats.c?rev=28160&r1=28159&r2=28160&view=diff
==============================================================================
--- trunk/rostests/apitests/w32knapi/ntuser/NtUserCountClipboardFormats.c (original)
+++ trunk/rostests/apitests/w32knapi/ntuser/NtUserCountClipboardFormats.c Sat Aug  4 20:45:12 2007
@@ -8,11 +8,10 @@
 	return Syscall(L"NtUserCountClipboardFormats", 0, &p);
 }
 
-BOOL
+INT
 Test_NtUserCountClipboardFormats(PTESTINFO pti)
 {
-	TEST(NtUserCountClipboardFormats() < 1000);
-	TEST(TRUE);
-	return TRUE;
+	RTEST(NtUserCountClipboardFormats() < 1000);
+	return APISTATUS_NORMAL;
 }
 

Modified: trunk/rostests/apitests/w32knapi/testlist.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/w32knapi/testlist.c?rev=28160&r1=28159&r2=28160&view=diff
==============================================================================
--- trunk/rostests/apitests/w32knapi/testlist.c (original)
+++ trunk/rostests/apitests/w32knapi/testlist.c Sat Aug  4 20:45:12 2007
@@ -7,25 +7,29 @@
 #include "ntdd/NtGdiDdQueryDirectDrawObject.c"
 
 #include "ntgdi/NtGdiArcInternal.c"
+//#include "ntgdi/NtGdiDoPalette.c"
+#include "ntgdi/NtGdiGetBitmapBits.c"
 #include "ntgdi/NtGdiSetBitmapBits.c"
-#include "ntgdi/NtGdiGetBitmapBits.c"
+//#include "ntgdi/NtGdiSTROBJ_vEnumStart.c"
 
 #include "ntuser/NtUserCountClipboardFormats.c"
 
 /* The List of tests */
 TESTENTRY TestList[] =
 {
-    /* DirectDraw */
+	/* DirectDraw */
 	{ L"NtGdiDdCreateDirectDrawObject", Test_NtGdiDdCreateDirectDrawObject },
 	{ L"NtGdiDdDeleteDirectDrawObject", Test_NtGdiDdDeleteDirectDrawObject },
 	{ L"NtGdiDdQueryDirectDrawObject", Test_NtGdiDdQueryDirectDrawObject },
 
-    /* ntgdi */
+	/* ntgdi */
 	{ L"NtGdiArcInternal", Test_NtGdiArcInternal },
+//	{ L"NtGdiDoPalette", Test_NtGdiDoPalette },
 	{ L"NtGdiGetBitmapBits", Test_NtGdiGetBitmapBits },
 	{ L"NtGdiSetBitmapBits", Test_NtGdiSetBitmapBits },
+//	{ L"NtGdiSTROBJ_vEnumStart", Test_NtGdiSTROBJ_vEnumStart },
 
-    /* ntuser */
+	/* ntuser */
 	{ L"NtUserCountClipboardFormats", Test_NtUserCountClipboardFormats }
 };
 

Modified: trunk/rostests/apitests/w32knapi/w32knapi.c
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/w32knapi/w32knapi.c?rev=28160&r1=28159&r2=28160&view=diff
==============================================================================
--- trunk/rostests/apitests/w32knapi/w32knapi.c (original)
+++ trunk/rostests/apitests/w32knapi/w32knapi.c Sat Aug  4 20:45:12 2007
@@ -155,7 +155,7 @@
 
 	printf("\n");
 
-	TestMain(L"w32knapi.exe");
+	TestMain(L"w32knapi", L"win32k.sys Nt-Api");
 
 	return 0;
 }

Modified: trunk/rostests/apitests/w32knapi/w32knapi.h
URL: http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/w32knapi/w32knapi.h?rev=28160&r1=28159&r2=28160&view=diff
==============================================================================
--- trunk/rostests/apitests/w32knapi/w32knapi.h (original)
+++ trunk/rostests/apitests/w32knapi/w32knapi.h Sat Aug  4 20:45:12 2007
@@ -2,7 +2,14 @@
 #define _W32KNAPI_H
 
 #include "../apitest.h"
+
 #include <ddk/winddi.h>
+#include <ddk/ntddk.h>
+
+/* Public Win32K Headers */
+#include <win32k/callback.h>
+#include <win32k/ntusrtyp.h>
+#include <win32k/ntgdityp.h>
 
 #define OS_UNSUPPORTED 0
 #define OS_REACTOS	1




More information about the Ros-diffs mailing list