diff options
author | Marek Safar <marek.safar@gmail.com> | 2019-12-16 17:38:26 +0300 |
---|---|---|
committer | Marek Safar <marek.safar@gmail.com> | 2019-12-16 17:44:40 +0300 |
commit | ab9bd42251c0bae987d4bfd1578f83c196bebd37 (patch) | |
tree | cafcb88389395a564c4b808b01ee7a5a83e28c79 /Test/Mono.Cecil.Tests | |
parent | 96026325ee1cb6627a3e4a32b924ab2905f02553 (diff) |
Add index based method to ILProcessor
This makes it simpler to work with it when the instruction positions
are known in advance.
Diffstat (limited to 'Test/Mono.Cecil.Tests')
-rw-r--r-- | Test/Mono.Cecil.Tests/ILProcessorTests.cs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/Test/Mono.Cecil.Tests/ILProcessorTests.cs b/Test/Mono.Cecil.Tests/ILProcessorTests.cs index 3d9d175..f66d78c 100644 --- a/Test/Mono.Cecil.Tests/ILProcessorTests.cs +++ b/Test/Mono.Cecil.Tests/ILProcessorTests.cs @@ -53,6 +53,30 @@ namespace Mono.Cecil.Tests { AssertOpCodeSequence (new [] { OpCodes.Ldloc_0, OpCodes.Ldloc_1, OpCodes.Ldloc_2, OpCodes.Ldloc_3 }, method); } + [Test] + public void InsertAfterUsingIndex () + { + var method = CreateTestMethod (OpCodes.Ldloc_0, OpCodes.Ldloc_2, OpCodes.Ldloc_3); + var il = method.GetILProcessor (); + + il.InsertAfter ( + 0, + il.Create (OpCodes.Ldloc_1)); + + AssertOpCodeSequence (new [] { OpCodes.Ldloc_0, OpCodes.Ldloc_1, OpCodes.Ldloc_2, OpCodes.Ldloc_3 }, method); + } + + [Test] + public void ReplaceUsingIndex () + { + var method = CreateTestMethod (OpCodes.Ldloc_0, OpCodes.Ldloc_2, OpCodes.Ldloc_3); + var il = method.GetILProcessor (); + + il.Replace (1, il.Create (OpCodes.Nop)); + + AssertOpCodeSequence (new [] { OpCodes.Ldloc_0, OpCodes.Nop, OpCodes.Ldloc_3 }, method); + } + static void AssertOpCodeSequence (OpCode [] expected, MethodBody body) { var opcodes = body.Instructions.Select (i => i.OpCode).ToArray (); |