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;
16 #if !TARGET_JVM && !MOBILE
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 };
102 static byte [] kp_token = { 0xff, 0xef, 0x94, 0x53, 0x67, 0x69, 0xda, 0x06 };
105 static byte [] publicKey1 = {
106 0x00, 0x24, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x94, 0x00,
107 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00,
108 0x52, 0x53, 0x41, 0x31, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00,
109 0x01, 0x00, 0x3d, 0xbd, 0x72, 0x08, 0xc6, 0x2b, 0x0e, 0xa8,
110 0xc1, 0xc0, 0x58, 0x07, 0x2b, 0x63, 0x5f, 0x7c, 0x9a, 0xbd,
111 0xcb, 0x22, 0xdb, 0x20, 0xb2, 0xa9, 0xda, 0xda, 0xef, 0xe8,
112 0x00, 0x64, 0x2f, 0x5d, 0x8d, 0xeb, 0x78, 0x02, 0xf7, 0xa5,
113 0x36, 0x77, 0x28, 0xd7, 0x55, 0x8d, 0x14, 0x68, 0xdb, 0xeb,
114 0x24, 0x09, 0xd0, 0x2b, 0x13, 0x1b, 0x92, 0x6e, 0x2e, 0x59,
115 0x54, 0x4a, 0xac, 0x18, 0xcf, 0xc9, 0x09, 0x02, 0x3f, 0x4f,
116 0xa8, 0x3e, 0x94, 0x00, 0x1f, 0xc2, 0xf1, 0x1a, 0x27, 0x47,
117 0x7d, 0x10, 0x84, 0xf5, 0x14, 0xb8, 0x61, 0x62, 0x1a, 0x0c,
118 0x66, 0xab, 0xd2, 0x4c, 0x4b, 0x9f, 0xc9, 0x0f, 0x3c, 0xd8,
119 0x92, 0x0f, 0xf5, 0xff, 0xce, 0xd7, 0x6e, 0x5c, 0x6f, 0xb1,
120 0xf5, 0x7d, 0xd3, 0x56, 0xf9, 0x67, 0x27, 0xa4, 0xa5, 0x48,
121 0x5b, 0x07, 0x93, 0x44, 0x00, 0x4a, 0xf8, 0xff, 0xa4, 0xcb };
123 static byte [] pk_token1 = { 0xce, 0x52, 0x76, 0xd8, 0x68, 0x7e, 0Xc6, 0xdc };
125 static byte [] publicKey2 = {
126 0x00, 0x24, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x94, 0x00,
127 0x00, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00,
128 0x52, 0x53, 0x41, 0x31, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00,
129 0x01, 0x00, 0x6d, 0xfd, 0xba, 0xb9, 0x9d, 0x43, 0xf1, 0xef,
130 0x33, 0xe2, 0xbd, 0x2d, 0x7c, 0x26, 0xe2, 0x9d, 0x37, 0x4a,
131 0xdf, 0xb5, 0x63, 0x12, 0x90, 0x35, 0x90, 0x24, 0x8a, 0xe7,
132 0x5a, 0xc5, 0xa3, 0x3a, 0x84, 0xee, 0x9b, 0xd1, 0xac, 0x3a,
133 0x59, 0x2b, 0x91, 0x97, 0x83, 0x01, 0x4f, 0x92, 0x01, 0xc6,
134 0x3b, 0x96, 0x20, 0x19, 0xeb, 0xdc, 0x2c, 0x6f, 0x1f, 0xbb,
135 0x04, 0x9b, 0x62, 0x39, 0xc0, 0xff, 0x58, 0x64, 0x17, 0x48,
136 0xc2, 0x5b, 0x94, 0x98, 0x35, 0x50, 0x1f, 0x27, 0xbc, 0xea,
137 0x91, 0x92, 0x3f, 0x5c, 0x33, 0x12, 0x17, 0x65, 0x56, 0x3e,
138 0x40, 0x44, 0x27, 0x1d, 0xef, 0x0e, 0x72, 0xab, 0xd4, 0xf0,
139 0x49, 0xa3, 0x95, 0x1a, 0x61, 0xb4, 0x47, 0x90, 0x20, 0xcc,
140 0x50, 0xa4, 0x4d, 0x8b, 0x8a, 0x58, 0x17, 0x70, 0xa4, 0x53,
141 0xe4, 0xdc, 0x73, 0x5d, 0x8c, 0x4e, 0xb8, 0xd3, 0xa9, 0xbf };
144 static byte [] pk_token2 = { 0x22, 0x7c, 0x9c, 0x2c, 0x3c, 0x00, 0x63, 0xe9 };
147 static byte [] publicKey3 = {
148 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
149 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
151 static byte [] pk_token3 = { 0xb7, 0x7a, 0x5c, 0x56, 0x19, 0x34, 0xe0, 0x89 };
157 if (Directory.Exists (tempDir))
158 Directory.Delete (tempDir, true);
163 Directory.CreateDirectory (tempDir);
165 #if !TARGET_JVM // Thread.GetDomain is not supported for TARGET_JVM.
166 domain = Thread.GetDomain ();
171 public void TearDown ()
174 if (Directory.Exists (tempDir))
175 Directory.Delete (tempDir, true);
178 // This can happen on windows when the directory contains
179 // files opened by the CLR
184 public void Constructor0 ()
186 an = new AssemblyName ();
187 Assert.IsNull (an.CodeBase, "CodeBase");
188 Assert.IsNull (an.CultureInfo, "CultureInfo");
189 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
190 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
192 Assert.AreEqual (String.Empty, an.FullName, "FullName");
194 Assert.IsNull (an.FullName, "FullName");
196 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
197 Assert.IsNull (an.KeyPair, "KeyPair");
198 Assert.IsNull (an.Name, "Name");
200 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
202 Assert.IsNull (an.Version, "Version");
203 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
204 an.VersionCompatibility, "VersionCompatibility");
205 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
206 Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
208 Assert.AreEqual (string.Empty, an.ToString (), "ToString");
210 Assert.AreEqual (typeof (AssemblyName).FullName, an.ToString (), "ToString");
215 public void SetPublicKey ()
217 an = new AssemblyName ();
218 Assert.IsNull (an.GetPublicKey (), "#A1");
219 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#A2");
220 Assert.IsNull (an.KeyPair, "#A3");
221 Assert.IsNull (an.GetPublicKeyToken (), "#A4");
223 an.SetPublicKey (publicKey1);
225 Assert.AreEqual (publicKey1, an.GetPublicKey (), "#B1");
226 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#B2");
227 Assert.IsNull (an.KeyPair, "#B3");
228 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#B4");
229 an.SetPublicKey (keyPair);
230 Assert.AreEqual (keyPair, an.GetPublicKey (), "#B5");
231 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#B6");
233 an.SetPublicKey ((byte []) null);
235 Assert.IsNull (an.GetPublicKey (), "#C1");
237 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#C2");
239 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#C2");
241 Assert.IsNull (an.KeyPair, "#C3");
242 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#C4");
244 an.SetPublicKey (publicKey1);
245 an.SetPublicKeyToken (pk_token1);
246 an.SetPublicKey ((byte []) null);
248 Assert.IsNull (an.GetPublicKey (), "#D1");
250 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#D2");
252 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#D2");
254 Assert.IsNull (an.KeyPair, "#D3");
255 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#D4");
257 an.SetPublicKey ((byte []) null);
258 an.SetPublicKeyToken (pk_token1);
259 an.SetPublicKey ((byte []) null);
261 Assert.IsNull (an.GetPublicKey (), "#E1");
263 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#E2");
265 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#E2");
267 Assert.IsNull (an.KeyPair, "#E3");
268 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#E4");
270 an = new AssemblyName ();
271 an.SetPublicKey (publicKey1);
272 an.SetPublicKey ((byte []) null);
273 an.SetPublicKeyToken (pk_token1);
274 an.SetPublicKey ((byte []) null);
276 Assert.IsNull (an.GetPublicKey (), "#F1");
277 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#F2");
278 Assert.IsNull (an.KeyPair, "#F3");
279 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#F4");
281 an = new AssemblyName ();
282 an.SetPublicKey (publicKey1);
283 an.SetPublicKey ((byte []) null);
284 an.SetPublicKeyToken (pk_token1);
286 Assert.IsNull (an.GetPublicKey (), "#G1");
288 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#G2");
290 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#G2");
292 Assert.IsNull (an.KeyPair, "#G3");
293 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#G4");
295 an = new AssemblyName ();
296 an.SetPublicKey (new byte [0]);
298 Assert.IsNotNull (an.GetPublicKey (), "#H1");
299 Assert.AreEqual (0, an.GetPublicKey ().Length, "#H2");
300 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#H3");
301 Assert.IsNull (an.KeyPair, "#H4");
303 Assert.IsNotNull (an.GetPublicKeyToken (), "#H5");
304 Assert.AreEqual (0, an.GetPublicKeyToken ().Length, "#H6");
306 Assert.IsNull (an.GetPublicKeyToken (), "#H5");
309 an = new AssemblyName ();
310 an.SetPublicKey (publicKey1);
311 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#I1");
312 an.SetPublicKey (publicKey1);
313 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#I2");
315 an = new AssemblyName ();
316 an.SetPublicKey ((byte []) null);
317 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#J1");
318 an.SetPublicKey ((byte []) null);
320 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#J2");
322 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#J2");
324 an.SetPublicKey ((byte []) null);
325 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#J3");
326 an.SetPublicKey (publicKey1);
327 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#J4");
328 Assert.AreEqual (publicKey1, an.GetPublicKey (), "#J5");
329 an.SetPublicKey (publicKey2);
330 Assert.AreEqual (publicKey2, an.GetPublicKey (), "#J6");
334 public void SetPublicKey_PublicKey_Invalid ()
336 an = new AssemblyName ();
337 an.SetPublicKey (new byte [] { 0x0b, 0x0a });
338 Assert.AreEqual (new byte [] { 0x0b, 0x0a }, an.GetPublicKey (), "#1");
342 public void SetPublicKeyToken ()
344 an = new AssemblyName ();
345 an.SetPublicKeyToken (pk_token1);
347 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#A1");
348 Assert.IsNull (an.KeyPair, "#A2");
349 Assert.IsNull (an.GetPublicKey (), "#A3");
350 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#A4");
352 an.SetPublicKeyToken ((byte []) null);
354 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#B1");
355 Assert.IsNull (an.KeyPair, "#B2");
356 Assert.IsNull (an.GetPublicKey (), "#B3");
357 Assert.IsNull (an.GetPublicKeyToken (), "#B4");
359 an.SetPublicKeyToken (new byte [0]);
361 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#C1");
362 Assert.IsNull (an.KeyPair, "#C2");
363 Assert.IsNull (an.GetPublicKey (), "#C3");
364 Assert.IsNotNull (an.GetPublicKeyToken (), "#C4");
365 Assert.AreEqual (0, an.GetPublicKeyToken ().Length, "#C5");
369 public void KeyPair ()
371 an = new AssemblyName ();
373 an.KeyPair = new StrongNameKeyPair (keyPair);
375 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#A1");
376 Assert.IsNotNull (an.KeyPair, "#A2");
377 Assert.IsNull (an.GetPublicKey (), "#A3");
378 Assert.IsNull (an.GetPublicKeyToken (), "#A4");
379 Assert.AreEqual ("test", an.FullName, "#A5");
383 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#B1");
384 Assert.IsNull (an.KeyPair, "#B2");
385 Assert.IsNull (an.GetPublicKey (), "#B3");
386 Assert.IsNull (an.GetPublicKeyToken (), "#B4");
387 Assert.AreEqual ("test", an.FullName, "#B5");
390 // !!! this assembly MUST NOT use a StrongName !!!
394 Assembly a = Assembly.GetExecutingAssembly ();
397 Assert.AreEqual (CultureInfo.InvariantCulture, an.CultureInfo, "CultureInfo");
398 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "Flags");
399 Assert.AreEqual (AssemblyHashAlgorithm.SHA1, an.HashAlgorithm, "HashAlgorithm");
400 Assert.IsNull (an.KeyPair, "KeyPair");
401 Assert.IsNotNull (an.Name, "Name");
403 //Assert.AreEqual (ProcessorArchitecture.MSIL, an.ProcessorArchitecture, "PA");
405 Assert.AreEqual (new Version (0, 0, 0, 0), an.Version, "Version");
406 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
407 an.VersionCompatibility, "VersionCompatibility");
408 Assert.AreEqual (new byte [0], an.GetPublicKey (), "GetPublicKey");
409 Assert.AreEqual (an.FullName, an.ToString (), "ToString");
413 public void Flags_Corlib ()
415 an = typeof (int).Assembly.GetName ();
416 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags);
420 public void Flags_Self ()
422 Assembly a = Assembly.GetExecutingAssembly ();
424 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags);
428 public void FullName_Corlib ()
430 an = typeof(int).Assembly.GetName ();
431 Assert.IsNotNull (an.FullName, "#1");
433 string AssemblyCorlib;
435 AssemblyCorlib = "mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e";
437 AssemblyCorlib = "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
439 AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
441 Assert.AreEqual (AssemblyCorlib, an.FullName, "#2");
445 public void FullName_Self ()
447 Assembly a = Assembly.GetExecutingAssembly ();
450 Assert.IsNotNull (an.FullName, "#1");
451 Assert.IsTrue (an.FullName.IndexOf ("Version=0.0.0.0") != -1, "#2");
452 Assert.IsTrue (an.FullName.IndexOf ("Culture=neutral") != -1, "#3");
453 Assert.IsTrue (an.FullName.IndexOf ("PublicKeyToken=null") != -1, "#4");
457 public void FullName_Flags ()
459 const string assemblyName = "TestAssembly";
461 // tests for AssemblyName with only name
462 an = new AssemblyName ();
464 an.Flags = AssemblyNameFlags.EnableJITcompileOptimizer |
465 AssemblyNameFlags.EnableJITcompileTracking |
466 AssemblyNameFlags.PublicKey |
467 AssemblyNameFlags.Retargetable;
469 an.Flags = AssemblyNameFlags.PublicKey |
470 AssemblyNameFlags.Retargetable;
472 an.Name = assemblyName;
473 Assert.AreEqual (assemblyName + ", Retargetable=Yes", an.FullName, "#1");
474 an.Flags = AssemblyNameFlags.None;
475 Assert.AreEqual (assemblyName, an.FullName, "#2");
479 public void FullName_Name ()
481 const string assemblyName = "TestAssembly";
483 // tests for AssemblyName with only name
484 an = new AssemblyName ();
485 an.Name = assemblyName;
486 Assert.IsNotNull (an.FullName, "FullName2#1");
487 Assert.AreEqual (an.Name, an.FullName, "FullName2#2");
488 Assert.AreEqual (-1, an.FullName.IndexOf ("Culture="), "FullName2#3");
489 Assert.AreEqual (-1, an.FullName.IndexOf ("PublicKeyToken="), "FullName2#4");
493 public void FullName_Version ()
495 const string assemblyName = "TestAssembly";
496 const string assemblyVersion = "1.2";
498 // tests for AssemblyName with name and version
499 an = new AssemblyName ();
500 an.Name = assemblyName;
501 an.Version = new Version (assemblyVersion);
502 Assert.AreEqual (assemblyName + ", Version=" + assemblyVersion, an.FullName, "FullName3#1");
506 public void FullName_Culture ()
508 const string assemblyName = "TestAssembly";
510 // tests for AssemblyName with name and neutral culture
511 an = new AssemblyName ();
512 an.Name = assemblyName;
513 an.CultureInfo = CultureInfo.InvariantCulture;
514 Assert.AreEqual (assemblyName + ", Culture=neutral", an.FullName, "#1");
515 an.CultureInfo = new CultureInfo ("nl-BE");
516 Assert.AreEqual (assemblyName + ", Culture=nl-BE", an.FullName, "#2");
519 Assert.AreEqual (string.Empty, an.FullName, "#3");
521 Assert.IsNull (an.FullName, "#4");
526 public void FullName_PublicKey ()
528 const string assemblyName = "TestAssembly";
530 // tests for AssemblyName with name and public key
531 an = new AssemblyName ();
532 an.Name = assemblyName;
533 an.SetPublicKey (publicKey1);
534 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#A1");
535 an.SetPublicKey ((byte []) null);
536 Assert.AreEqual (assemblyName, an.FullName, "#A2");
537 an.SetPublicKey (new byte [0]);
538 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#A3");
541 Assert.AreEqual (string.Empty, an.FullName, "#A4");
543 Assert.IsNull (an.FullName, "#A4");
546 an = new AssemblyName ();
547 an.HashAlgorithm = AssemblyHashAlgorithm.MD5;
548 an.Name = assemblyName;
549 an.SetPublicKey (publicKey1);
550 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#B1");
551 an.SetPublicKeyToken (new byte [] { 0x0a, 0x22 });
553 Assert.AreEqual (assemblyName + ", PublicKeyToken=0a22", an.FullName, "#B2");
555 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#B2");
557 an.SetPublicKeyToken ((byte []) null);
558 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#B3");
561 Assert.AreEqual (string.Empty, an.FullName, "#B4");
563 Assert.IsNull (an.FullName, "#B4");
566 an = new AssemblyName ();
567 an.HashAlgorithm = AssemblyHashAlgorithm.None;
568 an.Name = assemblyName;
569 an.SetPublicKey (publicKey1);
570 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C1");
571 an.SetPublicKeyToken (new byte [] { 0x0a, 0x22 });
573 Assert.AreEqual (assemblyName + ", PublicKeyToken=0a22", an.FullName, "#C2");
575 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C2");
577 an.SetPublicKeyToken ((byte []) null);
578 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C3");
581 Assert.AreEqual (string.Empty, an.FullName, "#C4");
583 Assert.IsNull (an.FullName, "#C4");
586 an = new AssemblyName ();
587 an.Name = assemblyName;
588 an.SetPublicKey (new byte [0]);
589 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D1");
592 Assert.AreEqual (string.Empty, an.FullName, "#D2");
594 Assert.IsNull (an.FullName, "#D2");
596 an.SetPublicKey (publicKey3);
598 Assert.AreEqual (string.Empty, an.FullName, "#D3");
600 Assert.IsNull (an.FullName, "#D3");
602 an.Name = assemblyName;
603 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token3), an.FullName, "#D4");
607 public void FullName_PublicKey_KeyPair ()
609 const string assemblyName = "TestAssembly";
611 // tests for AssemblyName with name and public key
612 an = new AssemblyName ();
613 an.Name = assemblyName;
614 an.SetPublicKey (keyPair);
617 Assert.Fail ("#A1: " + an.FullName);
618 } catch (SecurityException ex) {
619 // Invalid assembly public key
620 Assert.AreEqual (typeof (SecurityException), ex.GetType (), "#A2");
621 Assert.AreEqual ((SecurityAction) 0, ex.Action, "#A3");
622 Assert.IsNull (ex.InnerException, "#A4");
623 Assert.IsNotNull (ex.Message, "#A5");
626 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#A1");
629 an.SetPublicKeyToken (new byte [0]);
631 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#B1");
633 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#B1");
636 an.SetPublicKeyToken ((byte []) null);
639 Assert.Fail ("#C1: " + an.FullName);
640 } catch (SecurityException ex) {
641 // Invalid assembly public key
642 Assert.AreEqual (typeof (SecurityException), ex.GetType (), "#C2");
643 Assert.AreEqual ((SecurityAction) 0, ex.Action, "#C3");
644 Assert.IsNull (ex.InnerException, "#C4");
645 Assert.IsNotNull (ex.Message, "#C5");
648 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#C1");
651 an.SetPublicKeyToken (new byte [0]);
653 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D1");
655 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#D1");
657 an.SetPublicKey (publicKey1);
659 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D2");
661 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D2");
663 an.SetPublicKeyToken ((byte []) null);
664 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D3");
668 public void FullName_PublicKeyToken ()
670 const string assemblyName = "TestAssembly";
672 an = new AssemblyName ();
673 an.Name = assemblyName;
674 an.SetPublicKeyToken (pk_token1);
675 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#A1");
676 an.SetPublicKeyToken ((byte []) null);
677 Assert.AreEqual (assemblyName, an.FullName, "#A2");
678 an.SetPublicKeyToken (new byte [0]);
679 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#A3");
680 an.SetPublicKeyToken (pk_token1);
681 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#A4");
684 Assert.AreEqual (string.Empty, an.FullName, "#A5");
686 Assert.IsNull (an.FullName, "#A5");
689 an = new AssemblyName ();
690 an.HashAlgorithm = AssemblyHashAlgorithm.MD5;
691 an.Name = assemblyName;
692 an.SetPublicKeyToken (pk_token1);
693 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#B1");
694 an.SetPublicKeyToken (new byte [] { 0x0a, 0x22 });
695 Assert.AreEqual (assemblyName + ", PublicKeyToken=0a22", an.FullName, "#B2");
696 an.SetPublicKeyToken ((byte []) null);
697 Assert.AreEqual (assemblyName, an.FullName, "#B3");
700 Assert.AreEqual (string.Empty, an.FullName, "#B4");
702 Assert.IsNull (an.FullName, "#B4");
705 an = new AssemblyName ();
706 an.Name = assemblyName;
707 an.SetPublicKey (publicKey1);
708 an.SetPublicKeyToken (pk_token1);
709 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C1");
710 an.SetPublicKey ((byte []) null);
712 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C2");
714 Assert.AreEqual (assemblyName, an.FullName, "#C2");
716 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#C3");
717 an.SetPublicKey (new byte [0]);
719 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C4");
721 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#C4");
723 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#C5");
725 an = new AssemblyName ();
726 an.Name = assemblyName;
727 an.SetPublicKey (publicKey1);
728 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D1");
729 an.SetPublicKey (new byte [0]);
730 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D2");
731 an.SetPublicKeyToken (pk_token1);
733 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D3");
735 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D3");
737 an.SetPublicKey ((byte []) null);
739 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D4");
741 Assert.AreEqual (assemblyName, an.FullName, "#D4");
746 public void FullName_VersionCulture ()
748 const string assemblyName = "TestAssembly";
749 const string assemblyVersion = "1.2";
751 // tests for AssemblyName with name, version and neutral culture
752 an = new AssemblyName ();
753 an.Name = assemblyName;
754 an.Version = new Version (assemblyVersion);
755 an.CultureInfo = CultureInfo.InvariantCulture;
756 Assert.AreEqual (assemblyName + ", Version=" + assemblyVersion
757 + ", Culture=neutral", an.FullName, "#1");
758 an.CultureInfo = new CultureInfo ("en-US");
759 Assert.AreEqual (assemblyName + ", Version=" + assemblyVersion
760 + ", Culture=en-US", an.FullName, "#2");
761 an.CultureInfo = new CultureInfo ("en");
762 Assert.AreEqual (assemblyName + ", Version=" + assemblyVersion
763 + ", Culture=en", an.FullName, "#3");
767 public void FullName_VersionPublicKey ()
769 const string assemblyName = "TestAssembly";
770 const string assemblyVersion = "1.2";
772 // tests for AssemblyName with name, version and public key
773 an = new AssemblyName ();
774 an.Name = assemblyName;
775 an.Version = new Version (assemblyVersion);
776 an.SetPublicKey (publicKey1);
777 an.SetPublicKeyToken (pk_token1);
778 Assert.AreEqual (assemblyName + ", Version=" + assemblyVersion
779 + ", PublicKeyToken=" + GetTokenString (pk_token1),
784 public void FullName_CulturePublicKey ()
786 const string assemblyName = "TestAssembly";
788 // tests for AssemblyName with name, culture and public key
789 an = new AssemblyName ();
790 an.Name = assemblyName;
791 an.CultureInfo = CultureInfo.InvariantCulture;
792 an.SetPublicKey (publicKey1);
793 an.SetPublicKeyToken (pk_token1);
794 Assert.AreEqual (assemblyName + ", Culture=neutral"
795 + ", PublicKeyToken=" + GetTokenString (pk_token1),
800 public void GetPublicKeyToken ()
802 const string assemblyName = "TestAssembly";
804 an = new AssemblyName ();
805 an.SetPublicKey (publicKey1);
806 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#A1");
807 an.SetPublicKey (publicKey2);
808 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#A2");
809 an.SetPublicKeyToken (new byte [] { 0x0a });
810 Assert.AreEqual (new byte [] { 0x0a }, an.GetPublicKeyToken (), "#A3");
811 an.SetPublicKey (publicKey1);
812 Assert.AreEqual (new byte [] { 0x0a }, an.GetPublicKeyToken (), "#A4");
813 an.SetPublicKeyToken (new byte [0]);
814 Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#A5");
815 an.Name = assemblyName;
816 an.SetPublicKey (publicKey2);
817 Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#A6");
819 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#A7");
821 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token2), an.FullName, "#A7");
824 an = new AssemblyName ();
825 an.HashAlgorithm = AssemblyHashAlgorithm.MD5;
826 an.SetPublicKey (publicKey1);
827 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#B1");
829 an = new AssemblyName ();
830 an.HashAlgorithm = AssemblyHashAlgorithm.None;
831 an.SetPublicKey (publicKey1);
832 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#C1");
834 an = new AssemblyName ();
835 an.SetPublicKeyToken (new byte [0]);
836 Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#D1");
837 an.SetPublicKeyToken (new byte [] { 0x0b, 0xff });
838 Assert.AreEqual (new byte [] { 0x0b, 0xff }, an.GetPublicKeyToken (), "#D2");
839 an.SetPublicKeyToken ((byte []) null);
840 Assert.IsNull (an.GetPublicKeyToken (), "#D3");
842 an = new AssemblyName ();
843 an.SetPublicKey (keyPair);
846 an.GetPublicKeyToken ();
848 } catch (SecurityException ex) {
849 // Invalid assembly public key
850 Assert.AreEqual (typeof (SecurityException), ex.GetType (), "#E2");
851 Assert.AreEqual ((SecurityAction) 0, ex.Action, "#E3");
852 Assert.IsNull (ex.InnerException, "#E4");
853 Assert.IsNotNull (ex.Message, "#E5");
856 Assert.AreEqual (kp_token, an.GetPublicKeyToken (), "#E1");
861 public void GetPublicKeyToken_Corlib ()
863 an = typeof (int).Assembly.GetName ();
864 Assert.IsNotNull (an.GetPublicKeyToken (), "#1");
865 Assert.IsTrue (an.GetPublicKeyToken ().Length > 0, "#2");
869 public void GetPublicGetToken_Ecma ()
871 const string assemblyName = "TestAssembly";
873 an = new AssemblyName ();
874 an.Name = assemblyName;
875 an.SetPublicKey (publicKey3);
876 Assert.IsNotNull (an.GetPublicKeyToken (), "#1");
877 Assert.AreEqual (pk_token3, an.GetPublicKeyToken (), "#2");
881 public void GetPublicKeyToken_Self ()
883 Assembly a = Assembly.GetExecutingAssembly ();
886 Assert.AreEqual (new byte [0], an.GetPublicKeyToken ());
888 Assert.IsNull (an.GetPublicKeyToken ());
892 static int nameIndex = 0;
894 private AssemblyName GenAssemblyName ()
896 AssemblyName assemblyName = new AssemblyName();
897 assemblyName.Name = "MonoTests.System.Reflection.AssemblyNameTest" + (nameIndex ++);
901 #if !TARGET_JVM && !MOBILE // Reflection.Emit is not supported for TARGET_JVM.
902 private Assembly GenerateAssembly (AssemblyName name)
904 AssemblyBuilder ab = domain.DefineDynamicAssembly (
906 AssemblyBuilderAccess.RunAndSave,
908 ab.DefineDynamicModule ("def_module");
909 ab.Save (name.Name + ".dll");
911 return Assembly.LoadFrom (Path.Combine (tempDir, name.Name + ".dll"));
914 private AssemblyBuilder GenerateDynamicAssembly (AssemblyName name)
916 AssemblyBuilder ab = domain.DefineDynamicAssembly (
918 AssemblyBuilderAccess.Run);
924 public void TestCultureInfo ()
930 name = GenAssemblyName ();
931 name.CultureInfo = CultureInfo.CreateSpecificCulture ("ar-DZ");
932 a = GenerateAssembly (name);
933 culture = a.GetName ().CultureInfo;
934 Assert.IsFalse (culture.IsNeutralCulture, "#A1");
935 Assert.IsFalse (culture.IsReadOnly, "#A2");
936 Assert.AreEqual (5121, culture.LCID, "#A3");
937 Assert.AreEqual ("ar-DZ", culture.Name, "#A4");
938 Assert.IsTrue (culture.UseUserOverride, "#A5");
940 name = GenAssemblyName ();
941 name.CultureInfo = new CultureInfo ("en");
942 a = GenerateAssembly (name);
943 culture = a.GetName ().CultureInfo;
944 Assert.IsTrue (culture.IsNeutralCulture, "#B1");
945 Assert.IsFalse (culture.IsReadOnly, "#B2");
946 Assert.AreEqual (9, culture.LCID, "#B3");
947 Assert.AreEqual ("en", culture.Name, "#B4");
948 Assert.IsTrue (culture.UseUserOverride, "#B5");
950 name = GenAssemblyName ();
951 name.CultureInfo = CultureInfo.InvariantCulture;
952 a = GenerateAssembly (name);
953 culture = a.GetName ().CultureInfo;
954 Assert.IsFalse (culture.IsNeutralCulture, "#C1");
956 Assert.IsFalse (culture.IsReadOnly, "#C2");
958 Assert.IsTrue (culture.IsReadOnly, "#C2");
960 Assert.AreEqual (127, culture.LCID, "#C3");
961 Assert.AreEqual (string.Empty, culture.Name, "#C4");
962 Assert.IsFalse (culture.UseUserOverride, "#C5");
964 a = typeof (int).Assembly;
966 culture = name.CultureInfo;
967 Assert.IsFalse (culture.IsNeutralCulture, "#D1");
969 Assert.IsFalse (culture.IsReadOnly, "#D2");
971 Assert.IsTrue (culture.IsReadOnly, "#D2");
973 Assert.AreEqual (127, culture.LCID, "#D3");
974 Assert.AreEqual (string.Empty, culture.Name, "#D4");
975 Assert.IsFalse (culture.UseUserOverride, "#D5");
977 a = Assembly.GetExecutingAssembly ();
979 culture = name.CultureInfo;
980 Assert.IsFalse (culture.IsNeutralCulture, "#E1");
982 Assert.IsFalse (culture.IsReadOnly, "#E2");
984 Assert.IsTrue (culture.IsReadOnly, "#E2");
986 Assert.AreEqual (127, culture.LCID, "#E3");
987 Assert.AreEqual (string.Empty, culture.Name, "#E4");
988 Assert.IsFalse (culture.UseUserOverride, "#E5");
990 AssemblyName [] names = a.GetReferencedAssemblies ();
991 foreach (AssemblyName an in names) {
992 culture = an.CultureInfo;
993 Assert.IsFalse (culture.IsNeutralCulture, "#F1:" + an.Name);
994 Assert.IsFalse (culture.IsReadOnly, "#F2:" + an.Name);
995 Assert.AreEqual (127, culture.LCID, "#F3:" + an.Name);
996 Assert.AreEqual (string.Empty, culture.Name, "#F4:" + an.Name);
998 Assert.IsFalse (culture.UseUserOverride, "#F5:" + an.Name);
1000 Assert.IsTrue (culture.UseUserOverride, "#F5:" + an.Name);
1006 public void Version ()
1008 AssemblyName name = GenAssemblyName ();
1009 name.Version = new Version (1, 2, 3, 4);
1011 Assembly a = GenerateAssembly (name);
1012 Assert.AreEqual ("1.2.3.4", a.GetName ().Version.ToString (), "1.2.3.4 normal");
1014 name = GenAssemblyName ();
1015 name.Version = new Version (1, 2, 3);
1017 a = GenerateAssembly (name);
1018 Assert.AreEqual ("1.2.3.0", a.GetName ().Version.ToString (), "1.2.3.0 normal");
1020 name = GenAssemblyName ();
1021 name.Version = new Version (1, 2);
1023 a = GenerateAssembly (name);
1024 Assert.AreEqual ("1.2.0.0", a.GetName ().Version.ToString (), "1.2.0.0 normal");
1028 [Category ("NotWorking")]
1029 public void Version_Dynamic ()
1031 AssemblyName name = GenAssemblyName ();
1032 name.Version = new Version (1, 2, 3, 4);
1034 AssemblyBuilder ab = GenerateDynamicAssembly (name);
1035 Assert.AreEqual ("1.2.3.4", ab.GetName ().Version.ToString (), "1.2.3.4 dynamic");
1037 name = GenAssemblyName ();
1038 name.Version = new Version (1, 2, 3);
1040 ab = GenerateDynamicAssembly (name);
1042 Assert.AreEqual ("1.2.3.0", ab.GetName ().Version.ToString (), "1.2.3.0 dynamic");
1044 Assert.AreEqual ("1.2.3.65535", ab.GetName ().Version.ToString (), "1.2.3.0 dynamic");
1047 name = GenAssemblyName ();
1048 name.Version = new Version (1, 2);
1050 ab = GenerateDynamicAssembly (name);
1052 Assert.AreEqual ("1.2.0.0", ab.GetName ().Version.ToString (), "1.2.0.0 dynamic");
1054 Assert.AreEqual ("1.2.65535.65535", ab.GetName ().Version.ToString (), "1.2.0.0 dynamic");
1057 #endif // TARGET_JVM
1060 public void HashAlgorithm ()
1062 Assert.AreEqual (AssemblyHashAlgorithm.SHA1,
1063 typeof (int).Assembly.GetName ().HashAlgorithm);
1067 public void Serialization ()
1069 an = new AssemblyName ();
1070 an.CodeBase = "http://www.test.com/test.dll";
1071 an.CultureInfo = CultureInfo.InvariantCulture;
1072 an.Flags = AssemblyNameFlags.PublicKey;
1073 an.HashAlgorithm = AssemblyHashAlgorithm.MD5;
1074 an.KeyPair = new StrongNameKeyPair (publicKey1);
1075 an.Name = "TestAssembly";
1076 an.Version = new Version (1, 5);
1077 an.VersionCompatibility = AssemblyVersionCompatibility.SameProcess;
1079 MemoryStream ms = new MemoryStream ();
1080 BinaryFormatter bf = new BinaryFormatter ();
1081 bf.Serialize (ms, an);
1083 // reset position of memorystream
1086 // deserialze assembly name
1087 AssemblyName dsAssemblyName = (AssemblyName) bf.Deserialize (ms);
1089 // close the memorystream
1092 // compare orginal and deserialized assembly name
1093 Assert.AreEqual (an.CodeBase, dsAssemblyName.CodeBase, "CodeBase");
1094 Assert.AreEqual (an.CultureInfo, dsAssemblyName.CultureInfo, "CultureInfo");
1095 Assert.AreEqual (an.Flags, dsAssemblyName.Flags, "Flags");
1096 Assert.AreEqual (an.HashAlgorithm, dsAssemblyName.HashAlgorithm, "HashAlgorithm");
1097 Assert.AreEqual (an.Name, dsAssemblyName.Name, "Name");
1098 Assert.AreEqual (an.Version, dsAssemblyName.Version, "Version");
1099 Assert.AreEqual (an.VersionCompatibility, dsAssemblyName.VersionCompatibility, "VersionCompatibility");
1100 Assert.AreEqual (an.EscapedCodeBase, dsAssemblyName.EscapedCodeBase, "EscapedCodeBase");
1101 Assert.AreEqual (an.FullName, dsAssemblyName.FullName, "FullName");
1102 Assert.AreEqual (an.ToString (), dsAssemblyName.ToString (), "ToString");
1103 Assert.AreEqual (an.GetPublicKey (), dsAssemblyName.GetPublicKey (), "PublicKey");
1104 Assert.AreEqual (an.GetPublicKeyToken (), dsAssemblyName.GetPublicKeyToken (), "PublicToken");
1108 public void Serialization_WithoutStrongName ()
1110 an = new AssemblyName ();
1111 an.CodeBase = "http://www.test.com/test.dll";
1112 an.CultureInfo = CultureInfo.InvariantCulture;
1113 an.Flags = AssemblyNameFlags.None;
1114 an.HashAlgorithm = AssemblyHashAlgorithm.SHA1;
1116 an.Name = "TestAssembly2";
1117 an.Version = new Version (1, 5, 0, 0);
1118 an.VersionCompatibility = AssemblyVersionCompatibility.SameMachine;
1120 MemoryStream ms = new MemoryStream ();
1121 BinaryFormatter bf = new BinaryFormatter ();
1122 bf.Serialize (ms, an);
1124 // reset position of memorystream
1127 // deserialze assembly name
1128 AssemblyName dsAssemblyName = (AssemblyName) bf.Deserialize (ms);
1130 // close the memorystream
1133 // compare orginal and deserialized assembly name
1134 Assert.AreEqual (an.CodeBase, dsAssemblyName.CodeBase, "CodeBase");
1135 Assert.AreEqual (an.CultureInfo, dsAssemblyName.CultureInfo, "CultureInfo");
1136 Assert.AreEqual (an.Flags, dsAssemblyName.Flags, "Flags");
1137 Assert.AreEqual (an.HashAlgorithm, dsAssemblyName.HashAlgorithm, "HashAlgorithm");
1138 Assert.AreEqual (an.Name, dsAssemblyName.Name, "Name");
1139 Assert.AreEqual (an.Version, dsAssemblyName.Version, "Version");
1140 Assert.AreEqual (an.VersionCompatibility, dsAssemblyName.VersionCompatibility, "VersionCompatibility");
1141 Assert.AreEqual (an.EscapedCodeBase, dsAssemblyName.EscapedCodeBase, "EscapedCodeBase");
1142 Assert.AreEqual (an.FullName, dsAssemblyName.FullName, "FullName");
1143 Assert.AreEqual (an.ToString (), dsAssemblyName.ToString (), "ToString");
1144 Assert.AreEqual (an.GetPublicKey (), dsAssemblyName.GetPublicKey (), "PublicKey");
1145 Assert.AreEqual (an.GetPublicKeyToken (), dsAssemblyName.GetPublicKeyToken (), "PublicToken");
1148 #if !TARGET_JVM // Assemblyname.GetObjectData not implemented yet for TARGET_JVM
1150 public void GetObjectData_Info_Null ()
1152 an = new AssemblyName ();
1154 an.GetObjectData (null, new StreamingContext (StreamingContextStates.All));
1156 } catch (ArgumentNullException ex) {
1157 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
1158 Assert.IsNull (ex.InnerException, "#3");
1159 Assert.IsNotNull (ex.Message, "#4");
1160 Assert.IsNotNull (ex.ParamName, "#5");
1161 Assert.AreEqual ("info", ex.ParamName, "#6");
1164 #endif // TARGET_JVM
1167 public void Clone_Corlib ()
1169 an = typeof (int).Assembly.GetName ();
1170 AssemblyName clone = (AssemblyName) an.Clone ();
1172 Assert.AreEqual (an.CodeBase, clone.CodeBase, "CodeBase");
1173 Assert.AreEqual (an.CultureInfo, clone.CultureInfo, "CultureInfo");
1174 Assert.AreEqual (an.EscapedCodeBase, clone.EscapedCodeBase, "EscapedCodeBase");
1175 Assert.AreEqual (an.Flags, clone.Flags, "Flags");
1176 Assert.AreEqual (an.FullName, clone.FullName, "FullName");
1177 Assert.AreEqual (an.HashAlgorithm, clone.HashAlgorithm, "HashAlgorithm");
1178 Assert.AreEqual (an.KeyPair, clone.KeyPair, "KeyPair");
1179 Assert.AreEqual (an.Name, clone.Name, "Name");
1181 Assert.AreEqual (an.ProcessorArchitecture, clone.ProcessorArchitecture, "PA");
1183 Assert.AreEqual (an.Version, clone.Version, "Version");
1184 Assert.AreEqual (an.VersionCompatibility, clone.VersionCompatibility, "VersionCompatibility");
1185 Assert.AreEqual (an.GetPublicKey (), clone.GetPublicKey (), "GetPublicKey");
1186 Assert.AreEqual (an.GetPublicKeyToken (), clone.GetPublicKeyToken (), "GetPublicKeyToken");
1187 Assert.AreEqual (an.ToString (), clone.ToString (), "ToString");
1191 public void Clone_Empty ()
1193 an = new AssemblyName ();
1194 AssemblyName clone = (AssemblyName) an.Clone ();
1196 Assert.IsNull (clone.CodeBase, "CodeBase");
1197 Assert.IsNull (clone.CultureInfo, "CultureInfo");
1198 Assert.IsNull (clone.EscapedCodeBase, "EscapedCodeBase");
1199 Assert.AreEqual (AssemblyNameFlags.None, clone.Flags, "Flags");
1201 Assert.AreEqual (String.Empty, clone.FullName, "FullName");
1203 Assert.IsNull (clone.FullName, "FullName");
1205 Assert.AreEqual (AssemblyHashAlgorithm.None, clone.HashAlgorithm, "HashAlgorithm");
1206 Assert.IsNull (clone.KeyPair, "KeyPair");
1207 Assert.IsNull (clone.Name, "Name");
1209 Assert.AreEqual (ProcessorArchitecture.None, clone.ProcessorArchitecture, "PA");
1211 Assert.IsNull (clone.Version, "Version");
1212 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1213 clone.VersionCompatibility, "VersionCompatibility");
1217 public void Clone_Self ()
1219 an = Assembly.GetExecutingAssembly ().GetName ();
1220 AssemblyName clone = (AssemblyName) an.Clone ();
1222 Assert.AreEqual (an.CodeBase, clone.CodeBase, "CodeBase");
1223 Assert.AreEqual (an.CultureInfo, clone.CultureInfo, "CultureInfo");
1224 Assert.AreEqual (an.EscapedCodeBase, clone.EscapedCodeBase, "EscapedCodeBase");
1225 Assert.AreEqual (an.Flags, clone.Flags, "Flags");
1226 Assert.AreEqual (an.FullName, clone.FullName, "FullName");
1227 Assert.AreEqual (an.HashAlgorithm, clone.HashAlgorithm, "HashAlgorithm");
1228 Assert.AreEqual (an.KeyPair, clone.KeyPair, "KeyPair");
1229 Assert.AreEqual (an.Name, clone.Name, "Name");
1231 //Assert.AreEqual (ProcessorArchitecture.MSIL, clone.ProcessorArchitecture, "PA");
1233 Assert.AreEqual (an.Version, clone.Version, "Version");
1234 Assert.AreEqual (an.VersionCompatibility, clone.VersionCompatibility, "VersionCompatibility");
1235 Assert.AreEqual (an.GetPublicKey (), clone.GetPublicKey (), "GetPublicKey");
1236 Assert.AreEqual (an.GetPublicKeyToken (), clone.GetPublicKeyToken (), "GetPublicKeyToken");
1237 Assert.AreEqual (an.ToString (), clone.ToString (), "ToString");
1241 [ExpectedException (typeof (FileNotFoundException))]
1242 public void GetAssemblyName_AssemblyFile_DoesNotExist ()
1244 AssemblyName.GetAssemblyName (Path.Combine (tempDir, "doesnotexist.dll"));
1248 [Category ("NotWorking")]
1249 public void GetAssemblyName_AssemblyFile_ReadLock ()
1251 string file = Path.Combine (tempDir, "loadfailure.dll");
1252 using (FileStream fs = File.Open (file, FileMode.OpenOrCreate, FileAccess.Read, FileShare.None)) {
1254 AssemblyName.GetAssemblyName (file);
1256 } catch (FileLoadException ex) {
1257 // Could not load file or assembly '...' or one
1258 // of its dependencies. The process cannot access
1259 // the file because it is being used by another
1261 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1262 Assert.IsNotNull (ex.FileName, "#3");
1264 Assert.AreEqual (file, ex.FileName, "#4");
1266 Assert.IsTrue (ex.FileName.IndexOf ("loadfailure.dll") != -1, "#4");
1268 Assert.IsNull (ex.InnerException, "#5");
1269 Assert.IsNotNull (ex.Message, "#6");
1276 public void GetAssemblyName_AssemblyFile_BadImage ()
1278 string file = Path.Combine (tempDir, "badimage.dll");
1279 using (StreamWriter sw = File.CreateText (file)) {
1280 sw.WriteLine ("somegarbage");
1283 AssemblyName.GetAssemblyName (file);
1285 } catch (BadImageFormatException ex) {
1286 Assert.AreEqual (typeof (BadImageFormatException), ex.GetType (), "#2");
1287 Assert.IsNotNull (ex.FileName, "#3");
1289 Assert.AreEqual (file, ex.FileName, "#4");
1291 Assert.IsTrue (ex.FileName.IndexOf ("badimage.dll") != -1, "#4");
1293 Assert.IsNull (ex.InnerException, "#5");
1294 Assert.IsNotNull (ex.Message, "#6");
1301 public void GetAssemblyName_CodeBase ()
1303 Assembly execAssembly = Assembly.GetExecutingAssembly ();
1305 AssemblyName aname = AssemblyName.GetAssemblyName (execAssembly.Location);
1306 Assert.IsNotNull (aname.CodeBase, "#1");
1307 Assert.AreEqual (execAssembly.CodeBase, aname.CodeBase, "#2");
1312 private string GetTokenString (byte[] value)
1314 string tokenString = "";
1315 for (int i = 0; i < value.Length; i++) {
1316 tokenString += value[i].ToString ("x2");
1322 [Test] // ctor (String)
1323 public void Constructor1_Name ()
1325 const string assemblyName = "TestAssembly";
1327 an = new AssemblyName (assemblyName);
1328 Assert.IsNull (an.CodeBase, "CodeBase");
1329 Assert.IsNull (an.CultureInfo, "CultureInfo");
1330 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1331 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1332 Assert.AreEqual ("TestAssembly", an.FullName, "FullName");
1333 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1334 Assert.IsNull (an.KeyPair, "KeyPair");
1335 Assert.AreEqual (assemblyName, an.Name, "Name");
1336 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1337 Assert.IsNull (an.Version, "Version");
1338 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1339 an.VersionCompatibility, "VersionCompatibility");
1340 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1341 Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
1342 Assert.AreEqual ("TestAssembly", an.ToString (), "ToString");
1345 [Test] // ctor (String)
1346 [Category("TargetJvmNotWorking")] // Not yet supported for TARGET_JVM.
1347 public void Constructor1_Full ()
1349 const string assemblyName = "TestAssembly";
1350 const string assemblyCulture = "neutral";
1351 const string assemblyVersion = "1.2.3.4";
1353 an = new AssemblyName (assemblyName + ", Version=" + assemblyVersion +
1354 ", Culture=" + assemblyCulture + ", PublicKeyToken=" + GetTokenString (pk_token1) + ",ProcessorArchitecture=X86");
1355 Assert.IsNull (an.CodeBase, "CodeBase");
1356 Assert.AreEqual (CultureInfo.InvariantCulture, an.CultureInfo, "CultureInfo");
1357 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1358 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1359 Assert.AreEqual ("TestAssembly, Version=1.2.3.4, Culture=neutral, PublicKeyToken=" +
1360 GetTokenString (pk_token1), an.FullName, "FullName");
1361 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1362 Assert.IsNull (an.KeyPair, "KeyPair");
1363 Assert.AreEqual (assemblyName, an.Name, "Name");
1364 Assert.AreEqual (ProcessorArchitecture.X86, an.ProcessorArchitecture, "PA");
1365 Assert.AreEqual (new Version (assemblyVersion), an.Version, "Version");
1366 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1367 an.VersionCompatibility, "VersionCompatibility");
1368 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1369 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "GetPublicKeyToken");
1370 Assert.AreEqual (an.FullName, an.ToString (), "ToString");
1373 [Test] // ctor (String)
1374 public void Constructor1_AssemblyName_Empty ()
1377 new AssemblyName (string.Empty);
1379 } catch (ArgumentException ex) {
1380 // String cannot have zero length
1381 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
1382 Assert.IsNull (ex.InnerException, "#3");
1383 Assert.IsNotNull (ex.Message, "#4");
1384 Assert.IsNull (ex.ParamName, "#5");
1388 [Test] // ctor (String)
1389 public void Constructor1_AssemblyName_Invalid ()
1391 const string assemblyName = "TestAssembly";
1394 new AssemblyName (assemblyName + ", =1.2.4.5");
1395 Assert.Fail ("#A1");
1396 } catch (FileLoadException ex) {
1397 // The given assembly name or codebase was invalid
1398 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1399 Assert.IsNull (ex.FileName, "#3");
1400 Assert.IsNull (ex.InnerException, "#3");
1401 Assert.IsNotNull (ex.Message, "#4");
1405 new AssemblyName (assemblyName + ", OtherAttribute");
1406 Assert.Fail ("#B1");
1407 } catch (FileLoadException ex) {
1408 // The given assembly name or codebase was invalid
1409 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1410 Assert.IsNull (ex.FileName, "#3");
1411 Assert.IsNull (ex.InnerException, "#3");
1412 Assert.IsNotNull (ex.Message, "#4");
1416 [Test] // ctor (String)
1417 public void Constructor1_AssemblyName_Null ()
1420 new AssemblyName (null);
1422 } catch (ArgumentNullException ex) {
1423 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
1424 Assert.IsNull (ex.InnerException, "#3");
1425 Assert.IsNotNull (ex.Message, "#4");
1426 Assert.IsNotNull (ex.ParamName, "#5");
1427 Assert.AreEqual ("assemblyName", ex.ParamName, "#6");
1431 [Test] // ctor (String)
1432 public void Constructor1_Culture ()
1434 const string assemblyName = "TestAssembly";
1435 const string assemblyCulture = "en-US";
1437 an = new AssemblyName (assemblyName + ", Culture=" + assemblyCulture);
1438 Assert.IsNull (an.CodeBase, "CodeBase");
1439 Assert.AreEqual (new CultureInfo (assemblyCulture), an.CultureInfo, "CultureInfo");
1440 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1441 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1442 Assert.AreEqual ("TestAssembly, Culture=en-US", an.FullName, "FullName");
1443 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1444 Assert.IsNull (an.KeyPair, "KeyPair");
1445 Assert.AreEqual (assemblyName, an.Name, "Name");
1446 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1447 Assert.IsNull (an.Version, "Version");
1448 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1449 an.VersionCompatibility, "VersionCompatibility");
1450 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1451 Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
1452 Assert.AreEqual (an.FullName, an.ToString (), "ToString");
1455 [Test] // ctor (String)
1456 public void Constructor1_Culture_Incomplete ()
1458 const string assemblyName = "TestAssembly";
1461 new AssemblyName (assemblyName + ", Culture=");
1463 } catch (FileLoadException ex) {
1464 // The given assembly name or codebase was invalid
1465 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1466 Assert.IsNull (ex.FileName, "#3");
1467 Assert.IsNull (ex.InnerException, "#3");
1468 Assert.IsNotNull (ex.Message, "#4");
1472 [Test] // ctor (String)
1473 public void Constructor1_Culture_NotSupported ()
1475 const string assemblyName = "TestAssembly";
1478 new AssemblyName (assemblyName + ", Culture=aa-AA");
1481 } catch (CultureNotFoundException ex) {
1484 } catch (ArgumentException ex) {
1485 // Culture name 'aa-aa' is not supported
1486 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
1487 Assert.IsNull (ex.InnerException, "#3");
1488 Assert.IsNotNull (ex.Message, "#4");
1489 Assert.IsNotNull (ex.ParamName, "#5");
1490 Assert.AreEqual ("name", ex.ParamName, "#6");
1495 [Test] // ctor (String)
1496 [Category ("NotWorking")] // bug #351708
1497 public void Constructor1_ProcessorArchitecture ()
1499 const string assemblyName = "TestAssembly";
1501 an = new AssemblyName (assemblyName + ", ProcessorArchitecture=X86");
1502 Assert.IsNull (an.CodeBase, "CodeBase");
1503 Assert.IsNull (an.CultureInfo, "CultureInfo");
1504 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1505 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1506 Assert.AreEqual ("TestAssembly", an.FullName, "FullName");
1507 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1508 Assert.IsNull (an.KeyPair, "KeyPair");
1509 Assert.AreEqual (assemblyName, an.Name, "Name");
1510 Assert.AreEqual (ProcessorArchitecture.X86, an.ProcessorArchitecture, "PA");
1511 Assert.IsNull (an.Version, "Version");
1512 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1513 an.VersionCompatibility, "VersionCompatibility");
1514 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1515 Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
1516 Assert.AreEqual ("TestAssembly", an.ToString (), "ToString");
1518 an = new AssemblyName (assemblyName + ", ProcessorArchitecture=mSiL");
1519 Assert.AreEqual (ProcessorArchitecture.MSIL, an.ProcessorArchitecture, "PA: MSIL");
1521 an = new AssemblyName (assemblyName + ", ProcessorArchitecture=AmD64");
1522 Assert.AreEqual (ProcessorArchitecture.Amd64, an.ProcessorArchitecture, "PA: Amd64");
1524 an = new AssemblyName (assemblyName + ", ProcessorArchitecture=iA64");
1525 Assert.AreEqual (ProcessorArchitecture.IA64, an.ProcessorArchitecture, "PA: IA64");
1528 [Test] // ctor (String)
1529 [Category ("NotWorking")] // bug #351708
1530 public void Constructor1_ProcessorArchitecture_Incomplete ()
1532 const string assemblyName = "TestAssembly";
1534 new AssemblyName (assemblyName + ", ProcessorArchitecture=");
1536 } catch (FileLoadException ex) {
1537 // The given assembly name or codebase was invalid
1538 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1539 Assert.IsNull (ex.FileName, "#3");
1540 Assert.IsNull (ex.InnerException, "#3");
1541 Assert.IsNotNull (ex.Message, "#4");
1545 [Test] // ctor (String)
1546 [Category ("NotWorking")] // bug #351708
1547 public void Constructor1_ProcessorArchitecture_Invalid ()
1549 const string assemblyName = "TestAssembly";
1551 new AssemblyName (assemblyName + ", ProcessorArchitecture=XXX");
1552 Assert.Fail ("#A1");
1553 } catch (FileLoadException ex) {
1554 // The given assembly name or codebase was invalid
1555 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#A2");
1556 Assert.IsNull (ex.FileName, "#A3");
1557 Assert.IsNull (ex.InnerException, "#A4");
1558 Assert.IsNotNull (ex.Message, "#A5");
1562 new AssemblyName (assemblyName + ", ProcessorArchitecture=None");
1563 Assert.Fail ("#B1");
1564 } catch (FileLoadException ex) {
1565 // The given assembly name or codebase was invalid
1566 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#B2");
1567 Assert.IsNull (ex.FileName, "#B3");
1568 Assert.IsNull (ex.InnerException, "#B4");
1569 Assert.IsNotNull (ex.Message, "#B5");
1573 [Test] // ctor (String)
1574 [Category ("NotDotNet")] // MS only sets the public key token not the public key: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=321088
1575 public void Constructor1_PublicKey_Mono ()
1577 const string assemblyName = "TestAssembly";
1579 an = new AssemblyName (assemblyName + ", PublicKey=" + GetTokenString (publicKey1));
1580 Assert.IsNull (an.CodeBase, "CodeBase");
1581 Assert.IsNull (an.CultureInfo, "CultureInfo");
1582 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1583 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "Flags");
1584 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "FullName");
1585 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1586 Assert.IsNull (an.KeyPair, "KeyPair");
1587 Assert.AreEqual (assemblyName, an.Name, "Name");
1588 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1589 Assert.IsNull (an.Version, "Version");
1590 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1591 an.VersionCompatibility, "VersionCompatibility");
1592 Assert.AreEqual (publicKey1, an.GetPublicKey (), "GetPublicKey");
1593 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "GetPublicKeyToken");
1594 Assert.AreEqual (an.FullName, an.ToString (), "ToString");
1598 [Category ("NotWorking")] // MS only sets the public key token not the public key: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=321088
1599 public void Constructor1_PublicKey_MS ()
1601 const string assemblyName = "TestAssembly";
1603 an = new AssemblyName (assemblyName + ", PublicKey=" + GetTokenString (publicKey1));
1604 Assert.IsNull (an.CodeBase, "CodeBase");
1605 Assert.IsNull (an.CultureInfo, "CultureInfo");
1606 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1607 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1608 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "FullName");
1609 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1610 Assert.IsNull (an.KeyPair, "KeyPair");
1611 Assert.AreEqual (assemblyName, an.Name, "Name");
1612 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1613 Assert.IsNull (an.Version, "Version");
1614 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1615 an.VersionCompatibility, "VersionCompatibility");
1616 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1617 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "GetPublicKeyToken");
1618 Assert.AreEqual (an.FullName, an.ToString (), "ToString");
1621 [Test] // ctor (String)
1622 [Category ("NotWorking")] // bug #351725
1623 public void Constructor1_PublicKey_Ecma ()
1625 const string assemblyName = "TestAssembly";
1627 an = new AssemblyName (assemblyName + ", PublicKey=" + GetTokenString (publicKey3));
1628 Assert.IsNull (an.CodeBase, "CodeBase");
1629 Assert.IsNull (an.CultureInfo, "CultureInfo");
1630 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1631 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1632 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token3), an.FullName, "FullName");
1633 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1634 Assert.IsNull (an.KeyPair, "KeyPair");
1635 Assert.AreEqual (assemblyName, an.Name, "Name");
1636 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1637 Assert.IsNull (an.Version, "Version");
1638 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1639 an.VersionCompatibility, "VersionCompatibility");
1640 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1641 Assert.AreEqual (pk_token3, an.GetPublicKeyToken (), "GetPublicKeyToken");
1642 Assert.AreEqual (an.FullName, an.ToString (), "ToString");
1645 [Test] // ctor (String)
1646 public void Constructor1_PublicKey_Incomplete ()
1648 const string assemblyName = "TestAssembly";
1651 new AssemblyName (assemblyName + ", PublicKey=");
1653 } catch (FileLoadException ex) {
1654 // The given assembly name or codebase was invalid
1655 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1656 Assert.IsNull (ex.FileName, "#3");
1657 Assert.IsNull (ex.InnerException, "#3");
1658 Assert.IsNotNull (ex.Message, "#4");
1662 [Test] // ctor (String)
1663 public void Constructor1_PublicKey_Invalid ()
1665 const string assemblyName = "TestAssembly";
1668 new AssemblyName (assemblyName + ", PublicKey=0024000004800000940000000602000000240000525341310004000011000000e39d99616f48cf7d6d59f345e485e713e89b8b1265a31b1a393e9894ee3fbddaf382dcaf4083dc31ee7a40a2a25c69c6d019fba9f37ec17fd680e4f6fe3b5305f71ae9e494e3501d92508c2e98ca1e22991a217aa8ce259c9882ffdfff4fbc6fa5e6660a8ff951cd94ed011e5633651b64e8f4522519b6ec84921ee22e4840e");
1669 Assert.Fail ("#A1");
1670 } catch (FileLoadException ex) {
1671 // The given assembly name or codebase was invalid
1672 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#A2");
1673 Assert.IsNull (ex.FileName, "#A3");
1674 Assert.IsNull (ex.InnerException, "#A4");
1675 Assert.IsNotNull (ex.Message, "#A5");
1679 new AssemblyName (assemblyName + ", PublicKey=null");
1680 Assert.Fail ("#B1");
1681 } catch (FileLoadException ex) {
1682 // The given assembly name or codebase was invalid
1683 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#B2");
1684 Assert.IsNull (ex.FileName, "#B3");
1685 Assert.IsNull (ex.InnerException, "#B4");
1686 Assert.IsNotNull (ex.Message, "#B5");
1690 [Test] // ctor (String)
1691 [Category ("NotWorking")] // bug #351756
1692 public void Constructor1_PublicKey_KeyPair ()
1694 const string assemblyName = "TestAssembly";
1697 new AssemblyName (assemblyName + ", PublicKey=" + GetTokenString (keyPair));
1699 } catch (SecurityException ex) {
1700 // Invalid assembly public key
1701 Assert.AreEqual (typeof (SecurityException), ex.GetType (), "#2");
1702 Assert.AreEqual ((SecurityAction) 0, ex.Action, "#3");
1703 Assert.IsNull (ex.InnerException, "#4");
1704 Assert.IsNotNull (ex.Message, "#5");
1708 [Test] // ctor (String)
1709 public void Constructor1_PublicKeyToken ()
1711 const string assemblyName = "TestAssembly";
1713 an = new AssemblyName (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1));
1714 Assert.IsNull (an.CodeBase, "#A:CodeBase");
1715 Assert.IsNull (an.CultureInfo, "#A:CultureInfo");
1716 Assert.IsNull (an.EscapedCodeBase, "#A:EscapedCodeBase");
1717 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#A:Flags");
1718 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#A:FullName");
1719 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "#A:HashAlgorithm");
1720 Assert.IsNull (an.KeyPair, "#A:KeyPair");
1721 Assert.AreEqual (assemblyName, an.Name, "#A:Name");
1722 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "#A:PA");
1723 Assert.IsNull (an.Version, "#A:Version");
1724 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1725 an.VersionCompatibility, "#A:VersionCompatibility");
1726 Assert.IsNull (an.GetPublicKey (), "#A:GetPublicKey");
1727 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#A:GetPublicKeyToken");
1728 Assert.AreEqual (an.FullName, an.ToString (), "#A:ToString");
1730 an = new AssemblyName (assemblyName + ", PublicKeyToken=null");
1731 Assert.IsNull (an.CodeBase, "#B:CodeBase");
1732 Assert.IsNull (an.CultureInfo, "#B:CultureInfo");
1733 Assert.IsNull (an.EscapedCodeBase, "#B:EscapedCodeBase");
1734 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#B:Flags");
1735 //Assert.AreEqual ("TestAssembly, PublicKeyToken=null", an.FullName, "#B:FullName");
1736 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "#B:HashAlgorithm");
1737 Assert.IsNull (an.KeyPair, "#B:KeyPair");
1738 Assert.AreEqual (assemblyName, an.Name, "#B:Name");
1739 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "#B:PA");
1740 Assert.IsNull (an.Version, "#B:Version");
1741 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1742 an.VersionCompatibility, "#B:VersionCompatibility");
1743 Assert.IsNull (an.GetPublicKey (), "#B:GetPublicKey");
1744 Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#B:GetPublicKeyToken");
1745 Assert.AreEqual (an.FullName, an.ToString (), "#B:ToString");
1748 [Test] // ctor (String)
1749 public void Constructor1_PublicKeyToken_Incomplete ()
1751 const string assemblyName = "TestAssembly";
1754 new AssemblyName (assemblyName + ", PublicKeyToken=");
1756 } catch (FileLoadException ex) {
1757 // The given assembly name or codebase was invalid
1758 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1759 Assert.IsNull (ex.FileName, "#3");
1760 Assert.IsNull (ex.InnerException, "#3");
1761 Assert.IsNotNull (ex.Message, "#4");
1765 [Test] // ctor (String)
1766 public void Constructor1_PublicKeyToken_Invalid ()
1768 const string assemblyName = "TestAssembly";
1771 new AssemblyName (assemblyName + ", PublicKeyToken=27576a8182a188");
1773 } catch (FileLoadException ex) {
1774 // The given assembly name or codebase was invalid
1775 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1776 Assert.IsNull (ex.FileName, "#3");
1777 Assert.IsNull (ex.InnerException, "#3");
1778 Assert.IsNotNull (ex.Message, "#4");
1782 [Test] // ctor (String)
1783 public void Constructor1_Retargetable ()
1785 const string assemblyName = "TestAssembly";
1788 new AssemblyName (assemblyName + ", Retargetable=Yes");
1789 Assert.Fail ("#A1");
1790 } catch (FileLoadException ex) {
1791 // The given assembly name or codebase was invalid
1792 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#A2");
1793 Assert.IsNull (ex.FileName, "#A3");
1794 Assert.IsNull (ex.InnerException, "#A4");
1795 Assert.IsNotNull (ex.Message, "#A5");
1799 new AssemblyName (assemblyName + ", Retargetable=No");
1800 Assert.Fail ("#B1");
1801 } catch (FileLoadException ex) {
1802 // The given assembly name or codebase was invalid
1803 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#B2");
1804 Assert.IsNull (ex.FileName, "#B3");
1805 Assert.IsNull (ex.InnerException, "#B4");
1806 Assert.IsNotNull (ex.Message, "#B5");
1810 new AssemblyName (assemblyName + ", Version=1.0.0.0, Retargetable=Yes");
1811 Assert.Fail ("#C1");
1812 } catch (FileLoadException ex) {
1813 // The given assembly name or codebase was invalid
1814 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#C2");
1815 Assert.IsNull (ex.FileName, "#C3");
1816 Assert.IsNull (ex.InnerException, "#C4");
1817 Assert.IsNotNull (ex.Message, "#C5");
1821 new AssemblyName (assemblyName + ", Version=1.0.0.0, Culture=neutral, Retargetable=Yes");
1822 Assert.Fail ("#D1");
1823 } catch (FileLoadException ex) {
1824 // The given assembly name or codebase was invalid
1825 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#D2");
1826 Assert.IsNull (ex.FileName, "#D3");
1827 Assert.IsNull (ex.InnerException, "#D4");
1828 Assert.IsNotNull (ex.Message, "#D5");
1832 new AssemblyName (assemblyName + ", Version=1.0.0.0, PublicKeyToken=null, Retargetable=Yes");
1833 Assert.Fail ("#E1");
1834 } catch (FileLoadException ex) {
1835 // The given assembly name or codebase was invalid
1836 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#E2");
1837 Assert.IsNull (ex.FileName, "#E3");
1838 Assert.IsNull (ex.InnerException, "#E4");
1839 Assert.IsNotNull (ex.Message, "#E5");
1842 an = new AssemblyName (assemblyName + ", Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, Retargetable=yEs");
1843 Assert.IsNull (an.CodeBase, "F:CodeBase");
1844 Assert.AreEqual (CultureInfo.InvariantCulture, an.CultureInfo, "#F:CultureInfo");
1845 Assert.IsNull (an.EscapedCodeBase, "#F:EscapedCodeBase");
1846 Assert.AreEqual (AssemblyNameFlags.Retargetable, an.Flags, "#F:Flags");
1847 Assert.AreEqual ("TestAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, Retargetable=Yes", an.FullName, "#F:FullName");
1848 Assert.IsNull (an.GetPublicKey (), "#F:GetPublicKey");
1849 Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#F:GetPublicKeyToken");
1850 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "#F:HashAlgorithm");
1851 Assert.IsNull (an.KeyPair, "#F:KeyPair");
1852 Assert.AreEqual (assemblyName, an.Name, "#F:Name");
1853 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "#F:PA");
1854 Assert.AreEqual (an.FullName, an.ToString (), "#F:ToString");
1855 Assert.AreEqual (new Version (1, 0, 0, 0), an.Version, "#F:Version");
1856 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1857 an.VersionCompatibility, "#F:VersionCompatibility");
1859 an = new AssemblyName (assemblyName + ", Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, Retargetable=nO");
1860 Assert.IsNull (an.CodeBase, "G:CodeBase");
1861 Assert.AreEqual (CultureInfo.InvariantCulture, an.CultureInfo, "#G:CultureInfo");
1862 Assert.IsNull (an.EscapedCodeBase, "#G:EscapedCodeBase");
1863 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#G:Flags");
1864 Assert.AreEqual ("TestAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", an.FullName, "#G:FullName");
1865 Assert.IsNull (an.GetPublicKey (), "#G:GetPublicKey");
1866 Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#G:GetPublicKeyToken");
1867 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "#G:HashAlgorithm");
1868 Assert.IsNull (an.KeyPair, "#G:KeyPair");
1869 Assert.AreEqual (assemblyName, an.Name, "#G:Name");
1870 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "#G:PA");
1871 Assert.AreEqual (an.FullName, an.ToString (), "#G:ToString");
1872 Assert.AreEqual (new Version (1, 0, 0, 0), an.Version, "#G:Version");
1873 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1874 an.VersionCompatibility, "#G:VersionCompatibility");
1876 an = new AssemblyName (assemblyName + ", Version=1.0.0.0, Culture=neutral, PublicKeyToken=" + GetTokenString (pk_token1) + ", Retargetable=yes");
1877 Assert.IsNull (an.CodeBase, "H:CodeBase");
1878 Assert.AreEqual (CultureInfo.InvariantCulture, an.CultureInfo, "#H:CultureInfo");
1879 Assert.IsNull (an.EscapedCodeBase, "#H:EscapedCodeBase");
1880 Assert.AreEqual (AssemblyNameFlags.Retargetable, an.Flags, "#H:Flags");
1881 Assert.AreEqual ("TestAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=" + GetTokenString (pk_token1) + ", Retargetable=Yes", an.FullName, "#H:FullName");
1882 Assert.IsNull (an.GetPublicKey (), "#H:GetPublicKey");
1883 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#H:GetPublicKeyToken");
1884 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "#H:HashAlgorithm");
1885 Assert.IsNull (an.KeyPair, "#H:KeyPair");
1886 Assert.AreEqual (assemblyName, an.Name, "#H:Name");
1887 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "#H:PA");
1888 Assert.AreEqual (an.FullName, an.ToString (), "#H:ToString");
1889 Assert.AreEqual (new Version (1, 0, 0, 0), an.Version, "#H:Version");
1890 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1891 an.VersionCompatibility, "#H:VersionCompatibility");
1894 [Test] // ctor (String)
1895 public void Constructor1_Retargetable_Incomplete ()
1897 const string assemblyName = "TestAssembly";
1900 new AssemblyName (assemblyName + ", Retargetable=");
1902 } catch (FileLoadException ex) {
1903 // The given assembly name or codebase was invalid
1904 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1905 Assert.IsNull (ex.FileName, "#3");
1906 Assert.IsNull (ex.InnerException, "#4");
1907 Assert.IsNotNull (ex.Message, "#5");
1911 [Test] // ctor (String)
1912 public void Constructor1_Retargetable_Invalid ()
1914 const string assemblyName = "TestAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
1917 new AssemblyName (assemblyName + ", Retargetable=False");
1918 Assert.Fail ("#A1");
1919 } catch (FileLoadException ex) {
1920 // The given assembly name or codebase was invalid
1921 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#A2");
1922 Assert.IsNull (ex.FileName, "#A3");
1923 Assert.IsNull (ex.InnerException, "#A4");
1924 Assert.IsNotNull (ex.Message, "#A5");
1928 new AssemblyName (assemblyName + ", Retargetable=1");
1929 Assert.Fail ("#B1");
1930 } catch (FileLoadException ex) {
1931 // The given assembly name or codebase was invalid
1932 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#B2");
1933 Assert.IsNull (ex.FileName, "#B3");
1934 Assert.IsNull (ex.InnerException, "#B4");
1935 Assert.IsNotNull (ex.Message, "#B5");
1939 new AssemblyName (assemblyName + ", Retargetable=True");
1940 Assert.Fail ("#C1");
1941 } catch (FileLoadException ex) {
1942 // The given assembly name or codebase was invalid
1943 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#C2");
1944 Assert.IsNull (ex.FileName, "#C3");
1945 Assert.IsNull (ex.InnerException, "#C4");
1946 Assert.IsNotNull (ex.Message, "#C5");
1950 [Test] // ctor (String)
1951 [Category("TargetJvmNotWorking")] // Not yet supported for TARGET_JVM.
1952 public void Constructor1_Version ()
1954 const string assemblyName = "TestAssembly";
1955 const string assemblyVersion = "1.2.3.4";
1957 an = new AssemblyName (assemblyName + ", Version=" + assemblyVersion);
1958 Assert.IsNull (an.CodeBase, "CodeBase");
1959 Assert.IsNull (an.CultureInfo, "CultureInfo");
1960 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1961 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1962 Assert.AreEqual ("TestAssembly, Version=1.2.3.4", an.FullName, "FullName");
1963 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1964 Assert.IsNull (an.KeyPair, "KeyPair");
1965 Assert.AreEqual (assemblyName, an.Name, "Name");
1966 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1967 Assert.AreEqual (new Version (assemblyVersion), an.Version, "Version");
1968 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1969 an.VersionCompatibility, "VersionCompatibility");
1970 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1971 Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
1972 Assert.AreEqual (an.FullName, an.ToString (), "ToString");
1976 [Test] // ctor (String)
1977 public void Constructor1_Version_Incomplete ()
1979 const string assemblyName = "TestAssembly";
1982 new AssemblyName (assemblyName + ", Version=, Culture=neutral");
1984 } catch (FileLoadException ex) {
1985 // The given assembly name or codebase was invalid
1986 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1987 Assert.IsNull (ex.FileName, "#3");
1988 Assert.IsNull (ex.InnerException, "#3");
1989 Assert.IsNotNull (ex.Message, "#4");
1993 [Test] // ctor (String)
1994 public void Constructor1_Version_Invalid ()
1996 const string assemblyName = "TestAssembly";
1999 new AssemblyName (assemblyName + ", Version=a.b");
2001 } catch (FileLoadException ex) {
2002 // The given assembly name or codebase was invalid
2003 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
2004 Assert.IsNull (ex.FileName, "#3");
2005 Assert.IsNull (ex.InnerException, "#3");
2006 Assert.IsNotNull (ex.Message, "#4");
2010 [Test (Description="Xamarin bug #99 - whitespaces in key=value")]
2011 public void WhiteSpaceInKeyValue ()
2013 string nameWithSpaces = String.Format ("MySql.Data.Tests, PublicKey = \t {0}, Culture =\tneutral, Version=\t1.2.3.4", GetTokenString (publicKey1));
2014 string fullName = "MySql.Data.Tests, Version=1.2.3.4, Culture=neutral, PublicKeyToken=ce5276d8687ec6dc";
2015 var an = new AssemblyName (nameWithSpaces);
2017 Assert.AreEqual (fullName, an.FullName);