Revert "Merge pull request #5330 from alexanderkyte/dedup_mkbundle"
[mono.git] / mcs / class / corlib / Test / System.Reflection / AssemblyNameTest.cs
index ae086137d5a0d5f89ba151be1d902d0ff6d564df..ceac114da7162b26a38bebe2d929b454118bee24 100644 (file)
@@ -13,7 +13,7 @@ using System;
 using System.Configuration.Assemblies;
 using System.IO;
 using System.Reflection;
-#if !TARGET_JVM && !MOBILE
+#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 = {
@@ -154,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]
@@ -389,10 +385,8 @@ public class AssemblyNameTest {
                string AssemblyCorlib;
 #if MOBILE
                AssemblyCorlib = "mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e";
-#elif NET_4_0
-               AssemblyCorlib = "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
 #else
-               AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
+               AssemblyCorlib = "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
 #endif
                Assert.AreEqual (AssemblyCorlib, an.FullName, "#2");
        }
@@ -761,7 +755,7 @@ public class AssemblyNameTest {
                return assemblyName;
        }
 
-#if !TARGET_JVM && !MOBILE // Reflection.Emit is not supported for TARGET_JVM.
+#if !MOBILE
        private Assembly GenerateAssembly (AssemblyName name) 
        {
                AssemblyBuilder ab = domain.DefineDynamicAssembly (
@@ -892,7 +886,7 @@ public class AssemblyNameTest {
                ab = GenerateDynamicAssembly (name);
                Assert.AreEqual ("1.2.0.0", ab.GetName ().Version.ToString (), "1.2.0.0 dynamic");
        }
-#endif // TARGET_JVM
+#endif
 
        [Test]
        public void HashAlgorithm ()
@@ -983,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 ()
        {
@@ -999,7 +992,6 @@ public class AssemblyNameTest {
                        Assert.AreEqual ("info", ex.ParamName, "#6");
                }
        }
-#endif // TARGET_JVM
 
        [Test]
        public void Clone_Corlib ()
@@ -1118,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 ();
@@ -1159,14 +1152,11 @@ public class AssemblyNameTest {
                Assert.IsNull (an.GetPublicKey (), "GetPublicKey");
                Assert.IsNull (an.GetPublicKeyToken (), "GetPublicKeyToken");
                Assert.AreEqual ("TestAssembly", an.ToString (), "ToString");
-#if NET_4_5
                Assert.IsNull (an.CultureName, "CultureName");
                Assert.AreEqual (AssemblyContentType.Default, an.ContentType, "ContentType");
-#endif
        }
 
        [Test] // ctor (String)
-       [Category("TargetJvmNotWorking")] // Not yet supported for TARGET_JVM.
        public void Constructor1_Full ()
        {
                const string assemblyName = "TestAssembly";
@@ -1300,19 +1290,8 @@ 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)
@@ -1768,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";
@@ -1827,6 +1805,28 @@ public class AssemblyNameTest {
                }
        }
 
+       [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 ()
        {
@@ -1853,6 +1853,35 @@ public class AssemblyNameTest {
                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");
+       }
 }
 
 }