}
[Test]
+ [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly
public void DefineType_Name_Null ()
{
AssemblyBuilder ab = genAssembly ();
}
[Test]
+ [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly
public void DefineType_Name_Empty ()
{
AssemblyBuilder ab = genAssembly ();
}
[Test]
+ [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly
public void DefineType_Name_NullChar ()
{
AssemblyBuilder ab = genAssembly ();
}
[Test]
+ [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly
public void DefineType_InterfaceNotAbstract ()
{
AssemblyBuilder ab = genAssembly ();
}
[Test]
+ [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly
public void DefineType_Parent_Interface ()
{
TypeBuilder tb;
}
[Test]
+ [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly
+ public void DefineType_TypeSize ()
+ {
+ AssemblyBuilder ab = genAssembly ();
+ ModuleBuilder mb = ab.DefineDynamicModule ("foo.dll", "foo.dll", true);
+
+ TypeBuilder tb = mb.DefineType ("Foo", TypeAttributes.Public | TypeAttributes.Sealed | TypeAttributes.SequentialLayout,
+ typeof (ValueType), 1);
+ Assert.AreEqual (1, tb.Size);
+ }
+
+ [Test]
+ [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly
[ExpectedException (typeof (ArgumentException))]
public void DuplicateTypeName () {
AssemblyBuilder ab = genAssembly ();
}
[Test]
+ [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly
public void DuplicateSymbolDocument ()
{
AssemblyBuilder ab = genAssembly ();
Assert.AreEqual ("Frub", mi.Name);
}
+ [Test]
+ public void GetMethodTokenCrossMethodBuilders ()
+ {
+ AssemblyBuilder ab = genAssembly ();
+ ModuleBuilder moduleb = ab.DefineDynamicModule ("foo.dll", "foo.dll");
+
+ TypeBuilder tb = moduleb.DefineType ("foo");
+ MethodBuilder mb = tb.DefineMethod("Frub", MethodAttributes.Static, null, new Type[] { typeof(IntPtr) });
+ int tok = mb.GetToken().Token;
+ mb.SetImplementationFlags(MethodImplAttributes.NoInlining);
+ ILGenerator ilgen = mb.GetILGenerator();
+ ilgen.Emit(OpCodes.Ret);
+
+ tb.CreateType ();
+
+ var mi = (MethodInfo) moduleb.ResolveMember (tok);
+ Assert.IsNotNull (mi);
+
+ ModuleBuilder moduleb2 = ab.DefineDynamicModule ("foo2.dll", "foo2.dll");
+ var tok2 = moduleb2.GetMethodToken (mi).Token;
+
+ MethodBase mi2 = moduleb.ResolveMethod (tok2);
+ Assert.IsNotNull (mi2);
+ Assert.AreEqual ("Frub", mi.Name);
+ }
+
[Test]
public void ResolveMemberField ()
{
catch (ArgumentException) {
}
}
+
+ [Test]
+ public void GetType_Escaped_Chars ()
+ {
+ AssemblyName an = genAssemblyName ();
+ AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly (an, AssemblyBuilderAccess.Run);
+ ModuleBuilder module = ab.DefineDynamicModule ("mod");
+
+ var tb = module.DefineType ("NameSpace,+*&[]\\.Type,+*&[]\\",
+ TypeAttributes.Class | TypeAttributes.Public);
+
+ var nestedTb = tb.DefineNestedType ("Nested,+*&[]\\",
+ TypeAttributes.Class | TypeAttributes.NestedPublic);
+
+ var escapedOuterName =
+ "NameSpace\\,\\+\\*\\&\\[\\]\\\\"
+ + "."
+ + "Type\\,\\+\\*\\&\\[\\]\\\\";
+
+ var escapedNestedName =
+ escapedOuterName
+ + "+"
+ + "Nested\\,\\+\\*\\&\\[\\]\\\\";
+
+ Assert.AreEqual (escapedOuterName, tb.FullName);
+ Assert.AreEqual (escapedNestedName, nestedTb.FullName);
+
+ Type outerCreatedTy = tb.CreateType ();
+ Type nestedCreatedTy = nestedTb.CreateType ();
+ Type outerTy = module.GetType (escapedOuterName);
+ Type nestedTy = module.GetType (escapedNestedName);
+
+ Assert.IsNotNull (outerTy, "A");
+ Assert.IsNotNull (nestedTy, "B");
+ Assert.AreEqual (escapedNestedName, nestedTy.FullName);
+
+
+ Assert.AreEqual (nestedCreatedTy, nestedTy);
+
+ }
+
+ [Test]
+ public void GetMethodTokenNullParam ()
+ {
+ AssemblyName an = genAssemblyName ();
+ AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly (an, AssemblyBuilderAccess.Run);
+ ModuleBuilder module = ab.DefineDynamicModule ("mod");
+
+ var method = typeof (object).GetMethod ("GetType");
+
+ // ArgumentNullException should not occur.
+ module.GetMethodToken (method, null);
+ }
+
+ [Test]
+ public void GetConstructorTokenNullParam ()
+ {
+ AssemblyName an = genAssemblyName ();
+ AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly (an, AssemblyBuilderAccess.Run);
+ ModuleBuilder module = ab.DefineDynamicModule ("mod");
+
+ var method = typeof (object).GetConstructor (Type.EmptyTypes);
+
+ // ArgumentNullException should not occur.
+ module.GetConstructorToken (method, null);
+ }
+
+ [Test]
+ public void GetType ()
+ {
+ AssemblyBuilder ab = genAssembly ();
+ ModuleBuilder module = ab.DefineDynamicModule ("foo.dll", "foo.dll", true);
+ TypeBuilder tb = module.DefineType ("t1", TypeAttributes.Public);
+
+ Assert.AreEqual ("t1[]", module.GetType ("t1[]").FullName);
+ Assert.AreEqual ("t1*", module.GetType ("t1*").FullName);
+ Assert.AreEqual ("t1&", module.GetType ("t1&").FullName);
+ Assert.AreEqual ("t1[]&", module.GetType ("t1[]&").FullName);
+ }
}
}