[SXS_WINETEST] Sync with Wine Staging 1.7.37. CORE-9246
[reactos.git] / rostests / winetests / sxs / name.c
1 /*
2 * Copyright 2012 Hans Leidekker for CodeWeavers
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19 #include <stdio.h>
20
21 #define COBJMACROS
22
23 #include <windows.h>
24 #include <winsxs.h>
25 #include <corerror.h>
26
27 #include "wine/test.h"
28
29 static const WCHAR wine1W[] =
30 {'w','i','n','e',0};
31 static const WCHAR wine2W[] =
32 {'w','i','n','e',',','v','e','r','s','i','o','n','=','\"','1','.','2','.','3','.','4','\"',0};
33 static const WCHAR wine3W[] =
34 {'w','i','n','e',',','v','e','r','s','i','o','n','=','1','.','2','.','3','.','4',0};
35 static const WCHAR wine4W[] =
36 {'w','i','n','e',',',' ','v','e','r','s','i','o','n','=','\"','1','.','2','.','3','.','4','\"',0};
37 static const WCHAR wine5W[] =
38 {'w','i','n','e',',','v','e','r','s','i','o','n',' ','=','\"','1','.','2','.','3','.','4','\"',0};
39 static const WCHAR wine6W[] =
40 {'w','i','n','e',',','v','e','r','s','i','o','n','=',' ','\"','1','.','2','.','3','.','4','\"',0};
41 static const WCHAR wine7W[] =
42 {'w','i','n','e',' ',',','v','e','r','s','i','o','n','=','\"','1','.','2','.','3','.','4','\"',0};
43 static const WCHAR wine8W[] =
44 {'w','i','n','e',',','v','e','r','s','i','o','n',0};
45 static const WCHAR wine9W[] =
46 {'w','i','n','e',',','t','y','p','e','=','\"','\"',0};
47 static const WCHAR wine10W[] =
48 {'w','i','n','e',',','t','y','p','e','=','\"','w','i','n','3','2',0};
49
50 static void test_CreateAssemblyNameObject( void )
51 {
52 static const WCHAR emptyW[] = {0};
53 IAssemblyName *name;
54 HRESULT hr;
55
56 hr = CreateAssemblyNameObject( NULL, wine1W, CANOF_PARSE_DISPLAY_NAME, NULL );
57 ok(hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr);
58
59 name = (IAssemblyName *)0xdeadbeef;
60 hr = CreateAssemblyNameObject( &name, NULL, CANOF_PARSE_DISPLAY_NAME, NULL );
61 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
62 ok( !name, "expected NULL got %p\n", name );
63
64 name = (IAssemblyName *)0xdeadbeef;
65 hr = CreateAssemblyNameObject( &name, emptyW, CANOF_PARSE_DISPLAY_NAME, NULL );
66 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
67 ok( !name, "expected NULL got %p\n", name );
68
69 name = (IAssemblyName *)0xdeadbeef;
70 hr = CreateAssemblyNameObject( &name, NULL, CANOF_SET_DEFAULT_VALUES, NULL );
71 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
72 ok( !name, "expected NULL got %p\n", name );
73
74 name = (IAssemblyName *)0xdeadbeef;
75 hr = CreateAssemblyNameObject( &name, emptyW, CANOF_SET_DEFAULT_VALUES, NULL );
76 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
77 ok( !name, "expected NULL got %p\n", name );
78
79 name = NULL;
80 hr = CreateAssemblyNameObject( &name, wine1W, CANOF_PARSE_DISPLAY_NAME, NULL );
81 ok( hr == S_OK, "expected S_OK got %08x\n", hr );
82 ok( name != NULL, "expected non-NULL name\n" );
83 IAssemblyName_Release( name );
84
85 hr = CreateAssemblyNameObject( NULL, wine1W, CANOF_SET_DEFAULT_VALUES, NULL );
86 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
87
88 name = (IAssemblyName *)0xdeadbeef;
89 hr = CreateAssemblyNameObject( &name, NULL, CANOF_SET_DEFAULT_VALUES, NULL );
90 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
91 ok( !name, "expected NULL got %p\n", name );
92
93 name = (IAssemblyName *)0xdeadbeef;
94 hr = CreateAssemblyNameObject( &name, emptyW, CANOF_SET_DEFAULT_VALUES, NULL );
95 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
96 ok( !name, "expected NULL got %p\n", name );
97
98 name = (IAssemblyName *)0xdeadbeef;
99 hr = CreateAssemblyNameObject( &name, NULL, CANOF_SET_DEFAULT_VALUES, NULL );
100 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
101 ok( !name, "expected NULL got %p\n", name );
102
103 name = (IAssemblyName *)0xdeadbeef;
104 hr = CreateAssemblyNameObject( &name, emptyW, CANOF_SET_DEFAULT_VALUES, NULL );
105 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
106 ok( !name, "expected NULL got %p\n", name );
107
108 name = (IAssemblyName *)0xdeadbeef;
109 hr = CreateAssemblyNameObject( &name, wine1W, CANOF_SET_DEFAULT_VALUES, NULL );
110 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
111 ok( !name, "expected NULL got %p\n", name );
112
113 hr = CreateAssemblyNameObject( NULL, wine1W, 0, NULL );
114 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
115
116 name = (IAssemblyName *)0xdeadbeef;
117 hr = CreateAssemblyNameObject( &name, NULL, 0, NULL );
118 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
119 ok( !name, "expected NULL got %p\n", name );
120
121 name = (IAssemblyName *)0xdeadbeef;
122 hr = CreateAssemblyNameObject( &name, emptyW, 0, NULL );
123 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
124 ok( !name, "expected NULL got %p\n", name );
125
126 name = (IAssemblyName *)0xdeadbeef;
127 hr = CreateAssemblyNameObject( &name, NULL, 0, NULL );
128 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
129 ok( !name, "expected NULL got %p\n", name );
130
131 name = (IAssemblyName *)0xdeadbeef;
132 hr = CreateAssemblyNameObject( &name, emptyW, 0, NULL );
133 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
134 ok( !name, "expected NULL got %p\n", name );
135
136 name = (IAssemblyName *)0xdeadbeef;
137 hr = CreateAssemblyNameObject( &name, wine1W, 0, NULL );
138 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
139
140 hr = CreateAssemblyNameObject( NULL, wine1W, CANOF_SET_DEFAULT_VALUES|CANOF_PARSE_DISPLAY_NAME, NULL );
141 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
142
143 name = (IAssemblyName *)0xdeadbeef;
144 hr = CreateAssemblyNameObject( &name, NULL, CANOF_SET_DEFAULT_VALUES|CANOF_PARSE_DISPLAY_NAME, NULL );
145 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
146 ok( !name, "expected NULL got %p\n", name );
147
148 name = (IAssemblyName *)0xdeadbeef;
149 hr = CreateAssemblyNameObject( &name, emptyW, CANOF_SET_DEFAULT_VALUES|CANOF_PARSE_DISPLAY_NAME, NULL );
150 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
151 ok( !name, "expected NULL got %p\n", name );
152
153 name = (IAssemblyName *)0xdeadbeef;
154 hr = CreateAssemblyNameObject( &name, NULL, CANOF_SET_DEFAULT_VALUES|CANOF_PARSE_DISPLAY_NAME, NULL );
155 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
156 ok( !name, "expected NULL got %p\n", name );
157
158 name = (IAssemblyName *)0xdeadbeef;
159 hr = CreateAssemblyNameObject( &name, emptyW, CANOF_SET_DEFAULT_VALUES|CANOF_PARSE_DISPLAY_NAME, NULL );
160 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
161 ok( !name, "expected NULL got %p\n", name );
162
163 name = (IAssemblyName *)0xdeadbeef;
164 hr = CreateAssemblyNameObject( &name, wine1W, CANOF_SET_DEFAULT_VALUES|CANOF_PARSE_DISPLAY_NAME, NULL );
165 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
166 ok( !name, "expected NULL got %p\n", name );
167
168 name = NULL;
169 hr = CreateAssemblyNameObject( &name, wine2W, CANOF_PARSE_DISPLAY_NAME, NULL );
170 ok( hr == S_OK, "expected S_OK got %08x\n", hr );
171 ok( name != NULL, "expected non-NULL name\n" );
172 IAssemblyName_Release( name );
173
174 name = (IAssemblyName *)0xdeadbeef;
175 hr = CreateAssemblyNameObject( &name, wine3W, CANOF_PARSE_DISPLAY_NAME, NULL );
176 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
177 ok( !name, "expected NULL got %p\n", name );
178
179 name = (IAssemblyName *)0xdeadbeef;
180 hr = CreateAssemblyNameObject( &name, wine4W, CANOF_PARSE_DISPLAY_NAME, NULL );
181 ok( hr == HRESULT_FROM_WIN32( ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME ),
182 "expected ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME got %08x\n", hr );
183 ok( !name, "expected NULL got %p\n", name );
184
185 name = (IAssemblyName *)0xdeadbeef;
186 hr = CreateAssemblyNameObject( &name, wine5W, CANOF_PARSE_DISPLAY_NAME, NULL );
187 ok( hr == HRESULT_FROM_WIN32( ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME ),
188 "expected ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME got %08x\n", hr );
189 ok( !name, "expected NULL got %p\n", name );
190
191 name = (IAssemblyName *)0xdeadbeef;
192 hr = CreateAssemblyNameObject( &name, wine6W, CANOF_PARSE_DISPLAY_NAME, NULL );
193 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
194 ok( !name, "expected NULL got %p\n", name );
195
196 name = NULL;
197 hr = CreateAssemblyNameObject( &name, wine7W, CANOF_PARSE_DISPLAY_NAME, NULL );
198 ok( hr == S_OK, "expected S_OK got %08x\n", hr );
199 ok( name != NULL, "expected non-NULL name\n" );
200 IAssemblyName_Release( name );
201
202 name = (IAssemblyName *)0xdeadbeef;
203 hr = CreateAssemblyNameObject( &name, wine8W, CANOF_PARSE_DISPLAY_NAME, NULL );
204 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
205 ok( !name, "expected NULL got %p\n", name );
206
207 name = NULL;
208 hr = CreateAssemblyNameObject( &name, wine9W, CANOF_PARSE_DISPLAY_NAME, NULL );
209 ok( hr == S_OK, "expected S_OK got %08x\n", hr );
210 ok( name != NULL, "expected non-NULL name\n" );
211 IAssemblyName_Release( name );
212
213 name = (IAssemblyName *)0xdeadbeef;
214 hr = CreateAssemblyNameObject( &name, wine10W, CANOF_PARSE_DISPLAY_NAME, NULL );
215 ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
216 ok( !name, "expected NULL got %p\n", name );
217 }
218
219 START_TEST(name)
220 {
221 test_CreateAssemblyNameObject();
222 }