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_Flags ()
446 const string assemblyName = "TestAssembly";
448 // tests for AssemblyName with only name
449 an = new AssemblyName ();
451 an.Flags = AssemblyNameFlags.EnableJITcompileOptimizer |
452 AssemblyNameFlags.EnableJITcompileTracking |
453 AssemblyNameFlags.PublicKey |
454 AssemblyNameFlags.Retargetable;
456 an.Flags = AssemblyNameFlags.PublicKey |
457 AssemblyNameFlags.Retargetable;
459 an.Name = assemblyName;
460 Assert.AreEqual (assemblyName + ", Retargetable=Yes", an.FullName, "#1");
461 an.Flags = AssemblyNameFlags.None;
462 Assert.AreEqual (assemblyName, an.FullName, "#2");
466 public void FullName_Name ()
468 const string assemblyName = "TestAssembly";
470 // tests for AssemblyName with only name
471 an = new AssemblyName ();
472 an.Name = assemblyName;
473 Assert.IsNotNull (an.FullName, "FullName2#1");
474 Assert.AreEqual (an.Name, an.FullName, "FullName2#2");
475 Assert.AreEqual (-1, an.FullName.IndexOf ("Culture="), "FullName2#3");
476 Assert.AreEqual (-1, an.FullName.IndexOf ("PublicKeyToken="), "FullName2#4");
480 public void FullName_Version ()
482 const string assemblyName = "TestAssembly";
483 const string assemblyVersion = "1.2";
485 // tests for AssemblyName with name and version
486 an = new AssemblyName ();
487 an.Name = assemblyName;
488 an.Version = new Version (assemblyVersion);
489 Assert.AreEqual (assemblyName + ", Version=" + assemblyVersion, an.FullName, "FullName3#1");
493 public void FullName_Culture ()
495 const string assemblyName = "TestAssembly";
497 // tests for AssemblyName with name and neutral culture
498 an = new AssemblyName ();
499 an.Name = assemblyName;
500 an.CultureInfo = CultureInfo.InvariantCulture;
501 Assert.AreEqual (assemblyName + ", Culture=neutral", an.FullName, "#1");
502 an.CultureInfo = new CultureInfo ("nl-BE");
503 Assert.AreEqual (assemblyName + ", Culture=nl-BE", an.FullName, "#2");
506 Assert.AreEqual (string.Empty, an.FullName, "#3");
508 Assert.IsNull (an.FullName, "#4");
513 public void FullName_PublicKey ()
515 const string assemblyName = "TestAssembly";
517 // tests for AssemblyName with name and public key
518 an = new AssemblyName ();
519 an.Name = assemblyName;
520 an.SetPublicKey (publicKey1);
521 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#A1");
522 an.SetPublicKey ((byte []) null);
523 Assert.AreEqual (assemblyName, an.FullName, "#A2");
524 an.SetPublicKey (new byte [0]);
525 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#A3");
528 Assert.AreEqual (string.Empty, an.FullName, "#A4");
530 Assert.IsNull (an.FullName, "#A4");
533 an = new AssemblyName ();
534 an.HashAlgorithm = AssemblyHashAlgorithm.MD5;
535 an.Name = assemblyName;
536 an.SetPublicKey (publicKey1);
537 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#B1");
538 an.SetPublicKeyToken (new byte [] { 0x0a, 0x22 });
540 Assert.AreEqual (assemblyName + ", PublicKeyToken=0a22", an.FullName, "#B2");
542 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#B2");
544 an.SetPublicKeyToken ((byte []) null);
545 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#B3");
548 Assert.AreEqual (string.Empty, an.FullName, "#B4");
550 Assert.IsNull (an.FullName, "#B4");
553 an = new AssemblyName ();
554 an.HashAlgorithm = AssemblyHashAlgorithm.None;
555 an.Name = assemblyName;
556 an.SetPublicKey (publicKey1);
557 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C1");
558 an.SetPublicKeyToken (new byte [] { 0x0a, 0x22 });
560 Assert.AreEqual (assemblyName + ", PublicKeyToken=0a22", an.FullName, "#C2");
562 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C2");
564 an.SetPublicKeyToken ((byte []) null);
565 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C3");
568 Assert.AreEqual (string.Empty, an.FullName, "#C4");
570 Assert.IsNull (an.FullName, "#C4");
573 an = new AssemblyName ();
574 an.Name = assemblyName;
575 an.SetPublicKey (new byte [0]);
576 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D1");
579 Assert.AreEqual (string.Empty, an.FullName, "#D2");
581 Assert.IsNull (an.FullName, "#D2");
583 an.SetPublicKey (publicKey3);
585 Assert.AreEqual (string.Empty, an.FullName, "#D3");
587 Assert.IsNull (an.FullName, "#D3");
589 an.Name = assemblyName;
590 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token3), an.FullName, "#D4");
594 public void FullName_PublicKey_KeyPair ()
596 const string assemblyName = "TestAssembly";
598 // tests for AssemblyName with name and public key
599 an = new AssemblyName ();
600 an.Name = assemblyName;
601 an.SetPublicKey (keyPair);
604 Assert.Fail ("#A1: " + an.FullName);
605 } catch (SecurityException ex) {
606 // Invalid assembly public key
607 Assert.AreEqual (typeof (SecurityException), ex.GetType (), "#A2");
608 Assert.AreEqual ((SecurityAction) 0, ex.Action, "#A3");
609 Assert.IsNull (ex.InnerException, "#A4");
610 Assert.IsNotNull (ex.Message, "#A5");
613 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#A1");
616 an.SetPublicKeyToken (new byte [0]);
618 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#B1");
620 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#B1");
623 an.SetPublicKeyToken ((byte []) null);
626 Assert.Fail ("#C1: " + an.FullName);
627 } catch (SecurityException ex) {
628 // Invalid assembly public key
629 Assert.AreEqual (typeof (SecurityException), ex.GetType (), "#C2");
630 Assert.AreEqual ((SecurityAction) 0, ex.Action, "#C3");
631 Assert.IsNull (ex.InnerException, "#C4");
632 Assert.IsNotNull (ex.Message, "#C5");
635 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#C1");
638 an.SetPublicKeyToken (new byte [0]);
640 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D1");
642 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#D1");
644 an.SetPublicKey (publicKey1);
646 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D2");
648 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D2");
650 an.SetPublicKeyToken ((byte []) null);
651 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D3");
655 public void FullName_PublicKeyToken ()
657 const string assemblyName = "TestAssembly";
659 an = new AssemblyName ();
660 an.Name = assemblyName;
661 an.SetPublicKeyToken (pk_token1);
662 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#A1");
663 an.SetPublicKeyToken ((byte []) null);
664 Assert.AreEqual (assemblyName, an.FullName, "#A2");
665 an.SetPublicKeyToken (new byte [0]);
666 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#A3");
667 an.SetPublicKeyToken (pk_token1);
668 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#A4");
671 Assert.AreEqual (string.Empty, an.FullName, "#A5");
673 Assert.IsNull (an.FullName, "#A5");
676 an = new AssemblyName ();
677 an.HashAlgorithm = AssemblyHashAlgorithm.MD5;
678 an.Name = assemblyName;
679 an.SetPublicKeyToken (pk_token1);
680 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#B1");
681 an.SetPublicKeyToken (new byte [] { 0x0a, 0x22 });
682 Assert.AreEqual (assemblyName + ", PublicKeyToken=0a22", an.FullName, "#B2");
683 an.SetPublicKeyToken ((byte []) null);
684 Assert.AreEqual (assemblyName, an.FullName, "#B3");
687 Assert.AreEqual (string.Empty, an.FullName, "#B4");
689 Assert.IsNull (an.FullName, "#B4");
692 an = new AssemblyName ();
693 an.Name = assemblyName;
694 an.SetPublicKey (publicKey1);
695 an.SetPublicKeyToken (pk_token1);
696 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C1");
697 an.SetPublicKey ((byte []) null);
699 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C2");
701 Assert.AreEqual (assemblyName, an.FullName, "#C2");
703 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#C3");
704 an.SetPublicKey (new byte [0]);
706 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C4");
708 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#C4");
710 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#C5");
712 an = new AssemblyName ();
713 an.Name = assemblyName;
714 an.SetPublicKey (publicKey1);
715 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D1");
716 an.SetPublicKey (new byte [0]);
717 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D2");
718 an.SetPublicKeyToken (pk_token1);
720 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D3");
722 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D3");
724 an.SetPublicKey ((byte []) null);
726 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D4");
728 Assert.AreEqual (assemblyName, an.FullName, "#D4");
733 public void FullName_VersionCulture ()
735 const string assemblyName = "TestAssembly";
736 const string assemblyVersion = "1.2";
738 // tests for AssemblyName with name, version and neutral culture
739 an = new AssemblyName ();
740 an.Name = assemblyName;
741 an.Version = new Version (assemblyVersion);
742 an.CultureInfo = CultureInfo.InvariantCulture;
743 Assert.AreEqual (assemblyName + ", Version=" + assemblyVersion
744 + ", Culture=neutral", an.FullName, "#1");
745 an.CultureInfo = new CultureInfo ("en-US");
746 Assert.AreEqual (assemblyName + ", Version=" + assemblyVersion
747 + ", Culture=en-US", an.FullName, "#2");
748 an.CultureInfo = new CultureInfo ("en");
749 Assert.AreEqual (assemblyName + ", Version=" + assemblyVersion
750 + ", Culture=en", an.FullName, "#3");
754 public void FullName_VersionPublicKey ()
756 const string assemblyName = "TestAssembly";
757 const string assemblyVersion = "1.2";
759 // tests for AssemblyName with name, version and public key
760 an = new AssemblyName ();
761 an.Name = assemblyName;
762 an.Version = new Version (assemblyVersion);
763 an.SetPublicKey (publicKey1);
764 an.SetPublicKeyToken (pk_token1);
765 Assert.AreEqual (assemblyName + ", Version=" + assemblyVersion
766 + ", PublicKeyToken=" + GetTokenString (pk_token1),
771 public void FullName_CulturePublicKey ()
773 const string assemblyName = "TestAssembly";
775 // tests for AssemblyName with name, culture and public key
776 an = new AssemblyName ();
777 an.Name = assemblyName;
778 an.CultureInfo = CultureInfo.InvariantCulture;
779 an.SetPublicKey (publicKey1);
780 an.SetPublicKeyToken (pk_token1);
781 Assert.AreEqual (assemblyName + ", Culture=neutral"
782 + ", PublicKeyToken=" + GetTokenString (pk_token1),
787 public void GetPublicKeyToken ()
789 const string assemblyName = "TestAssembly";
791 an = new AssemblyName ();
792 an.SetPublicKey (publicKey1);
793 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#A1");
794 an.SetPublicKey (publicKey2);
795 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#A2");
796 an.SetPublicKeyToken (new byte [] { 0x0a });
797 Assert.AreEqual (new byte [] { 0x0a }, an.GetPublicKeyToken (), "#A3");
798 an.SetPublicKey (publicKey1);
799 Assert.AreEqual (new byte [] { 0x0a }, an.GetPublicKeyToken (), "#A4");
800 an.SetPublicKeyToken (new byte [0]);
801 Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#A5");
802 an.Name = assemblyName;
803 an.SetPublicKey (publicKey2);
804 Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#A6");
806 Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#A7");
808 Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token2), an.FullName, "#A7");
811 an = new AssemblyName ();
812 an.HashAlgorithm = AssemblyHashAlgorithm.MD5;
813 an.SetPublicKey (publicKey1);
814 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#B1");
816 an = new AssemblyName ();
817 an.HashAlgorithm = AssemblyHashAlgorithm.None;
818 an.SetPublicKey (publicKey1);
819 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#C1");
821 an = new AssemblyName ();
822 an.SetPublicKeyToken (new byte [0]);
823 Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#D1");
824 an.SetPublicKeyToken (new byte [] { 0x0b, 0xff });
825 Assert.AreEqual (new byte [] { 0x0b, 0xff }, an.GetPublicKeyToken (), "#D2");
826 an.SetPublicKeyToken ((byte []) null);
827 Assert.IsNull (an.GetPublicKeyToken (), "#D3");
829 an = new AssemblyName ();
830 an.SetPublicKey (keyPair);
833 an.GetPublicKeyToken ();
835 } catch (SecurityException ex) {
836 // Invalid assembly public key
837 Assert.AreEqual (typeof (SecurityException), ex.GetType (), "#E2");
838 Assert.AreEqual ((SecurityAction) 0, ex.Action, "#E3");
839 Assert.IsNull (ex.InnerException, "#E4");
840 Assert.IsNotNull (ex.Message, "#E5");
843 Assert.AreEqual (kp_token, an.GetPublicKeyToken (), "#E1");
848 public void GetPublicKeyToken_Corlib ()
850 an = typeof (int).Assembly.GetName ();
851 Assert.IsNotNull (an.GetPublicKeyToken (), "#1");
852 Assert.IsTrue (an.GetPublicKeyToken ().Length > 0, "#2");
856 public void GetPublicGetToken_Ecma ()
858 const string assemblyName = "TestAssembly";
860 an = new AssemblyName ();
861 an.Name = assemblyName;
862 an.SetPublicKey (publicKey3);
863 Assert.IsNotNull (an.GetPublicKeyToken (), "#1");
864 Assert.AreEqual (pk_token3, an.GetPublicKeyToken (), "#2");
868 public void GetPublicKeyToken_Self ()
870 Assembly a = Assembly.GetExecutingAssembly ();
873 Assert.AreEqual (new byte [0], an.GetPublicKeyToken ());
875 Assert.IsNull (an.GetPublicKeyToken ());
879 static int nameIndex = 0;
881 private AssemblyName GenAssemblyName ()
883 AssemblyName assemblyName = new AssemblyName();
884 assemblyName.Name = "MonoTests.System.Reflection.AssemblyNameTest" + (nameIndex ++);
888 #if !TARGET_JVM // Reflection.Emit is not supported for TARGET_JVM.
889 private Assembly GenerateAssembly (AssemblyName name)
891 AssemblyBuilder ab = domain.DefineDynamicAssembly (
893 AssemblyBuilderAccess.RunAndSave,
895 ab.DefineDynamicModule ("def_module");
896 ab.Save (name.Name + ".dll");
898 return Assembly.LoadFrom (Path.Combine (tempDir, name.Name + ".dll"));
901 private AssemblyBuilder GenerateDynamicAssembly (AssemblyName name)
903 AssemblyBuilder ab = domain.DefineDynamicAssembly (
905 AssemblyBuilderAccess.Run);
911 public void TestCultureInfo ()
917 name = GenAssemblyName ();
918 name.CultureInfo = CultureInfo.CreateSpecificCulture ("ar-DZ");
919 a = GenerateAssembly (name);
920 culture = a.GetName ().CultureInfo;
921 Assert.IsFalse (culture.IsNeutralCulture, "#A1");
922 Assert.IsFalse (culture.IsReadOnly, "#A2");
923 Assert.AreEqual (5121, culture.LCID, "#A3");
924 Assert.AreEqual ("ar-DZ", culture.Name, "#A4");
925 Assert.IsTrue (culture.UseUserOverride, "#A5");
927 name = GenAssemblyName ();
928 name.CultureInfo = new CultureInfo ("en");
929 a = GenerateAssembly (name);
930 culture = a.GetName ().CultureInfo;
931 Assert.IsTrue (culture.IsNeutralCulture, "#B1");
932 Assert.IsFalse (culture.IsReadOnly, "#B2");
933 Assert.AreEqual (9, culture.LCID, "#B3");
934 Assert.AreEqual ("en", culture.Name, "#B4");
935 Assert.IsTrue (culture.UseUserOverride, "#B5");
937 name = GenAssemblyName ();
938 name.CultureInfo = CultureInfo.InvariantCulture;
939 a = GenerateAssembly (name);
940 culture = a.GetName ().CultureInfo;
941 Assert.IsFalse (culture.IsNeutralCulture, "#C1");
943 Assert.IsFalse (culture.IsReadOnly, "#C2");
945 Assert.IsTrue (culture.IsReadOnly, "#C2");
947 Assert.AreEqual (127, culture.LCID, "#C3");
948 Assert.AreEqual (string.Empty, culture.Name, "#C4");
949 Assert.IsFalse (culture.UseUserOverride, "#C5");
951 a = typeof (int).Assembly;
953 culture = name.CultureInfo;
954 Assert.IsFalse (culture.IsNeutralCulture, "#D1");
956 Assert.IsFalse (culture.IsReadOnly, "#D2");
958 Assert.IsTrue (culture.IsReadOnly, "#D2");
960 Assert.AreEqual (127, culture.LCID, "#D3");
961 Assert.AreEqual (string.Empty, culture.Name, "#D4");
962 Assert.IsFalse (culture.UseUserOverride, "#D5");
964 a = Assembly.GetExecutingAssembly ();
966 culture = name.CultureInfo;
967 Assert.IsFalse (culture.IsNeutralCulture, "#E1");
969 Assert.IsFalse (culture.IsReadOnly, "#E2");
971 Assert.IsTrue (culture.IsReadOnly, "#E2");
973 Assert.AreEqual (127, culture.LCID, "#E3");
974 Assert.AreEqual (string.Empty, culture.Name, "#E4");
975 Assert.IsFalse (culture.UseUserOverride, "#E5");
977 AssemblyName [] names = a.GetReferencedAssemblies ();
978 foreach (AssemblyName an in names) {
979 culture = an.CultureInfo;
980 Assert.IsFalse (culture.IsNeutralCulture, "#F1:" + an.Name);
981 Assert.IsFalse (culture.IsReadOnly, "#F2:" + an.Name);
982 Assert.AreEqual (127, culture.LCID, "#F3:" + an.Name);
983 Assert.AreEqual (string.Empty, culture.Name, "#F4:" + an.Name);
985 Assert.IsFalse (culture.UseUserOverride, "#F5:" + an.Name);
987 Assert.IsTrue (culture.UseUserOverride, "#F5:" + an.Name);
993 public void Version ()
995 AssemblyName name = GenAssemblyName ();
996 name.Version = new Version (1, 2, 3, 4);
998 Assembly a = GenerateAssembly (name);
999 Assert.AreEqual ("1.2.3.4", a.GetName ().Version.ToString (), "1.2.3.4 normal");
1001 name = GenAssemblyName ();
1002 name.Version = new Version (1, 2, 3);
1004 a = GenerateAssembly (name);
1005 Assert.AreEqual ("1.2.3.0", a.GetName ().Version.ToString (), "1.2.3.0 normal");
1007 name = GenAssemblyName ();
1008 name.Version = new Version (1, 2);
1010 a = GenerateAssembly (name);
1011 Assert.AreEqual ("1.2.0.0", a.GetName ().Version.ToString (), "1.2.0.0 normal");
1015 [Category ("NotWorking")]
1016 public void Version_Dynamic ()
1018 AssemblyName name = GenAssemblyName ();
1019 name.Version = new Version (1, 2, 3, 4);
1021 AssemblyBuilder ab = GenerateDynamicAssembly (name);
1022 Assert.AreEqual ("1.2.3.4", ab.GetName ().Version.ToString (), "1.2.3.4 dynamic");
1024 name = GenAssemblyName ();
1025 name.Version = new Version (1, 2, 3);
1027 ab = GenerateDynamicAssembly (name);
1029 Assert.AreEqual ("1.2.3.0", ab.GetName ().Version.ToString (), "1.2.3.0 dynamic");
1031 Assert.AreEqual ("1.2.3.65535", ab.GetName ().Version.ToString (), "1.2.3.0 dynamic");
1034 name = GenAssemblyName ();
1035 name.Version = new Version (1, 2);
1037 ab = GenerateDynamicAssembly (name);
1039 Assert.AreEqual ("1.2.0.0", ab.GetName ().Version.ToString (), "1.2.0.0 dynamic");
1041 Assert.AreEqual ("1.2.65535.65535", ab.GetName ().Version.ToString (), "1.2.0.0 dynamic");
1044 #endif // TARGET_JVM
1047 public void HashAlgorithm ()
1049 Assert.AreEqual (AssemblyHashAlgorithm.SHA1,
1050 typeof (int).Assembly.GetName ().HashAlgorithm);
1054 public void Serialization ()
1056 an = new AssemblyName ();
1057 an.CodeBase = "http://www.test.com/test.dll";
1058 an.CultureInfo = CultureInfo.InvariantCulture;
1059 an.Flags = AssemblyNameFlags.PublicKey;
1060 an.HashAlgorithm = AssemblyHashAlgorithm.MD5;
1061 an.KeyPair = new StrongNameKeyPair (publicKey1);
1062 an.Name = "TestAssembly";
1063 an.Version = new Version (1, 5);
1064 an.VersionCompatibility = AssemblyVersionCompatibility.SameProcess;
1066 MemoryStream ms = new MemoryStream ();
1067 BinaryFormatter bf = new BinaryFormatter ();
1068 bf.Serialize (ms, an);
1070 // reset position of memorystream
1073 // deserialze assembly name
1074 AssemblyName dsAssemblyName = (AssemblyName) bf.Deserialize (ms);
1076 // close the memorystream
1079 // compare orginal and deserialized assembly name
1080 Assert.AreEqual (an.CodeBase, dsAssemblyName.CodeBase, "CodeBase");
1081 Assert.AreEqual (an.CultureInfo, dsAssemblyName.CultureInfo, "CultureInfo");
1082 Assert.AreEqual (an.Flags, dsAssemblyName.Flags, "Flags");
1083 Assert.AreEqual (an.HashAlgorithm, dsAssemblyName.HashAlgorithm, "HashAlgorithm");
1084 Assert.AreEqual (an.Name, dsAssemblyName.Name, "Name");
1085 Assert.AreEqual (an.Version, dsAssemblyName.Version, "Version");
1086 Assert.AreEqual (an.VersionCompatibility, dsAssemblyName.VersionCompatibility, "VersionCompatibility");
1087 Assert.AreEqual (an.EscapedCodeBase, dsAssemblyName.EscapedCodeBase, "EscapedCodeBase");
1088 Assert.AreEqual (an.FullName, dsAssemblyName.FullName, "FullName");
1089 Assert.AreEqual (an.ToString (), dsAssemblyName.ToString (), "ToString");
1090 Assert.AreEqual (an.GetPublicKey (), dsAssemblyName.GetPublicKey (), "PublicKey");
1091 Assert.AreEqual (an.GetPublicKeyToken (), dsAssemblyName.GetPublicKeyToken (), "PublicToken");
1095 public void Serialization_WithoutStrongName ()
1097 an = new AssemblyName ();
1098 an.CodeBase = "http://www.test.com/test.dll";
1099 an.CultureInfo = CultureInfo.InvariantCulture;
1100 an.Flags = AssemblyNameFlags.None;
1101 an.HashAlgorithm = AssemblyHashAlgorithm.SHA1;
1103 an.Name = "TestAssembly2";
1104 an.Version = new Version (1, 5, 0, 0);
1105 an.VersionCompatibility = AssemblyVersionCompatibility.SameMachine;
1107 MemoryStream ms = new MemoryStream ();
1108 BinaryFormatter bf = new BinaryFormatter ();
1109 bf.Serialize (ms, an);
1111 // reset position of memorystream
1114 // deserialze assembly name
1115 AssemblyName dsAssemblyName = (AssemblyName) bf.Deserialize (ms);
1117 // close the memorystream
1120 // compare orginal and deserialized assembly name
1121 Assert.AreEqual (an.CodeBase, dsAssemblyName.CodeBase, "CodeBase");
1122 Assert.AreEqual (an.CultureInfo, dsAssemblyName.CultureInfo, "CultureInfo");
1123 Assert.AreEqual (an.Flags, dsAssemblyName.Flags, "Flags");
1124 Assert.AreEqual (an.HashAlgorithm, dsAssemblyName.HashAlgorithm, "HashAlgorithm");
1125 Assert.AreEqual (an.Name, dsAssemblyName.Name, "Name");
1126 Assert.AreEqual (an.Version, dsAssemblyName.Version, "Version");
1127 Assert.AreEqual (an.VersionCompatibility, dsAssemblyName.VersionCompatibility, "VersionCompatibility");
1128 Assert.AreEqual (an.EscapedCodeBase, dsAssemblyName.EscapedCodeBase, "EscapedCodeBase");
1129 Assert.AreEqual (an.FullName, dsAssemblyName.FullName, "FullName");
1130 Assert.AreEqual (an.ToString (), dsAssemblyName.ToString (), "ToString");
1131 Assert.AreEqual (an.GetPublicKey (), dsAssemblyName.GetPublicKey (), "PublicKey");
1132 Assert.AreEqual (an.GetPublicKeyToken (), dsAssemblyName.GetPublicKeyToken (), "PublicToken");
1135 #if !TARGET_JVM // Assemblyname.GetObjectData not implemented yet for TARGET_JVM
1137 public void GetObjectData_Info_Null ()
1139 an = new AssemblyName ();
1141 an.GetObjectData (null, new StreamingContext (StreamingContextStates.All));
1143 } catch (ArgumentNullException ex) {
1144 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
1145 Assert.IsNull (ex.InnerException, "#3");
1146 Assert.IsNotNull (ex.Message, "#4");
1147 Assert.IsNotNull (ex.ParamName, "#5");
1148 Assert.AreEqual ("info", ex.ParamName, "#6");
1151 #endif // TARGET_JVM
1154 public void Clone_Corlib ()
1156 an = typeof (int).Assembly.GetName ();
1157 AssemblyName clone = (AssemblyName) an.Clone ();
1159 Assert.AreEqual (an.CodeBase, clone.CodeBase, "CodeBase");
1160 Assert.AreEqual (an.CultureInfo, clone.CultureInfo, "CultureInfo");
1161 Assert.AreEqual (an.EscapedCodeBase, clone.EscapedCodeBase, "EscapedCodeBase");
1162 Assert.AreEqual (an.Flags, clone.Flags, "Flags");
1163 Assert.AreEqual (an.FullName, clone.FullName, "FullName");
1164 Assert.AreEqual (an.HashAlgorithm, clone.HashAlgorithm, "HashAlgorithm");
1165 Assert.AreEqual (an.KeyPair, clone.KeyPair, "KeyPair");
1166 Assert.AreEqual (an.Name, clone.Name, "Name");
1168 Assert.AreEqual (an.ProcessorArchitecture, clone.ProcessorArchitecture, "PA");
1170 Assert.AreEqual (an.Version, clone.Version, "Version");
1171 Assert.AreEqual (an.VersionCompatibility, clone.VersionCompatibility, "VersionCompatibility");
1172 Assert.AreEqual (an.GetPublicKey (), clone.GetPublicKey (), "GetPublicKey");
1173 Assert.AreEqual (an.GetPublicKeyToken (), clone.GetPublicKeyToken (), "GetPublicKeyToken");
1174 Assert.AreEqual (an.ToString (), clone.ToString (), "ToString");
1178 public void Clone_Empty ()
1180 an = new AssemblyName ();
1181 AssemblyName clone = (AssemblyName) an.Clone ();
1183 Assert.IsNull (clone.CodeBase, "CodeBase");
1184 Assert.IsNull (clone.CultureInfo, "CultureInfo");
1185 Assert.IsNull (clone.EscapedCodeBase, "EscapedCodeBase");
1186 Assert.AreEqual (AssemblyNameFlags.None, clone.Flags, "Flags");
1188 Assert.AreEqual (String.Empty, clone.FullName, "FullName");
1190 Assert.IsNull (clone.FullName, "FullName");
1192 Assert.AreEqual (AssemblyHashAlgorithm.None, clone.HashAlgorithm, "HashAlgorithm");
1193 Assert.IsNull (clone.KeyPair, "KeyPair");
1194 Assert.IsNull (clone.Name, "Name");
1196 Assert.AreEqual (ProcessorArchitecture.None, clone.ProcessorArchitecture, "PA");
1198 Assert.IsNull (clone.Version, "Version");
1199 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1200 clone.VersionCompatibility, "VersionCompatibility");
1204 public void Clone_Self ()
1206 an = Assembly.GetExecutingAssembly ().GetName ();
1207 AssemblyName clone = (AssemblyName) an.Clone ();
1209 Assert.AreEqual (an.CodeBase, clone.CodeBase, "CodeBase");
1210 Assert.AreEqual (an.CultureInfo, clone.CultureInfo, "CultureInfo");
1211 Assert.AreEqual (an.EscapedCodeBase, clone.EscapedCodeBase, "EscapedCodeBase");
1212 Assert.AreEqual (an.Flags, clone.Flags, "Flags");
1213 Assert.AreEqual (an.FullName, clone.FullName, "FullName");
1214 Assert.AreEqual (an.HashAlgorithm, clone.HashAlgorithm, "HashAlgorithm");
1215 Assert.AreEqual (an.KeyPair, clone.KeyPair, "KeyPair");
1216 Assert.AreEqual (an.Name, clone.Name, "Name");
1218 //Assert.AreEqual (ProcessorArchitecture.MSIL, clone.ProcessorArchitecture, "PA");
1220 Assert.AreEqual (an.Version, clone.Version, "Version");
1221 Assert.AreEqual (an.VersionCompatibility, clone.VersionCompatibility, "VersionCompatibility");
1222 Assert.AreEqual (an.GetPublicKey (), clone.GetPublicKey (), "GetPublicKey");
1223 Assert.AreEqual (an.GetPublicKeyToken (), clone.GetPublicKeyToken (), "GetPublicKeyToken");
1224 Assert.AreEqual (an.ToString (), clone.ToString (), "ToString");
1228 [ExpectedException (typeof (FileNotFoundException))]
1229 public void GetAssemblyName_AssemblyFile_DoesNotExist ()
1231 AssemblyName.GetAssemblyName (Path.Combine (tempDir, "doesnotexist.dll"));
1235 [Category ("NotWorking")]
1236 public void GetAssemblyName_AssemblyFile_ReadLock ()
1238 string file = Path.Combine (tempDir, "loadfailure.dll");
1239 using (FileStream fs = File.Open (file, FileMode.OpenOrCreate, FileAccess.Read, FileShare.None)) {
1241 AssemblyName.GetAssemblyName (file);
1243 } catch (FileLoadException ex) {
1244 // Could not load file or assembly '...' or one
1245 // of its dependencies. The process cannot access
1246 // the file because it is being used by another
1248 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1249 Assert.IsNotNull (ex.FileName, "#3");
1251 Assert.AreEqual (file, ex.FileName, "#4");
1253 Assert.IsTrue (ex.FileName.IndexOf ("loadfailure.dll") != -1, "#4");
1255 Assert.IsNull (ex.InnerException, "#5");
1256 Assert.IsNotNull (ex.Message, "#6");
1263 public void GetAssemblyName_AssemblyFile_BadImage ()
1265 string file = Path.Combine (tempDir, "badimage.dll");
1266 using (StreamWriter sw = File.CreateText (file)) {
1267 sw.WriteLine ("somegarbage");
1270 AssemblyName.GetAssemblyName (file);
1272 } catch (BadImageFormatException ex) {
1273 Assert.AreEqual (typeof (BadImageFormatException), ex.GetType (), "#2");
1274 Assert.IsNotNull (ex.FileName, "#3");
1276 Assert.AreEqual (file, ex.FileName, "#4");
1278 Assert.IsTrue (ex.FileName.IndexOf ("badimage.dll") != -1, "#4");
1280 Assert.IsNull (ex.InnerException, "#5");
1281 Assert.IsNotNull (ex.Message, "#6");
1288 public void GetAssemblyName_CodeBase ()
1290 Assembly execAssembly = Assembly.GetExecutingAssembly ();
1292 AssemblyName aname = AssemblyName.GetAssemblyName (execAssembly.Location);
1293 Assert.IsNotNull (aname.CodeBase, "#1");
1294 Assert.AreEqual (execAssembly.CodeBase, aname.CodeBase, "#2");
1299 private string GetTokenString (byte[] value)
1301 string tokenString = "";
1302 for (int i = 0; i < value.Length; i++) {
1303 tokenString += value[i].ToString ("x2");
1309 [Test] // ctor (String)
1310 public void Constructor1_Name ()
1312 const string assemblyName = "TestAssembly";
1314 an = new AssemblyName (assemblyName);
1315 Assert.IsNull (an.CodeBase, "CodeBase");
1316 Assert.IsNull (an.CultureInfo, "CultureInfo");
1317 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1318 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1319 Assert.AreEqual ("TestAssembly", an.FullName, "FullName");
1320 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1321 Assert.IsNull (an.KeyPair, "KeyPair");
1322 Assert.AreEqual (assemblyName, an.Name, "Name");
1323 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1324 Assert.IsNull (an.Version, "Version");
1325 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1326 an.VersionCompatibility, "VersionCompatibility");
1327 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1328 Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
1329 Assert.AreEqual ("TestAssembly", an.ToString (), "ToString");
1332 [Test] // ctor (String)
1333 [Category("TargetJvmNotWorking")] // Not yet supported for TARGET_JVM.
1334 public void Constructor1_Full ()
1336 const string assemblyName = "TestAssembly";
1337 const string assemblyCulture = "neutral";
1338 const string assemblyVersion = "1.2.3.4";
1340 an = new AssemblyName (assemblyName + ", Version=" + assemblyVersion +
1341 ", Culture=" + assemblyCulture + ", PublicKeyToken=" + GetTokenString (pk_token1));
1342 Assert.IsNull (an.CodeBase, "CodeBase");
1343 Assert.AreEqual (CultureInfo.InvariantCulture, an.CultureInfo, "CultureInfo");
1344 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1345 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1346 Assert.AreEqual ("TestAssembly, Version=1.2.3.4, Culture=neutral, PublicKeyToken=" +
1347 GetTokenString (pk_token1), an.FullName, "FullName");
1348 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1349 Assert.IsNull (an.KeyPair, "KeyPair");
1350 Assert.AreEqual (assemblyName, an.Name, "Name");
1351 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1352 Assert.AreEqual (new Version (assemblyVersion), an.Version, "Version");
1353 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1354 an.VersionCompatibility, "VersionCompatibility");
1355 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1356 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "GetPublicKeyToken");
1357 Assert.AreEqual (an.FullName, an.ToString (), "ToString");
1360 [Test] // ctor (String)
1361 public void Constructor1_AssemblyName_Empty ()
1364 new AssemblyName (string.Empty);
1366 } catch (ArgumentException ex) {
1367 // String cannot have zero length
1368 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
1369 Assert.IsNull (ex.InnerException, "#3");
1370 Assert.IsNotNull (ex.Message, "#4");
1371 Assert.IsNull (ex.ParamName, "#5");
1375 [Test] // ctor (String)
1376 public void Constructor1_AssemblyName_Invalid ()
1378 const string assemblyName = "TestAssembly";
1381 new AssemblyName (assemblyName + ", =1.2.4.5");
1382 Assert.Fail ("#A1");
1383 } catch (FileLoadException ex) {
1384 // The given assembly name or codebase was invalid
1385 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1386 Assert.IsNull (ex.FileName, "#3");
1387 Assert.IsNull (ex.InnerException, "#3");
1388 Assert.IsNotNull (ex.Message, "#4");
1392 new AssemblyName (assemblyName + ", OtherAttribute");
1393 Assert.Fail ("#B1");
1394 } catch (FileLoadException ex) {
1395 // The given assembly name or codebase was invalid
1396 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1397 Assert.IsNull (ex.FileName, "#3");
1398 Assert.IsNull (ex.InnerException, "#3");
1399 Assert.IsNotNull (ex.Message, "#4");
1403 [Test] // ctor (String)
1404 public void Constructor1_AssemblyName_Null ()
1407 new AssemblyName (null);
1409 } catch (ArgumentNullException ex) {
1410 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
1411 Assert.IsNull (ex.InnerException, "#3");
1412 Assert.IsNotNull (ex.Message, "#4");
1413 Assert.IsNotNull (ex.ParamName, "#5");
1414 Assert.AreEqual ("assemblyName", ex.ParamName, "#6");
1418 [Test] // ctor (String)
1419 public void Constructor1_Culture ()
1421 const string assemblyName = "TestAssembly";
1422 const string assemblyCulture = "en-US";
1424 an = new AssemblyName (assemblyName + ", Culture=" + assemblyCulture);
1425 Assert.IsNull (an.CodeBase, "CodeBase");
1426 Assert.AreEqual (new CultureInfo (assemblyCulture), an.CultureInfo, "CultureInfo");
1427 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1428 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1429 Assert.AreEqual ("TestAssembly, Culture=en-US", an.FullName, "FullName");
1430 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1431 Assert.IsNull (an.KeyPair, "KeyPair");
1432 Assert.AreEqual (assemblyName, an.Name, "Name");
1433 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1434 Assert.IsNull (an.Version, "Version");
1435 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1436 an.VersionCompatibility, "VersionCompatibility");
1437 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1438 Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
1439 Assert.AreEqual (an.FullName, an.ToString (), "ToString");
1442 [Test] // ctor (String)
1443 public void Constructor1_Culture_Incomplete ()
1445 const string assemblyName = "TestAssembly";
1448 new AssemblyName (assemblyName + ", Culture=");
1450 } catch (FileLoadException ex) {
1451 // The given assembly name or codebase was invalid
1452 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1453 Assert.IsNull (ex.FileName, "#3");
1454 Assert.IsNull (ex.InnerException, "#3");
1455 Assert.IsNotNull (ex.Message, "#4");
1459 [Test] // ctor (String)
1460 public void Constructor1_Culture_NotSupported ()
1462 const string assemblyName = "TestAssembly";
1465 new AssemblyName (assemblyName + ", Culture=aa-AA");
1467 } catch (ArgumentException ex) {
1468 // Culture name 'aa-aa' is not supported
1469 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
1470 Assert.IsNull (ex.InnerException, "#3");
1471 Assert.IsNotNull (ex.Message, "#4");
1472 Assert.IsNotNull (ex.ParamName, "#5");
1473 Assert.AreEqual ("name", ex.ParamName, "#6");
1477 [Test] // ctor (String)
1478 [Category ("NotWorking")] // bug #351708
1479 public void Constructor1_ProcessorArchitecture ()
1481 const string assemblyName = "TestAssembly";
1483 an = new AssemblyName (assemblyName + ", ProcessorArchitecture=X86");
1484 Assert.IsNull (an.CodeBase, "CodeBase");
1485 Assert.IsNull (an.CultureInfo, "CultureInfo");
1486 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1487 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1488 Assert.AreEqual ("TestAssembly", an.FullName, "FullName");
1489 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1490 Assert.IsNull (an.KeyPair, "KeyPair");
1491 Assert.AreEqual (assemblyName, an.Name, "Name");
1492 Assert.AreEqual (ProcessorArchitecture.X86, an.ProcessorArchitecture, "PA");
1493 Assert.IsNull (an.Version, "Version");
1494 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1495 an.VersionCompatibility, "VersionCompatibility");
1496 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1497 Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
1498 Assert.AreEqual ("TestAssembly", an.ToString (), "ToString");
1500 an = new AssemblyName (assemblyName + ", ProcessorArchitecture=mSiL");
1501 Assert.AreEqual (ProcessorArchitecture.MSIL, an.ProcessorArchitecture, "PA: MSIL");
1503 an = new AssemblyName (assemblyName + ", ProcessorArchitecture=AmD64");
1504 Assert.AreEqual (ProcessorArchitecture.Amd64, an.ProcessorArchitecture, "PA: Amd64");
1506 an = new AssemblyName (assemblyName + ", ProcessorArchitecture=iA64");
1507 Assert.AreEqual (ProcessorArchitecture.IA64, an.ProcessorArchitecture, "PA: IA64");
1510 [Test] // ctor (String)
1511 [Category ("NotWorking")] // bug #351708
1512 public void Constructor1_ProcessorArchitecture_Incomplete ()
1514 const string assemblyName = "TestAssembly";
1516 new AssemblyName (assemblyName + ", ProcessorArchitecture=");
1518 } catch (FileLoadException ex) {
1519 // The given assembly name or codebase was invalid
1520 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1521 Assert.IsNull (ex.FileName, "#3");
1522 Assert.IsNull (ex.InnerException, "#3");
1523 Assert.IsNotNull (ex.Message, "#4");
1527 [Test] // ctor (String)
1528 [Category ("NotWorking")] // bug #351708
1529 public void Constructor1_ProcessorArchitecture_Invalid ()
1531 const string assemblyName = "TestAssembly";
1533 new AssemblyName (assemblyName + ", ProcessorArchitecture=XXX");
1534 Assert.Fail ("#A1");
1535 } catch (FileLoadException ex) {
1536 // The given assembly name or codebase was invalid
1537 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#A2");
1538 Assert.IsNull (ex.FileName, "#A3");
1539 Assert.IsNull (ex.InnerException, "#A4");
1540 Assert.IsNotNull (ex.Message, "#A5");
1544 new AssemblyName (assemblyName + ", ProcessorArchitecture=None");
1545 Assert.Fail ("#B1");
1546 } catch (FileLoadException ex) {
1547 // The given assembly name or codebase was invalid
1548 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#B2");
1549 Assert.IsNull (ex.FileName, "#B3");
1550 Assert.IsNull (ex.InnerException, "#B4");
1551 Assert.IsNotNull (ex.Message, "#B5");
1555 [Test] // ctor (String)
1556 [Category ("NotDotNet")] // MS only sets the public key token not the public key: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=321088
1557 public void Constructor1_PublicKey_Mono ()
1559 const string assemblyName = "TestAssembly";
1561 an = new AssemblyName (assemblyName + ", PublicKey=" + GetTokenString (publicKey1));
1562 Assert.IsNull (an.CodeBase, "CodeBase");
1563 Assert.IsNull (an.CultureInfo, "CultureInfo");
1564 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1565 Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "Flags");
1566 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "FullName");
1567 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1568 Assert.IsNull (an.KeyPair, "KeyPair");
1569 Assert.AreEqual (assemblyName, an.Name, "Name");
1570 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1571 Assert.IsNull (an.Version, "Version");
1572 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1573 an.VersionCompatibility, "VersionCompatibility");
1574 Assert.AreEqual (publicKey1, an.GetPublicKey (), "GetPublicKey");
1575 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "GetPublicKeyToken");
1576 Assert.AreEqual (an.FullName, an.ToString (), "ToString");
1580 [Category ("NotWorking")] // MS only sets the public key token not the public key: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=321088
1581 public void Constructor1_PublicKey_MS ()
1583 const string assemblyName = "TestAssembly";
1585 an = new AssemblyName (assemblyName + ", PublicKey=" + GetTokenString (publicKey1));
1586 Assert.IsNull (an.CodeBase, "CodeBase");
1587 Assert.IsNull (an.CultureInfo, "CultureInfo");
1588 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1589 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1590 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "FullName");
1591 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1592 Assert.IsNull (an.KeyPair, "KeyPair");
1593 Assert.AreEqual (assemblyName, an.Name, "Name");
1594 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1595 Assert.IsNull (an.Version, "Version");
1596 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1597 an.VersionCompatibility, "VersionCompatibility");
1598 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1599 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "GetPublicKeyToken");
1600 Assert.AreEqual (an.FullName, an.ToString (), "ToString");
1603 [Test] // ctor (String)
1604 [Category ("NotWorking")] // bug #351725
1605 public void Constructor1_PublicKey_Ecma ()
1607 const string assemblyName = "TestAssembly";
1609 an = new AssemblyName (assemblyName + ", PublicKey=" + GetTokenString (publicKey3));
1610 Assert.IsNull (an.CodeBase, "CodeBase");
1611 Assert.IsNull (an.CultureInfo, "CultureInfo");
1612 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1613 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1614 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token3), an.FullName, "FullName");
1615 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1616 Assert.IsNull (an.KeyPair, "KeyPair");
1617 Assert.AreEqual (assemblyName, an.Name, "Name");
1618 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1619 Assert.IsNull (an.Version, "Version");
1620 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1621 an.VersionCompatibility, "VersionCompatibility");
1622 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1623 Assert.AreEqual (pk_token3, an.GetPublicKeyToken (), "GetPublicKeyToken");
1624 Assert.AreEqual (an.FullName, an.ToString (), "ToString");
1627 [Test] // ctor (String)
1628 public void Constructor1_PublicKey_Incomplete ()
1630 const string assemblyName = "TestAssembly";
1633 new AssemblyName (assemblyName + ", PublicKey=");
1635 } catch (FileLoadException ex) {
1636 // The given assembly name or codebase was invalid
1637 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1638 Assert.IsNull (ex.FileName, "#3");
1639 Assert.IsNull (ex.InnerException, "#3");
1640 Assert.IsNotNull (ex.Message, "#4");
1644 [Test] // ctor (String)
1645 public void Constructor1_PublicKey_Invalid ()
1647 const string assemblyName = "TestAssembly";
1650 new AssemblyName (assemblyName + ", PublicKey=0024000004800000940000000602000000240000525341310004000011000000e39d99616f48cf7d6d59f345e485e713e89b8b1265a31b1a393e9894ee3fbddaf382dcaf4083dc31ee7a40a2a25c69c6d019fba9f37ec17fd680e4f6fe3b5305f71ae9e494e3501d92508c2e98ca1e22991a217aa8ce259c9882ffdfff4fbc6fa5e6660a8ff951cd94ed011e5633651b64e8f4522519b6ec84921ee22e4840e");
1651 Assert.Fail ("#A1");
1652 } catch (FileLoadException ex) {
1653 // The given assembly name or codebase was invalid
1654 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#A2");
1655 Assert.IsNull (ex.FileName, "#A3");
1656 Assert.IsNull (ex.InnerException, "#A4");
1657 Assert.IsNotNull (ex.Message, "#A5");
1661 new AssemblyName (assemblyName + ", PublicKey=null");
1662 Assert.Fail ("#B1");
1663 } catch (FileLoadException ex) {
1664 // The given assembly name or codebase was invalid
1665 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#B2");
1666 Assert.IsNull (ex.FileName, "#B3");
1667 Assert.IsNull (ex.InnerException, "#B4");
1668 Assert.IsNotNull (ex.Message, "#B5");
1672 [Test] // ctor (String)
1673 [Category ("NotWorking")] // bug #351756
1674 public void Constructor1_PublicKey_KeyPair ()
1676 const string assemblyName = "TestAssembly";
1679 new AssemblyName (assemblyName + ", PublicKey=" + GetTokenString (keyPair));
1681 } catch (SecurityException ex) {
1682 // Invalid assembly public key
1683 Assert.AreEqual (typeof (SecurityException), ex.GetType (), "#2");
1684 Assert.AreEqual ((SecurityAction) 0, ex.Action, "#3");
1685 Assert.IsNull (ex.InnerException, "#4");
1686 Assert.IsNotNull (ex.Message, "#5");
1690 [Test] // ctor (String)
1691 public void Constructor1_PublicKeyToken ()
1693 const string assemblyName = "TestAssembly";
1695 an = new AssemblyName (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1));
1696 Assert.IsNull (an.CodeBase, "#A:CodeBase");
1697 Assert.IsNull (an.CultureInfo, "#A:CultureInfo");
1698 Assert.IsNull (an.EscapedCodeBase, "#A:EscapedCodeBase");
1699 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#A:Flags");
1700 Assert.AreEqual ("TestAssembly, PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#A:FullName");
1701 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "#A:HashAlgorithm");
1702 Assert.IsNull (an.KeyPair, "#A:KeyPair");
1703 Assert.AreEqual (assemblyName, an.Name, "#A:Name");
1704 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "#A:PA");
1705 Assert.IsNull (an.Version, "#A:Version");
1706 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1707 an.VersionCompatibility, "#A:VersionCompatibility");
1708 Assert.IsNull (an.GetPublicKey (), "#A:GetPublicKey");
1709 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#A:GetPublicKeyToken");
1710 Assert.AreEqual (an.FullName, an.ToString (), "#A:ToString");
1712 an = new AssemblyName (assemblyName + ", PublicKeyToken=null");
1713 Assert.IsNull (an.CodeBase, "#B:CodeBase");
1714 Assert.IsNull (an.CultureInfo, "#B:CultureInfo");
1715 Assert.IsNull (an.EscapedCodeBase, "#B:EscapedCodeBase");
1716 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#B:Flags");
1717 //Assert.AreEqual ("TestAssembly, PublicKeyToken=null", an.FullName, "#B:FullName");
1718 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "#B:HashAlgorithm");
1719 Assert.IsNull (an.KeyPair, "#B:KeyPair");
1720 Assert.AreEqual (assemblyName, an.Name, "#B:Name");
1721 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "#B:PA");
1722 Assert.IsNull (an.Version, "#B:Version");
1723 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1724 an.VersionCompatibility, "#B:VersionCompatibility");
1725 Assert.IsNull (an.GetPublicKey (), "#B:GetPublicKey");
1726 Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#B:GetPublicKeyToken");
1727 Assert.AreEqual (an.FullName, an.ToString (), "#B:ToString");
1730 [Test] // ctor (String)
1731 public void Constructor1_PublicKeyToken_Incomplete ()
1733 const string assemblyName = "TestAssembly";
1736 new AssemblyName (assemblyName + ", PublicKeyToken=");
1738 } catch (FileLoadException ex) {
1739 // The given assembly name or codebase was invalid
1740 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1741 Assert.IsNull (ex.FileName, "#3");
1742 Assert.IsNull (ex.InnerException, "#3");
1743 Assert.IsNotNull (ex.Message, "#4");
1747 [Test] // ctor (String)
1748 public void Constructor1_PublicKeyToken_Invalid ()
1750 const string assemblyName = "TestAssembly";
1753 new AssemblyName (assemblyName + ", PublicKeyToken=27576a8182a188");
1755 } catch (FileLoadException ex) {
1756 // The given assembly name or codebase was invalid
1757 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1758 Assert.IsNull (ex.FileName, "#3");
1759 Assert.IsNull (ex.InnerException, "#3");
1760 Assert.IsNotNull (ex.Message, "#4");
1764 [Test] // ctor (String)
1765 public void Constructor1_Retargetable ()
1767 const string assemblyName = "TestAssembly";
1770 new AssemblyName (assemblyName + ", Retargetable=Yes");
1771 Assert.Fail ("#A1");
1772 } catch (FileLoadException ex) {
1773 // The given assembly name or codebase was invalid
1774 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#A2");
1775 Assert.IsNull (ex.FileName, "#A3");
1776 Assert.IsNull (ex.InnerException, "#A4");
1777 Assert.IsNotNull (ex.Message, "#A5");
1781 new AssemblyName (assemblyName + ", Retargetable=No");
1782 Assert.Fail ("#B1");
1783 } catch (FileLoadException ex) {
1784 // The given assembly name or codebase was invalid
1785 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#B2");
1786 Assert.IsNull (ex.FileName, "#B3");
1787 Assert.IsNull (ex.InnerException, "#B4");
1788 Assert.IsNotNull (ex.Message, "#B5");
1792 new AssemblyName (assemblyName + ", Version=1.0.0.0, Retargetable=Yes");
1793 Assert.Fail ("#C1");
1794 } catch (FileLoadException ex) {
1795 // The given assembly name or codebase was invalid
1796 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#C2");
1797 Assert.IsNull (ex.FileName, "#C3");
1798 Assert.IsNull (ex.InnerException, "#C4");
1799 Assert.IsNotNull (ex.Message, "#C5");
1803 new AssemblyName (assemblyName + ", Version=1.0.0.0, Culture=neutral, Retargetable=Yes");
1804 Assert.Fail ("#D1");
1805 } catch (FileLoadException ex) {
1806 // The given assembly name or codebase was invalid
1807 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#D2");
1808 Assert.IsNull (ex.FileName, "#D3");
1809 Assert.IsNull (ex.InnerException, "#D4");
1810 Assert.IsNotNull (ex.Message, "#D5");
1814 new AssemblyName (assemblyName + ", Version=1.0.0.0, PublicKeyToken=null, Retargetable=Yes");
1815 Assert.Fail ("#E1");
1816 } catch (FileLoadException ex) {
1817 // The given assembly name or codebase was invalid
1818 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#E2");
1819 Assert.IsNull (ex.FileName, "#E3");
1820 Assert.IsNull (ex.InnerException, "#E4");
1821 Assert.IsNotNull (ex.Message, "#E5");
1824 an = new AssemblyName (assemblyName + ", Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, Retargetable=yEs");
1825 Assert.IsNull (an.CodeBase, "F:CodeBase");
1826 Assert.AreEqual (CultureInfo.InvariantCulture, an.CultureInfo, "#F:CultureInfo");
1827 Assert.IsNull (an.EscapedCodeBase, "#F:EscapedCodeBase");
1828 Assert.AreEqual (AssemblyNameFlags.Retargetable, an.Flags, "#F:Flags");
1829 Assert.AreEqual ("TestAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, Retargetable=Yes", an.FullName, "#F:FullName");
1830 Assert.IsNull (an.GetPublicKey (), "#F:GetPublicKey");
1831 Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#F:GetPublicKeyToken");
1832 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "#F:HashAlgorithm");
1833 Assert.IsNull (an.KeyPair, "#F:KeyPair");
1834 Assert.AreEqual (assemblyName, an.Name, "#F:Name");
1835 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "#F:PA");
1836 Assert.AreEqual (an.FullName, an.ToString (), "#F:ToString");
1837 Assert.AreEqual (new Version (1, 0, 0, 0), an.Version, "#F:Version");
1838 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1839 an.VersionCompatibility, "#F:VersionCompatibility");
1841 an = new AssemblyName (assemblyName + ", Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, Retargetable=nO");
1842 Assert.IsNull (an.CodeBase, "G:CodeBase");
1843 Assert.AreEqual (CultureInfo.InvariantCulture, an.CultureInfo, "#G:CultureInfo");
1844 Assert.IsNull (an.EscapedCodeBase, "#G:EscapedCodeBase");
1845 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#G:Flags");
1846 Assert.AreEqual ("TestAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", an.FullName, "#G:FullName");
1847 Assert.IsNull (an.GetPublicKey (), "#G:GetPublicKey");
1848 Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#G:GetPublicKeyToken");
1849 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "#G:HashAlgorithm");
1850 Assert.IsNull (an.KeyPair, "#G:KeyPair");
1851 Assert.AreEqual (assemblyName, an.Name, "#G:Name");
1852 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "#G:PA");
1853 Assert.AreEqual (an.FullName, an.ToString (), "#G:ToString");
1854 Assert.AreEqual (new Version (1, 0, 0, 0), an.Version, "#G:Version");
1855 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1856 an.VersionCompatibility, "#G:VersionCompatibility");
1858 an = new AssemblyName (assemblyName + ", Version=1.0.0.0, Culture=neutral, PublicKeyToken=" + GetTokenString (pk_token1) + ", Retargetable=yes");
1859 Assert.IsNull (an.CodeBase, "H:CodeBase");
1860 Assert.AreEqual (CultureInfo.InvariantCulture, an.CultureInfo, "#H:CultureInfo");
1861 Assert.IsNull (an.EscapedCodeBase, "#H:EscapedCodeBase");
1862 Assert.AreEqual (AssemblyNameFlags.Retargetable, an.Flags, "#H:Flags");
1863 Assert.AreEqual ("TestAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=" + GetTokenString (pk_token1) + ", Retargetable=Yes", an.FullName, "#H:FullName");
1864 Assert.IsNull (an.GetPublicKey (), "#H:GetPublicKey");
1865 Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#H:GetPublicKeyToken");
1866 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "#H:HashAlgorithm");
1867 Assert.IsNull (an.KeyPair, "#H:KeyPair");
1868 Assert.AreEqual (assemblyName, an.Name, "#H:Name");
1869 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "#H:PA");
1870 Assert.AreEqual (an.FullName, an.ToString (), "#H:ToString");
1871 Assert.AreEqual (new Version (1, 0, 0, 0), an.Version, "#H:Version");
1872 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1873 an.VersionCompatibility, "#H:VersionCompatibility");
1876 [Test] // ctor (String)
1877 public void Constructor1_Retargetable_Incomplete ()
1879 const string assemblyName = "TestAssembly";
1882 new AssemblyName (assemblyName + ", Retargetable=");
1884 } catch (FileLoadException ex) {
1885 // The given assembly name or codebase was invalid
1886 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1887 Assert.IsNull (ex.FileName, "#3");
1888 Assert.IsNull (ex.InnerException, "#4");
1889 Assert.IsNotNull (ex.Message, "#5");
1893 [Test] // ctor (String)
1894 public void Constructor1_Retargetable_Invalid ()
1896 const string assemblyName = "TestAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
1899 new AssemblyName (assemblyName + ", Retargetable=False");
1900 Assert.Fail ("#A1");
1901 } catch (FileLoadException ex) {
1902 // The given assembly name or codebase was invalid
1903 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#A2");
1904 Assert.IsNull (ex.FileName, "#A3");
1905 Assert.IsNull (ex.InnerException, "#A4");
1906 Assert.IsNotNull (ex.Message, "#A5");
1910 new AssemblyName (assemblyName + ", Retargetable=1");
1911 Assert.Fail ("#B1");
1912 } catch (FileLoadException ex) {
1913 // The given assembly name or codebase was invalid
1914 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#B2");
1915 Assert.IsNull (ex.FileName, "#B3");
1916 Assert.IsNull (ex.InnerException, "#B4");
1917 Assert.IsNotNull (ex.Message, "#B5");
1921 new AssemblyName (assemblyName + ", Retargetable=True");
1922 Assert.Fail ("#C1");
1923 } catch (FileLoadException ex) {
1924 // The given assembly name or codebase was invalid
1925 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#C2");
1926 Assert.IsNull (ex.FileName, "#C3");
1927 Assert.IsNull (ex.InnerException, "#C4");
1928 Assert.IsNotNull (ex.Message, "#C5");
1932 [Test] // ctor (String)
1933 [Category("TargetJvmNotWorking")] // Not yet supported for TARGET_JVM.
1934 public void Constructor1_Version ()
1936 const string assemblyName = "TestAssembly";
1937 const string assemblyVersion = "1.2.3.4";
1939 an = new AssemblyName (assemblyName + ", Version=" + assemblyVersion);
1940 Assert.IsNull (an.CodeBase, "CodeBase");
1941 Assert.IsNull (an.CultureInfo, "CultureInfo");
1942 Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
1943 Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
1944 Assert.AreEqual ("TestAssembly, Version=1.2.3.4", an.FullName, "FullName");
1945 Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
1946 Assert.IsNull (an.KeyPair, "KeyPair");
1947 Assert.AreEqual (assemblyName, an.Name, "Name");
1948 Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
1949 Assert.AreEqual (new Version (assemblyVersion), an.Version, "Version");
1950 Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
1951 an.VersionCompatibility, "VersionCompatibility");
1952 Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
1953 Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
1954 Assert.AreEqual (an.FullName, an.ToString (), "ToString");
1958 [Test] // ctor (String)
1959 public void Constructor1_Version_Incomplete ()
1961 const string assemblyName = "TestAssembly";
1964 new AssemblyName (assemblyName + ", Version=, Culture=neutral");
1966 } catch (FileLoadException ex) {
1967 // The given assembly name or codebase was invalid
1968 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1969 Assert.IsNull (ex.FileName, "#3");
1970 Assert.IsNull (ex.InnerException, "#3");
1971 Assert.IsNotNull (ex.Message, "#4");
1975 [Test] // ctor (String)
1976 public void Constructor1_Version_Invalid ()
1978 const string assemblyName = "TestAssembly";
1981 new AssemblyName (assemblyName + ", Version=a.b");
1983 } catch (FileLoadException ex) {
1984 // The given assembly name or codebase was invalid
1985 Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
1986 Assert.IsNull (ex.FileName, "#3");
1987 Assert.IsNull (ex.InnerException, "#3");
1988 Assert.IsNotNull (ex.Message, "#4");