1*67f94e5aSSiger Yang_T = require('lua_lldb_test').create_test('TestBreakpointAPI')
2*67f94e5aSSiger Yang
3*67f94e5aSSiger Yangfunction _T:TestBreakpointIsValid()
4*67f94e5aSSiger Yang    local target = self:create_target()
5*67f94e5aSSiger Yang    local breakpoint = target:BreakpointCreateByName('AFunction', 'a.out')
6*67f94e5aSSiger Yang    assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1)
7*67f94e5aSSiger Yang    local did_delete = target:BreakpointDelete(breakpoint:GetID())
8*67f94e5aSSiger Yang    assertTrue(did_delete)
9*67f94e5aSSiger Yang    local del_bkpt = target:FindBreakpointByID(breakpoint:GetID())
10*67f94e5aSSiger Yang    assertFalse(del_bkpt:IsValid())
11*67f94e5aSSiger Yang    assertFalse(breakpoint:IsValid())
12*67f94e5aSSiger Yangend
13*67f94e5aSSiger Yang
14*67f94e5aSSiger Yangfunction _T:TestTargetDelete()
15*67f94e5aSSiger Yang    local target = self:create_target()
16*67f94e5aSSiger Yang    local breakpoint = target:BreakpointCreateByName('AFunction', 'a.out')
17*67f94e5aSSiger Yang    assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1)
18*67f94e5aSSiger Yang    local location = breakpoint:GetLocationAtIndex(0)
19*67f94e5aSSiger Yang    assertTrue(location:IsValid())
20*67f94e5aSSiger Yang    assertEquals(target, breakpoint:GetTarget())
21*67f94e5aSSiger Yang    assertTrue(self.debugger:DeleteTarget(target))
22*67f94e5aSSiger Yang    assertFalse(breakpoint:IsValid())
23*67f94e5aSSiger Yang    assertFalse(location:IsValid())
24*67f94e5aSSiger Yangend
25*67f94e5aSSiger Yang
26*67f94e5aSSiger Yangfunction _T:TestBreakpointHitCount()
27*67f94e5aSSiger Yang    local target = self:create_target()
28*67f94e5aSSiger Yang    local breakpoint = target:BreakpointCreateByName('BFunction', 'a.out')
29*67f94e5aSSiger Yang    assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1)
30*67f94e5aSSiger Yang    breakpoint:SetAutoContinue(true)
31*67f94e5aSSiger Yang    target:LaunchSimple(nil, nil, nil)
32*67f94e5aSSiger Yang    assertEquals(breakpoint:GetHitCount(), 100)
33*67f94e5aSSiger Yangend
34*67f94e5aSSiger Yang
35*67f94e5aSSiger Yangfunction _T:TestBreakpointFrame()
36*67f94e5aSSiger Yang    local target = self:create_target()
37*67f94e5aSSiger Yang    local breakpoint = target:BreakpointCreateByName('main', 'a.out')
38*67f94e5aSSiger Yang    assertTrue(breakpoint:IsValid() and breakpoint:GetNumLocations() == 1)
39*67f94e5aSSiger Yang    local process = target:LaunchSimple({ 'arg1', 'arg2' }, nil, nil)
40*67f94e5aSSiger Yang    local thread = get_stopped_thread(process, lldb.eStopReasonBreakpoint)
41*67f94e5aSSiger Yang    assertNotNil(thread)
42*67f94e5aSSiger Yang    assertTrue(thread:IsValid())
43*67f94e5aSSiger Yang    local frame = thread:GetFrameAtIndex(0)
44*67f94e5aSSiger Yang    assertTrue(frame:IsValid())
45*67f94e5aSSiger Yang    local error = lldb.SBError()
46*67f94e5aSSiger Yang    local var_argc = frame:FindVariable('argc')
47*67f94e5aSSiger Yang    local var_argc_value = var_argc:GetValueAsSigned(error, 0)
48*67f94e5aSSiger Yang    assertTrue(error:Success())
49*67f94e5aSSiger Yang    assertEquals(var_argc_value, 3)
50*67f94e5aSSiger Yangend
51*67f94e5aSSiger Yang
52*67f94e5aSSiger Yangos.exit(_T:run())
53