Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/cecil.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Safar <marek.safar@gmail.com>2019-12-16 17:38:26 +0300
committerMarek Safar <marek.safar@gmail.com>2019-12-16 17:44:40 +0300
commitab9bd42251c0bae987d4bfd1578f83c196bebd37 (patch)
treecafcb88389395a564c4b808b01ee7a5a83e28c79 /Test/Mono.Cecil.Tests
parent96026325ee1cb6627a3e4a32b924ab2905f02553 (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.cs24
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 ();