Sha256: 81ce7d2cb4bae892e1121e954488f2ccb4e7bdce9fe221c3574af255a606f1c2

Contents?: true

Size: 1.82 KB

Versions: 3

Compression:

Stored size: 1.82 KB

Contents

require 'ffi/udis86/operand'
require 'ffi/udis86/ud'

require 'spec_helper'
require 'helpers/operands'

describe Operand do
  include Helpers

  it "should provide the type of the operand" do
    operands = ud_operands('operands_simple')

    operands[0].type.should == :ud_op_reg
    operands[1].type.should == :ud_op_imm
  end

  it "should provide the size of the operand" do
    operands = ud_operands('operands_simple')

    operands[1].size.should == 32
  end

  it "should provide the value of the operand" do
    operands = ud_operands('operands_simple')

    operands[1].value.signed_byte.should == 0x10
    operands[1].value.unsigned_byte.should == 0x10
  end

  it "should specify value as nil for register operands" do
    operands = ud_operands('operands_simple')

    operands[0].value.should be_nil
  end

  it "should provide the base of memory operands" do
    operands = ud_operands('operands_memory')

    operands[1].type.should == :ud_op_mem
    operands[1][:base].should == :ud_r_esp
    operands[1].base.should == :esp
  end

  it "should provide the index of memory operands" do
    operands = ud_operands('operands_index_scale')

    operands[1].type.should == :ud_op_mem
    operands[1][:index].should == :ud_r_eax
    operands[1].index.should == :eax
  end

  it "should provide the offset of memory operands" do
    operands = ud_operands('operands_offset')

    operands[1].type.should == :ud_op_mem
    operands[1].offset.byte.should == 0x10
  end

  it "should provide the scale of memory operands" do
    operands = ud_operands('operands_index_scale')

    operands[1].type.should == :ud_op_mem
    operands[1].scale.should == 2
  end

  it "should provide the register name for register operands" do
    operands = ud_operands('operands_simple')

    operands[0][:base].should == :ud_r_eax
    operands[0].reg.should == :eax
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ffi-udis86-0.1.3 spec/operand_spec.rb
ffi-udis86-0.1.2 spec/operand_spec.rb
ffi-udis86-0.1.1 spec/operand_spec.rb