Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
d4e78458
Commit
d4e78458
authored
Oct 23, 2008
by
Detlef Riekenberg
Committed by
Alexandre Julliard
Oct 24, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
shdocvw/tests: Add tests for URLSubRegQueryA.
parent
507665de
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
169 additions
and
0 deletions
+169
-0
Makefile.in
dlls/shdocvw/tests/Makefile.in
+1
-0
shdocvw.c
dlls/shdocvw/tests/shdocvw.c
+168
-0
No files found.
dlls/shdocvw/tests/Makefile.in
View file @
d4e78458
...
...
@@ -7,6 +7,7 @@ IMPORTS = shell32 ole32 oleaut32 user32 advapi32 kernel32
CTESTS
=
\
intshcut.c
\
shdocvw.c
\
shortcut.c
\
webbrowser.c
...
...
dlls/shdocvw/tests/shdocvw.c
0 → 100644
View file @
d4e78458
/*
* Unit tests for misc shdocvw functions
*
* Copyright 2008 Detlef Riekenberg
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
#include "wininet.h"
#include "wine/test.h"
/* ################ */
static
HMODULE
hshdocvw
;
static
HRESULT
(
WINAPI
*
pURLSubRegQueryA
)(
LPCSTR
,
LPCSTR
,
DWORD
,
LPVOID
,
DWORD
,
DWORD
);
static
CHAR
appdata
[]
=
"AppData"
;
static
CHAR
common_appdata
[]
=
"Common AppData"
;
static
CHAR
default_page_url
[]
=
"Default_Page_URL"
;
static
CHAR
does_not_exist
[]
=
"does_not_exist"
;
static
CHAR
regpath_iemain
[]
=
"Software
\\
Microsoft
\\
Internet Explorer
\\
Main"
;
static
CHAR
regpath_shellfolders
[]
=
"Software
\\
Microsoft
\\
Windows
\\
CurrentVersion
\\
Explorer
\\
Shell Folders"
;
static
CHAR
start_page
[]
=
"Start Page"
;
/* ################ */
static
void
init_functions
(
void
)
{
hshdocvw
=
LoadLibraryA
(
"shdocvw.dll"
);
pURLSubRegQueryA
=
(
void
*
)
GetProcAddress
(
hshdocvw
,
(
LPSTR
)
151
);
}
/* ################ */
static
void
test_URLSubRegQueryA
(
void
)
{
CHAR
buffer
[
INTERNET_MAX_URL_LENGTH
];
HRESULT
hr
;
DWORD
used
;
DWORD
len
;
if
(
!
pURLSubRegQueryA
)
{
skip
(
"URLSubRegQueryA not found
\n
"
);
return
;
}
memset
(
buffer
,
'#'
,
sizeof
(
buffer
)
-
2
);
buffer
[
sizeof
(
buffer
)
-
1
]
=
'\0'
;
/* called by inetcpl.cpl */
hr
=
pURLSubRegQueryA
(
regpath_iemain
,
default_page_url
,
REG_SZ
,
buffer
,
INTERNET_MAX_URL_LENGTH
,
-
1
);
ok
(
hr
==
E_FAIL
||
hr
==
S_OK
,
"got 0x%x (expected E_FAIL or S_OK)
\n
"
,
hr
);
memset
(
buffer
,
'#'
,
sizeof
(
buffer
)
-
2
);
buffer
[
sizeof
(
buffer
)
-
1
]
=
'\0'
;
/* called by inetcpl.cpl */
hr
=
pURLSubRegQueryA
(
regpath_iemain
,
start_page
,
REG_SZ
,
buffer
,
INTERNET_MAX_URL_LENGTH
,
-
1
);
len
=
lstrlenA
(
buffer
);
/* respect privacy: do not dump the url */
ok
(
hr
==
S_OK
,
"got 0x%x and %d (expected S_OK)
\n
"
,
hr
,
len
);
/* test buffer length: just large enough */
memset
(
buffer
,
'#'
,
sizeof
(
buffer
)
-
2
);
buffer
[
sizeof
(
buffer
)
-
1
]
=
'\0'
;
hr
=
pURLSubRegQueryA
(
regpath_iemain
,
start_page
,
REG_SZ
,
buffer
,
len
+
1
,
-
1
);
used
=
lstrlenA
(
buffer
);
/* respect privacy: do not dump the url */
ok
((
hr
==
S_OK
)
&&
(
used
==
len
),
"got 0x%x and %d (expected S_OK and %d)
\n
"
,
hr
,
used
,
len
);
/* no space for terminating 0: result is truncated */
memset
(
buffer
,
'#'
,
sizeof
(
buffer
)
-
2
);
buffer
[
sizeof
(
buffer
)
-
1
]
=
'\0'
;
hr
=
pURLSubRegQueryA
(
regpath_iemain
,
start_page
,
REG_SZ
,
buffer
,
len
,
-
1
);
used
=
lstrlenA
(
buffer
);
ok
((
hr
==
S_OK
)
&&
(
used
==
len
-
1
),
"got 0x%x and %d (expected S_OK and %d)
\n
"
,
hr
,
used
,
len
-
1
);
/* no space for the complete result: truncate another char */
if
(
len
>
1
)
{
memset
(
buffer
,
'#'
,
sizeof
(
buffer
)
-
2
);
buffer
[
sizeof
(
buffer
)
-
1
]
=
'\0'
;
hr
=
pURLSubRegQueryA
(
regpath_iemain
,
start_page
,
REG_SZ
,
buffer
,
len
-
1
,
-
1
);
used
=
lstrlenA
(
buffer
);
ok
((
hr
==
S_OK
)
&&
(
used
==
(
len
-
2
)),
"got 0x%x and %d (expected S_OK and %d)
\n
"
,
hr
,
used
,
len
-
2
);
}
/* only space for the terminating 0: function still succeded */
memset
(
buffer
,
'#'
,
sizeof
(
buffer
)
-
2
);
buffer
[
sizeof
(
buffer
)
-
1
]
=
'\0'
;
hr
=
pURLSubRegQueryA
(
regpath_iemain
,
start_page
,
REG_SZ
,
buffer
,
1
,
-
1
);
used
=
lstrlenA
(
buffer
);
ok
((
hr
==
S_OK
)
&&
!
used
,
"got 0x%x and %d (expected S_OK and 0)
\n
"
,
hr
,
used
);
/* size of buffer is 0, but the function still succeed */
memset
(
buffer
,
'#'
,
sizeof
(
buffer
)
-
2
);
buffer
[
sizeof
(
buffer
)
-
1
]
=
'\0'
;
hr
=
pURLSubRegQueryA
(
regpath_iemain
,
start_page
,
REG_SZ
,
buffer
,
0
,
-
1
);
used
=
lstrlenA
(
buffer
);
ok
((
hr
==
S_OK
)
&&
(
used
==
INTERNET_MAX_URL_LENGTH
-
1
),
"got 0x%x and %d (expected S_OK and %d)
\n
"
,
hr
,
used
,
INTERNET_MAX_URL_LENGTH
-
1
);
/* still succeed without a buffer for the result */
hr
=
pURLSubRegQueryA
(
regpath_iemain
,
start_page
,
REG_SZ
,
NULL
,
0
,
-
1
);
ok
(
hr
==
S_OK
,
"got 0x%x (expected S_OK)
\n
"
,
hr
);
/* still succeed, when a length is given without a buffer */
hr
=
pURLSubRegQueryA
(
regpath_iemain
,
start_page
,
REG_SZ
,
NULL
,
INTERNET_MAX_URL_LENGTH
,
-
1
);
ok
(
hr
==
S_OK
,
"got 0x%x (expected S_OK)
\n
"
,
hr
);
/* this value does not exist */
memset
(
buffer
,
'#'
,
sizeof
(
buffer
)
-
2
);
buffer
[
sizeof
(
buffer
)
-
1
]
=
'\0'
;
hr
=
pURLSubRegQueryA
(
regpath_iemain
,
does_not_exist
,
REG_SZ
,
buffer
,
INTERNET_MAX_URL_LENGTH
,
-
1
);
/* random bytes are copied to the buffer */
ok
((
hr
==
E_FAIL
),
"got 0x%x (expected E_FAIL)
\n
"
,
hr
);
/* the third parameter is ignored. Is it really a type? (data is REG_SZ) */
memset
(
buffer
,
'#'
,
sizeof
(
buffer
)
-
2
);
buffer
[
sizeof
(
buffer
)
-
1
]
=
'\0'
;
hr
=
pURLSubRegQueryA
(
regpath_iemain
,
start_page
,
REG_DWORD
,
buffer
,
INTERNET_MAX_URL_LENGTH
,
-
1
);
used
=
lstrlenA
(
buffer
);
ok
((
hr
==
S_OK
)
&&
(
used
==
len
),
"got 0x%x and %d (expected S_OK and %d)
\n
"
,
hr
,
used
,
len
);
/* the function works for HKCU and HKLM */
memset
(
buffer
,
'#'
,
sizeof
(
buffer
)
-
2
);
buffer
[
sizeof
(
buffer
)
-
1
]
=
'\0'
;
hr
=
pURLSubRegQueryA
(
regpath_shellfolders
,
appdata
,
REG_SZ
,
buffer
,
INTERNET_MAX_URL_LENGTH
,
-
1
);
used
=
lstrlenA
(
buffer
);
ok
(
hr
==
S_OK
,
"got 0x%x and %d (expected S_OK)
\n
"
,
hr
,
used
);
memset
(
buffer
,
'#'
,
sizeof
(
buffer
)
-
2
);
buffer
[
sizeof
(
buffer
)
-
1
]
=
'\0'
;
hr
=
pURLSubRegQueryA
(
regpath_shellfolders
,
common_appdata
,
REG_SZ
,
buffer
,
INTERNET_MAX_URL_LENGTH
,
-
1
);
used
=
lstrlenA
(
buffer
);
ok
(
hr
==
S_OK
,
"got 0x%x and %d (expected S_OK)
\n
"
,
hr
,
used
);
/* todo: what does the last parameter mean? */
}
/* ################ */
START_TEST
(
shdocvw
)
{
init_functions
();
test_URLSubRegQueryA
();
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment