2 * PROJECT: ReactOS api tests
3 * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory
4 * PURPOSE: Test for CRegKey
5 * PROGRAMMERS: Mark Jansen
6 * Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
15 CRegKey
key2(HKEY_CURRENT_USER
);
17 ok(key
.m_hKey
== NULL
, "Expected m_hKey to be initialized to 0, was: %p\n", key
.m_hKey
);
18 ok(key2
.m_hKey
== HKEY_CURRENT_USER
, "Expected m_hKey to be initialized to HKEY_CURRENT_USER, was: %p\n", key2
.m_hKey
);
19 ok(key2
== HKEY_CURRENT_USER
, "Expected operator HKEY() to be implemented\n");
23 ok(key3
.m_hKey
== HKEY_CURRENT_USER
, "Expected m_hKey to be initialized to HKEY_CURRENT_USER, was: %p\n", key3
.m_hKey
);
24 ok(key2
.m_hKey
== NULL
, "Expected m_hKey to be initialized to 0, was: %p\n", key2
.m_hKey
);
29 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
31 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
33 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
36 lret
= key
.Open(HKEY_CURRENT_USER
, _T("Environment"));
37 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
38 ok(key
.m_hKey
!= NULL
, "Expected m_hKey to not be NULL, was: %p\n", key
.m_hKey
);
41 HKEY tmp
= key
.m_hKey
;
42 HKEY detached
= key
.Detach();
43 ok(key
.m_hKey
== NULL
, "Expected m_hKey to be 0, was: %p\n", key
.m_hKey
);
44 ok(detached
== tmp
, "Expected detached to be %p, was: %p\n", tmp
, detached
);
46 ok(key
.m_hKey
== tmp
, "Expected m_hKey to be %p, was: %p\n", tmp
, key
.m_hKey
);
48 lret
= key2
.Open(HKEY_CURRENT_USER
, _T("Environment"), KEY_READ
);
49 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
51 lret
= key3
.Open(HKEY_CURRENT_USER
, _T("Environment"), KEY_WRITE
);
52 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
54 TCHAR testdata
[] = _T("XX-XX");
55 lret
= key
.SetValue(_T("APITEST_VALUE_NAME"), REG_SZ
, testdata
, sizeof(testdata
));
56 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
59 ULONG buffer_size
= sizeof(buffer
);
61 memset(buffer
, 0, sizeof(buffer
));
63 lret
= key
.QueryValue(_T("APITEST_VALUE_NAME"), &type
, buffer
, &buffer_size
);
64 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
65 ok(type
== REG_SZ
, "Expected type to be REG_SZ, was: %lu\n", type
);
66 ok(buffer_size
== sizeof(testdata
), "Expected buffer_size to be %u, was: %lu\n", sizeof(testdata
), buffer_size
);
67 ok(!memcmp(buffer
, testdata
, sizeof(testdata
)), "Expected to get the same input as what was written!\n");
70 buffer_size
= sizeof(buffer
);
72 memset(buffer
, 0, sizeof(buffer
));
73 lret
= key2
.QueryValue(_T("APITEST_VALUE_NAME"), &type
, buffer
, &buffer_size
);
74 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
75 ok(type
== REG_SZ
, "Expected type to be REG_SZ, was: %lu\n", type
);
76 ok(buffer_size
== sizeof(testdata
), "Expected buffer_size to be %u, was: %lu\n", sizeof(testdata
), buffer_size
);
77 ok(!memcmp(buffer
, testdata
, sizeof(testdata
)), "Expected to get the same input as what was written!\n");
79 buffer_size
= sizeof(buffer
);
81 memset(buffer
, 0, sizeof(buffer
));
82 lret
= key3
.QueryValue(_T("APITEST_VALUE_NAME"), &type
, buffer
, &buffer_size
);
83 ok(lret
== ERROR_ACCESS_DENIED
, "Expected lret to be ERROR_ACCESS_DENIED, was: %lu\n", lret
);
84 ok(type
== 0 || broken(type
== 203), "Expected type to be 0, was: %lu\n", type
);
85 ok(buffer_size
== sizeof(buffer
), "Expected buffer_size to be %u, was: %lu\n", sizeof(buffer
), buffer_size
);
88 lret
= key2
.SetValue(_T("APITEST_VALUE_NAME"), REG_SZ
, testdata
, sizeof(testdata
));
89 ok(lret
== ERROR_ACCESS_DENIED
, "Expected lret to be ERROR_ACCESS_DENIED, was: %lu\n", lret
);
91 lret
= key2
.DeleteValue(_T("APITEST_VALUE_NAME"));
92 ok(lret
== ERROR_ACCESS_DENIED
, "Expected lret to be ERROR_ACCESS_DENIED, was: %lu\n", lret
);
94 DWORD dword
= 0x54321;
95 lret
= key2
.QueryDWORDValue(_T("APITEST_VALUE_NAME"), dword
);
96 ok(lret
== ERROR_MORE_DATA
, "Expected lret to be ERROR_MORE_DATA, was: %lu\n", lret
);
97 ok(dword
== 0x54321, "Expected dword to be 0x54321, was: %lu\n", dword
);
99 lret
= key
.SetValue(_T("APITEST_VALUE_NAME"), REG_SZ
, testdata
, sizeof(TCHAR
));
100 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_ACCESS_DENIED, was: %lu\n", lret
);
103 lret
= key2
.QueryDWORDValue(_T("APITEST_VALUE_NAME"), dword
);
104 ok(lret
== ERROR_INVALID_DATA
, "Expected lret to be ERROR_MORE_DATA, was: %lu\n", lret
);
105 ok(dword
!= 0x54321, "Expected dword to NOT be 0x54321, was: %lu\n", dword
);
107 lret
= key3
.SetDWORDValue(_T("APITEST_VALUE_NAME"), 0x12345);
108 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
111 lret
= key2
.QueryDWORDValue(_T("APITEST_VALUE_NAME"), dword
);
112 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
113 ok(dword
== 0x12345, "Expected dword to be 0x12345, was: %lu\n", dword
);
116 lret
= key3
.DeleteValue(_T("APITEST_VALUE_NAME"));
117 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
120 lret
= key
.SetKeyValue(_T("APITEST_KEY_NAME"), _T("APITEST_VALUE"));
121 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
125 // COUNTOF, not SIZEOF!!!!
126 lret
= qv
.Open(HKEY_CURRENT_USER
, _T("Environment\\APITEST_KEY_NAME"));
127 buffer_size
= _countof(buffer
);
128 memset(buffer
, 0, sizeof(buffer
));
129 lret
= qv
.QueryStringValue(NULL
, buffer
, &buffer_size
);
130 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
131 ok(buffer_size
== _countof("APITEST_VALUE"), "Expected buffer_size to be %u, was: %lu\n", _countof("APITEST_VALUE"), buffer_size
);
132 ok(!_tcscmp(buffer
, _T("APITEST_VALUE")), "Expected to get the same input as what was written!\n");
134 lret
= key
.SetKeyValue(_T("APITEST_KEY_NAME"), _T("APITEST_VALUE2"), _T("APITEST_VALUE_NAME"));
135 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
137 buffer_size
= _countof(buffer
);
138 memset(buffer
, 0, sizeof(buffer
));
139 lret
= qv
.QueryStringValue(_T("APITEST_VALUE_NAME"), buffer
, &buffer_size
);
140 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
141 ok(buffer_size
== _countof("APITEST_VALUE2"), "Expected buffer_size to be %u, was: %lu\n", _countof("APITEST_VALUE2"), buffer_size
);
142 ok(!_tcscmp(buffer
, _T("APITEST_VALUE2")), "Expected to get the same input as what was written!\n");
144 lret
= key
.DeleteSubKey(_T("APITEST_KEY_NAME"));
145 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
148 memset(&guid
, 56, sizeof(guid
));
150 lret
= key
.SetGUIDValue(_T("GUID_NAME"), guid
);
151 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
153 lret
= key
.QueryGUIDValue(_T("GUID_NAME"), guid2
);
154 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
155 ok(!memcmp(&guid
, &guid2
, sizeof(guid
)), "Expected guid to equal guid2\n");
157 buffer_size
= _countof(buffer
);
158 memset(buffer
, 0, sizeof(buffer
));
159 lret
= key2
.QueryStringValue(_T("GUID_NAME"), buffer
, &buffer_size
);
160 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
161 ok(buffer_size
== _countof("{38383838-3838-3838-3838-383838383838}"),
162 "Expected buffer_size to be %u, was: %lu\n", _countof("{38383838-3838-3838-3838-383838383838}"), buffer_size
);
163 ok(!_tcscmp(buffer
, _T("{38383838-3838-3838-3838-383838383838}")), "Expected to get the same input as what was written!\n");
165 memset(&guid
, 33, 5);
166 lret
= key
.SetBinaryValue(_T("BIN_NAME"), &guid
, 5);
167 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
169 buffer_size
= sizeof(buffer
);
170 memset(buffer
, 0, sizeof(buffer
));
171 lret
= key
.QueryBinaryValue(_T("GUID_NAME"), buffer
, &buffer_size
);
172 ok(lret
== ERROR_INVALID_DATA
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
173 ok(buffer_size
== sizeof(_T("{38383838-3838-3838-3838-383838383838}")),
174 "Expected buffer_size to be %u, was: %lu\n", sizeof(_T("{38383838-3838-3838-3838-383838383838}")), buffer_size
);
175 ok(buffer
[0] == '{', "Expected buffer[0] to be 123, was: %i\n", (int)buffer
[0]);
177 buffer_size
= sizeof(buffer
);
178 memset(buffer
, 0, sizeof(buffer
));
179 lret
= key
.QueryBinaryValue(_T("BIN_NAME"), buffer
, &buffer_size
);
180 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
181 ok(buffer_size
== 5, "Expected buffer_size to be %i, was: %lu\n", 5, buffer_size
);
182 ok(!memcmp(buffer
, &guid
, 5), "Expected the first 5 bytes of buffer to equal the data in null_guid\n");
184 lret
= key
.DeleteValue(_T("GUID_NAME"));
185 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
187 lret
= key
.DeleteValue(_T("BIN_NAME"));
188 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
192 lret
= test1
.Create(HKEY_CURRENT_USER
, _T("TEST1"));
193 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
196 lret
= test2
.Create(test1
, _T("TEST2"));
197 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
200 lret
= test3
.Create(test2
, _T("TEST3"));
201 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);
204 CRegKey
key(HKEY_CURRENT_USER
);
205 lret
= key
.RecurseDeleteKey(_T("TEST1"));
206 ok(lret
== ERROR_SUCCESS
, "Expected lret to be ERROR_SUCCESS, was: %lu\n", lret
);