public bool TestTryCatchFinallyIL() { ITypeDefinition type = Helper.GetNamespaceType((IUnitNamespace)this.ModuleReaderTest.TestAssembly.NamespaceRoot, this.MethodBodyTest); IMethodDefinition method = Helper.GetMethodNamed(type, this.TryCatchFinallyHandlerMethod); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.TestAssembly); prettyPrinter.MethodDefinition(method); string result = @".method private hidebysig instance explicit default void TryCatchFinallyHandlerMethod()cil managed { .maxstack 1 .locals init( [mscorlib]System.Exception V_0 ) IL_0000: nop IL_0001: nop IL_0002: newobj instance void[mscorlib]System.Object::.ctor() IL_0007: pop IL_0008: nop IL_0009: leave.s IL_001c IL_000b: stloc.0 IL_000c: nop IL_000d: ldloc.0 IL_000e: callvirt instance[mscorlib]System.String[mscorlib]System.Object::ToString() IL_0013: call static void[mscorlib]System.Console::WriteLine([mscorlib]System.String) IL_0018: nop IL_0019: nop IL_001a: leave.s IL_001c IL_001c: nop IL_001d: leave.s IL_002d IL_001f: nop IL_0020: ldstr ""In Finally"" IL_0025: call static void[mscorlib]System.Console::WriteLine([mscorlib]System.String) IL_002a: nop IL_002b: nop IL_002c: endfinally IL_002d: nop IL_002e: ret .try IL_0001 to IL_000b catch[mscorlib]System.Exception handler IL_000b to IL_001c .try IL_0001 to IL_001f finally handler IL_001f to IL_002d } "; return result.Equals(stringPaper.Content); }
public bool TestCurrentAssembly() { StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.TestAssembly); prettyPrinter.Assembly(this.ModuleReaderTest.TestAssembly); string result = @".assembly MRW_TestAssembly { .custom instance void[mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) { .argument const(8,int32) } .custom instance void[mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() { .argument .property WrapNonExceptionThrows : bool()=const(True,bool) } .publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 // .$.............. 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 // .$..RSA1........ 2B 96 12 82 73 B1 F0 B2 89 A1 53 81 A7 A1 1A BF // +...s.....S..... 07 40 A0 08 21 51 DE DF 0D 8C 66 0D 61 9A 97 19 // .@..!Q....f.a... 07 08 76 E4 94 44 5A AB 22 BC B3 97 D7 B4 FF 97 // ..v..DZ.""....... CA 80 ED 49 B3 FC 2B 87 BB 76 7B 60 CA FB F9 49 // ...I..+..v{`...I AA 43 5F CF 17 DE B3 19 01 BE 16 49 3C 87 DF E6 // .C_........I<... 1D 71 F5 18 5F 06 97 A7 0A B5 E0 F1 E0 5C 70 46 // .q.._........\pF DB 0D 28 C1 BE 6D 83 DA 3F AC 58 16 1C 56 3C A5 // ..(..m..?.X..V<. 9D C2 EF 9C E3 02 30 D9 37 7A A6 3D D2 76 CD BF ) // ......0.7z.=.v.. .hash algorithm 0x00008004 .ver 0:0:0:0 .flags 0x00000001 .permissionset reqmin { .custom instance void[mscorlib]System.Security.Permissions.FileIOPermissionAttribute::.ctor([mscorlib]System.Security.Permissions.SecurityAction) { .argument .property Write : [mscorlib]System.String()=const(""C:\AnotherDirectoryAltogether"",[mscorlib]System.String) } } } "; return result.Equals(stringPaper.Content); }
public bool TestGenericInstfield1Type() { ITypeDefinition assemType = Helper.GetNamespaceType(this.ModuleReaderTest.ILAsmAssembly.UnitNamespaceRoot, this.Generic); IFieldDefinition fld = Helper.GetFieldNamed(assemType, this.field2); ITypeDefinition type = fld.Type.ResolvedType; fld = Helper.GetFieldNamed(type, this.field1); type = fld.Type.ResolvedType; StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.ILAsmAssembly); prettyPrinter.TypeDefinition(type); string result = @".class auto autochar[mscorlib]System.Object modopt([mscorlib]System.Runtime.CompilerServices.IsConst)* { .flags .pack 0 .size 0 } "; return result.Equals(stringPaper.Content); }
public bool TestGeneric2NestedInstance() { ITypeDefinition type = Helper.GetNamespaceType(this.ModuleReaderTest.AssemblyAssembly.UnitNamespaceRoot, this.Generic2); type = Helper.GetNestedType(type, this.Nested); type = type.InstanceType.ResolvedType; StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.AssemblyAssembly); prettyPrinter.TypeDefinition(type); string result = @".class auto ansi beforefieldinit Generic2`1<!0>/Nested`1<!0> extends [mscorlib]System.Object implements IGen2`2<!0,!0> { .field fieldT : !0 .field fieldU : !0 .method .ctor : void() .method get_propT : !0() .method get_propU : !0() .method Meth : !0(IGen1`1<!0>,!!0) .method set_propT : void(!0) .method set_propU : void(!0) .property propT : !0() .property propU : !0() .flags class reftype .pack 0 .size 0 } "; return result.Equals(stringPaper.Content); }
public bool TestTypeTest() { ITypeDefinition type = Helper.GetNamespaceType(this.ModuleReaderTest.TestAssembly.UnitNamespaceRoot, this.TypeTest); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.TestAssembly); prettyPrinter.TypeDefinition(type); string result = @".class public auto ansi beforefieldinit TypeTest extends [mscorlib]System.Object { .custom instance void DAttribute::.ctor([mscorlib]System.String,int32,float64,[mscorlib]System.Type,TestEnum) { .argument const(""DDD"",[mscorlib]System.String) .argument const(666,int32) .argument const(666.666,float64) .argument typeof(TestEnum) .argument const(0,TestEnum) .argument .field Array : [mscorlib]System.Object[]=array([mscorlib]System.Object[]){const(null,[mscorlib]System.String), const(null,[mscorlib]System.String)} .argument .field IntArray : int32[]=array(int32[]){const(6,int32), const(6,int32), const(6,int32)} } .custom instance void TestAttribute::.ctor([mscorlib]System.Type) { .argument typeof(int32[,][]) } .custom instance void TestAttribute::.ctor([mscorlib]System.Type) { .argument typeof(float32**) } .custom instance void TestAttribute::.ctor([mscorlib]System.Type) { .argument typeof(Faa`1<TestAttribute>/Baa`1<int32>) } .field Foo : [.module MRW_Module1.netmodule]Module1.Foo .field FooNested : [.module MRW_Module1.netmodule]Module1.Foo/Nested .field IntList : [mscorlib]System.Collections.Generic.List`1<int32> .method .ctor : void() .flags class reftype .pack 0 .size 0 } "; return result.Equals(stringPaper.Content); }
public bool TestCurrentExportedNestedTypeReference() { ITypeDefinition testType = Helper.GetNamespaceType(this.ModuleReaderTest.TestAssembly.UnitNamespaceRoot, this.TypeTest); IFieldDefinition fld = Helper.GetFieldNamed(testType, this.FooNested); if (!fld.Type.IsAlias) return false; IAliasForType alias = fld.Type.AliasForType; ITypeDefinition type = alias.AliasedType.ResolvedType; StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.TestAssembly); prettyPrinter.TypeDefinition(type); string result = @".class auto ansi nested public beforefieldinit[MRW_Assembly]Module1.Foo/Nested extends [mscorlib]System.Object { .method .ctor : void() .flags class reftype .pack 0 .size 0 } "; return result.Equals(stringPaper.Content); }
public bool TestGeneric3FieldTypeNestedType() { ITypeDefinition assemType = Helper.GetNamespaceType(this.ModuleReaderTest.AssemblyAssembly.UnitNamespaceRoot, this.Assem); IFieldDefinition fld = Helper.GetFieldNamed(assemType, this.Generic3); ITypeDefinition type = Helper.GetNestedType(fld.Type.ResolvedType, this.Nested); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.AssemblyAssembly); prettyPrinter.TypeDefinition(type); string result = @".class auto ansi nested public beforefieldinit Generic3/Nested`1<U> extends [mscorlib]System.Object implements IGen1`1<!0> { .field fieldU : !0 .method .ctor : void() .method get_propU : !0() .method set_propU : void(!0) .property propU : !0() .flags class reftype .pack 0 .size 0 } "; return result.Equals(stringPaper.Content); }
public bool TestGeneric1FieldType() { ITypeDefinition assemType = Helper.GetNamespaceType(this.ModuleReaderTest.AssemblyAssembly.UnitNamespaceRoot, this.Assem); IFieldDefinition fld = Helper.GetFieldNamed(assemType, this.Generic1); ITypeDefinition type = fld.Type.ResolvedType; StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.AssemblyAssembly); prettyPrinter.TypeDefinition(type); string result = @".class auto ansi beforefieldinit Generic1`1<int32> extends [mscorlib]System.Object implements IGen1`1<int32> { .class Nested .event GenericEvent : GenericDelegate`1<int32> .field fieldT : int32 .field GenericEvent : GenericDelegate`1<int32> .method .ctor : void() .method add_GenericEvent : void(GenericDelegate`1<int32>) .method get_propT : int32() .method remove_GenericEvent : void(GenericDelegate`1<int32>) .method set_propT : void(int32) .property propT : int32() .flags class reftype .pack 0 .size 0 } "; return result.Equals(stringPaper.Content); }
public bool TestAssemGenericMethod() { ITypeDefinition type = Helper.GetNamespaceType((IUnitNamespace)this.ModuleReaderTest.AssemblyAssembly.NamespaceRoot, this.Assem); IMethodDefinition method = Helper.GetMethodNamed(type, this.GenMethod); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.TestAssembly); prettyPrinter.MethodDefinition(method); string result = @".method public hidebysig instance explicit default!!0 GenMethod<class T>( !!0 t, [mscorlib]System.Collections.Generic.List`1<!!0> l, !!0[] ta, !!0[,] tm, !!0[,] tn )cil managed { .maxstack 6 .locals init( !!0 V_0 ) IL_0000: nop IL_0001: ldarg.0 IL_0002: ldnull IL_0003: ldnull IL_0004: ldnull IL_0005: ldnull IL_0006: ldnull IL_0007: call instance!!0[MRW_Assembly]Assem::GenMethod<[mscorlib]System.Object>(!!0,[mscorlib]System.Collections.Generic.List`1<!!0>,!!0[],!!0[,],!!0[,]) IL_000c: pop IL_000d: ldarg.1 IL_000e: stloc.0 IL_000f: br.s IL_0011 IL_0011: ldloc.0 IL_0012: ret } "; return result.Equals(stringPaper.Content); }
public bool TestCreateFontIndirectArray() { ITypeDefinition type = Helper.GetNamespaceType((IUnitNamespace)this.ModuleReaderTest.TestAssembly.NamespaceRoot, this.MarshalTest); IMethodDefinition method = Helper.GetMethodNamed(type, this.CreateFontIndirectArray); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.TestAssembly); prettyPrinter.MethodDefinition(method); string result = @".method public hidebysig static pinvokeimpl(gdi32.dll as CreateFontIndirectArray autochar winapi)explicit default native int CreateFontIndirectArray( [vjslib]com.ms.win32.LOGFONT[]marshal(lpstruct,0,1) lplf )cil managed preservesig { } "; return result.Equals(stringPaper.Content); }
public bool TestListAddMethodInstructions() { ITypeDefinition type = Helper.GetNamespaceType(Helper.GetNamespace(this.ModuleReaderTest.MscorlibAssembly, this.System, this.Collections, this.Generic), this.List); IMethodDefinition method = Helper.GetMethodNamed(type, this.Add); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.MscorlibAssembly); prettyPrinter.MethodDefinition(method); string result = @".method public hidebysig newslot virtual final instance explicit default void Add( !0 item )cil managed { .maxstack 4 .locals init( int32 V_0 ) IL_0000: ldarg.0 IL_0001: ldfld int32 System.Collections.Generic.List`1<!0>::_size IL_0006: ldarg.0 IL_0007: ldfld!0[]System.Collections.Generic.List`1<!0>::_items IL_000c: ldlen IL_000d: conv.i4 IL_000e: bne.un.s IL_001e IL_0010: ldarg.0 IL_0011: ldarg.0 IL_0012: ldfld int32 System.Collections.Generic.List`1<!0>::_size IL_0017: ldc.i4.1 IL_0018: add IL_0019: call instance void System.Collections.Generic.List`1<!0>::EnsureCapacity(int32) IL_001e: ldarg.0 IL_001f: ldfld!0[]System.Collections.Generic.List`1<!0>::_items IL_0024: ldarg.0 IL_0025: dup IL_0026: ldfld int32 System.Collections.Generic.List`1<!0>::_size IL_002b: dup IL_002c: stloc.0 IL_002d: ldc.i4.1 IL_002e: add IL_002f: stfld int32 System.Collections.Generic.List`1<!0>::_size IL_0034: ldloc.0 IL_0035: ldarg.1 IL_0036: stelem!0 IL_003b: ldarg.0 IL_003c: dup IL_003d: ldfld int32 System.Collections.Generic.List`1<!0>::_version IL_0042: ldc.i4.1 IL_0043: add IL_0044: stfld int32 System.Collections.Generic.List`1<!0>::_version IL_0049: ret } "; return result.Equals(stringPaper.Content); }
public bool TestGeneric1Event() { ITypeDefinition genType = Helper.GetNamespaceType(this.ModuleReaderTest.AssemblyAssembly.UnitNamespaceRoot, this.Generic1); IEventDefinition eventDef = Helper.GetEventNamed(genType, this.GenericEvent); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.TestAssembly); prettyPrinter.EventDefinition(eventDef); string result = @".event public[MRW_Assembly]GenericDelegate`1<!0>GenericEvent { .addon instance void[MRW_Assembly]Generic1`1::add_GenericEvent([MRW_Assembly]GenericDelegate`1<!0>) .removeon instance void[MRW_Assembly]Generic1`1::remove_GenericEvent([MRW_Assembly]GenericDelegate`1<!0>) } "; return result.Equals(stringPaper.Content); }
public bool TestGCClearCacheEvent() { ITypeDefinition type = Helper.GetNamespaceType(Helper.GetNamespace(this.ModuleReaderTest.MscorlibAssembly, this.System), this.GC); IEventDefinition eventDef = Helper.GetEventNamed(type, this.ClearCache); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.MscorlibAssembly); prettyPrinter.EventDefinition(eventDef); string result = @".event assembly System.Reflection.Cache.ClearCacheHandler ClearCache { .addon static void System.GC::add_ClearCache(System.Reflection.Cache.ClearCacheHandler) .removeon static void System.GC::remove_ClearCache(System.Reflection.Cache.ClearCacheHandler) } "; return result.Equals(stringPaper.Content); }
public bool TestListItemProperty() { ITypeDefinition type = Helper.GetNamespaceType(Helper.GetNamespace(this.ModuleReaderTest.MscorlibAssembly, this.System, this.Collections, this.Generic), this.List); IPropertyDefinition property = Helper.GetPropertyNamed(type, this.Item); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.MscorlibAssembly); prettyPrinter.PropertyDefinition(property); string result = @".property public instance default!0 Item( int32 ) { .get instance!0 System.Collections.Generic.List`1::get_Item(int32) .set instance void System.Collections.Generic.List`1::set_Item(int32,!0) } "; return result.Equals(stringPaper.Content); }
public bool TestListDefaultCapacityField() { ITypeDefinition type = Helper.GetNamespaceType(Helper.GetNamespace(this.ModuleReaderTest.MscorlibAssembly, this.System, this.Collections, this.Generic), this.List); IFieldDefinition field = Helper.GetFieldNamed(type, this._defaultCapacity); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.MscorlibAssembly); prettyPrinter.FieldDefinition(field); string result = @".field private static literal int32 _defaultCapacity=const(4,int32) { } "; return result.Equals(stringPaper.Content); }
public bool TestGenMethodType() { ITypeDefinition type = Helper.GetNamespaceType(this.ModuleReaderTest.ILAsmAssembly.UnitNamespaceRoot, this.Generic); IMethodDefinition method = Helper.GetMethodNamed(type, this.GenMethod); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.ILAsmAssembly); prettyPrinter.MethodDefinition(method); string result = @".method public hidebysig instance explicit default!!0 GenMethod<class T>( !!0 t, !!0 modopt([mscorlib]System.Runtime.CompilerServices.IsConst)* tp )cil managed { .maxstack 3 .locals init( !!0 V_0 ) IL_0000: nop IL_0001: ldarg.0 IL_0002: ldnull IL_0003: ldc.i4.0 IL_0004: call instance!!0 Generic`1::GenMethod<[mscorlib]System.Object>(!!0,!!0 modopt([mscorlib]System.Runtime.CompilerServices.IsConst)*) IL_0009: pop IL_000a: ldarg.1 IL_000b: stloc.0 IL_000c: br.s IL_000e IL_000e: ldloc.0 IL_000f: ret } "; return result.Equals(stringPaper.Content); }
public bool TestPhxPointerGlobalField() { IFieldDefinition field = Helper.GetGlobalField(Helper.GetNamespace(this.ModuleReaderTest.PhxArchMsil, this._A0x8179e609), this._InitializedPerProcess_initializer__CurrentDomain__CrtImplementationDetails_____Q2P6MXXZEA); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.CppAssembly); prettyPrinter.FieldDefinition(field); string result = @".field assembly static void()?A0x8179e609.?InitializedPerProcess$initializer$@CurrentDomain@<CrtImplementationDetails>@@$$Q2P6MXXZEA at{0x00000058,0x00000004}.data=(78 00 00 06 ) // x... { } "; return result.Equals(stringPaper.Content); }
public bool TestAssemGenericMethodCall() { ITypeDefinition type = Helper.GetNamespaceType((IUnitNamespace)this.ModuleReaderTest.AssemblyAssembly.NamespaceRoot, this.Assem); IMethodDefinition method = Helper.GetMethodNamed(type, this.GenMethod); IOperation op = Helper.GetOperation(method, 7); IMethodReference methodRef = op.Value as IMethodReference; if (methodRef == null) return false; IGenericMethodInstance gmi = methodRef.ResolvedMethod as IGenericMethodInstance; if (gmi == null) return false; StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.TestAssembly); prettyPrinter.MethodDefinition(gmi); string result = @".method public hidebysig instance explicit default[mscorlib]System.Object GenMethod<[mscorlib]System.Object>( [mscorlib]System.Object t, [mscorlib]System.Collections.Generic.List`1<[mscorlib]System.Object> l, [mscorlib]System.Object[] ta, [mscorlib]System.Object[,] tm, [mscorlib]System.Object[,] tn )cil managed { .maxstack 6 .locals init( V_0 ) IL_0000: nop IL_0001: ldarg.0 IL_0002: ldnull IL_0003: ldnull IL_0004: ldnull IL_0005: ldnull IL_0006: ldnull IL_0007: call instance!!0[MRW_Assembly]Assem::GenMethod<[mscorlib]System.Object>(!!0,[mscorlib]System.Collections.Generic.List`1<!!0>,!!0[],!!0[,],!!0[,]) IL_000c: pop IL_000d: ldarg.1 IL_000e: stloc.0 IL_000f: br.s IL_0011 IL_0011: ldloc.0 IL_0012: ret } "; return result.Equals(stringPaper.Content); }
public bool TestGeneric2NestedFieldType() { ITypeDefinition assemType = Helper.GetNamespaceType(this.ModuleReaderTest.AssemblyAssembly.UnitNamespaceRoot, this.Assem); IFieldDefinition fld = Helper.GetFieldNamed(assemType, this.Generic2Nested); ITypeDefinition type = fld.Type.ResolvedType; StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.AssemblyAssembly); prettyPrinter.TypeDefinition(type); string result = @".class auto ansi beforefieldinit Generic2`1<[mscorlib]System.Object>/Nested`1<float32> extends [mscorlib]System.Object implements IGen2`2<[mscorlib]System.Object,float32> { .field fieldT : [mscorlib]System.Object .field fieldU : float32 .method .ctor : void() .method get_propT : [mscorlib]System.Object() .method get_propU : float32() .method Meth : float32(IGen1`1<[mscorlib]System.Object>,!!0) .method set_propT : void([mscorlib]System.Object) .method set_propU : void(float32) .property propT : [mscorlib]System.Object() .property propU : float32() .flags class reftype .pack 0 .size 0 } "; return result.Equals(stringPaper.Content); }
public bool TestGenericTypeField() { ITypeDefinition assemType = Helper.GetNamespaceType(this.ModuleReaderTest.AssemblyAssembly.UnitNamespaceRoot, this.Assem); IFieldDefinition fld = Helper.GetFieldNamed(assemType, this.Generic1); ITypeDefinition type = fld.Type.ResolvedType; IFieldDefinition field = Helper.GetFieldNamed(type, this.fieldT); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.TestAssembly); prettyPrinter.FieldDefinition(field); string result = @".field public int32 fieldT { } "; return result.Equals(stringPaper.Content); }
public bool TestAssemblyExportedTypeReference() { ITypeDefinition assemType = Helper.GetNamespaceType(this.ModuleReaderTest.AssemblyAssembly.UnitNamespaceRoot, this.Assem); IFieldDefinition fld = Helper.GetFieldNamed(assemType, this.Foo); ITypeDefinition type = fld.Type.ResolvedType; StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.AssemblyAssembly); prettyPrinter.TypeDefinition(type); string result = @".class public auto ansi beforefieldinit Module1.Foo extends [mscorlib]System.Object { .class Nested .method .ctor : void() .method Bar : [.module MRW_Module1.netmodule]Module1.Foo() .flags class reftype .pack 0 .size 0 } "; return result.Equals(stringPaper.Content); }
public bool TestGenericTypeMethod() { ITypeDefinition assemType = Helper.GetNamespaceType(this.ModuleReaderTest.AssemblyAssembly.UnitNamespaceRoot, this.Assem); IFieldDefinition fld = Helper.GetFieldNamed(assemType, this.Generic1); ITypeDefinition type = fld.Type.ResolvedType; IMethodDefinition method = Helper.GetMethodNamed(type, this.get_propT); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.TestAssembly); prettyPrinter.MethodDefinition(method); string result = @".method public hidebysig specialname instance explicit default int32 get_propT()cil managed { .maxstack 1 .locals init( int32 V_0, int32 V_1 ) IL_0000: nop IL_0001: ldloca.s V_1 IL_0003: initobj int32 IL_0009: ldloc.1 IL_000a: stloc.0 IL_000b: br.s IL_000d IL_000d: ldloc.0 IL_000e: ret } "; return result.Equals(stringPaper.Content); }
public bool TestCppFunctionBarPointer() { IGlobalFieldDefinition globalField = Helper.GetGlobalField(Helper.GetNamespace(this.ModuleReaderTest.CppAssembly, this.Foo), this.bar); ITypeDefinition type = globalField.Type.ResolvedType; StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.AssemblyAssembly); prettyPrinter.TypeDefinition(type); string result = @".class auto autochar void*(int32,float32) { .flags .pack 0 .size 0 } "; return result.Equals(stringPaper.Content); }
public bool TestGenericTypeProperty() { ITypeDefinition assemType = Helper.GetNamespaceType(this.ModuleReaderTest.AssemblyAssembly.UnitNamespaceRoot, this.Assem); IFieldDefinition fld = Helper.GetFieldNamed(assemType, this.Generic1); ITypeDefinition type = fld.Type.ResolvedType; IPropertyDefinition prop = Helper.GetPropertyNamed(type, this.propT); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.TestAssembly); prettyPrinter.PropertyDefinition(prop); string result = @".property public instance default int32 propT() { .get instance int32[MRW_Assembly]Generic1`1<int32>::get_propT() .set instance void[MRW_Assembly]Generic1`1<int32>::set_propT(int32) } "; return result.Equals(stringPaper.Content); }
public bool TestGeneric4Instance() { ITypeDefinition type = Helper.GetNamespaceType(this.ModuleReaderTest.AssemblyAssembly.UnitNamespaceRoot, this.Generic4); type = type.InstanceType.ResolvedType; StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.AssemblyAssembly); prettyPrinter.TypeDefinition(type); string result = @".class auto ansi beforefieldinit Generic4`1<!0> extends [mscorlib]System.Object { .field field1 : !0 .field field2 : !0[] .field field3 : int32* .field field4 : !0[,] .method .ctor : void() .flags class reftype .pack 0 .size 0 } "; return result.Equals(stringPaper.Content); }
public bool TestGenericTypeEvent() { ITypeDefinition assemType = Helper.GetNamespaceType(this.ModuleReaderTest.AssemblyAssembly.UnitNamespaceRoot, this.Assem); IFieldDefinition fld = Helper.GetFieldNamed(assemType, this.Generic1); ITypeDefinition type = fld.Type.ResolvedType; IEventDefinition eventDef = Helper.GetEventNamed(type, this.GenericEvent); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.TestAssembly); prettyPrinter.EventDefinition(eventDef); string result = @".event public[MRW_Assembly]GenericDelegate`1<int32>GenericEvent { .addon instance void[MRW_Assembly]Generic1`1<int32>::add_GenericEvent([MRW_Assembly]GenericDelegate`1<int32>) .removeon instance void[MRW_Assembly]Generic1`1<int32>::remove_GenericEvent([MRW_Assembly]GenericDelegate`1<int32>) } "; return result.Equals(stringPaper.Content); }
public bool TestGenericType() { ITypeDefinition type = Helper.GetNamespaceType(this.ModuleReaderTest.ILAsmAssembly.UnitNamespaceRoot, this.Generic); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.ILAsmAssembly); prettyPrinter.TypeDefinition(type); string result = @".class public auto ansi beforefieldinit Generic`1<T> extends [mscorlib]System.Object { .custom instance void TestAttribute1::.ctor([mscorlib]System.Type) { .argument typeof(float32*&) } .field field1 : !0* .field field2 : Generic`1<[mscorlib]System.Object> .method GenMethod : !!0(!!0,!!0*) .flags class reftype .pack 0 .size 0 } "; return result.Equals(stringPaper.Content); }
public bool TestfreeMethod() { IMethodDefinition method = Helper.GetGlobalMethod((IUnitNamespace)this.ModuleReaderTest.CppAssembly.NamespaceRoot, this.free); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.CppAssembly); prettyPrinter.MethodDefinition(method); string result = @".method public static pinvokeimpl(MSVCR80.dll as free cdecl lasterr)explicit default void modopt([mscorlib]System.Runtime.CompilerServices.CallConvCdecl)free( void* )cil managed preservesig { .custom instance void[mscorlib]System.Security.SuppressUnmanagedCodeSecurityAttribute::.ctor() { } } "; return result.Equals(stringPaper.Content); }
public bool TestListInstType() { ITypeDefinition testType = Helper.GetNamespaceType(this.ModuleReaderTest.TestAssembly.UnitNamespaceRoot, this.TypeTest); IFieldDefinition fld = Helper.GetFieldNamed(testType, this.IntList); ITypeDefinition type = fld.Type.ResolvedType; StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.ILAsmAssembly); prettyPrinter.TypeDefinition(type); string result = @".class auto ansi serializable beforefieldinit[mscorlib]System.Collections.Generic.List`1<int32> extends [mscorlib]System.Object implements [mscorlib]System.Collections.Generic.IList`1<int32>, [mscorlib]System.Collections.Generic.ICollection`1<int32>, [mscorlib]System.Collections.Generic.IEnumerable`1<int32>, [mscorlib]System.Collections.IList, [mscorlib]System.Collections.ICollection, [mscorlib]System.Collections.IEnumerable { .custom instance void[mscorlib]System.Diagnostics.DebuggerDisplayAttribute::.ctor([mscorlib]System.String) { .argument const(""Count = {Count}"",[mscorlib]System.String) } .custom instance void[mscorlib]System.Diagnostics.DebuggerTypeProxyAttribute::.ctor([mscorlib]System.Type) { .argument typeof([mscorlib]System.Collections.Generic.Mscorlib_CollectionDebugView`1) } .custom instance void[mscorlib]System.Reflection.DefaultMemberAttribute::.ctor([mscorlib]System.String) { .argument const(""Item"",[mscorlib]System.String) } .class Enumerator .field _defaultCapacity : int32 .field _emptyArray : int32[] .field _items : int32[] .field _size : int32 .field _syncRoot : [mscorlib]System.Object .field _version : int32 .method .cctor : void() .method .ctor : void() .method .ctor : void([mscorlib]System.Collections.Generic.IEnumerable`1<int32>) .method .ctor : void(int32) .method Add : void(int32) .method AddRange : void([mscorlib]System.Collections.Generic.IEnumerable`1<int32>) .method AsReadOnly : [mscorlib]System.Collections.ObjectModel.ReadOnlyCollection`1<int32>() .method BinarySearch : int32(int32) .method BinarySearch : int32(int32,[mscorlib]System.Collections.Generic.IComparer`1<int32>) .method BinarySearch : int32(int32,int32,int32,[mscorlib]System.Collections.Generic.IComparer`1<int32>) .method Clear : void() .method Contains : bool(int32) .method ConvertAll : [mscorlib]System.Collections.Generic.List`1<!!0>([mscorlib]System.Converter`2<int32,!!0>) .method CopyTo : void(int32,int32[],int32,int32) .method CopyTo : void(int32[]) .method CopyTo : void(int32[],int32) .method EnsureCapacity : void(int32) .method Exists : bool([mscorlib]System.Predicate`1<int32>) .method Find : int32([mscorlib]System.Predicate`1<int32>) .method FindAll : [mscorlib]System.Collections.Generic.List`1<int32>([mscorlib]System.Predicate`1<int32>) .method FindIndex : int32([mscorlib]System.Predicate`1<int32>) .method FindIndex : int32(int32,[mscorlib]System.Predicate`1<int32>) .method FindIndex : int32(int32,int32,[mscorlib]System.Predicate`1<int32>) .method FindLast : int32([mscorlib]System.Predicate`1<int32>) .method FindLastIndex : int32([mscorlib]System.Predicate`1<int32>) .method FindLastIndex : int32(int32,[mscorlib]System.Predicate`1<int32>) .method FindLastIndex : int32(int32,int32,[mscorlib]System.Predicate`1<int32>) .method ForEach : void([mscorlib]System.Action`1<int32>) .method get_Capacity : int32() .method get_Count : int32() .method get_Item : int32(int32) .method GetEnumerator : [mscorlib]System.Collections.Generic.List`1<int32>/Enumerator() .method GetRange : [mscorlib]System.Collections.Generic.List`1<int32>(int32,int32) .method IndexOf : int32(int32) .method IndexOf : int32(int32,int32) .method IndexOf : int32(int32,int32,int32) .method Insert : void(int32,int32) .method InsertRange : void(int32,[mscorlib]System.Collections.Generic.IEnumerable`1<int32>) .method IsCompatibleObject : bool([mscorlib]System.Object) .method LastIndexOf : int32(int32) .method LastIndexOf : int32(int32,int32) .method LastIndexOf : int32(int32,int32,int32) .method Remove : bool(int32) .method RemoveAll : int32([mscorlib]System.Predicate`1<int32>) .method RemoveAt : void(int32) .method RemoveRange : void(int32,int32) .method Reverse : void() .method Reverse : void(int32,int32) .method set_Capacity : void(int32) .method set_Item : void(int32,int32) .method Sort : void() .method Sort : void([mscorlib]System.Collections.Generic.IComparer`1<int32>) .method Sort : void([mscorlib]System.Comparison`1<int32>) .method Sort : void(int32,int32,[mscorlib]System.Collections.Generic.IComparer`1<int32>) .method System.Collections.Generic.ICollection<T>.get_IsReadOnly : bool() .method System.Collections.Generic.IEnumerable<T>.GetEnumerator : [mscorlib]System.Collections.Generic.IEnumerator`1<int32>() .method System.Collections.ICollection.CopyTo : void([mscorlib]System.Array,int32) .method System.Collections.ICollection.get_IsSynchronized : bool() .method System.Collections.ICollection.get_SyncRoot : [mscorlib]System.Object() .method System.Collections.IEnumerable.GetEnumerator : [mscorlib]System.Collections.IEnumerator() .method System.Collections.IList.Add : int32([mscorlib]System.Object) .method System.Collections.IList.Contains : bool([mscorlib]System.Object) .method System.Collections.IList.get_IsFixedSize : bool() .method System.Collections.IList.get_IsReadOnly : bool() .method System.Collections.IList.get_Item : [mscorlib]System.Object(int32) .method System.Collections.IList.IndexOf : int32([mscorlib]System.Object) .method System.Collections.IList.Insert : void(int32,[mscorlib]System.Object) .method System.Collections.IList.Remove : void([mscorlib]System.Object) .method System.Collections.IList.set_Item : void(int32,[mscorlib]System.Object) .method ToArray : int32[]() .method TrimExcess : void() .method TrueForAll : bool([mscorlib]System.Predicate`1<int32>) .method VerifyValueType : void([mscorlib]System.Object) .property Capacity : int32() .property Count : int32() .property Item : int32(int32) .property System.Collections.Generic.ICollection<T>.IsReadOnly : bool() .property System.Collections.ICollection.IsSynchronized : bool() .property System.Collections.ICollection.SyncRoot : [mscorlib]System.Object() .property System.Collections.IList.IsFixedSize : bool() .property System.Collections.IList.IsReadOnly : bool() .property System.Collections.IList.Item : [mscorlib]System.Object(int32) .flags class reftype .pack 0 .size 0 .override instance bool[mscorlib]System.Collections.IList::Contains([mscorlib]System.Object) with instance bool[mscorlib]System.Collections.Generic.List`1<int32>::System.Collections.IList.Contains([mscorlib]System.Object) .override instance bool[mscorlib]System.Collections.Generic.ICollection`1<int32>::get_IsReadOnly() with instance bool[mscorlib]System.Collections.Generic.List`1<int32>::System.Collections.Generic.ICollection<T>.get_IsReadOnly() .override instance bool[mscorlib]System.Collections.IList::get_IsReadOnly() with instance bool[mscorlib]System.Collections.Generic.List`1<int32>::System.Collections.IList.get_IsReadOnly() .override instance bool[mscorlib]System.Collections.ICollection::get_IsSynchronized() with instance bool[mscorlib]System.Collections.Generic.List`1<int32>::System.Collections.ICollection.get_IsSynchronized() .override instance[mscorlib]System.Object[mscorlib]System.Collections.ICollection::get_SyncRoot() with instance[mscorlib]System.Object[mscorlib]System.Collections.Generic.List`1<int32>::System.Collections.ICollection.get_SyncRoot() .override instance[mscorlib]System.Object[mscorlib]System.Collections.IList::get_Item(int32) with instance[mscorlib]System.Object[mscorlib]System.Collections.Generic.List`1<int32>::System.Collections.IList.get_Item(int32) .override instance void[mscorlib]System.Collections.IList::set_Item(int32,[mscorlib]System.Object) with instance void[mscorlib]System.Collections.Generic.List`1<int32>::System.Collections.IList.set_Item(int32,[mscorlib]System.Object) .override instance int32[mscorlib]System.Collections.IList::Add([mscorlib]System.Object) with instance int32[mscorlib]System.Collections.Generic.List`1<int32>::System.Collections.IList.Add([mscorlib]System.Object) .override instance bool[mscorlib]System.Collections.IList::get_IsFixedSize() with instance bool[mscorlib]System.Collections.Generic.List`1<int32>::System.Collections.IList.get_IsFixedSize() .override instance void[mscorlib]System.Collections.ICollection::CopyTo([mscorlib]System.Array,int32) with instance void[mscorlib]System.Collections.Generic.List`1<int32>::System.Collections.ICollection.CopyTo([mscorlib]System.Array,int32) .override instance[mscorlib]System.Collections.Generic.IEnumerator`1<int32>[mscorlib]System.Collections.Generic.IEnumerable`1<int32>::GetEnumerator() with instance[mscorlib]System.Collections.Generic.IEnumerator`1<int32>[mscorlib]System.Collections.Generic.List`1<int32>::System.Collections.Generic.IEnumerable<T>.GetEnumerator() .override instance[mscorlib]System.Collections.IEnumerator[mscorlib]System.Collections.IEnumerable::GetEnumerator() with instance[mscorlib]System.Collections.IEnumerator[mscorlib]System.Collections.Generic.List`1<int32>::System.Collections.IEnumerable.GetEnumerator() .override instance int32[mscorlib]System.Collections.IList::IndexOf([mscorlib]System.Object) with instance int32[mscorlib]System.Collections.Generic.List`1<int32>::System.Collections.IList.IndexOf([mscorlib]System.Object) .override instance void[mscorlib]System.Collections.IList::Insert(int32,[mscorlib]System.Object) with instance void[mscorlib]System.Collections.Generic.List`1<int32>::System.Collections.IList.Insert(int32,[mscorlib]System.Object) .override instance void[mscorlib]System.Collections.IList::Remove([mscorlib]System.Object) with instance void[mscorlib]System.Collections.Generic.List`1<int32>::System.Collections.IList.Remove([mscorlib]System.Object) } "; return result.Equals(stringPaper.Content); }
public bool TestPtrToStringCharsMethod() { IMethodDefinition method = Helper.GetGlobalMethod((IUnitNamespace)this.ModuleReaderTest.CppAssembly.NamespaceRoot, this.PtrToStringChars); StringILDasmPaper stringPaper = new StringILDasmPaper(2); ILDasmPrettyPrinter prettyPrinter = new ILDasmPrettyPrinter(stringPaper, this.ModuleReaderTest.CppAssembly); prettyPrinter.MethodDefinition(method); string result = @".method assembly static explicit default char modopt([mscorlib]System.Runtime.CompilerServices.IsConst)&modopt([mscorlib]System.Runtime.CompilerServices.IsExplicitlyDereferenced)PtrToStringChars( [mscorlib]System.String modopt([mscorlib]System.Runtime.CompilerServices.IsConst) s )cil managed { .maxstack 2 .locals( unsigned int8&modopt([mscorlib]System.Runtime.CompilerServices.IsExplicitlyDereferenced) V_0 ) IL_0000: ldarg.0 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: brfalse.s IL_000d IL_0005: call static int32[mscorlib]System.Runtime.CompilerServices.RuntimeHelpers::get_OffsetToStringData() IL_000a: ldloc.0 IL_000b: add IL_000c: stloc.0 IL_000d: ldloc.0 IL_000e: ret } "; return result.Equals(stringPaper.Content); }