Sha256: a7292f594a2a292e7a3ad2f7b284ce2a687812eda010e87a16a111cf874d9c28

Contents?: true

Size: 1.71 KB

Versions: 5

Compression:

Stored size: 1.71 KB

Contents

#!/usr/bin/env ruby
require 'test/unit'
require_relative '../../app/brkptmgr'
require_relative '../../app/breakpoint'
require 'thread_frame'

class TestLibAppBrkptMgr < Test::Unit::TestCase

  def setup
    @brkpts = Trepan::BreakpointMgr.new
  end

  def test_basic
    tf = RubyVM::ThreadFrame.current
    iseq = tf.iseq
    offsets = iseq.offsetlines.keys
    offset  = offsets[0]
    assert_equal(0, @brkpts.size)
    b1 = @brkpts.add(iseq, offset)
    assert_equal(b1, @brkpts.find(iseq, offset, tf.binding))
    assert_equal(1, @brkpts.size)
    assert_equal(b1, @brkpts.find(iseq, offset, tf.binding))
    assert_equal(b1, @brkpts.delete(b1.id))
    assert_equal(0, @brkpts.size)

    # Try adding via << rather than .add
    b2 = @brkpts << Trepan::Breakpoint.new(iseq, offsets[1], :temp => true)

    assert_equal(nil, @brkpts.find(iseq, offset, tf.binding))
    @brkpts.reset
    assert_equal(0, @brkpts.size)
  end

  def test_multiple_brkpt_per_offset
    tf = RubyVM::ThreadFrame.current
    iseq = tf.iseq
    offsets = iseq.offsetlines.keys
    offset  = offsets[0]
    b1 = @brkpts.add(iseq, offset)
    b2 = @brkpts.add(iseq, offset)
    assert_equal(2, @brkpts.size)
    assert_equal(1, @brkpts.set.size, 
                 'Two breakpoints but only one iseq/offset')
    @brkpts.delete_by_brkpt(b1)
    assert_equal(1, @brkpts.size, 
                 'One breakpoint after 2nd breakpoint deleted')
    assert_equal(1, @brkpts.set.size, 
                 'Two breakpoints, but only one iseq/offset')
    @brkpts.delete_by_brkpt(b2)
    assert_equal(0, @brkpts.size, 
                 'Both breakpoints deleted')
    assert_equal(0, @brkpts.set.size, 
                 'Second breakpoint delete should delete iseq/offset')
  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
trepanning-0.1.4 test/unit/test-app-brkptmgr.rb
trepanning-0.1.3 test/unit/test-app-brkptmgr.rb
trepanning-0.1.2 test/unit/test-app-brkptmgr.rb
trepanning-0.1.1 test/unit/test-app-brkptmgr.rb
trepanning-0.1.0 test/unit/test-app-brkptmgr.rb