Xamarin Public Jenkins (auto-signing) e5cd25ff4f Imported Upstream version 4.8.0.459
Former-commit-id: 2a5b9df2014f72665850c7f885e7aed54704a53a
2017-01-19 14:22:10 +00:00

86 lines
2.7 KiB
C#

using Mono.Cecil.Mdb;
using NUnit.Framework;
namespace Mono.Cecil.Tests {
[TestFixture]
public class MdbTests : BaseTestFixture {
[Test]
public void MdbWithJustLineInfo ()
{
TestModule ("hello.exe", module => {
var type = module.GetType ("Program");
var main = type.GetMethod ("Main");
AssertCode (@"
.locals init (System.Int32 i)
.line 6,-1:-1,-1 'C:\sources\cecil\symbols\Mono.Cecil.Mdb\Test\Resources\assemblies\hello.cs'
IL_0000: ldc.i4.0
IL_0001: stloc.0
.line 7,-1:-1,-1 'C:\sources\cecil\symbols\Mono.Cecil.Mdb\Test\Resources\assemblies\hello.cs'
IL_0002: br IL_0013
.line 8,-1:-1,-1 'C:\sources\cecil\symbols\Mono.Cecil.Mdb\Test\Resources\assemblies\hello.cs'
IL_0007: ldarg.0
IL_0008: ldloc.0
IL_0009: ldelem.ref
IL_000a: call System.Void Program::Print(System.String)
.line 7,-1:-1,-1 'C:\sources\cecil\symbols\Mono.Cecil.Mdb\Test\Resources\assemblies\hello.cs'
IL_000f: ldloc.0
IL_0010: ldc.i4.1
IL_0011: add
IL_0012: stloc.0
IL_0013: ldloc.0
IL_0014: ldarg.0
IL_0015: ldlen
IL_0016: conv.i4
IL_0017: blt IL_0007
.line 10,-1:-1,-1 'C:\sources\cecil\symbols\Mono.Cecil.Mdb\Test\Resources\assemblies\hello.cs'
IL_001c: ldc.i4.0
IL_001d: ret
", main);
}, symbolReaderProvider: typeof(MdbReaderProvider), symbolWriterProvider: typeof(MdbWriterProvider));
}
[Test]
public void RoundTripCoreLib ()
{
TestModule ("mscorlib.dll", module => {
var type = module.GetType ("System.IO.__Error");
var method = type.GetMethod ("WinIOError");
Assert.IsNotNull (method.Body);
}, verify: !Platform.OnMono, symbolReaderProvider: typeof(MdbReaderProvider), symbolWriterProvider: typeof(MdbWriterProvider));
}
[Test]
public void PartialClass ()
{
TestModule ("BreakpointTest.Portable.dll", module => {
var type = module.GetType ("BreakpointTest.Portable.TestService/<MyAsyncAction1>c__async3");
var method = type.GetMethod ("MoveNext");
Assert.IsNotNull (method);
var info = method.DebugInformation;
Assert.AreEqual (5, info.SequencePoints.Count);
foreach (var sp in info.SequencePoints)
Assert.AreEqual(@"C:\tmp\repropartial\BreakpointTest.Portable\TestService.Actions.cs", sp.Document.Url);
type = module.GetType("BreakpointTest.Portable.TestService/<MyAsyncAction2>c__async2");
method = type.GetMethod("MoveNext");
Assert.IsNotNull(method);
info = method.DebugInformation;
Assert.AreEqual(5, info.SequencePoints.Count);
foreach (var sp in info.SequencePoints)
Assert.AreEqual(@"C:\tmp\repropartial\BreakpointTest.Portable\TestService.cs", sp.Document.Url);
}, symbolReaderProvider: typeof(MdbReaderProvider), symbolWriterProvider: typeof(MdbWriterProvider));
}
}
}