Author: jgardou
Date: Mon Jul 7 14:46:04 2014
New Revision: 63699
URL:
http://svn.reactos.org/svn/reactos?rev=63699&view=rev
Log:
[NTDLL_APITEST]
- Add tests for NtDeleteKey
Added:
trunk/rostests/apitests/ntdll/NtDeleteKey.c (with props)
Modified:
trunk/rostests/apitests/ntdll/CMakeLists.txt
trunk/rostests/apitests/ntdll/testlist.c
Modified: trunk/rostests/apitests/ntdll/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/ntdll/CMakeLists…
==============================================================================
--- trunk/rostests/apitests/ntdll/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/rostests/apitests/ntdll/CMakeLists.txt [iso-8859-1] Mon Jul 7 14:46:04 2014
@@ -5,6 +5,7 @@
NtContinue.c
NtCreateFile.c
NtCreateThread.c
+ NtDeleteKey.c
NtFreeVirtualMemory.c
NtMapViewOfSection.c
NtMutant.c
Added: trunk/rostests/apitests/ntdll/NtDeleteKey.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/ntdll/NtDeleteKe…
==============================================================================
--- trunk/rostests/apitests/ntdll/NtDeleteKey.c (added)
+++ trunk/rostests/apitests/ntdll/NtDeleteKey.c [iso-8859-1] Mon Jul 7 14:46:04 2014
@@ -0,0 +1,96 @@
+/*
+ * PROJECT: ReactOS API Tests
+ * LICENSE: GPLv2+ - See COPYING in the top level directory
+ * PURPOSE: Test for NtDeleteKey
+ */
+
+#include <apitest.h>
+
+#define WIN32_NO_STATUS
+#include <ndk/rtlfuncs.h>
+#include <ndk/cmfuncs.h>
+#include <ndk/obfuncs.h>
+#include <ndk/setypes.h>
+
+static
+NTSTATUS
+CreateRegistryKeyHandle(PHANDLE KeyHandle,
+ ACCESS_MASK AccessMask,
+ PWCHAR RegistryPath)
+{
+ UNICODE_STRING KeyName;
+ OBJECT_ATTRIBUTES Attributes;
+
+ RtlInitUnicodeString(&KeyName, RegistryPath);
+ InitializeObjectAttributes(&Attributes,
+ &KeyName,
+ OBJ_CASE_INSENSITIVE,
+ NULL,
+ NULL);
+
+ return NtCreateKey(KeyHandle, AccessMask, &Attributes, 0, NULL,
REG_OPTION_VOLATILE, 0);
+}
+
+START_TEST(NtDeleteKey)
+{
+ NTSTATUS Status;
+ HANDLE ParentKey, ChildKey;
+
+ /* Create a registry key */
+ Status = CreateRegistryKeyHandle(&ParentKey, KEY_READ | DELETE,
L"\\Registry\\Machine\\Software\\RosTests");
+ ok_ntstatus(Status, STATUS_SUCCESS);
+
+ /* Create a children registry key */
+ Status = CreateRegistryKeyHandle(&ChildKey, KEY_READ | DELETE,
L"\\Registry\\Machine\\Software\\RosTests\\Child");
+ ok_ntstatus(Status, STATUS_SUCCESS);
+
+ /* Try deleting the parent one */
+ Status = NtDeleteKey(ParentKey);
+ ok_ntstatus(Status, STATUS_CANNOT_DELETE);
+
+ /* See what happens with Child one */
+ Status = NtDeleteKey(ChildKey);
+ ok_ntstatus(Status, STATUS_SUCCESS);
+
+ /* Retry with parent one */
+ Status = NtDeleteKey(ParentKey);
+ ok_ntstatus(Status, STATUS_SUCCESS);
+
+ /* re-retry */
+ Status = NtDeleteKey(ParentKey);
+ ok_ntstatus(Status, STATUS_SUCCESS);
+
+ /* Close everything */
+ NtClose(ChildKey);
+ NtClose(ParentKey);
+
+ /* Same, but this time close the child handle before trying to delete the parent */
+ /* Create a registry key */
+ Status = CreateRegistryKeyHandle(&ParentKey, KEY_READ | DELETE,
L"\\Registry\\Machine\\Software\\RosTests");
+ ok_ntstatus(Status, STATUS_SUCCESS);
+
+ /* Create a children registry key */
+ Status = CreateRegistryKeyHandle(&ChildKey, KEY_READ,
L"\\Registry\\Machine\\Software\\RosTests\\Child");
+ ok_ntstatus(Status, STATUS_SUCCESS);
+
+ /* Close the Child */
+ NtClose(ChildKey);
+
+ /* Try deleting the parent one */
+ Status = NtDeleteKey(ParentKey);
+ ok_ntstatus(Status, STATUS_CANNOT_DELETE);
+
+ /* See what happens with Child one */
+ Status = CreateRegistryKeyHandle(&ChildKey, DELETE,
L"\\Registry\\Machine\\Software\\RosTests\\Child");
+ ok_ntstatus(Status, STATUS_SUCCESS);
+ Status = NtDeleteKey(ChildKey);
+ ok_ntstatus(Status, STATUS_SUCCESS);
+
+ /* Retry with parent one */
+ Status = NtDeleteKey(ParentKey);
+ ok_ntstatus(Status, STATUS_SUCCESS);
+
+ /* Close everything */
+ NtClose(ChildKey);
+ NtClose(ParentKey);
+}
Propchange: trunk/rostests/apitests/ntdll/NtDeleteKey.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/rostests/apitests/ntdll/testlist.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/ntdll/testlist.c…
==============================================================================
--- trunk/rostests/apitests/ntdll/testlist.c [iso-8859-1] (original)
+++ trunk/rostests/apitests/ntdll/testlist.c [iso-8859-1] Mon Jul 7 14:46:04 2014
@@ -8,6 +8,7 @@
extern void func_NtContinue(void);
extern void func_NtCreateFile(void);
extern void func_NtCreateThread(void);
+extern void func_NtDeleteKey(void);
extern void func_NtFreeVirtualMemory(void);
extern void func_NtMapViewOfSection(void);
extern void func_NtMutant(void);
@@ -38,6 +39,7 @@
{ "NtContinue", func_NtContinue },
{ "NtCreateFile", func_NtCreateFile },
{ "NtCreateThread", func_NtCreateThread },
+ { "NtDeleteKey", func_NtDeleteKey },
{ "NtFreeVirtualMemory", func_NtFreeVirtualMemory },
{ "NtMapViewOfSection", func_NtMapViewOfSection },
{ "NtMutant", func_NtMutant },