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;
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 = {
Directory.CreateDirectory (tempDir);
-#if !TARGET_JVM // Thread.GetDomain is not supported for TARGET_JVM.
domain = Thread.GetDomain ();
-#endif // TARGET_JVM
}
[TearDown]
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");
}
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 (
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 ()
Assert.AreEqual (an.GetPublicKeyToken (), dsAssemblyName.GetPublicKeyToken (), "PublicToken");
}
-#if !TARGET_JVM // Assemblyname.GetObjectData not implemented yet for TARGET_JVM
[Test]
public void GetObjectData_Info_Null ()
{
Assert.AreEqual ("info", ex.ParamName, "#6");
}
}
-#endif // TARGET_JVM
[Test]
public void Clone_Corlib ()
}
[Test]
+ [Category ("AndroidNotWorking")] // Accessing assemblies by asm.Location is not supported
public void GetAssemblyName_CodeBase ()
{
Assembly execAssembly = Assembly.GetExecutingAssembly ();
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";
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)
}
[Test] // ctor (String)
- [Category("TargetJvmNotWorking")] // Not yet supported for TARGET_JVM.
public void Constructor1_Version ()
{
const string assemblyName = "TestAssembly";
}
}
+ [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 ()
{
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");
+ }
}
}