Release 1.5.29.
[wine] / dlls / sxs / tests / 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','=','\"','0','1','.','2','.','3','.','4','\"',',',
33      't','y','p','e','=','\"','w','i','n','3','2','\"',',',
34      'p','r','o','c','e','s','s','o','r','A','r','c','h','i','t','e','c','t','u','r','e','=',
35      '\"','x','8','6','\"',',','p','u','b','l','i','c','K','e','y','T','o','k','e','n','=',
36      '\"','1','2','3','4','5','6','7','8','9','0','A','B','C','D','E','F','\"',0};
37 static const WCHAR wine3W[] =
38     {'w','i','n','e',',','v','e','r','s','i','o','n','=','\"','1','.','2','.','3','.','4','\"',0};
39 static const WCHAR wine4W[] =
40     {'w','i','n','e',',','v','e','r','s','i','o','n','=','1','.','2','.','3','.','4',0};
41 static const WCHAR wine5W[] =
42     {'w','i','n','e',',',' ','v','e','r','s','i','o','n','=','\"','1','.','2','.','3','.','4','\"',0};
43 static const WCHAR wine6W[] =
44     {'w','i','n','e',',','v','e','r','s','i','o','n',' ','=','\"','1','.','2','.','3','.','4','\"',0};
45 static const WCHAR wine7W[] =
46     {'w','i','n','e',',','v','e','r','s','i','o','n','=',' ','\"','1','.','2','.','3','.','4','\"',0};
47 static const WCHAR wine8W[] =
48     {'w','i','n','e',' ',',','v','e','r','s','i','o','n','=','\"','1','.','2','.','3','.','4','\"',0};
49 static const WCHAR wine9W[] =
50     {'w','i','n','e',',','v','e','r','s','i','o','n',0};
51 static const WCHAR wine10W[] =
52     {'w','i','n','e',',','t','y','p','e','=','\"','\"',0};
53 static const WCHAR wine11W[] =
54     {'w','i','n','e',',','t','y','p','e','=','\"','w','i','n','3','2',0};
55
56 static void test_CreateAssemblyNameObject( void )
57 {
58     static const WCHAR emptyW[] = {0};
59     IAssemblyName *name;
60     HRESULT hr;
61
62     hr = CreateAssemblyNameObject( NULL, wine1W, CANOF_PARSE_DISPLAY_NAME, NULL );
63     ok(hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr);
64
65     name = (IAssemblyName *)0xdeadbeef;
66     hr = CreateAssemblyNameObject( &name, NULL, CANOF_PARSE_DISPLAY_NAME, NULL );
67     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
68     ok( !name, "expected NULL got %p\n", name );
69
70     name = (IAssemblyName *)0xdeadbeef;
71     hr = CreateAssemblyNameObject( &name, emptyW, CANOF_PARSE_DISPLAY_NAME, NULL );
72     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
73     ok( !name, "expected NULL got %p\n", name );
74
75     name = (IAssemblyName *)0xdeadbeef;
76     hr = CreateAssemblyNameObject( &name, NULL, CANOF_SET_DEFAULT_VALUES, NULL );
77     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
78     ok( !name, "expected NULL got %p\n", name );
79
80     name = (IAssemblyName *)0xdeadbeef;
81     hr = CreateAssemblyNameObject( &name, emptyW, CANOF_SET_DEFAULT_VALUES, NULL );
82     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
83     ok( !name, "expected NULL got %p\n", name );
84
85     name = NULL;
86     hr = CreateAssemblyNameObject( &name, wine1W, CANOF_PARSE_DISPLAY_NAME, NULL );
87     ok( hr == S_OK, "expected S_OK got %08x\n", hr );
88     ok( name != NULL, "expected non-NULL name\n" );
89     IAssemblyName_Release( name );
90
91     hr = CreateAssemblyNameObject( NULL, wine1W, CANOF_SET_DEFAULT_VALUES, NULL );
92     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
93
94     name = (IAssemblyName *)0xdeadbeef;
95     hr = CreateAssemblyNameObject( &name, NULL, CANOF_SET_DEFAULT_VALUES, NULL );
96     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
97     ok( !name, "expected NULL got %p\n", name );
98
99     name = (IAssemblyName *)0xdeadbeef;
100     hr = CreateAssemblyNameObject( &name, emptyW, CANOF_SET_DEFAULT_VALUES, NULL );
101     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
102     ok( !name, "expected NULL got %p\n", name );
103
104     name = (IAssemblyName *)0xdeadbeef;
105     hr = CreateAssemblyNameObject( &name, NULL, CANOF_SET_DEFAULT_VALUES, NULL );
106     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
107     ok( !name, "expected NULL got %p\n", name );
108
109     name = (IAssemblyName *)0xdeadbeef;
110     hr = CreateAssemblyNameObject( &name, emptyW, CANOF_SET_DEFAULT_VALUES, NULL );
111     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
112     ok( !name, "expected NULL got %p\n", name );
113
114     name = (IAssemblyName *)0xdeadbeef;
115     hr = CreateAssemblyNameObject( &name, wine1W, CANOF_SET_DEFAULT_VALUES, NULL );
116     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
117     ok( !name, "expected NULL got %p\n", name );
118
119     hr = CreateAssemblyNameObject( NULL, wine1W, 0, NULL );
120     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
121
122     name = (IAssemblyName *)0xdeadbeef;
123     hr = CreateAssemblyNameObject( &name, NULL, 0, NULL );
124     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
125     ok( !name, "expected NULL got %p\n", name );
126
127     name = (IAssemblyName *)0xdeadbeef;
128     hr = CreateAssemblyNameObject( &name, emptyW, 0, NULL );
129     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
130     ok( !name, "expected NULL got %p\n", name );
131
132     name = (IAssemblyName *)0xdeadbeef;
133     hr = CreateAssemblyNameObject( &name, NULL, 0, NULL );
134     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
135     ok( !name, "expected NULL got %p\n", name );
136
137     name = (IAssemblyName *)0xdeadbeef;
138     hr = CreateAssemblyNameObject( &name, emptyW, 0, NULL );
139     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
140     ok( !name, "expected NULL got %p\n", name );
141
142     name = (IAssemblyName *)0xdeadbeef;
143     hr = CreateAssemblyNameObject( &name, wine1W, 0, NULL );
144     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
145
146     hr = CreateAssemblyNameObject( NULL, wine1W, CANOF_SET_DEFAULT_VALUES|CANOF_PARSE_DISPLAY_NAME, NULL );
147     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
148
149     name = (IAssemblyName *)0xdeadbeef;
150     hr = CreateAssemblyNameObject( &name, NULL, CANOF_SET_DEFAULT_VALUES|CANOF_PARSE_DISPLAY_NAME, NULL );
151     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
152     ok( !name, "expected NULL got %p\n", name );
153
154     name = (IAssemblyName *)0xdeadbeef;
155     hr = CreateAssemblyNameObject( &name, emptyW, CANOF_SET_DEFAULT_VALUES|CANOF_PARSE_DISPLAY_NAME, NULL );
156     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
157     ok( !name, "expected NULL got %p\n", name );
158
159     name = (IAssemblyName *)0xdeadbeef;
160     hr = CreateAssemblyNameObject( &name, NULL, CANOF_SET_DEFAULT_VALUES|CANOF_PARSE_DISPLAY_NAME, NULL );
161     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
162     ok( !name, "expected NULL got %p\n", name );
163
164     name = (IAssemblyName *)0xdeadbeef;
165     hr = CreateAssemblyNameObject( &name, emptyW, CANOF_SET_DEFAULT_VALUES|CANOF_PARSE_DISPLAY_NAME, NULL );
166     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
167     ok( !name, "expected NULL got %p\n", name );
168
169     name = (IAssemblyName *)0xdeadbeef;
170     hr = CreateAssemblyNameObject( &name, wine1W, CANOF_SET_DEFAULT_VALUES|CANOF_PARSE_DISPLAY_NAME, NULL );
171     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
172     ok( !name, "expected NULL got %p\n", name );
173
174     name = NULL;
175     hr = CreateAssemblyNameObject( &name, wine3W, CANOF_PARSE_DISPLAY_NAME, NULL );
176     ok( hr == S_OK, "expected S_OK got %08x\n", hr );
177     ok( name != NULL, "expected non-NULL name\n" );
178     IAssemblyName_Release( name );
179
180     name = (IAssemblyName *)0xdeadbeef;
181     hr = CreateAssemblyNameObject( &name, wine4W, CANOF_PARSE_DISPLAY_NAME, NULL );
182     ok( hr == E_INVALIDARG, "expected E_INVALIDARG 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 == HRESULT_FROM_WIN32( ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME ),
194         "expected ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME got %08x\n", hr );
195     ok( !name, "expected NULL got %p\n", name );
196
197     name = (IAssemblyName *)0xdeadbeef;
198     hr = CreateAssemblyNameObject( &name, wine7W, CANOF_PARSE_DISPLAY_NAME, NULL );
199     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
200     ok( !name, "expected NULL got %p\n", name );
201
202     name = NULL;
203     hr = CreateAssemblyNameObject( &name, wine8W, CANOF_PARSE_DISPLAY_NAME, NULL );
204     ok( hr == S_OK, "expected S_OK got %08x\n", hr );
205     ok( name != NULL, "expected non-NULL name\n" );
206     IAssemblyName_Release( name );
207
208     name = (IAssemblyName *)0xdeadbeef;
209     hr = CreateAssemblyNameObject( &name, wine9W, CANOF_PARSE_DISPLAY_NAME, NULL );
210     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
211     ok( !name, "expected NULL got %p\n", name );
212
213     name = NULL;
214     hr = CreateAssemblyNameObject( &name, wine10W, CANOF_PARSE_DISPLAY_NAME, NULL );
215     ok( hr == S_OK, "expected S_OK got %08x\n", hr );
216     ok( name != NULL, "expected non-NULL name\n" );
217     IAssemblyName_Release( name );
218
219     name = (IAssemblyName *)0xdeadbeef;
220     hr = CreateAssemblyNameObject( &name, wine11W, CANOF_PARSE_DISPLAY_NAME, NULL );
221     ok( hr == E_INVALIDARG, "expected E_INVALIDARG got %08x\n", hr );
222     ok( !name, "expected NULL got %p\n", name );
223 }
224
225 START_TEST(name)
226 {
227     test_CreateAssemblyNameObject();
228 }