public void Visit_NoOperand_EmitsInstruction() { _generatorMock .Setup(generator => generator.Emit(System.Reflection.Emit.OpCodes.Nop)) .Verifiable(); var subject = new ILGeneratorInstructionVisitor(_generatorMock.Object); subject.Visit(Instruction.Create(OpCodes.Nop)); _generatorMock.Verify(); }
public void VisitInlineInteger_IntOperand_EmitsInstruction(long value) { var subject = new ILGeneratorInstructionVisitor(_generatorMock.Object); _generatorMock .Setup(generator => generator.Emit(System.Reflection.Emit.OpCodes.Ldc_I8, value)) .Verifiable(); var instruction = Instruction.Create(OpCodes.Ldc_I8, value); subject.VisitInlineInteger(instruction, value); _generatorMock.Verify(); }
public void VisitInlineArg_UShortArgument_EmitsInstruction() { ParameterDefinition parameter = TestDataFactory.CreateParameterDefinition(256); _generatorMock .Setup(generator => generator.Emit(System.Reflection.Emit.OpCodes.Ldarg, parameter.Index)) .Verifiable(); var subject = new ILGeneratorInstructionVisitor(_generatorMock.Object); var instruction = Instruction.Create(OpCodes.Ldarg, parameter); subject.VisitInlineArg(instruction, parameter); _generatorMock.Verify(); }
public void VisitInlineBrTarget_EmitsInstruction() { var subject = new ILGeneratorInstructionVisitor(_generatorMock.Object); _generatorMock .Setup(generator => generator.Emit(System.Reflection.Emit.OpCodes.Br, It.IsAny <Label>())) .Verifiable(); var target = Instruction.Create(OpCodes.Nop); var instruction = Instruction.Create(OpCodes.Br, target); subject.VisitInlineBrTarget(instruction, target); _generatorMock.Verify(); }
public void VisitInlineArg_ByteArgument_EmitsInstruction() { var method = CecilUtility.Import(ReflectionUtility.GetMethod(() => int.Parse(string.Empty))).Resolve(); ParameterDefinition parameter = method.Parameters[0]; _generatorMock .Setup(generator => generator.Emit(System.Reflection.Emit.OpCodes.Ldarg_S, (byte)parameter.Index)) .Verifiable(); var subject = new ILGeneratorInstructionVisitor(_generatorMock.Object); var instruction = Instruction.Create(OpCodes.Ldarg_S, parameter); subject.VisitInlineArg(instruction, parameter); _generatorMock.Verify(); }
public void VisitInlineSwitch_EmitsInstruction() { var subject = new ILGeneratorInstructionVisitor(_generatorMock.Object); _generatorMock .Setup(generator => generator.Emit( System.Reflection.Emit.OpCodes.Switch, It.Is <Label[]>(labels => labels.Length == 2))) .Verifiable(); var targets = new[] { Instruction.Create(OpCodes.Nop), Instruction.Create(OpCodes.Nop) }; var instruction = Instruction.Create(OpCodes.Switch, targets); subject.VisitInlineSwitch(instruction, targets); _generatorMock.Verify(); }
public void VisitInlineMethod_ConstructorOperand_EmitsInstruction() { var subject = new ILGeneratorInstructionVisitor(_generatorMock.Object); _generatorMock .Setup(generator => generator.Emit( System.Reflection.Emit.OpCodes.Newobj, It.Is <ConstructorInfo>(constructor => constructor.DeclaringType.Name == "MemoryStream"))) .Verifiable(); var method = ReflectionUtility.GetMethod(() => new MemoryStream()); var instruction = Instruction.Create(OpCodes.Newobj, CecilUtility.Import(method)); subject.VisitInlineMethod(instruction, (MethodReference)instruction.Operand); _generatorMock.Verify(); }
public void VisitInlineField_EmitsInstruction() { TypeDefinition type = CecilUtility.Import(GetType()).Resolve(); FieldDefinition fieldDefinition = type.Fields.First(f => f.Name == "TestField"); var subject = new ILGeneratorInstructionVisitor(_generatorMock.Object); _generatorMock .Setup(generator => generator.Emit( System.Reflection.Emit.OpCodes.Ldfld, It.Is <FieldInfo>(field => field.Name == fieldDefinition.Name))) .Verifiable(); var instruction = Instruction.Create(OpCodes.Ldfld, fieldDefinition); subject.VisitInlineField(instruction, fieldDefinition); _generatorMock.Verify(); }