[KMTEST]
authorPierre Schweitzer <pierre@reactos.org>
Wed, 29 Sep 2010 21:42:11 +0000 (21:42 +0000)
committerPierre Schweitzer <pierre@reactos.org>
Wed, 29 Sep 2010 21:42:11 +0000 (21:42 +0000)
Added a small testcase for FsRtlIsNameInExpression(). It's quite relevant for daily and simple use of the function. It shouldn't fail on ReactOS given our current implementation.

svn path=/trunk/; revision=48932

rostests/drivers/kmtest/kmtest.c
rostests/drivers/kmtest/kmtest.rbuild
rostests/drivers/kmtest/ntos_fsrtl.c [new file with mode: 0644]

index 3164688..68817e3 100644 (file)
@@ -174,6 +174,7 @@ BOOLEAN ZwUnloadTest(PDRIVER_OBJECT, PUNICODE_STRING, PWCHAR);
 BOOLEAN DetachDeviceTest(PDEVICE_OBJECT);
 BOOLEAN AttachDeviceTest(PDEVICE_OBJECT,  PWCHAR);
 VOID LowerDeviceKernelAPITest(PDEVICE_OBJECT, BOOLEAN);
+VOID NtoskrnlFsRtlTest(HANDLE KeyHandle);
 
 typedef enum {
     TestStageExTimer = 0,
@@ -185,6 +186,7 @@ typedef enum {
     TestStageOb,
     TestStageKeStall,
     TestStageDrv,
+    TestStageFsRtl,
     TestStageMax
 } TEST_STAGE;
 
@@ -399,6 +401,10 @@ RunKernelModeTest(PDRIVER_OBJECT DriverObject,
          FinishTest(KeyHandle, L"DriverTest");
          break;
 
+       case TestStageFsRtl:
+         NtoskrnlFsRtlTest(KeyHandle);
+         break;
+
        default:
          ASSERT(FALSE);
          break;
index b992079..a569a76 100644 (file)
@@ -14,5 +14,6 @@
        <file>ntos_ke.c</file>
        <file>ntos_ob.c</file>
        <file>ntos_pools.c</file>
+       <file>ntos_fsrtl.c</file>
        <file>kmtest.rc</file>
 </module>
diff --git a/rostests/drivers/kmtest/ntos_fsrtl.c b/rostests/drivers/kmtest/ntos_fsrtl.c
new file mode 100644 (file)
index 0000000..2f9c29f
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * FsRtl Test
+ *
+ * Copyright 2010 Pierre Schweitzer <pierre.schweitzer@reactos.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; see the file COPYING.LIB.
+ * If not, write to the Free Software Foundation,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include "kmtest.h"
+#include <ntifs.h>
+
+#define NDEBUG
+#include "debug.h"
+
+/* PRIVATE FUNCTIONS **********************************************************/
+
+VOID FsRtlIsNameInExpressionTest()
+{
+    UNICODE_STRING Expression, Name;
+
+    RtlInitUnicodeString(&Expression, L"ntdll.dll");
+    RtlInitUnicodeString(&Name, L".");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    RtlInitUnicodeString(&Name, L"~1");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    RtlInitUnicodeString(&Name, L"..");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    RtlInitUnicodeString(&Name, L"ntdll.dll");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE");
+
+    RtlInitUnicodeString(&Expression, L"smss.exe");
+    RtlInitUnicodeString(&Name, L".");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    RtlInitUnicodeString(&Name, L"~1");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    RtlInitUnicodeString(&Name, L"..");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    RtlInitUnicodeString(&Name, L"ntdll.dll");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    RtlInitUnicodeString(&Name, L"NTDLL.dll");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+
+    RtlInitUnicodeString(&Expression, L"nt??krnl.???");
+    RtlInitUnicodeString(&Name, L"ntoskrnl.exe");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE");
+
+    RtlInitUnicodeString(&Expression, L"he*o");
+    RtlInitUnicodeString(&Name, L"hello");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE");
+    RtlInitUnicodeString(&Name, L"helo");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE");
+    RtlInitUnicodeString(&Name, L"hella");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+
+    RtlInitUnicodeString(&Expression, L"he*");
+    RtlInitUnicodeString(&Name, L"hello");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE");
+    RtlInitUnicodeString(&Name, L"helo");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE");
+    RtlInitUnicodeString(&Name, L"hella");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE");
+
+    RtlInitUnicodeString(&Expression, L"*.cpl");
+    RtlInitUnicodeString(&Name, L"kdcom.dll");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    RtlInitUnicodeString(&Name, L"bootvid.dll");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    RtlInitUnicodeString(&Name, L"ntoskrnl.exe");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+
+    RtlInitUnicodeString(&Expression, L".");
+    RtlInitUnicodeString(&Name, L"NTDLL.DLL");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+
+    RtlInitUnicodeString(&Expression, L"F0_*.*");
+    RtlInitUnicodeString(&Name, L".");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    RtlInitUnicodeString(&Name, L"..");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    RtlInitUnicodeString(&Name, L"SETUP.EXE");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    RtlInitUnicodeString(&Name, L"F0_001");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+
+    RtlInitUnicodeString(&Expression, L"*.TTF");
+    RtlInitUnicodeString(&Name, L".");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    RtlInitUnicodeString(&Name, L"..");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+    RtlInitUnicodeString(&Name, L"SETUP.INI");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == FALSE, "expected FALSE, got TRUE");
+
+    RtlInitUnicodeString(&Expression, L"*");
+    RtlInitUnicodeString(&Name, L".");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE");
+    RtlInitUnicodeString(&Name, L"..");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE");
+    RtlInitUnicodeString(&Name, L"SETUP.INI");
+    ok(FsRtlIsNameInExpression(&Expression, &Name, FALSE, NULL) == TRUE, "expected TRUE, got FALSE");
+}
+
+/* PUBLIC FUNCTIONS ***********************************************************/
+
+VOID
+NtoskrnlFsRtlTest(HANDLE KeyHandle)
+{
+    FsRtlIsNameInExpressionTest();
+
+    FinishTest(KeyHandle, L"FsRtlTest");
+}