Revert "Merge pull request #5330 from alexanderkyte/dedup_mkbundle"
[mono.git] / mcs / class / corlib / Test / System.Reflection / AssemblyNameTest.cs
index 3e32846299c28253adb2e4215c251ffe936084b0..ceac114da7162b26a38bebe2d929b454118bee24 100644 (file)
@@ -13,7 +13,7 @@ using System;
 using System.Configuration.Assemblies;
 using System.IO;
 using System.Reflection;
-#if !TARGET_JVM
+#if !MOBILE
 using System.Reflection.Emit;
 #endif
 using System.Runtime.Serialization;
@@ -31,9 +31,7 @@ public class AssemblyNameTest {
 
        private string tempDir = Path.Combine (Path.GetTempPath (), "MonoTests.System.Reflection.AssemblyNameTest");
 
-#if !TARGET_JVM // Thread.GetDomain is not supported for TARGET_JVM.
        private AppDomain domain;
-#endif // TARGET_JVM
 
        // created with "sn -o test.snk test.txt"
        static byte[] keyPair = {
@@ -98,10 +96,6 @@ public class AssemblyNameTest {
                0x1A, 0x56, 0x76, 0x43, 0xDB, 0x64, 0x86, 0x41, 0x64, 0x8D,
                0x4C, 0x91, 0x83, 0x4E, 0xF5, 0x6C };
 
-#if !NET_2_0
-       static byte [] kp_token = { 0xff, 0xef, 0x94, 0x53, 0x67, 0x69, 0xda, 0x06 };
-#endif
-
        static byte [] publicKey1 = {
                0x00, 0x24, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x94, 0x00,
                0x00, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00,
@@ -140,10 +134,6 @@ public class AssemblyNameTest {
                0x50, 0xa4, 0x4d, 0x8b, 0x8a, 0x58, 0x17, 0x70, 0xa4, 0x53,
                0xe4, 0xdc, 0x73, 0x5d, 0x8c, 0x4e, 0xb8, 0xd3, 0xa9, 0xbf };
 
-#if !NET_2_0
-       static byte [] pk_token2 = { 0x22, 0x7c, 0x9c, 0x2c, 0x3c, 0x00, 0x63, 0xe9 };
-#endif
-
        static byte [] publicKey3 = {
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
@@ -162,9 +152,7 @@ public class AssemblyNameTest {
 
                Directory.CreateDirectory (tempDir);
 
-#if !TARGET_JVM // Thread.GetDomain is not supported for TARGET_JVM.
                domain = Thread.GetDomain ();
-#endif // TARGET_JVM
        }
 
        [TearDown]
@@ -188,27 +176,17 @@ public class AssemblyNameTest {
                Assert.IsNull (an.CultureInfo, "CultureInfo");
                Assert.IsNull (an.EscapedCodeBase, "EscapedCodeBase");
                Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "Flags");
-#if NET_2_0
                Assert.AreEqual (String.Empty, an.FullName, "FullName");
-#else
-               Assert.IsNull (an.FullName, "FullName");
-#endif
                Assert.AreEqual (AssemblyHashAlgorithm.None, an.HashAlgorithm, "HashAlgorithm");
                Assert.IsNull (an.KeyPair, "KeyPair");
                Assert.IsNull (an.Name, "Name");
-#if NET_2_0
                Assert.AreEqual (ProcessorArchitecture.None, an.ProcessorArchitecture, "PA");
-#endif
                Assert.IsNull (an.Version, "Version");
                Assert.AreEqual (AssemblyVersionCompatibility.SameMachine, 
                        an.VersionCompatibility, "VersionCompatibility");
                Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
                Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
-#if NET_2_0
                Assert.AreEqual (string.Empty, an.ToString (), "ToString");
-#else
-               Assert.AreEqual (typeof (AssemblyName).FullName, an.ToString (), "ToString");
-#endif
        }
 
        [Test]
@@ -233,11 +211,7 @@ public class AssemblyNameTest {
                an.SetPublicKey ((byte []) null);
 
                Assert.IsNull (an.GetPublicKey (), "#C1");
-#if NET_2_0
                Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#C2");
-#else
-               Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#C2");
-#endif
                Assert.IsNull (an.KeyPair, "#C3");
                Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#C4");
 
@@ -246,11 +220,7 @@ public class AssemblyNameTest {
                an.SetPublicKey ((byte []) null);
 
                Assert.IsNull (an.GetPublicKey (), "#D1");
-#if NET_2_0
                Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#D2");
-#else
-               Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#D2");
-#endif
                Assert.IsNull (an.KeyPair, "#D3");
                Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#D4");
 
@@ -259,11 +229,7 @@ public class AssemblyNameTest {
                an.SetPublicKey ((byte []) null);
 
                Assert.IsNull (an.GetPublicKey (), "#E1");
-#if NET_2_0
                Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#E2");
-#else
-               Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#E2");
-#endif
                Assert.IsNull (an.KeyPair, "#E3");
                Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#E4");
 
@@ -284,11 +250,7 @@ public class AssemblyNameTest {
                an.SetPublicKeyToken (pk_token1);
 
                Assert.IsNull (an.GetPublicKey (), "#G1");
-#if NET_2_0
                Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#G2");
-#else
-               Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#G2");
-#endif
                Assert.IsNull (an.KeyPair, "#G3");
                Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#G4");
 
@@ -299,12 +261,8 @@ public class AssemblyNameTest {
                Assert.AreEqual (0, an.GetPublicKey ().Length, "#H2");
                Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#H3");
                Assert.IsNull (an.KeyPair, "#H4");
-#if NET_2_0
                Assert.IsNotNull (an.GetPublicKeyToken (), "#H5");
                Assert.AreEqual (0, an.GetPublicKeyToken ().Length, "#H6");
-#else
-               Assert.IsNull (an.GetPublicKeyToken (), "#H5");
-#endif
 
                an = new AssemblyName ();
                an.SetPublicKey (publicKey1);
@@ -316,11 +274,7 @@ public class AssemblyNameTest {
                an.SetPublicKey ((byte []) null);
                Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#J1");
                an.SetPublicKey ((byte []) null);
-#if NET_2_0
                Assert.AreEqual (AssemblyNameFlags.None, an.Flags, "#J2");
-#else
-               Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#J2");
-#endif
                an.SetPublicKey ((byte []) null);
                Assert.AreEqual (AssemblyNameFlags.PublicKey, an.Flags, "#J3");
                an.SetPublicKey (publicKey1);
@@ -399,9 +353,7 @@ public class AssemblyNameTest {
                Assert.AreEqual (AssemblyHashAlgorithm.SHA1, an.HashAlgorithm, "HashAlgorithm");
                Assert.IsNull (an.KeyPair, "KeyPair");
                Assert.IsNotNull (an.Name, "Name");
-#if NET_2_0
-               //Assert.AreEqual (ProcessorArchitecture.MSIL, an.ProcessorArchitecture, "PA");
-#endif
+               Assert.AreEqual (ProcessorArchitecture.MSIL, an.ProcessorArchitecture, "PA");
                Assert.AreEqual (new Version (0, 0, 0, 0), an.Version, "Version");
                Assert.AreEqual (AssemblyVersionCompatibility.SameMachine,
                        an.VersionCompatibility, "VersionCompatibility");
@@ -429,7 +381,14 @@ public class AssemblyNameTest {
        {
                an = typeof(int).Assembly.GetName ();
                Assert.IsNotNull (an.FullName, "#1");
-               Assert.AreEqual (Consts.AssemblyCorlib, an.FullName, "#2");
+
+               string AssemblyCorlib;
+#if MOBILE
+               AssemblyCorlib = "mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e";
+#else
+               AssemblyCorlib = "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
+#endif
+               Assert.AreEqual (AssemblyCorlib, an.FullName, "#2");
        }
 
        [Test]
@@ -451,15 +410,10 @@ public class AssemblyNameTest {
 
                // tests for AssemblyName with only name
                an = new AssemblyName ();
-#if NET_2_0
                an.Flags = AssemblyNameFlags.EnableJITcompileOptimizer |
                        AssemblyNameFlags.EnableJITcompileTracking |
                        AssemblyNameFlags.PublicKey |
                        AssemblyNameFlags.Retargetable;
-#else
-               an.Flags = AssemblyNameFlags.PublicKey |
-                       AssemblyNameFlags.Retargetable;
-#endif
                an.Name = assemblyName;
                Assert.AreEqual (assemblyName + ", Retargetable=Yes", an.FullName, "#1");
                an.Flags = AssemblyNameFlags.None;
@@ -506,11 +460,7 @@ public class AssemblyNameTest {
                an.CultureInfo = new CultureInfo ("nl-BE");
                Assert.AreEqual (assemblyName + ", Culture=nl-BE", an.FullName, "#2");
                an.Name = null;
-#if NET_2_0
                Assert.AreEqual (string.Empty, an.FullName, "#3");
-#else
-               Assert.IsNull (an.FullName, "#4");
-#endif
        }
 
        [Test]
@@ -528,11 +478,7 @@ public class AssemblyNameTest {
                an.SetPublicKey (new byte [0]);
                Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#A3");
                an.Name = null;
-#if NET_2_0
                Assert.AreEqual (string.Empty, an.FullName, "#A4");
-#else
-               Assert.IsNull (an.FullName, "#A4");
-#endif
 
                an = new AssemblyName ();
                an.HashAlgorithm = AssemblyHashAlgorithm.MD5;
@@ -540,19 +486,11 @@ public class AssemblyNameTest {
                an.SetPublicKey (publicKey1);
                Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#B1");
                an.SetPublicKeyToken (new byte [] { 0x0a, 0x22 });
-#if NET_2_0
                Assert.AreEqual (assemblyName + ", PublicKeyToken=0a22", an.FullName, "#B2");
-#else
-               Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#B2");
-#endif
                an.SetPublicKeyToken ((byte []) null);
                Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#B3");
                an.Name = null;
-#if NET_2_0
                Assert.AreEqual (string.Empty, an.FullName, "#B4");
-#else
-               Assert.IsNull (an.FullName, "#B4");
-#endif
 
                an = new AssemblyName ();
                an.HashAlgorithm = AssemblyHashAlgorithm.None;
@@ -560,36 +498,20 @@ public class AssemblyNameTest {
                an.SetPublicKey (publicKey1);
                Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C1");
                an.SetPublicKeyToken (new byte [] { 0x0a, 0x22 });
-#if NET_2_0
                Assert.AreEqual (assemblyName + ", PublicKeyToken=0a22", an.FullName, "#C2");
-#else
-               Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C2");
-#endif
                an.SetPublicKeyToken ((byte []) null);
                Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C3");
                an.Name = null;
-#if NET_2_0
                Assert.AreEqual (string.Empty, an.FullName, "#C4");
-#else
-               Assert.IsNull (an.FullName, "#C4");
-#endif
 
                an = new AssemblyName ();
                an.Name = assemblyName;
                an.SetPublicKey (new byte [0]);
                Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D1");
                an.Name = null;
-#if NET_2_0
                Assert.AreEqual (string.Empty, an.FullName, "#D2");
-#else
-               Assert.IsNull (an.FullName, "#D2");
-#endif
                an.SetPublicKey (publicKey3);
-#if NET_2_0
                Assert.AreEqual (string.Empty, an.FullName, "#D3");
-#else
-               Assert.IsNull (an.FullName, "#D3");
-#endif
                an.Name = assemblyName;
                Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token3), an.FullName, "#D4");
        }
@@ -603,7 +525,6 @@ public class AssemblyNameTest {
                an = new AssemblyName ();
                an.Name = assemblyName;
                an.SetPublicKey (keyPair);
-#if NET_2_0
                try {
                        Assert.Fail ("#A1: " + an.FullName);
                } catch (SecurityException ex) {
@@ -613,19 +534,11 @@ public class AssemblyNameTest {
                        Assert.IsNull (ex.InnerException, "#A4");
                        Assert.IsNotNull (ex.Message, "#A5");
                }
-#else
-               Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#A1");
-#endif
 
                an.SetPublicKeyToken (new byte [0]);
-#if NET_2_0
                Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#B1");
-#else
-               Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#B1");
-#endif
 
                an.SetPublicKeyToken ((byte []) null);
-#if NET_2_0
                try {
                        Assert.Fail ("#C1: " + an.FullName);
                } catch (SecurityException ex) {
@@ -635,22 +548,11 @@ public class AssemblyNameTest {
                        Assert.IsNull (ex.InnerException, "#C4");
                        Assert.IsNotNull (ex.Message, "#C5");
                }
-#else
-               Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#C1");
-#endif
 
                an.SetPublicKeyToken (new byte [0]);
-#if NET_2_0
                Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D1");
-#else
-               Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (kp_token), an.FullName, "#D1");
-#endif
                an.SetPublicKey (publicKey1);
-#if NET_2_0
                Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D2");
-#else
-               Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D2");
-#endif
                an.SetPublicKeyToken ((byte []) null);
                Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D3");
        }
@@ -671,11 +573,7 @@ public class AssemblyNameTest {
                an.SetPublicKeyToken (pk_token1);
                Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#A4");
                an.Name = null;
-#if NET_2_0
                Assert.AreEqual (string.Empty, an.FullName, "#A5");
-#else
-               Assert.IsNull (an.FullName, "#A5");
-#endif
 
                an = new AssemblyName ();
                an.HashAlgorithm = AssemblyHashAlgorithm.MD5;
@@ -687,11 +585,7 @@ public class AssemblyNameTest {
                an.SetPublicKeyToken ((byte []) null);
                Assert.AreEqual (assemblyName, an.FullName, "#B3");
                an.Name = null;
-#if NET_2_0
                Assert.AreEqual (string.Empty, an.FullName, "#B4");
-#else
-               Assert.IsNull (an.FullName, "#B4");
-#endif
 
                an = new AssemblyName ();
                an.Name = assemblyName;
@@ -699,18 +593,10 @@ public class AssemblyNameTest {
                an.SetPublicKeyToken (pk_token1);
                Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C1");
                an.SetPublicKey ((byte []) null);
-#if NET_2_0
                Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C2");
-#else
-               Assert.AreEqual (assemblyName, an.FullName, "#C2");
-#endif
                Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#C3");
                an.SetPublicKey (new byte [0]);
-#if NET_2_0
                Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#C4");
-#else
-               Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#C4");
-#endif
                Assert.AreEqual (pk_token1, an.GetPublicKeyToken (), "#C5");
 
                an = new AssemblyName ();
@@ -720,17 +606,9 @@ public class AssemblyNameTest {
                an.SetPublicKey (new byte [0]);
                Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D2");
                an.SetPublicKeyToken (pk_token1);
-#if NET_2_0
                Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D3");
-#else
-               Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#D3");
-#endif
                an.SetPublicKey ((byte []) null);
-#if NET_2_0
                Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token1), an.FullName, "#D4");
-#else
-               Assert.AreEqual (assemblyName, an.FullName, "#D4");
-#endif
        }
 
        [Test]
@@ -806,11 +684,7 @@ public class AssemblyNameTest {
                an.Name = assemblyName;
                an.SetPublicKey (publicKey2);
                Assert.AreEqual (new byte [0], an.GetPublicKeyToken (), "#A6");
-#if NET_2_0
                Assert.AreEqual (assemblyName + ", PublicKeyToken=null", an.FullName, "#A7");
-#else
-               Assert.AreEqual (assemblyName + ", PublicKeyToken=" + GetTokenString (pk_token2), an.FullName, "#A7");
-#endif
 
                an = new AssemblyName ();
                an.HashAlgorithm = AssemblyHashAlgorithm.MD5;
@@ -832,7 +706,6 @@ public class AssemblyNameTest {
 
                an = new AssemblyName ();
                an.SetPublicKey (keyPair);
-#if NET_2_0
                try {
                        an.GetPublicKeyToken ();
                        Assert.Fail ("#E1");
@@ -843,9 +716,6 @@ public class AssemblyNameTest {
                        Assert.IsNull (ex.InnerException, "#E4");
                        Assert.IsNotNull (ex.Message, "#E5");
                }
-#else
-               Assert.AreEqual (kp_token, an.GetPublicKeyToken (), "#E1");
-#endif
        }
 
        [Test]
@@ -873,11 +743,7 @@ public class AssemblyNameTest {
        {
                Assembly a = Assembly.GetExecutingAssembly ();
                an = a.GetName ();
-#if NET_2_0
                Assert.AreEqual (new byte [0], an.GetPublicKeyToken ());
-#else
-               Assert.IsNull (an.GetPublicKeyToken ());
-#endif
        }
 
        static int nameIndex = 0;
@@ -889,7 +755,7 @@ public class AssemblyNameTest {
                return assemblyName;
        }
 
-#if !TARGET_JVM // Reflection.Emit is not supported for TARGET_JVM.
+#if !MOBILE
        private Assembly GenerateAssembly (AssemblyName name) 
        {
                AssemblyBuilder ab = domain.DefineDynamicAssembly (
@@ -943,11 +809,7 @@ public class AssemblyNameTest {
                a = GenerateAssembly (name);
                culture = a.GetName ().CultureInfo;
                Assert.IsFalse (culture.IsNeutralCulture, "#C1");
-#if NET_2_0
                Assert.IsFalse (culture.IsReadOnly, "#C2");
-#else
-               Assert.IsTrue (culture.IsReadOnly, "#C2");
-#endif
                Assert.AreEqual (127, culture.LCID, "#C3");
                Assert.AreEqual (string.Empty, culture.Name, "#C4");
                Assert.IsFalse (culture.UseUserOverride, "#C5");
@@ -956,11 +818,7 @@ public class AssemblyNameTest {
                name = a.GetName ();
                culture = name.CultureInfo;
                Assert.IsFalse (culture.IsNeutralCulture, "#D1");
-#if NET_2_0
                Assert.IsFalse (culture.IsReadOnly, "#D2");
-#else
-               Assert.IsTrue (culture.IsReadOnly, "#D2");
-#endif
                Assert.AreEqual (127, culture.LCID, "#D3");
                Assert.AreEqual (string.Empty, culture.Name, "#D4");
                Assert.IsFalse (culture.UseUserOverride, "#D5");
@@ -969,11 +827,7 @@ public class AssemblyNameTest {
                name = a.GetName ();
                culture = name.CultureInfo;
                Assert.IsFalse (culture.IsNeutralCulture, "#E1");
-#if NET_2_0
                Assert.IsFalse (culture.IsReadOnly, "#E2");
-#else
-               Assert.IsTrue (culture.IsReadOnly, "#E2");
-#endif
                Assert.AreEqual (127, culture.LCID, "#E3");
                Assert.AreEqual (string.Empty, culture.Name, "#E4");
                Assert.IsFalse (culture.UseUserOverride, "#E5");
@@ -985,11 +839,7 @@ public class AssemblyNameTest {
                        Assert.IsFalse (culture.IsReadOnly, "#F2:" + an.Name);
                        Assert.AreEqual (127, culture.LCID, "#F3:" + an.Name);
                        Assert.AreEqual (string.Empty, culture.Name, "#F4:" + an.Name);
-#if NET_2_0
                        Assert.IsFalse (culture.UseUserOverride, "#F5:" + an.Name);
-#else
-                       Assert.IsTrue (culture.UseUserOverride, "#F5:" + an.Name);
-#endif
                }
        }
 
@@ -1016,7 +866,6 @@ public class AssemblyNameTest {
        }
 
        [Test]
-       [Category ("NotWorking")]
        public void Version_Dynamic ()
        {
                AssemblyName name = GenAssemblyName ();
@@ -1029,23 +878,15 @@ public class AssemblyNameTest {
                name.Version = new Version (1, 2, 3);
 
                ab = GenerateDynamicAssembly (name);
-#if NET_2_0
                Assert.AreEqual ("1.2.3.0", ab.GetName ().Version.ToString (), "1.2.3.0 dynamic");
-#else
-               Assert.AreEqual ("1.2.3.65535", ab.GetName ().Version.ToString (), "1.2.3.0 dynamic");
-#endif
 
                name = GenAssemblyName ();
                name.Version = new Version (1, 2);
 
                ab = GenerateDynamicAssembly (name);
-#if NET_2_0
                Assert.AreEqual ("1.2.0.0", ab.GetName ().Version.ToString (), "1.2.0.0 dynamic");
-#else
-               Assert.AreEqual ("1.2.65535.65535", ab.GetName ().Version.ToString (), "1.2.0.0 dynamic");
-#endif
        }
-#endif // TARGET_JVM
+#endif
 
        [Test]
        public void HashAlgorithm ()
@@ -1136,7 +977,6 @@ public class AssemblyNameTest {
                Assert.AreEqual (an.GetPublicKeyToken (), dsAssemblyName.GetPublicKeyToken (), "PublicToken");
        }
 
-#if !TARGET_JVM // Assemblyname.GetObjectData not implemented yet for TARGET_JVM
        [Test]
        public void GetObjectData_Info_Null ()
        {
@@ -1152,7 +992,6 @@ public class AssemblyNameTest {
                        Assert.AreEqual ("info", ex.ParamName, "#6");
                }
        }
-#endif // TARGET_JVM
 
        [Test]
        public void Clone_Corlib ()
@@ -1168,9 +1007,7 @@ public class AssemblyNameTest {
                Assert.AreEqual (an.HashAlgorithm, clone.HashAlgorithm, "HashAlgorithm");
                Assert.AreEqual (an.KeyPair, clone.KeyPair, "KeyPair");
                Assert.AreEqual (an.Name, clone.Name, "Name");
-#if NET_2_0
-               Assert.AreEqual (an.ProcessorArchitecture, clone.ProcessorArchitecture, "PA");
-#endif
+               //Assert.AreEqual (an.ProcessorArchitecture, clone.ProcessorArchitecture, "PA");
                Assert.AreEqual (an.Version, clone.Version, "Version");
                Assert.AreEqual (an.VersionCompatibility, clone.VersionCompatibility, "VersionCompatibility");
                Assert.AreEqual (an.GetPublicKey (), clone.GetPublicKey (), "GetPublicKey");
@@ -1188,17 +1025,11 @@ public class AssemblyNameTest {
                Assert.IsNull (clone.CultureInfo, "CultureInfo");
                Assert.IsNull (clone.EscapedCodeBase, "EscapedCodeBase");
                Assert.AreEqual (AssemblyNameFlags.None, clone.Flags, "Flags");
-#if NET_2_0
                Assert.AreEqual (String.Empty, clone.FullName, "FullName");
-#else
-               Assert.IsNull (clone.FullName, "FullName");
-#endif
                Assert.AreEqual (AssemblyHashAlgorithm.None, clone.HashAlgorithm, "HashAlgorithm");
                Assert.IsNull (clone.KeyPair, "KeyPair");
                Assert.IsNull (clone.Name, "Name");
-#if NET_2_0
                Assert.AreEqual (ProcessorArchitecture.None, clone.ProcessorArchitecture, "PA");
-#endif
                Assert.IsNull (clone.Version, "Version");
                Assert.AreEqual (AssemblyVersionCompatibility.SameMachine, 
                        clone.VersionCompatibility, "VersionCompatibility");
@@ -1218,9 +1049,7 @@ public class AssemblyNameTest {
                Assert.AreEqual (an.HashAlgorithm, clone.HashAlgorithm, "HashAlgorithm");
                Assert.AreEqual (an.KeyPair, clone.KeyPair, "KeyPair");
                Assert.AreEqual (an.Name, clone.Name, "Name");
-#if NET_2_0
-               //Assert.AreEqual (ProcessorArchitecture.MSIL, clone.ProcessorArchitecture, "PA");
-#endif
+               Assert.AreEqual (an.ProcessorArchitecture, clone.ProcessorArchitecture, "PA");
                Assert.AreEqual (an.Version, clone.Version, "Version");
                Assert.AreEqual (an.VersionCompatibility, clone.VersionCompatibility, "VersionCompatibility");
                Assert.AreEqual (an.GetPublicKey (), clone.GetPublicKey (), "GetPublicKey");
@@ -1251,11 +1080,7 @@ public class AssemblyNameTest {
                                // process
                                Assert.AreEqual (typeof (FileLoadException), ex.GetType (), "#2");
                                Assert.IsNotNull (ex.FileName, "#3");
-#if NET_2_0
                                Assert.AreEqual (file, ex.FileName, "#4");
-#else
-                               Assert.IsTrue (ex.FileName.IndexOf ("loadfailure.dll") != -1, "#4");
-#endif
                                Assert.IsNull (ex.InnerException, "#5");
                                Assert.IsNotNull (ex.Message, "#6");
                        }
@@ -1276,11 +1101,7 @@ public class AssemblyNameTest {
                } catch (BadImageFormatException ex) {
                        Assert.AreEqual (typeof (BadImageFormatException), ex.GetType (), "#2");
                        Assert.IsNotNull (ex.FileName, "#3");
-#if NET_2_0
                        Assert.AreEqual (file, ex.FileName, "#4");
-#else
-                       Assert.IsTrue (ex.FileName.IndexOf ("badimage.dll") != -1, "#4");
-#endif
                        Assert.IsNull (ex.InnerException, "#5");
                        Assert.IsNotNull (ex.Message, "#6");
                } finally {
@@ -1289,6 +1110,7 @@ public class AssemblyNameTest {
        }
 
        [Test]
+       [Category ("AndroidNotWorking")] // Accessing assemblies by asm.Location is not supported
        public void GetAssemblyName_CodeBase ()
        {
                Assembly execAssembly = Assembly.GetExecutingAssembly ();
@@ -1309,7 +1131,6 @@ public class AssemblyNameTest {
                return tokenString;
        }
 
-#if NET_2_0
        [Test] // ctor (String)
        public void Constructor1_Name ()
        {
@@ -1331,10 +1152,11 @@ public class AssemblyNameTest {
                Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
                Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
                Assert.AreEqual ("TestAssembly", an.ToString (), "ToString");
+               Assert.IsNull (an.CultureName, "CultureName");
+               Assert.AreEqual (AssemblyContentType.Default, an.ContentType, "ContentType");
        }
 
        [Test] // ctor (String)
-       [Category("TargetJvmNotWorking")] // Not yet supported for TARGET_JVM.
        public void Constructor1_Full ()
        {
                const string assemblyName = "TestAssembly";
@@ -1468,23 +1290,11 @@ public class AssemblyNameTest {
                try {
                        new AssemblyName (assemblyName + ", Culture=aa-AA");
                        Assert.Fail ("#1");
-#if NET_4_0
                } catch (CultureNotFoundException ex) {
                }
-#else
-               } catch (ArgumentException ex) {
-                       // Culture name 'aa-aa' is not supported
-                       Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
-                       Assert.IsNull (ex.InnerException, "#3");
-                       Assert.IsNotNull (ex.Message, "#4");
-                       Assert.IsNotNull (ex.ParamName, "#5");
-                       Assert.AreEqual ("name", ex.ParamName, "#6");
-               }
-#endif
        }
 
        [Test] // ctor (String)
-       [Category ("NotWorking")] // bug #351708
        public void Constructor1_ProcessorArchitecture ()
        {
                const string assemblyName = "TestAssembly";
@@ -1517,7 +1327,6 @@ public class AssemblyNameTest {
        }
 
        [Test] // ctor (String)
-       [Category ("NotWorking")] // bug #351708
        public void Constructor1_ProcessorArchitecture_Incomplete ()
        {
                const string assemblyName = "TestAssembly";
@@ -1534,7 +1343,6 @@ public class AssemblyNameTest {
        }
 
        [Test] // ctor (String)
-       [Category ("NotWorking")] // bug #351708
        public void Constructor1_ProcessorArchitecture_Invalid ()
        {
                const string assemblyName = "TestAssembly";
@@ -1939,7 +1747,6 @@ public class AssemblyNameTest {
        }
 
        [Test] // ctor (String)
-       [Category("TargetJvmNotWorking")] // Not yet supported for TARGET_JVM.
        public void Constructor1_Version ()
        {
                const string assemblyName = "TestAssembly";
@@ -1997,7 +1804,84 @@ public class AssemblyNameTest {
                        Assert.IsNotNull (ex.Message, "#4");
                }
        }
-#endif
+
+       [Test] // ctor (String)
+       public void Constructor1_Quoted ()
+       {
+               AssemblyName an;
+
+               an = new AssemblyName ("'System', Version=\"10.0.0.0\", Culture='Neutral', PublicKeyToken='b67a5c561934e089', Retargetable='Yes', ProcessorArchitecture='AMD64'");
+               Assert.AreEqual ("System, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b67a5c561934e089, Retargetable=Yes", an.ToString ());
+               Assert.AreEqual (ProcessorArchitecture.Amd64, an.ProcessorArchitecture, "Amd64");
+       }
+
+       [Test] // ctor (String)
+       public void Constructor1_Quoted_Invalid ()
+       {
+               AssemblyName an;
+
+               try {
+                       an = new AssemblyName ("System, Version=\"10.0.0.0'");
+                       Assert.Fail ("#1");
+               } catch (FileLoadException) {
+               }
+       }
+
+       [Test (Description="Xamarin bug #99 - whitespaces in key=value")]
+       public void WhiteSpaceInKeyValue ()
+       {
+               string nameWithSpaces = String.Format ("MySql.Data.Tests, PublicKey      = \t  {0},  Culture   =\tneutral, Version=\t1.2.3.4", GetTokenString (publicKey1));
+               string fullName = "MySql.Data.Tests, Version=1.2.3.4, Culture=neutral, PublicKeyToken=ce5276d8687ec6dc";
+               var an = new AssemblyName (nameWithSpaces);
+
+               Assert.AreEqual (fullName, an.FullName);
+       }
+
+       [Test]
+       public void ReferenceMatchesDefinition_Compares_Only_SimpleName ()
+       {
+               var an1 = new AssemblyName ("TestDll, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089");
+               var an2 = new AssemblyName ("TestDll, Version=2.0.0.2001, Culture=en-US, PublicKeyToken=ab7a5c561934e089");
+
+               var an3 = new AssemblyName ("TestDll");
+               var an4 = new AssemblyName ("tesTDlL");
+
+               var an5 = new AssemblyName ("TestDll");
+               var an6 = new AssemblyName ("TestDll2");
+               
+               Assert.IsTrue (AssemblyName.ReferenceMatchesDefinition (an1, an2));
+               Assert.IsTrue (AssemblyName.ReferenceMatchesDefinition (an3, an4));
+               Assert.IsFalse (AssemblyName.ReferenceMatchesDefinition (an5, an6));
+       }
+
+       [Test]
+       public void CultureNameInvariant ()
+       {
+               var an = new AssemblyName ("TestDll");
+               an.CultureInfo = new CultureInfo (CultureInfo.InvariantCulture.LCID);
+
+               Assert.AreEqual ("", an.CultureName);
+       }
+
+       [Test]
+       public void TestDecodingEcmaKey ()
+       {
+        var x = new AssemblyName( "System, PublicKey=00000000000000000400000000000000" );
+               Assert.IsNull (x.GetPublicKey (), "#1");
+               Assert.IsNotNull (x.GetPublicKeyToken (), "#2");
+
+               var t = x.GetPublicKeyToken ();
+               Assert.AreEqual (8, t.Length, "#3");
+
+               Assert.AreEqual (0xB7, t [0], "#4.0");
+               Assert.AreEqual (0x7A, t [1], "#4.1");
+               Assert.AreEqual (0x5C, t [2], "#4.2");
+               Assert.AreEqual (0x56, t [3], "#4.3");
+               Assert.AreEqual (0x19, t [4], "#4.4");
+               Assert.AreEqual (0x34, t [5], "#4.5");
+               Assert.AreEqual (0xE0, t [6], "#4.6");
+               Assert.AreEqual (0x89, t [7], "#4.7");
+       }
 }
 
 }