2 // AssemblyNameTest.cs - NUnit Test Cases for AssemblyName
5 // Sebastien Pouliot <sebastien@ximian.com>
7 // (C) 2002 Motus Technologies Inc. (http://www.motus.com)
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
11 using NUnit.Framework;
13 using System.Configuration.Assemblies;
15 using System.Reflection;
17 using System.Reflection.Emit;
19 using System.Runtime.Serialization;
20 using System.Threading;
21 using System.Globalization;
22 using System.Runtime.Serialization.Formatters.Binary;
23 using System.Security;
24 using System.Security.Permissions;
26 namespace MonoTests.System.Reflection {
29 public class AssemblyNameTest {
30 private AssemblyName an;
32 private string tempDir = Path.Combine (Path.GetTempPath (), "MonoTests.System.Reflection.AssemblyNameTest");
34 #if !TARGET_JVM // Thread.GetDomain is not supported for TARGET_JVM.
35 private AppDomain domain;
38 // created with "sn -o test.snk test.txt"
39 static byte[] keyPair = {
40 0x07, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x52, 0x53,
41 0x41, 0x32, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00,
42 0x3D, 0xBD, 0x72, 0x08, 0xC6, 0x2B, 0x0E, 0xA8, 0xC1, 0xC0,
43 0x58, 0x07, 0x2B, 0x63, 0x5F, 0x7C, 0x9A, 0xBD, 0xCB, 0x22,
44 0xDB, 0x20, 0xB2, 0xA9, 0xDA, 0xDA, 0xEF, 0xE8, 0x00, 0x64,
45 0x2F, 0x5D, 0x8D, 0xEB, 0x78, 0x02, 0xF7, 0xA5, 0x36, 0x77,
46 0x28, 0xD7, 0x55, 0x8D, 0x14, 0x68, 0xDB, 0xEB, 0x24, 0x09,
47 0xD0, 0x2B, 0x13, 0x1B, 0x92, 0x6E, 0x2E, 0x59, 0x54, 0x4A,
48 0xAC, 0x18, 0xCF, 0xC9, 0x09, 0x02, 0x3F, 0x4F, 0xA8, 0x3E,
49 0x94, 0x00, 0x1F, 0xC2, 0xF1, 0x1A, 0x27, 0x47, 0x7D, 0x10,
50 0x84, 0xF5, 0x14, 0xB8, 0x61, 0x62, 0x1A, 0x0C, 0x66, 0xAB,
51 0xD2, 0x4C, 0x4B, 0x9F, 0xC9, 0x0F, 0x3C, 0xD8, 0x92, 0x0F,
52 0xF5, 0xFF, 0xCE, 0xD7, 0x6E, 0x5C, 0x6F, 0xB1, 0xF5, 0x7D,
53 0xD3, 0x56, 0xF9, 0x67, 0x27, 0xA4, 0xA5, 0x48, 0x5B, 0x07,
54 0x93, 0x44, 0x00, 0x4A, 0xF8, 0xFF, 0xA4, 0xCB, 0x73, 0xC0,
55 0x6A, 0x62, 0xB4, 0xB7, 0xC8, 0x92, 0x58, 0x87, 0xCD, 0x07,
56 0x0C, 0x7D, 0x6C, 0xC1, 0x4A, 0xFC, 0x82, 0x57, 0x0E, 0x43,
57 0x85, 0x09, 0x75, 0x98, 0x51, 0xBB, 0x35, 0xF5, 0x64, 0x83,
58 0xC7, 0x79, 0x89, 0x5C, 0x55, 0x36, 0x66, 0xAB, 0x27, 0xA4,
59 0xD9, 0xD4, 0x7E, 0x6B, 0x67, 0x64, 0xC1, 0x54, 0x4E, 0x37,
60 0xF1, 0x4E, 0xCA, 0xB3, 0xE5, 0x63, 0x91, 0x57, 0x12, 0x14,
61 0xA6, 0xEA, 0x8F, 0x8F, 0x2B, 0xFE, 0xF3, 0xE9, 0x16, 0x08,
62 0x2B, 0x86, 0xBC, 0x26, 0x0D, 0xD0, 0xC6, 0xC4, 0x1A, 0x72,
63 0x43, 0x76, 0xDC, 0xFF, 0x28, 0x52, 0xA1, 0xDE, 0x8D, 0xFA,
64 0xD5, 0x1F, 0x0B, 0xB5, 0x4F, 0xAF, 0x06, 0x79, 0x11, 0xEE,
65 0xA8, 0xEC, 0xD3, 0x74, 0x55, 0xA2, 0x80, 0xFC, 0xF8, 0xD9,
66 0x50, 0x69, 0x48, 0x01, 0xC2, 0x5A, 0x04, 0x56, 0xB4, 0x3E,
67 0x24, 0x32, 0x20, 0xB5, 0x2C, 0xDE, 0xBB, 0xBD, 0x13, 0xFD,
68 0x13, 0xF7, 0x03, 0x3E, 0xE3, 0x37, 0x84, 0x74, 0xE7, 0xD0,
69 0x5E, 0x9E, 0xB6, 0x26, 0xAE, 0x6E, 0xB0, 0x55, 0x6A, 0x52,
70 0x63, 0x6F, 0x5A, 0x9D, 0xF2, 0x67, 0xD6, 0x61, 0x4F, 0x7A,
71 0x45, 0xEE, 0x5C, 0x3D, 0x2B, 0x7C, 0xB2, 0x40, 0x79, 0x54,
72 0x84, 0xD1, 0xBE, 0x61, 0x3E, 0x5E, 0xD6, 0x18, 0x8E, 0x14,
73 0x98, 0xFC, 0x35, 0xBF, 0x5F, 0x1A, 0x20, 0x2E, 0x1A, 0xD8,
74 0xFF, 0xC4, 0x6B, 0xC0, 0xC9, 0x7D, 0x06, 0xEF, 0x09, 0xF9,
75 0xF3, 0x69, 0xFC, 0xBC, 0xA2, 0xE6, 0x80, 0x22, 0xB9, 0x79,
76 0x7E, 0xEF, 0x57, 0x9F, 0x49, 0xE1, 0xBC, 0x0D, 0xB6, 0xA1,
77 0xFE, 0x8D, 0xBC, 0xBB, 0xA3, 0x05, 0x02, 0x6B, 0x04, 0x45,
78 0xF7, 0x5D, 0xEE, 0x43, 0x06, 0xD6, 0x9C, 0x94, 0x48, 0x1A,
79 0x0B, 0x9C, 0xBC, 0xB4, 0x4E, 0x93, 0x60, 0x87, 0xCD, 0x58,
80 0xD6, 0x9A, 0x39, 0xA6, 0xC0, 0x7F, 0x8E, 0xFF, 0x25, 0xC1,
81 0xD7, 0x2C, 0xF6, 0xF4, 0x6F, 0x24, 0x52, 0x0B, 0x39, 0x42,
82 0x1B, 0x0D, 0x04, 0xC1, 0x93, 0x2A, 0x19, 0x1C, 0xF0, 0xB1,
83 0x9B, 0xC1, 0x24, 0x6D, 0x1B, 0x0B, 0xDA, 0x1C, 0x8B, 0x72,
84 0x48, 0xF0, 0x3E, 0x52, 0xBF, 0x0A, 0x84, 0x3A, 0x9B, 0xC8,
85 0x6D, 0x13, 0x1E, 0x72, 0xF4, 0x46, 0x93, 0x88, 0x1A, 0x5F,
86 0x4C, 0x3C, 0xE5, 0x9D, 0x6E, 0xBB, 0x4E, 0xDD, 0x5D, 0x1F,
87 0x11, 0x40, 0xF4, 0xD7, 0xAF, 0xB3, 0xAB, 0x9A, 0x99, 0x15,
88 0xF0, 0xDC, 0xAA, 0xFF, 0x9F, 0x2D, 0x9E, 0x56, 0x4F, 0x35,
89 0x5B, 0xBA, 0x06, 0x99, 0xEA, 0xC6, 0xB4, 0x48, 0x51, 0x17,
90 0x1E, 0xD1, 0x95, 0x84, 0x81, 0x18, 0xC0, 0xF1, 0x71, 0xDE,
91 0x44, 0x42, 0x02, 0x06, 0xAC, 0x0E, 0xA8, 0xE2, 0xF3, 0x1F,
92 0x96, 0x1F, 0xBE, 0xB6, 0x1F, 0xB5, 0x3E, 0xF6, 0x81, 0x05,
93 0x20, 0xFA, 0x2E, 0x40, 0x2E, 0x4D, 0xA0, 0x0E, 0xDA, 0x42,
94 0x9C, 0x05, 0xAA, 0x9E, 0xAF, 0x5C, 0xF7, 0x3A, 0x3F, 0xBB,
95 0x91, 0x73, 0x45, 0x27, 0xA8, 0xA2, 0x07, 0x4A, 0xEF, 0x59,
96 0x1E, 0x97, 0x9D, 0xE0, 0x30, 0x5A, 0x83, 0xCE, 0x1E, 0x57,
97 0x32, 0x89, 0x43, 0x41, 0x28, 0x7D, 0x14, 0x8D, 0x8B, 0x41,
98 0x1A, 0x56, 0x76, 0x43, 0xDB, 0x64, 0x86, 0x41, 0x64, 0x8D,
99 0x4C, 0x91, 0x83, 0x4E, 0xF5, 0x6C };
101 static byte [] kp_token = { 0xff, 0xef, 0x94, 0x53, 0x67, 0x69, 0xda, 0x06 };
103 static byte [] publicKey1 = {
104 0x00, 0x24, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x94, 0x00,
105 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00,
106 0x52, 0x53, 0x41, 0x31, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00,
107 0x01, 0x00, 0x3d, 0xbd, 0x72, 0x08, 0xc6, 0x2b, 0x0e, 0xa8,
108 0xc1, 0xc0, 0x58, 0x07, 0x2b, 0x63, 0x5f, 0x7c, 0x9a, 0xbd,
109 0xcb, 0x22, 0xdb, 0x20, 0xb2, 0xa9, 0xda, 0xda, 0xef, 0xe8,
110 0x00, 0x64, 0x2f, 0x5d, 0x8d, 0xeb, 0x78, 0x02, 0xf7, 0xa5,
111 0x36, 0x77, 0x28, 0xd7, 0x55, 0x8d, 0x14, 0x68, 0xdb, 0xeb,
112 0x24, 0x09, 0xd0, 0x2b, 0x13, 0x1b, 0x92, 0x6e, 0x2e, 0x59,
113 0x54, 0x4a, 0xac, 0x18, 0xcf, 0xc9, 0x09, 0x02, 0x3f, 0x4f,
114 0xa8, 0x3e, 0x94, 0x00, 0x1f, 0xc2, 0xf1, 0x1a, 0x27, 0x47,
115 0x7d, 0x10, 0x84, 0xf5, 0x14, 0xb8, 0x61, 0x62, 0x1a, 0x0c,
116 0x66, 0xab, 0xd2, 0x4c, 0x4b, 0x9f, 0xc9, 0x0f, 0x3c, 0xd8,
117 0x92, 0x0f, 0xf5, 0xff, 0xce, 0xd7, 0x6e, 0x5c, 0x6f, 0xb1,
118 0xf5, 0x7d, 0xd3, 0x56, 0xf9, 0x67, 0x27, 0xa4, 0xa5, 0x48,
119 0x5b, 0x07, 0x93, 0x44, 0x00, 0x4a, 0xf8, 0xff, 0xa4, 0xcb };
121 static byte [] pk_token1 = { 0xce, 0x52, 0x76, 0xd8, 0x68, 0x7e, 0Xc6, 0xdc };
123 static byte [] publicKey2 = {
124 0x00, 0x24, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x94, 0x00,
125 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00,
126 0x52, 0x53, 0x41, 0x31, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00,
127 0x01, 0x00, 0x6d, 0xfd, 0xba, 0xb9, 0x9d, 0x43, 0xf1, 0xef,
128 0x33, 0xe2, 0xbd, 0x2d, 0x7c, 0x26, 0xe2, 0x9d, 0x37, 0x4a,
129 0xdf, 0xb5, 0x63, 0x12, 0x90, 0x35, 0x90, 0x24, 0x8a, 0xe7,
130 0x5a, 0xc5, 0xa3, 0x3a, 0x84, 0xee, 0x9b, 0xd1, 0xac, 0x3a,
131 0x59, 0x2b, 0x91, 0x97, 0x83, 0x01, 0x4f, 0x92, 0x01, 0xc6,
132 0x3b, 0x96, 0x20, 0x19, 0xeb, 0xdc, 0x2c, 0x6f, 0x1f, 0xbb,
133 0x04, 0x9b, 0x62, 0x39, 0xc0, 0xff, 0x58, 0x64, 0x17, 0x48,
134 0xc2, 0x5b, 0x94, 0x98, 0x35, 0x50, 0x1f, 0x27, 0xbc, 0xea,
135 0x91, 0x92, 0x3f, 0x5c, 0x33, 0x12, 0x17, 0x65, 0x56, 0x3e,
136 0x40, 0x44, 0x27, 0x1d, 0xef, 0x0e, 0x72, 0xab, 0xd4, 0xf0,
137 0x49, 0xa3, 0x95, 0x1a, 0x61, 0xb4, 0x47, 0x90, 0x20, 0xcc,
138 0x50, 0xa4, 0x4d, 0x8b, 0x8a, 0x58, 0x17, 0x70, 0xa4, 0x53,
139 0xe4, 0xdc, 0x73, 0x5d, 0x8c, 0x4e, 0xb8, 0xd3, 0xa9, 0xbf };
141 static byte [] pk_token2 = { 0x22, 0x7c, 0x9c, 0x2c, 0x3c, 0x00, 0x63, 0xe9 };
143 static byte [] publicKey3 = {
144 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
145 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
147 static byte [] pk_token3 = { 0xb7, 0x7a, 0x5c, 0x56, 0x19, 0x34, 0xe0, 0x89 };
153 if (Directory.Exists (tempDir))
154 Directory.Delete (tempDir, true);
159 Directory.CreateDirectory (tempDir);
161 #if !TARGET_JVM // Thread.GetDomain is not supported for TARGET_JVM.
162 domain = Thread.GetDomain ();
167 public void TearDown ()
170 if (Directory.Exists (tempDir))
171 Directory.Delete (tempDir, true);
174 // This can happen on windows when the directory contains
175 // files opened by the CLR
180 public void Constructor0 ()
182 an = new AssemblyName ();
183 Assert.IsNull (an.CodeBase, "CodeBase");
184 Assert.IsNull (an.CultureInfo, "CultureInfo");
185 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
186 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
188 Assert.AreEqual (String.Empty, an.FullName, "FullName");
190 Assert.IsNull (an.FullName, "FullName");
192 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
193 Assert.IsNull (an.KeyPair, "KeyPair");
194 Assert.IsNull (an.Name, "Name");
196 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
198 Assert.IsNull (an.Version, "Version");
199 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
200 an.VersionCompatibility, "VersionCompatibility");
201 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
202 Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
204 Assert.AreEqual (string.Empty, an.ToString (), "ToString");
206 Assert.AreEqual (typeof (AssemblyName).FullName, an.ToString (), "ToString");
211 public void SetPublicKey ()
213 an = new AssemblyName ();
214 Assert.IsNull (an.GetPublicKey (), "#A1");
215 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#A2");
216 Assert.IsNull (an.KeyPair, "#A3");
217 Assert.IsNull (an.GetPublicKeyToken (), "#A4");
219 an.SetPublicKey (publicKey1);
221 Assert.AreEqual (publicKey1, an.GetPublicKey (), "#B1");
222 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#B2");
223 Assert.IsNull (an.KeyPair, "#B3");
224 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#B4");
225 an.SetPublicKey (keyPair);
226 Assert.AreEqual (keyPair, an.GetPublicKey (), "#B5");
227 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#B6");
229 an.SetPublicKey ((byte []) null);
231 Assert.IsNull (an.GetPublicKey (), "#C1");
233 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#C2");
235 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#C2");
237 Assert.IsNull (an.KeyPair, "#C3");
238 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#C4");
240 an.SetPublicKey (publicKey1);
241 an.SetPublicKeyToken (pk_token1);
242 an.SetPublicKey ((byte []) null);
244 Assert.IsNull (an.GetPublicKey (), "#D1");
246 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#D2");
248 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#D2");
250 Assert.IsNull (an.KeyPair, "#D3");
251 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#D4");
253 an.SetPublicKey ((byte []) null);
254 an.SetPublicKeyToken (pk_token1);
255 an.SetPublicKey ((byte []) null);
257 Assert.IsNull (an.GetPublicKey (), "#E1");
259 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#E2");
261 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#E2");
263 Assert.IsNull (an.KeyPair, "#E3");
264 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#E4");
266 an = new AssemblyName ();
267 an.SetPublicKey (publicKey1);
268 an.SetPublicKey ((byte []) null);
269 an.SetPublicKeyToken (pk_token1);
270 an.SetPublicKey ((byte []) null);
272 Assert.IsNull (an.GetPublicKey (), "#F1");
273 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#F2");
274 Assert.IsNull (an.KeyPair, "#F3");
275 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#F4");
277 an = new AssemblyName ();
278 an.SetPublicKey (publicKey1);
279 an.SetPublicKey ((byte []) null);
280 an.SetPublicKeyToken (pk_token1);
282 Assert.IsNull (an.GetPublicKey (), "#G1");
284 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#G2");
286 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#G2");
288 Assert.IsNull (an.KeyPair, "#G3");
289 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#G4");
291 an = new AssemblyName ();
292 an.SetPublicKey (new byte [0]);
294 Assert.IsNotNull (an.GetPublicKey (), "#H1");
295 Assert.AreEqual (0, an.GetPublicKey ().Length, "#H2");
296 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#H3");
297 Assert.IsNull (an.KeyPair, "#H4");
299 Assert.IsNotNull (an.GetPublicKeyToken (), "#H5");
300 Assert.AreEqual (0, an.GetPublicKeyToken ().Length, "#H6");
302 Assert.IsNull (an.GetPublicKeyToken (), "#H5");
305 an = new AssemblyName ();
306 an.SetPublicKey (publicKey1);
307 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#I1");
308 an.SetPublicKey (publicKey1);
309 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#I2");
311 an = new AssemblyName ();
312 an.SetPublicKey ((byte []) null);
313 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#J1");
314 an.SetPublicKey ((byte []) null);
316 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#J2");
318 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#J2");
320 an.SetPublicKey ((byte []) null);
321 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#J3");
322 an.SetPublicKey (publicKey1);
323 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#J4");
324 Assert.AreEqual (publicKey1, an.GetPublicKey (), "#J5");
325 an.SetPublicKey (publicKey2);
326 Assert.AreEqual (publicKey2, an.GetPublicKey (), "#J6");
330 public void SetPublicKey_PublicKey_Invalid ()
332 an = new AssemblyName ();
333 an.SetPublicKey (new byte [] { 0x0b, 0x0a });
334 Assert.AreEqual (new byte [] { 0x0b, 0x0a }, an.GetPublicKey (), "#1");
338 public void SetPublicKeyToken ()
340 an = new AssemblyName ();
341 an.SetPublicKeyToken (pk_token1);
343 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#A1");
344 Assert.IsNull (an.KeyPair, "#A2");
345 Assert.IsNull (an.GetPublicKey (), "#A3");
346 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#A4");
348 an.SetPublicKeyToken ((byte []) null);
350 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#B1");
351 Assert.IsNull (an.KeyPair, "#B2");
352 Assert.IsNull (an.GetPublicKey (), "#B3");
353 Assert.IsNull (an.GetPublicKeyToken (), "#B4");
355 an.SetPublicKeyToken (new byte [0]);
357 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#C1");
358 Assert.IsNull (an.KeyPair, "#C2");
359 Assert.IsNull (an.GetPublicKey (), "#C3");
360 Assert.IsNotNull (an.GetPublicKeyToken (), "#C4");
361 Assert.AreEqual (0, an.GetPublicKeyToken ().Length, "#C5");
365 public void KeyPair ()
367 an = new AssemblyName ();
369 an.KeyPair = new StrongNameKeyPair (keyPair);
371 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#A1");
372 Assert.IsNotNull (an.KeyPair, "#A2");
373 Assert.IsNull (an.GetPublicKey (), "#A3");
374 Assert.IsNull (an.GetPublicKeyToken (), "#A4");
375 Assert.AreEqual ("test", an.FullName, "#A5");
379 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#B1");
380 Assert.IsNull (an.KeyPair, "#B2");
381 Assert.IsNull (an.GetPublicKey (), "#B3");
382 Assert.IsNull (an.GetPublicKeyToken (), "#B4");
383 Assert.AreEqual ("test", an.FullName, "#B5");
386 // !!! this assembly MUST NOT use a StrongName !!!
390 Assembly a = Assembly.GetExecutingAssembly ();
393 Assert.AreEqual (CultureInfo.InvariantCulture, an.CultureInfo, "CultureInfo");
394 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "Flags");
395 Assert.AreEqual (AssemblyHashAlgorithm.SHA1, an.HashAlgorithm, "HashAlgorithm");
396 Assert.IsNull (an.KeyPair, "KeyPair");
397 Assert.IsNotNull (an.Name, "Name");
399 //Assert.AreEqual (ProcessorArchitecture.MSIL, an.ProcessorArchitecture, "PA");
401 Assert.AreEqual (new Version (0, 0, 0, 0), an.Version, "Version");
402 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
403 an.VersionCompatibility, "VersionCompatibility");
404 Assert.AreEqual (new byte [0], an.GetPublicKey (), "GetPublicKey");
405 Assert.AreEqual (an.FullName, an.ToString (), "ToString");
409 public void Flags_Corlib ()
411 an = typeof (int).Assembly.GetName ();
412 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags);
416 public void Flags_Self ()
418 Assembly a = Assembly.GetExecutingAssembly ();
420 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags);
424 public void FullName_Corlib ()
426 an = typeof(int).Assembly.GetName ();
427 Assert.IsNotNull (an.FullName, "#1");
428 Assert.AreEqual (Consts.AssemblyCorlib, an.FullName, "#2");
432 public void FullName_Self ()
434 Assembly a = Assembly.GetExecutingAssembly ();
437 Assert.IsNotNull (an.FullName, "#1");
438 Assert.IsTrue (an.FullName.IndexOf ("Version=0.0.0.0") != -1, "#2");
439 Assert.IsTrue (an.FullName.IndexOf ("Culture=neutral") != -1, "#3");
440 Assert.IsTrue (an.FullName.IndexOf ("PublicKeyToken=null") != -1, "#4");
444 public void FullName_Name ()
446 const string assemblyName = "TestAssembly";
448 // tests for AssemblyName with only name
449 an = new AssemblyName ();
450 an.Name = assemblyName;
451 Assert.IsNotNull (an.FullName, "FullName2#1");
452 Assert.AreEqual (an.Name, an.FullName, "FullName2#2");
453 Assert.AreEqual (-1, an.FullName.IndexOf ("Culture="), "FullName2#3");
454 Assert.AreEqual (-1, an.FullName.IndexOf ("PublicKeyToken="), "FullName2#4");
458 public void FullName_Version ()
460 const string assemblyName = "TestAssembly";
461 const string assemblyVersion = "1.2";
463 // tests for AssemblyName with name and version
464 an = new AssemblyName ();
465 an.Name = assemblyName;
466 an.Version = new Version (assemblyVersion);
467 Assert.AreEqual (assemblyName + ", Version=" + assemblyVersion, an.FullName, "FullName3#1");
471 public void FullName_Culture ()
473 const string assemblyName = "TestAssembly";
475 // tests for AssemblyName with name and neutral culture
476 an = new AssemblyName ();
477 an.Name = assemblyName;
478 an.CultureInfo = CultureInfo.InvariantCulture;
479 Assert.AreEqual (assemblyName + ", Culture=neutral", an.FullName, "FullName4#1");
483 public void FullName_PublicKey ()
485 const string assemblyName = "TestAssembly";
487 // tests for AssemblyName with name and public key
488 an = new AssemblyName ();
489 an.Name = assemblyName;
490 an.SetPublicKey (publicKey1);
491 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#A1");
492 an.SetPublicKey ((byte []) null);
493 Assert.AreEqual (assemblyName, an.FullName, "#A2");
494 an.SetPublicKey (new byte [0]);
495 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#A3");
498 Assert.AreEqual (string.Empty, an.FullName, "#A4");
500 Assert.IsNull (an.FullName, "#A4");
503 an = new AssemblyName ();
504 an.HashAlgorithm = AssemblyHashAlgorithm.MD5;
505 an.Name = assemblyName;
506 an.SetPublicKey (publicKey1);
507 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#B1");
508 an.SetPublicKeyToken (new byte [] { 0x0a, 0x22 });
510 Assert.AreEqual (assemblyName + ", PublicKeyToken=0a22", an.FullName, "#B2");
512 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#B2");
514 an.SetPublicKeyToken ((byte []) null);
515 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#B3");
518 Assert.AreEqual (string.Empty, an.FullName, "#B4");
520 Assert.IsNull (an.FullName, "#B4");
523 an = new AssemblyName ();
524 an.HashAlgorithm = AssemblyHashAlgorithm.None;
525 an.Name = assemblyName;
526 an.SetPublicKey (publicKey1);
527 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C1");
528 an.SetPublicKeyToken (new byte [] { 0x0a, 0x22 });
530 Assert.AreEqual (assemblyName + ", PublicKeyToken=0a22", an.FullName, "#C2");
532 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C2");
534 an.SetPublicKeyToken ((byte []) null);
535 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C3");
538 Assert.AreEqual (string.Empty, an.FullName, "#C4");
540 Assert.IsNull (an.FullName, "#C4");
543 an = new AssemblyName ();
544 an.Name = assemblyName;
545 an.SetPublicKey (new byte [0]);
546 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D1");
549 Assert.AreEqual (string.Empty, an.FullName, "#D2");
551 Assert.IsNull (an.FullName, "#D2");
553 an.SetPublicKey (publicKey3);
555 Assert.AreEqual (string.Empty, an.FullName, "#D3");
557 Assert.IsNull (an.FullName, "#D3");
559 an.Name = assemblyName;
560 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token3), an.FullName, "#D4");
564 public void FullName_PublicKey_KeyPair ()
566 const string assemblyName = "TestAssembly";
568 // tests for AssemblyName with name and public key
569 an = new AssemblyName ();
570 an.Name = assemblyName;
571 an.SetPublicKey (keyPair);
574 Assert.Fail ("#A1: " + an.FullName);
575 } catch (SecurityException ex) {
576 // Invalid assembly public key
577 Assert.AreEqual (typeof (SecurityException), ex.GetType (), "#A2");
578 Assert.AreEqual ((SecurityAction) 0, ex.Action, "#A3");
579 Assert.IsNull (ex.InnerException, "#A4");
580 Assert.IsNotNull (ex.Message, "#A5");
583 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#A1");
586 an.SetPublicKeyToken (new byte [0]);
588 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#B1");
590 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#B1");
593 an.SetPublicKeyToken ((byte []) null);
596 Assert.Fail ("#C1: " + an.FullName);
597 } catch (SecurityException ex) {
598 // Invalid assembly public key
599 Assert.AreEqual (typeof (SecurityException), ex.GetType (), "#C2");
600 Assert.AreEqual ((SecurityAction) 0, ex.Action, "#C3");
601 Assert.IsNull (ex.InnerException, "#C4");
602 Assert.IsNotNull (ex.Message, "#C5");
605 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#C1");
608 an.SetPublicKeyToken (new byte [0]);
610 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D1");
612 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#D1");
614 an.SetPublicKey (publicKey1);
616 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D2");
618 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D2");
620 an.SetPublicKeyToken ((byte []) null);
621 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D3");
625 public void FullName_PublicKeyToken ()
627 const string assemblyName = "TestAssembly";
629 an = new AssemblyName ();
630 an.Name = assemblyName;
631 an.SetPublicKeyToken (pk_token1);
632 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#A1");
633 an.SetPublicKeyToken ((byte []) null);
634 Assert.AreEqual (assemblyName, an.FullName, "#A2");
635 an.SetPublicKeyToken (new byte [0]);
636 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#A3");
637 an.SetPublicKeyToken (pk_token1);
638 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#A4");
641 Assert.AreEqual (string.Empty, an.FullName, "#A5");
643 Assert.IsNull (an.FullName, "#A5");
646 an = new AssemblyName ();
647 an.HashAlgorithm = AssemblyHashAlgorithm.MD5;
648 an.Name = assemblyName;
649 an.SetPublicKeyToken (pk_token1);
650 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#B1");
651 an.SetPublicKeyToken (new byte [] { 0x0a, 0x22 });
652 Assert.AreEqual (assemblyName + ", PublicKeyToken=0a22", an.FullName, "#B2");
653 an.SetPublicKeyToken ((byte []) null);
654 Assert.AreEqual (assemblyName, an.FullName, "#B3");
657 Assert.AreEqual (string.Empty, an.FullName, "#B4");
659 Assert.IsNull (an.FullName, "#B4");
662 an = new AssemblyName ();
663 an.Name = assemblyName;
664 an.SetPublicKey (publicKey1);
665 an.SetPublicKeyToken (pk_token1);
666 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C1");
667 an.SetPublicKey ((byte []) null);
669 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C2");
671 Assert.AreEqual (assemblyName, an.FullName, "#C2");
673 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#C3");
674 an.SetPublicKey (new byte [0]);
676 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C4");
678 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#C4");
680 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#C5");
682 an = new AssemblyName ();
683 an.Name = assemblyName;
684 an.SetPublicKey (publicKey1);
685 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D1");
686 an.SetPublicKey (new byte [0]);
687 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D2");
688 an.SetPublicKeyToken (pk_token1);
690 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D3");
692 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D3");
694 an.SetPublicKey ((byte []) null);
696 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D4");
698 Assert.AreEqual (assemblyName, an.FullName, "#D4");
703 public void FullName_VersionCulture ()
705 const string assemblyName = "TestAssembly";
706 const string assemblyVersion = "1.2";
708 // tests for AssemblyName with name, version and neutral culture
709 an = new AssemblyName ();
710 an.Name = assemblyName;
711 an.Version = new Version (assemblyVersion);
712 an.CultureInfo = CultureInfo.InvariantCulture;
713 Assert.AreEqual (assemblyName + ", Version=" + assemblyVersion
714 + ", Culture=neutral", an.FullName, "#1");
715 an.CultureInfo = new CultureInfo ("en-US");
716 Assert.AreEqual (assemblyName + ", Version=" + assemblyVersion
717 + ", Culture=en-US", an.FullName, "#2");
718 an.CultureInfo = new CultureInfo ("en");
719 Assert.AreEqual (assemblyName + ", Version=" + assemblyVersion
720 + ", Culture=en", an.FullName, "#3");
724 public void FullName_VersionPublicKey ()
726 const string assemblyName = "TestAssembly";
727 const string assemblyVersion = "1.2";
729 // tests for AssemblyName with name, version and public key
730 an = new AssemblyName ();
731 an.Name = assemblyName;
732 an.Version = new Version (assemblyVersion);
733 an.SetPublicKey (publicKey1);
734 an.SetPublicKeyToken (pk_token1);
735 Assert.AreEqual (assemblyName + ", Version=" + assemblyVersion
736 + ", PublicKeyToken=" + GetTokenString (pk_token1),
741 public void FullName_CulturePublicKey ()
743 const string assemblyName = "TestAssembly";
745 // tests for AssemblyName with name, culture and public key
746 an = new AssemblyName ();
747 an.Name = assemblyName;
748 an.CultureInfo = CultureInfo.InvariantCulture;
749 an.SetPublicKey (publicKey1);
750 an.SetPublicKeyToken (pk_token1);
751 Assert.AreEqual (assemblyName + ", Culture=neutral"
752 + ", PublicKeyToken=" + GetTokenString (pk_token1),
757 public void GetPublicKeyToken ()
759 const string assemblyName = "TestAssembly";
761 an = new AssemblyName ();
762 an.SetPublicKey (publicKey1);
763 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#A1");
764 an.SetPublicKey (publicKey2);
765 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#A2");
766 an.SetPublicKeyToken (new byte [] { 0x0a });
767 Assert.AreEqual (new byte [] { 0x0a }, an.GetPublicKeyToken (), "#A3");
768 an.SetPublicKey (publicKey1);
769 Assert.AreEqual (new byte [] { 0x0a }, an.GetPublicKeyToken (), "#A4");
770 an.SetPublicKeyToken (new byte [0]);
771 Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#A5");
772 an.Name = assemblyName;
773 an.SetPublicKey (publicKey2);
774 Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#A6");
776 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#A7");
778 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token2), an.FullName, "#A7");
781 an = new AssemblyName ();
782 an.HashAlgorithm = AssemblyHashAlgorithm.MD5;
783 an.SetPublicKey (publicKey1);
784 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#B1");
786 an = new AssemblyName ();
787 an.HashAlgorithm = AssemblyHashAlgorithm.None;
788 an.SetPublicKey (publicKey1);
789 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#C1");
791 an = new AssemblyName ();
792 an.SetPublicKeyToken (new byte [0]);
793 Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#D1");
794 an.SetPublicKeyToken (new byte [] { 0x0b, 0xff });
795 Assert.AreEqual (new byte [] { 0x0b, 0xff }, an.GetPublicKeyToken (), "#D2");
796 an.SetPublicKeyToken ((byte []) null);
797 Assert.IsNull (an.GetPublicKeyToken (), "#D3");
799 an = new AssemblyName ();
800 an.SetPublicKey (keyPair);
803 an.GetPublicKeyToken ();
805 } catch (SecurityException ex) {
806 // Invalid assembly public key
807 Assert.AreEqual (typeof (SecurityException), ex.GetType (), "#E2");
808 Assert.AreEqual ((SecurityAction) 0, ex.Action, "#E3");
809 Assert.IsNull (ex.InnerException, "#E4");
810 Assert.IsNotNull (ex.Message, "#E5");
813 Assert.AreEqual (kp_token, an.GetPublicKeyToken (), "#E1");
818 public void GetPublicKeyToken_Corlib ()
820 an = typeof (int).Assembly.GetName ();
821 Assert.IsNotNull (an.GetPublicKeyToken (), "#1");
822 Assert.IsTrue (an.GetPublicKeyToken ().Length > 0, "#2");
826 public void GetPublicGetToken_Ecma ()
828 const string assemblyName = "TestAssembly";
830 an = new AssemblyName ();
831 an.Name = assemblyName;
832 an.SetPublicKey (publicKey3);
833 Assert.IsNotNull (an.GetPublicKeyToken (), "#1");
834 Assert.AreEqual (pk_token3, an.GetPublicKeyToken (), "#2");
838 public void GetPublicKeyToken_Self ()
840 Assembly a = Assembly.GetExecutingAssembly ();
843 Assert.AreEqual (new byte [0], an.GetPublicKeyToken ());
845 Assert.IsNull (an.GetPublicKeyToken ());
849 static int nameIndex = 0;
851 private AssemblyName GenAssemblyName ()
853 AssemblyName assemblyName = new AssemblyName();
854 assemblyName.Name = "MonoTests.System.Reflection.AssemblyNameTest" + (nameIndex ++);
858 #if !TARGET_JVM // Reflection.Emit is not supported for TARGET_JVM.
859 private Assembly GenerateAssembly (AssemblyName name)
861 AssemblyBuilder ab = domain.DefineDynamicAssembly (
863 AssemblyBuilderAccess.RunAndSave,
865 ab.DefineDynamicModule ("def_module");
866 ab.Save (name.Name + ".dll");
868 return Assembly.LoadFrom (Path.Combine (tempDir, name.Name + ".dll"));
871 private AssemblyBuilder GenerateDynamicAssembly (AssemblyName name)
873 AssemblyBuilder ab = domain.DefineDynamicAssembly (
875 AssemblyBuilderAccess.Run);
881 public void TestCultureInfo ()
887 name = GenAssemblyName ();
888 name.CultureInfo = CultureInfo.CreateSpecificCulture ("ar-DZ");
889 a = GenerateAssembly (name);
890 culture = a.GetName ().CultureInfo;
891 Assert.IsFalse (culture.IsNeutralCulture, "#A1");
892 Assert.IsFalse (culture.IsReadOnly, "#A2");
893 Assert.AreEqual (5121, culture.LCID, "#A3");
894 Assert.AreEqual ("ar-DZ", culture.Name, "#A4");
895 Assert.IsTrue (culture.UseUserOverride, "#A5");
897 name = GenAssemblyName ();
898 name.CultureInfo = new CultureInfo ("en");
899 a = GenerateAssembly (name);
900 culture = a.GetName ().CultureInfo;
901 Assert.IsTrue (culture.IsNeutralCulture, "#B1");
902 Assert.IsFalse (culture.IsReadOnly, "#B2");
903 Assert.AreEqual (9, culture.LCID, "#B3");
904 Assert.AreEqual ("en", culture.Name, "#B4");
905 Assert.IsTrue (culture.UseUserOverride, "#B5");
907 name = GenAssemblyName ();
908 name.CultureInfo = CultureInfo.InvariantCulture;
909 a = GenerateAssembly (name);
910 culture = a.GetName ().CultureInfo;
911 Assert.IsFalse (culture.IsNeutralCulture, "#C1");
913 Assert.IsFalse (culture.IsReadOnly, "#C2");
915 Assert.IsTrue (culture.IsReadOnly, "#C2");
917 Assert.AreEqual (127, culture.LCID, "#C3");
918 Assert.AreEqual (string.Empty, culture.Name, "#C4");
919 Assert.IsFalse (culture.UseUserOverride, "#C5");
921 a = typeof (int).Assembly;
923 culture = name.CultureInfo;
924 Assert.IsFalse (culture.IsNeutralCulture, "#D1");
926 Assert.IsFalse (culture.IsReadOnly, "#D2");
928 Assert.IsTrue (culture.IsReadOnly, "#D2");
930 Assert.AreEqual (127, culture.LCID, "#D3");
931 Assert.AreEqual (string.Empty, culture.Name, "#D4");
932 Assert.IsFalse (culture.UseUserOverride, "#D5");
934 a = Assembly.GetExecutingAssembly ();
936 culture = name.CultureInfo;
937 Assert.IsFalse (culture.IsNeutralCulture, "#E1");
939 Assert.IsFalse (culture.IsReadOnly, "#E2");
941 Assert.IsTrue (culture.IsReadOnly, "#E2");
943 Assert.AreEqual (127, culture.LCID, "#E3");
944 Assert.AreEqual (string.Empty, culture.Name, "#E4");
945 Assert.IsFalse (culture.UseUserOverride, "#E5");
947 AssemblyName [] names = a.GetReferencedAssemblies ();
948 foreach (AssemblyName an in names) {
949 culture = an.CultureInfo;
950 Assert.IsFalse (culture.IsNeutralCulture, "#F1:" + an.Name);
951 Assert.IsFalse (culture.IsReadOnly, "#F2:" + an.Name);
952 Assert.AreEqual (127, culture.LCID, "#F3:" + an.Name);
953 Assert.AreEqual (string.Empty, culture.Name, "#F4:" + an.Name);
955 Assert.IsFalse (culture.UseUserOverride, "#F5:" + an.Name);
957 Assert.IsTrue (culture.UseUserOverride, "#F5:" + an.Name);
963 public void Version ()
965 AssemblyName name = GenAssemblyName ();
966 name.Version = new Version (1, 2, 3, 4);
968 Assembly a = GenerateAssembly (name);
969 Assert.AreEqual ("1.2.3.4", a.GetName ().Version.ToString (), "1.2.3.4 normal");
971 name = GenAssemblyName ();
972 name.Version = new Version (1, 2, 3);
974 a = GenerateAssembly (name);
975 Assert.AreEqual ("1.2.3.0", a.GetName ().Version.ToString (), "1.2.3.0 normal");
977 name = GenAssemblyName ();
978 name.Version = new Version (1, 2);
980 a = GenerateAssembly (name);
981 Assert.AreEqual ("1.2.0.0", a.GetName ().Version.ToString (), "1.2.0.0 normal");
985 [Category ("NotWorking")]
986 public void Version_Dynamic ()
988 AssemblyName name = GenAssemblyName ();
989 name.Version = new Version (1, 2, 3, 4);
991 AssemblyBuilder ab = GenerateDynamicAssembly (name);
992 Assert.AreEqual ("1.2.3.4", ab.GetName ().Version.ToString (), "1.2.3.4 dynamic");
994 name = GenAssemblyName ();
995 name.Version = new Version (1, 2, 3);
997 ab = GenerateDynamicAssembly (name);
999 Assert.AreEqual ("1.2.3.0", ab.GetName ().Version.ToString (), "1.2.3.0 dynamic");
1001 Assert.AreEqual ("1.2.3.65535", ab.GetName ().Version.ToString (), "1.2.3.0 dynamic");
1004 name = GenAssemblyName ();
1005 name.Version = new Version (1, 2);
1007 ab = GenerateDynamicAssembly (name);
1009 Assert.AreEqual ("1.2.0.0", ab.GetName ().Version.ToString (), "1.2.0.0 dynamic");
1011 Assert.AreEqual ("1.2.65535.65535", ab.GetName ().Version.ToString (), "1.2.0.0 dynamic");
1014 #endif // TARGET_JVM
1017 public void HashAlgorithm ()
1019 Assert.AreEqual (AssemblyHashAlgorithm.SHA1,
1020 typeof (int).Assembly.GetName ().HashAlgorithm);
1024 public void Serialization ()
1026 an = new AssemblyName ();
1027 an.CodeBase = "http://www.test.com/test.dll";
1028 an.CultureInfo = CultureInfo.InvariantCulture;
1029 an.Flags = AssemblyNameFlags.PublicKey;
1030 an.HashAlgorithm = AssemblyHashAlgorithm.MD5;
1031 an.KeyPair = new StrongNameKeyPair (publicKey1);
1032 an.Name = "TestAssembly";
1033 an.Version = new Version (1, 5);
1034 an.VersionCompatibility = AssemblyVersionCompatibility.SameProcess;
1036 MemoryStream ms = new MemoryStream ();
1037 BinaryFormatter bf = new BinaryFormatter ();
1038 bf.Serialize (ms, an);
1040 // reset position of memorystream
1043 // deserialze assembly name
1044 AssemblyName dsAssemblyName = (AssemblyName) bf.Deserialize (ms);
1046 // close the memorystream
1049 // compare orginal and deserialized assembly name
1050 Assert.AreEqual (an.CodeBase, dsAssemblyName.CodeBase, "CodeBase");
1051 Assert.AreEqual (an.CultureInfo, dsAssemblyName.CultureInfo, "CultureInfo");
1052 Assert.AreEqual (an.Flags, dsAssemblyName.Flags, "Flags");
1053 Assert.AreEqual (an.HashAlgorithm, dsAssemblyName.HashAlgorithm, "HashAlgorithm");
1054 Assert.AreEqual (an.Name, dsAssemblyName.Name, "Name");
1055 Assert.AreEqual (an.Version, dsAssemblyName.Version, "Version");
1056 Assert.AreEqual (an.VersionCompatibility, dsAssemblyName.VersionCompatibility, "VersionCompatibility");
1057 Assert.AreEqual (an.EscapedCodeBase, dsAssemblyName.EscapedCodeBase, "EscapedCodeBase");
1058 Assert.AreEqual (an.FullName, dsAssemblyName.FullName, "FullName");
1059 Assert.AreEqual (an.ToString (), dsAssemblyName.ToString (), "ToString");
1060 Assert.AreEqual (an.GetPublicKey (), dsAssemblyName.GetPublicKey (), "PublicKey");
1061 Assert.AreEqual (an.GetPublicKeyToken (), dsAssemblyName.GetPublicKeyToken (), "PublicToken");
1065 public void Serialization_WithoutStrongName ()
1067 an = new AssemblyName ();
1068 an.CodeBase = "http://www.test.com/test.dll";
1069 an.CultureInfo = CultureInfo.InvariantCulture;
1070 an.Flags = AssemblyNameFlags.None;
1071 an.HashAlgorithm = AssemblyHashAlgorithm.SHA1;
1073 an.Name = "TestAssembly2";
1074 an.Version = new Version (1, 5, 0, 0);
1075 an.VersionCompatibility = AssemblyVersionCompatibility.SameMachine;
1077 MemoryStream ms = new MemoryStream ();
1078 BinaryFormatter bf = new BinaryFormatter ();
1079 bf.Serialize (ms, an);
1081 // reset position of memorystream
1084 // deserialze assembly name
1085 AssemblyName dsAssemblyName = (AssemblyName) bf.Deserialize (ms);
1087 // close the memorystream
1090 // compare orginal and deserialized assembly name
1091 Assert.AreEqual (an.CodeBase, dsAssemblyName.CodeBase, "CodeBase");
1092 Assert.AreEqual (an.CultureInfo, dsAssemblyName.CultureInfo, "CultureInfo");
1093 Assert.AreEqual (an.Flags, dsAssemblyName.Flags, "Flags");
1094 Assert.AreEqual (an.HashAlgorithm, dsAssemblyName.HashAlgorithm, "HashAlgorithm");
1095 Assert.AreEqual (an.Name, dsAssemblyName.Name, "Name");
1096 Assert.AreEqual (an.Version, dsAssemblyName.Version, "Version");
1097 Assert.AreEqual (an.VersionCompatibility, dsAssemblyName.VersionCompatibility, "VersionCompatibility");
1098 Assert.AreEqual (an.EscapedCodeBase, dsAssemblyName.EscapedCodeBase, "EscapedCodeBase");
1099 Assert.AreEqual (an.FullName, dsAssemblyName.FullName, "FullName");
1100 Assert.AreEqual (an.ToString (), dsAssemblyName.ToString (), "ToString");
1101 Assert.AreEqual (an.GetPublicKey (), dsAssemblyName.GetPublicKey (), "PublicKey");
1102 Assert.AreEqual (an.GetPublicKeyToken (), dsAssemblyName.GetPublicKeyToken (), "PublicToken");
1105 #if !TARGET_JVM // Assemblyname.GetObjectData not implemented yet for TARGET_JVM
1107 public void GetObjectData_Info_Null ()
1109 an = new AssemblyName ();
1111 an.GetObjectData (null, new StreamingContext (StreamingContextStates.All));
1113 } catch (ArgumentNullException ex) {
1114 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
1115 Assert.IsNull (ex.InnerException, "#3");
1116 Assert.IsNotNull (ex.Message, "#4");
1117 Assert.IsNotNull (ex.ParamName, "#5");
1118 Assert.AreEqual ("info", ex.ParamName, "#6");
1121 #endif // TARGET_JVM
1124 public void Clone_Corlib ()
1126 an = typeof (int).Assembly.GetName ();
1127 AssemblyName clone = (AssemblyName) an.Clone ();
1129 Assert.AreEqual (an.CodeBase, clone.CodeBase, "CodeBase");
1130 Assert.AreEqual (an.CultureInfo, clone.CultureInfo, "CultureInfo");
1131 Assert.AreEqual (an.EscapedCodeBase, clone.EscapedCodeBase, "EscapedCodeBase");
1132 Assert.AreEqual (an.Flags, clone.Flags, "Flags");
1133 Assert.AreEqual (an.FullName, clone.FullName, "FullName");
1134 Assert.AreEqual (an.HashAlgorithm, clone.HashAlgorithm, "HashAlgorithm");
1135 Assert.AreEqual (an.KeyPair, clone.KeyPair, "KeyPair");
1136 Assert.AreEqual (an.Name, clone.Name, "Name");
1138 Assert.AreEqual (an.ProcessorArchitecture, clone.ProcessorArchitecture, "PA");
1140 Assert.AreEqual (an.Version, clone.Version, "Version");
1141 Assert.AreEqual (an.VersionCompatibility, clone.VersionCompatibility, "VersionCompatibility");
1142 Assert.AreEqual (an.GetPublicKey (), clone.GetPublicKey (), "GetPublicKey");
1143 Assert.AreEqual (an.GetPublicKeyToken (), clone.GetPublicKeyToken (), "GetPublicKeyToken");
1144 Assert.AreEqual (an.ToString (), clone.ToString (), "ToString");
1148 public void Clone_Empty ()
1150 an = new AssemblyName ();
1151 AssemblyName clone = (AssemblyName) an.Clone ();
1153 Assert.IsNull (clone.CodeBase, "CodeBase");
1154 Assert.IsNull (clone.CultureInfo, "CultureInfo");
1155 Assert.IsNull (clone.EscapedCodeBase, "EscapedCodeBase");
1156 Assert.AreEqual (AssemblyNameFlags.None, clone.Flags, "Flags");
1158 Assert.AreEqual (String.Empty, clone.FullName, "FullName");
1160 Assert.IsNull (clone.FullName, "FullName");
1162 Assert.AreEqual (AssemblyHashAlgorithm.None, clone.HashAlgorithm, "HashAlgorithm");
1163 Assert.IsNull (clone.KeyPair, "KeyPair");
1164 Assert.IsNull (clone.Name, "Name");
1166 Assert.AreEqual (ProcessorArchitecture.None, clone.ProcessorArchitecture, "PA");
1168 Assert.IsNull (clone.Version, "Version");
1169 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1170 clone.VersionCompatibility, "VersionCompatibility");
1174 public void Clone_Self ()
1176 an = Assembly.GetExecutingAssembly ().GetName ();
1177 AssemblyName clone = (AssemblyName) an.Clone ();
1179 Assert.AreEqual (an.CodeBase, clone.CodeBase, "CodeBase");
1180 Assert.AreEqual (an.CultureInfo, clone.CultureInfo, "CultureInfo");
1181 Assert.AreEqual (an.EscapedCodeBase, clone.EscapedCodeBase, "EscapedCodeBase");
1182 Assert.AreEqual (an.Flags, clone.Flags, "Flags");
1183 Assert.AreEqual (an.FullName, clone.FullName, "FullName");
1184 Assert.AreEqual (an.HashAlgorithm, clone.HashAlgorithm, "HashAlgorithm");
1185 Assert.AreEqual (an.KeyPair, clone.KeyPair, "KeyPair");
1186 Assert.AreEqual (an.Name, clone.Name, "Name");
1188 //Assert.AreEqual (ProcessorArchitecture.MSIL, clone.ProcessorArchitecture, "PA");
1190 Assert.AreEqual (an.Version, clone.Version, "Version");
1191 Assert.AreEqual (an.VersionCompatibility, clone.VersionCompatibility, "VersionCompatibility");
1192 Assert.AreEqual (an.GetPublicKey (), clone.GetPublicKey (), "GetPublicKey");
1193 Assert.AreEqual (an.GetPublicKeyToken (), clone.GetPublicKeyToken (), "GetPublicKeyToken");
1194 Assert.AreEqual (an.ToString (), clone.ToString (), "ToString");
1198 [ExpectedException (typeof (FileNotFoundException))]
1199 public void GetAssemblyName_AssemblyFile_DoesNotExist ()
1201 AssemblyName.GetAssemblyName (Path.Combine (tempDir, "doesnotexist.dll"));
1205 [Category ("NotWorking")]
1206 public void GetAssemblyName_AssemblyFile_ReadLock ()
1208 string file = Path.Combine (tempDir, "loadfailure.dll");
1209 using (FileStream fs = File.Open (file, FileMode.OpenOrCreate, FileAccess.Read, FileShare.None)) {
1211 AssemblyName.GetAssemblyName (file);
1213 } catch (FileLoadException ex) {
1214 // Could not load file or assembly '...' or one
1215 // of its dependencies. The process cannot access
1216 // the file because it is being used by another
1218 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1219 Assert.IsNotNull (ex.FileName, "#3");
1221 Assert.AreEqual (file, ex.FileName, "#4");
1223 Assert.IsTrue (ex.FileName.IndexOf ("loadfailure.dll") != -1, "#4");
1225 Assert.IsNull (ex.InnerException, "#5");
1226 Assert.IsNotNull (ex.Message, "#6");
1233 public void GetAssemblyName_AssemblyFile_BadImage ()
1235 string file = Path.Combine (tempDir, "badimage.dll");
1236 using (StreamWriter sw = File.CreateText (file)) {
1237 sw.WriteLine ("somegarbage");
1240 AssemblyName.GetAssemblyName (file);
1242 } catch (BadImageFormatException ex) {
1243 Assert.AreEqual (typeof (BadImageFormatException), ex.GetType (), "#2");
1244 Assert.IsNotNull (ex.FileName, "#3");
1246 Assert.AreEqual (file, ex.FileName, "#4");
1248 Assert.IsTrue (ex.FileName.IndexOf ("badimage.dll") != -1, "#4");
1250 Assert.IsNull (ex.InnerException, "#5");
1251 Assert.IsNotNull (ex.Message, "#6");
1258 public void GetAssemblyName_CodeBase ()
1260 Assembly execAssembly = Assembly.GetExecutingAssembly ();
1262 AssemblyName aname = AssemblyName.GetAssemblyName (execAssembly.Location);
1263 Assert.IsNotNull (aname.CodeBase, "#1");
1264 Assert.AreEqual (execAssembly.CodeBase, aname.CodeBase, "#2");
1269 private string GetTokenString (byte[] value)
1271 string tokenString = "";
1272 for (int i = 0; i < value.Length; i++) {
1273 tokenString += value[i].ToString ("x2");
1279 [Test] // ctor (String)
1280 public void Constructor1_Name ()
1282 const string assemblyName = "TestAssembly";
1284 an = new AssemblyName (assemblyName);
1285 Assert.IsNull (an.CodeBase, "CodeBase");
1286 Assert.IsNull (an.CultureInfo, "CultureInfo");
1287 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1288 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1289 Assert.AreEqual ("TestAssembly", an.FullName, "FullName");
1290 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1291 Assert.IsNull (an.KeyPair, "KeyPair");
1292 Assert.AreEqual (assemblyName, an.Name, "Name");
1293 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1294 Assert.IsNull (an.Version, "Version");
1295 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1296 an.VersionCompatibility, "VersionCompatibility");
1297 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1298 Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
1299 Assert.AreEqual ("TestAssembly", an.ToString (), "ToString");
1302 [Test] // ctor (String)
1303 [Category("TargetJvmNotWorking")] // Not yet supported for TARGET_JVM.
1304 public void Constructor1_Full ()
1306 const string assemblyName = "TestAssembly";
1307 const string assemblyCulture = "neutral";
1308 const string assemblyVersion = "1.2.3.4";
1310 an = new AssemblyName (assemblyName + ", Version=" + assemblyVersion +
1311 ", Culture=" + assemblyCulture + ", PublicKeyToken=" + GetTokenString (pk_token1));
1312 Assert.IsNull (an.CodeBase, "CodeBase");
1313 Assert.AreEqual (CultureInfo.InvariantCulture, an.CultureInfo, "CultureInfo");
1314 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1315 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1316 Assert.AreEqual ("TestAssembly, Version=1.2.3.4, Culture=neutral, PublicKeyToken=" +
1317 GetTokenString (pk_token1), an.FullName, "FullName");
1318 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1319 Assert.IsNull (an.KeyPair, "KeyPair");
1320 Assert.AreEqual (assemblyName, an.Name, "Name");
1321 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1322 Assert.AreEqual (new Version (assemblyVersion), an.Version, "Version");
1323 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1324 an.VersionCompatibility, "VersionCompatibility");
1325 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1326 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "GetPublicKeyToken");
1327 Assert.AreEqual ("TestAssembly, Version=1.2.3.4, Culture=neutral, PublicKeyToken=" +
1328 GetTokenString (pk_token1), an.ToString (), "ToString");
1331 [Test] // ctor (String)
1332 public void Constructor1_AssemblyName_Empty ()
1335 new AssemblyName (string.Empty);
1337 } catch (ArgumentException ex) {
1338 // String cannot have zero length
1339 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
1340 Assert.IsNull (ex.InnerException, "#3");
1341 Assert.IsNotNull (ex.Message, "#4");
1342 Assert.IsNull (ex.ParamName, "#5");
1346 [Test] // ctor (String)
1347 public void Constructor1_AssemblyName_Invalid ()
1349 const string assemblyName = "TestAssembly";
1352 new AssemblyName (assemblyName + ", =1.2.4.5");
1353 Assert.Fail ("#A1");
1354 } catch (FileLoadException ex) {
1355 // The given assembly name or codebase was invalid
1356 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1357 Assert.IsNull (ex.FileName, "#3");
1358 Assert.IsNull (ex.InnerException, "#3");
1359 Assert.IsNotNull (ex.Message, "#4");
1363 new AssemblyName (assemblyName + ", OtherAttribute");
1364 Assert.Fail ("#B1");
1365 } catch (FileLoadException ex) {
1366 // The given assembly name or codebase was invalid
1367 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1368 Assert.IsNull (ex.FileName, "#3");
1369 Assert.IsNull (ex.InnerException, "#3");
1370 Assert.IsNotNull (ex.Message, "#4");
1374 [Test] // ctor (String)
1375 public void Constructor1_AssemblyName_Null ()
1378 new AssemblyName (null);
1380 } catch (ArgumentNullException ex) {
1381 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
1382 Assert.IsNull (ex.InnerException, "#3");
1383 Assert.IsNotNull (ex.Message, "#4");
1384 Assert.IsNotNull (ex.ParamName, "#5");
1385 Assert.AreEqual ("assemblyName", ex.ParamName, "#6");
1389 [Test] // ctor (String)
1390 public void Constructor1_Culture ()
1392 const string assemblyName = "TestAssembly";
1393 const string assemblyCulture = "en-US";
1395 an = new AssemblyName (assemblyName + ", Culture=" + assemblyCulture);
1396 Assert.IsNull (an.CodeBase, "CodeBase");
1397 Assert.AreEqual (new CultureInfo (assemblyCulture), an.CultureInfo, "CultureInfo");
1398 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1399 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1400 Assert.AreEqual ("TestAssembly, Culture=en-US", an.FullName, "FullName");
1401 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1402 Assert.IsNull (an.KeyPair, "KeyPair");
1403 Assert.AreEqual (assemblyName, an.Name, "Name");
1404 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1405 Assert.IsNull (an.Version, "Version");
1406 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1407 an.VersionCompatibility, "VersionCompatibility");
1408 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1409 Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
1410 Assert.AreEqual ("TestAssembly, Culture=en-US", an.ToString (), "ToString");
1413 [Test] // ctor (String)
1414 public void Constructor1_Culture_Incomplete ()
1416 const string assemblyName = "TestAssembly";
1419 new AssemblyName (assemblyName + ", Culture=");
1421 } catch (FileLoadException ex) {
1422 // The given assembly name or codebase was invalid
1423 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1424 Assert.IsNull (ex.FileName, "#3");
1425 Assert.IsNull (ex.InnerException, "#3");
1426 Assert.IsNotNull (ex.Message, "#4");
1430 [Test] // ctor (String)
1431 public void Constructor1_Culture_NotSupported ()
1433 const string assemblyName = "TestAssembly";
1436 new AssemblyName (assemblyName + ", Culture=aa-AA");
1438 } catch (ArgumentException ex) {
1439 // Culture name 'aa-aa' is not supported
1440 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
1441 Assert.IsNull (ex.InnerException, "#3");
1442 Assert.IsNotNull (ex.Message, "#4");
1443 Assert.IsNotNull (ex.ParamName, "#5");
1444 Assert.AreEqual ("name", ex.ParamName, "#6");
1448 [Test] // ctor (String)
1449 [Category ("NotWorking")] // bug #351708
1450 public void Constructor1_ProcessorArchitecture ()
1452 const string assemblyName = "TestAssembly";
1454 an = new AssemblyName (assemblyName + ", ProcessorArchitecture=X86");
1455 Assert.IsNull (an.CodeBase, "CodeBase");
1456 Assert.IsNull (an.CultureInfo, "CultureInfo");
1457 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1458 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1459 Assert.AreEqual ("TestAssembly", an.FullName, "FullName");
1460 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1461 Assert.IsNull (an.KeyPair, "KeyPair");
1462 Assert.AreEqual (assemblyName, an.Name, "Name");
1463 Assert.AreEqual (ProcessorArchitecture.X86, an.ProcessorArchitecture, "PA");
1464 Assert.IsNull (an.Version, "Version");
1465 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1466 an.VersionCompatibility, "VersionCompatibility");
1467 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1468 Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
1469 Assert.AreEqual ("TestAssembly", an.ToString (), "ToString");
1471 an = new AssemblyName (assemblyName + ", ProcessorArchitecture=mSiL");
1472 Assert.AreEqual (ProcessorArchitecture.MSIL, an.ProcessorArchitecture, "PA: MSIL");
1474 an = new AssemblyName (assemblyName + ", ProcessorArchitecture=AmD64");
1475 Assert.AreEqual (ProcessorArchitecture.Amd64, an.ProcessorArchitecture, "PA: Amd64");
1477 an = new AssemblyName (assemblyName + ", ProcessorArchitecture=iA64");
1478 Assert.AreEqual (ProcessorArchitecture.IA64, an.ProcessorArchitecture, "PA: IA64");
1481 [Test] // ctor (String)
1482 [Category ("NotWorking")] // bug #351708
1483 public void Constructor1_ProcessorArchitecture_Incomplete ()
1485 const string assemblyName = "TestAssembly";
1487 new AssemblyName (assemblyName + ", ProcessorArchitecture=");
1489 } catch (FileLoadException ex) {
1490 // The given assembly name or codebase was invalid
1491 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1492 Assert.IsNull (ex.FileName, "#3");
1493 Assert.IsNull (ex.InnerException, "#3");
1494 Assert.IsNotNull (ex.Message, "#4");
1498 [Test] // ctor (String)
1499 [Category ("NotWorking")] // bug #351708
1500 public void Constructor1_ProcessorArchitecture_Invalid ()
1502 const string assemblyName = "TestAssembly";
1504 new AssemblyName (assemblyName + ", ProcessorArchitecture=XXX");
1505 Assert.Fail ("#A1");
1506 } catch (FileLoadException ex) {
1507 // The given assembly name or codebase was invalid
1508 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#A2");
1509 Assert.IsNull (ex.FileName, "#A3");
1510 Assert.IsNull (ex.InnerException, "#A4");
1511 Assert.IsNotNull (ex.Message, "#A5");
1515 new AssemblyName (assemblyName + ", ProcessorArchitecture=None");
1516 Assert.Fail ("#B1");
1517 } catch (FileLoadException ex) {
1518 // The given assembly name or codebase was invalid
1519 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#B2");
1520 Assert.IsNull (ex.FileName, "#B3");
1521 Assert.IsNull (ex.InnerException, "#B4");
1522 Assert.IsNotNull (ex.Message, "#B5");
1526 [Test] // ctor (String)
1527 [Category ("NotDotNet")] // MS only sets the public key token not the public key: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=321088
1528 public void Constructor1_PublicKey_Mono ()
1530 const string assemblyName = "TestAssembly";
1532 an = new AssemblyName (assemblyName + ", PublicKey=" + GetTokenString (publicKey1));
1533 Assert.IsNull (an.CodeBase, "CodeBase");
1534 Assert.IsNull (an.CultureInfo, "CultureInfo");
1535 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1536 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "Flags");
1537 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "FullName");
1538 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1539 Assert.IsNull (an.KeyPair, "KeyPair");
1540 Assert.AreEqual (assemblyName, an.Name, "Name");
1541 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1542 Assert.IsNull (an.Version, "Version");
1543 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1544 an.VersionCompatibility, "VersionCompatibility");
1545 Assert.AreEqual (publicKey1, an.GetPublicKey (), "GetPublicKey");
1546 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "GetPublicKeyToken");
1547 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token1), an.ToString (), "ToString");
1551 [Category ("NotWorking")] // MS only sets the public key token not the public key: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=321088
1552 public void Constructor1_PublicKey_MS ()
1554 const string assemblyName = "TestAssembly";
1556 an = new AssemblyName (assemblyName + ", PublicKey=" + GetTokenString (publicKey1));
1557 Assert.IsNull (an.CodeBase, "CodeBase");
1558 Assert.IsNull (an.CultureInfo, "CultureInfo");
1559 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1560 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1561 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "FullName");
1562 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1563 Assert.IsNull (an.KeyPair, "KeyPair");
1564 Assert.AreEqual (assemblyName, an.Name, "Name");
1565 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1566 Assert.IsNull (an.Version, "Version");
1567 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1568 an.VersionCompatibility, "VersionCompatibility");
1569 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1570 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "GetPublicKeyToken");
1571 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token1), an.ToString (), "ToString");
1574 [Test] // ctor (String)
1575 [Category ("NotWorking")] // bug #351725
1576 public void Constructor1_PublicKey_Ecma ()
1578 const string assemblyName = "TestAssembly";
1580 an = new AssemblyName (assemblyName + ", PublicKey=" + GetTokenString (publicKey3));
1581 Assert.IsNull (an.CodeBase, "CodeBase");
1582 Assert.IsNull (an.CultureInfo, "CultureInfo");
1583 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1584 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1585 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token3), an.FullName, "FullName");
1586 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1587 Assert.IsNull (an.KeyPair, "KeyPair");
1588 Assert.AreEqual (assemblyName, an.Name, "Name");
1589 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1590 Assert.IsNull (an.Version, "Version");
1591 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1592 an.VersionCompatibility, "VersionCompatibility");
1593 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1594 Assert.AreEqual (pk_token3, an.GetPublicKeyToken (), "GetPublicKeyToken");
1595 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token3), an.ToString (), "ToString");
1598 [Test] // ctor (String)
1599 public void Constructor1_PublicKey_Incomplete ()
1601 const string assemblyName = "TestAssembly";
1604 new AssemblyName (assemblyName + ", PublicKey=");
1606 } catch (FileLoadException ex) {
1607 // The given assembly name or codebase was invalid
1608 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1609 Assert.IsNull (ex.FileName, "#3");
1610 Assert.IsNull (ex.InnerException, "#3");
1611 Assert.IsNotNull (ex.Message, "#4");
1615 [Test] // ctor (String)
1616 public void Constructor1_PublicKey_Invalid ()
1618 const string assemblyName = "TestAssembly";
1621 new AssemblyName (assemblyName + ", PublicKey=0024000004800000940000000602000000240000525341310004000011000000e39d99616f48cf7d6d59f345e485e713e89b8b1265a31b1a393e9894ee3fbddaf382dcaf4083dc31ee7a40a2a25c69c6d019fba9f37ec17fd680e4f6fe3b5305f71ae9e494e3501d92508c2e98ca1e22991a217aa8ce259c9882ffdfff4fbc6fa5e6660a8ff951cd94ed011e5633651b64e8f4522519b6ec84921ee22e4840e");
1623 } catch (FileLoadException ex) {
1624 // The given assembly name or codebase was invalid
1625 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1626 Assert.IsNull (ex.FileName, "#3");
1627 Assert.IsNull (ex.InnerException, "#3");
1628 Assert.IsNotNull (ex.Message, "#4");
1632 [Test] // ctor (String)
1633 [Category ("NotWorking")] // bug #351756
1634 public void Constructor1_PublicKey_KeyPair ()
1636 const string assemblyName = "TestAssembly";
1639 new AssemblyName (assemblyName + ", PublicKey=" + GetTokenString (keyPair));
1641 } catch (SecurityException ex) {
1642 // Invalid assembly public key
1643 Assert.AreEqual (typeof (SecurityException), ex.GetType (), "#2");
1644 Assert.AreEqual ((SecurityAction) 0, ex.Action, "#3");
1645 Assert.IsNull (ex.InnerException, "#4");
1646 Assert.IsNotNull (ex.Message, "#5");
1650 [Test] // ctor (String)
1651 public void Constructor1_PublicKeyToken ()
1653 const string assemblyName = "TestAssembly";
1655 an = new AssemblyName (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1));
1656 Assert.IsNull (an.CodeBase, "CodeBase");
1657 Assert.IsNull (an.CultureInfo, "CultureInfo");
1658 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1659 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1660 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "FullName");
1661 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1662 Assert.IsNull (an.KeyPair, "KeyPair");
1663 Assert.AreEqual (assemblyName, an.Name, "Name");
1664 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1665 Assert.IsNull (an.Version, "Version");
1666 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1667 an.VersionCompatibility, "VersionCompatibility");
1668 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1669 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "GetPublicKeyToken");
1670 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token1), an.ToString (), "ToString");
1673 [Test] // ctor (String)
1674 public void Constructor1_PublicKeyToken_Incomplete ()
1676 const string assemblyName = "TestAssembly";
1679 new AssemblyName (assemblyName + ", PublicKeyToken=");
1681 } catch (FileLoadException ex) {
1682 // The given assembly name or codebase was invalid
1683 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1684 Assert.IsNull (ex.FileName, "#3");
1685 Assert.IsNull (ex.InnerException, "#3");
1686 Assert.IsNotNull (ex.Message, "#4");
1690 [Test] // ctor (String)
1691 public void Constructor1_PublicKeyToken_Invalid ()
1693 const string assemblyName = "TestAssembly";
1696 new AssemblyName (assemblyName + ", PublicKeyToken=27576a8182a188");
1698 } catch (FileLoadException ex) {
1699 // The given assembly name or codebase was invalid
1700 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1701 Assert.IsNull (ex.FileName, "#3");
1702 Assert.IsNull (ex.InnerException, "#3");
1703 Assert.IsNotNull (ex.Message, "#4");
1707 [Test] // ctor (String)
1708 [Category("TargetJvmNotWorking")] // Not yet supported for TARGET_JVM.
1709 public void Constructor1_Version ()
1711 const string assemblyName = "TestAssembly";
1712 const string assemblyVersion = "1.2.3.4";
1714 an = new AssemblyName (assemblyName + ", Version=" + assemblyVersion);
1715 Assert.IsNull (an.CodeBase, "CodeBase");
1716 Assert.IsNull (an.CultureInfo, "CultureInfo");
1717 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1718 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1719 Assert.AreEqual ("TestAssembly, Version=1.2.3.4", an.FullName, "FullName");
1720 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1721 Assert.IsNull (an.KeyPair, "KeyPair");
1722 Assert.AreEqual (assemblyName, an.Name, "Name");
1723 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1724 Assert.AreEqual (new Version (assemblyVersion), an.Version, "Version");
1725 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1726 an.VersionCompatibility, "VersionCompatibility");
1727 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1728 Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
1729 Assert.AreEqual ("TestAssembly, Version=1.2.3.4", an.ToString (), "ToString");
1733 [Test] // ctor (String)
1734 public void Constructor1_Version_Incomplete ()
1736 const string assemblyName = "TestAssembly";
1739 new AssemblyName (assemblyName + ", Version=, Culture=neutral");
1741 } catch (FileLoadException ex) {
1742 // The given assembly name or codebase was invalid
1743 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1744 Assert.IsNull (ex.FileName, "#3");
1745 Assert.IsNull (ex.InnerException, "#3");
1746 Assert.IsNotNull (ex.Message, "#4");
1750 [Test] // ctor (String)
1751 public void Constructor1_Version_Invalid ()
1753 const string assemblyName = "TestAssembly";
1756 new AssemblyName (assemblyName + ", Version=a.b");
1758 } catch (FileLoadException ex) {
1759 // The given assembly name or codebase was invalid
1760 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1761 Assert.IsNull (ex.FileName, "#3");
1762 Assert.IsNull (ex.InnerException, "#3");
1763 Assert.IsNotNull (ex.Message, "#4");