@skipUnlessDarwin
@add_test_categories(['pyapi'])
def test_objc_properties(self):
    'Test that expr uses the correct property getters and setters'
    if (self.getArchitecture() == 'i386'):
        self.skipTest('requires modern objc runtime')
    self.build()
    exe = os.path.join(os.getcwd(), 'a.out')
    target = self.dbg.CreateTarget(exe)
    self.assertTrue(target, VALID_TARGET)
    main_bkpt = target.BreakpointCreateBySourceRegex('Set a breakpoint here.', lldb.SBFileSpec(self.source_name))
    self.assertTrue((main_bkpt and (main_bkpt.GetNumLocations() == 1)), VALID_BREAKPOINT)
    process = target.LaunchSimple(None, None, self.get_process_working_directory())
    self.assertTrue((process.GetState() == lldb.eStateStopped), PROCESS_STOPPED)
    threads = lldbutil.get_threads_stopped_at_breakpoint(process, main_bkpt)
    self.assertTrue((len(threads) == 1))
    thread = threads[0]
    frame = thread.GetFrameAtIndex(0)
    mine = frame.FindVariable('mine')
    self.assertTrue(mine.IsValid())
    access_count = mine.GetChildMemberWithName('_access_count')
    self.assertTrue(access_count.IsValid())
    start_access_count = access_count.GetValueAsUnsigned(123456)
    self.assertTrue((start_access_count != 123456))
    nonexistant_value = frame.EvaluateExpression('mine.nonexistantInt', False)
    nonexistant_error = nonexistant_value.GetError()
    self.assertTrue(nonexistant_error.Success())
    nonexistant_int = nonexistant_value.GetValueAsUnsigned(123456)
    self.assertTrue((nonexistant_int == 6))
    new_access_count = access_count.GetValueAsUnsigned(123456)
    self.assertTrue(((new_access_count - start_access_count) == 1))
    start_access_count = new_access_count
    nonexistant_change = frame.EvaluateExpression('mine.nonexistantInt = 10', False)
    nonexistant_error = nonexistant_change.GetError()
    self.assertTrue(nonexistant_error.Success())
    new_access_count = access_count.GetValueAsUnsigned(123456)
    self.assertTrue(((new_access_count - start_access_count) == 1))
    start_access_count = new_access_count
    backed_value = frame.EvaluateExpression('mine.backedInt', False)
    backed_error = backed_value.GetError()
    self.assertTrue(backed_error.Success())
    backing_value = mine.GetChildMemberWithName('_backedInt')
    self.assertTrue(backing_value.IsValid())
    self.assertTrue((backed_value.GetValueAsUnsigned(12345) == backing_value.GetValueAsUnsigned(23456)))
    unbacked_value = frame.EvaluateExpression('mine.unbackedInt', False)
    unbacked_error = unbacked_value.GetError()
    self.assertTrue(unbacked_error.Success())
    idWithProtocol_value = frame.EvaluateExpression('mine.idWithProtocol', False)
    idWithProtocol_error = idWithProtocol_value.GetError()
    self.assertTrue(idWithProtocol_error.Success())
    self.assertTrue((idWithProtocol_value.GetTypeName() == 'id'))
    value = frame.EvaluateExpression('BaseClass.classInt', False)
    self.assertTrue(value.GetError().Success())
    self.assertTrue((value.GetValueAsUnsigned(11111) == 123))
    value = frame.EvaluateExpression('BaseClass.classInt = 234', False)
    self.assertTrue(value.GetError().Success())
    value = frame.EvaluateExpression('BaseClass.classInt', False)
    self.assertTrue(value.GetError().Success())
    self.assertTrue((value.GetValueAsUnsigned(11111) == 234))
Test that expr uses the correct property getters and setters
@skipUnlessDarwin
@add_test_categories(['pyapi'])
def test_objc_properties(self):
    
    if (self.getArchitecture() == 'i386'):
        self.skipTest('requires modern objc runtime')
    self.build()
    exe = os.path.join(os.getcwd(), 'a.out')
    target = self.dbg.CreateTarget(exe)
    self.assertTrue(target, VALID_TARGET)
    main_bkpt = target.BreakpointCreateBySourceRegex('Set a breakpoint here.', lldb.SBFileSpec(self.source_name))
    self.assertTrue((main_bkpt and (main_bkpt.GetNumLocations() == 1)), VALID_BREAKPOINT)
    process = target.LaunchSimple(None, None, self.get_process_working_directory())
    self.assertTrue((process.GetState() == lldb.eStateStopped), PROCESS_STOPPED)
    threads = lldbutil.get_threads_stopped_at_breakpoint(process, main_bkpt)
    self.assertTrue((len(threads) == 1))
    thread = threads[0]
    frame = thread.GetFrameAtIndex(0)
    mine = frame.FindVariable('mine')
    self.assertTrue(mine.IsValid())
    access_count = mine.GetChildMemberWithName('_access_count')
    self.assertTrue(access_count.IsValid())
    start_access_count = access_count.GetValueAsUnsigned(123456)
    self.assertTrue((start_access_count != 123456))
    nonexistant_value = frame.EvaluateExpression('mine.nonexistantInt', False)
    nonexistant_error = nonexistant_value.GetError()
    self.assertTrue(nonexistant_error.Success())
    nonexistant_int = nonexistant_value.GetValueAsUnsigned(123456)
    self.assertTrue((nonexistant_int == 6))
    new_access_count = access_count.GetValueAsUnsigned(123456)
    self.assertTrue(((new_access_count - start_access_count) == 1))
    start_access_count = new_access_count
    nonexistant_change = frame.EvaluateExpression('mine.nonexistantInt = 10', False)
    nonexistant_error = nonexistant_change.GetError()
    self.assertTrue(nonexistant_error.Success())
    new_access_count = access_count.GetValueAsUnsigned(123456)
    self.assertTrue(((new_access_count - start_access_count) == 1))
    start_access_count = new_access_count
    backed_value = frame.EvaluateExpression('mine.backedInt', False)
    backed_error = backed_value.GetError()
    self.assertTrue(backed_error.Success())
    backing_value = mine.GetChildMemberWithName('_backedInt')
    self.assertTrue(backing_value.IsValid())
    self.assertTrue((backed_value.GetValueAsUnsigned(12345) == backing_value.GetValueAsUnsigned(23456)))
    unbacked_value = frame.EvaluateExpression('mine.unbackedInt', False)
    unbacked_error = unbacked_value.GetError()
    self.assertTrue(unbacked_error.Success())
    idWithProtocol_value = frame.EvaluateExpression('mine.idWithProtocol', False)
    idWithProtocol_error = idWithProtocol_value.GetError()
    self.assertTrue(idWithProtocol_error.Success())
    self.assertTrue((idWithProtocol_value.GetTypeName() == 'id'))
    value = frame.EvaluateExpression('BaseClass.classInt', False)
    self.assertTrue(value.GetError().Success())
    self.assertTrue((value.GetValueAsUnsigned(11111) == 123))
    value = frame.EvaluateExpression('BaseClass.classInt = 234', False)
    self.assertTrue(value.GetError().Success())
    value = frame.EvaluateExpression('BaseClass.classInt', False)
    self.assertTrue(value.GetError().Success())
    self.assertTrue((value.GetValueAsUnsigned(11111) == 234))