summaryrefslogtreecommitdiff
path: root/packages/Python/lldbsuite/test/lang/objc/objc-property/TestObjCProperty.py
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2019-08-20 18:01:57 +0000
committerDimitry Andric <dim@FreeBSD.org>2019-08-20 18:01:57 +0000
commit88c643b6fec27eec436c8d138fee6346e92337d6 (patch)
tree82cd13b2f3cde1c9e5f79689ba4e6ba67694843f /packages/Python/lldbsuite/test/lang/objc/objc-property/TestObjCProperty.py
parent94994d372d014ce4c8758b9605d63fae651bd8aa (diff)
Notes
Diffstat (limited to 'packages/Python/lldbsuite/test/lang/objc/objc-property/TestObjCProperty.py')
-rw-r--r--packages/Python/lldbsuite/test/lang/objc/objc-property/TestObjCProperty.py139
1 files changed, 0 insertions, 139 deletions
diff --git a/packages/Python/lldbsuite/test/lang/objc/objc-property/TestObjCProperty.py b/packages/Python/lldbsuite/test/lang/objc/objc-property/TestObjCProperty.py
deleted file mode 100644
index 2a9a5afc3503..000000000000
--- a/packages/Python/lldbsuite/test/lang/objc/objc-property/TestObjCProperty.py
+++ /dev/null
@@ -1,139 +0,0 @@
-"""
-Use lldb Python API to verify that expression evaluation for property references uses the correct getters and setters
-"""
-
-from __future__ import print_function
-
-
-import os
-import time
-import re
-import lldb
-from lldbsuite.test.decorators import *
-from lldbsuite.test.lldbtest import *
-from lldbsuite.test import lldbutil
-
-
-class ObjCPropertyTestCase(TestBase):
-
- mydir = TestBase.compute_mydir(__file__)
-
- def setUp(self):
- # Call super's setUp().
- TestBase.setUp(self)
-
- # Find the line number to break for main.c.
- self.source_name = 'main.m'
-
- @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 = self.getBuildArtifact("a.out")
-
- # Create a target from the debugger.
-
- target = self.dbg.CreateTarget(exe)
- self.assertTrue(target, VALID_TARGET)
-
- # Set up our breakpoints:
-
- main_bkpt = target.BreakpointCreateBySourceRegex(
- "Set a breakpoint here.", lldb.SBFileSpec(self.source_name))
- self.assertTrue(main_bkpt and
- main_bkpt.GetNumLocations() == 1,
- VALID_BREAKPOINT)
-
- # Now launch the process, and do not stop at the entry point.
- 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)
-
- #
- # The first set of tests test calling the getter & setter of
- # a property that actually only has a getter & setter and no
- # @property.
- #
- 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)
-
- # Calling the getter function would up the access count, so make sure
- # that happened.
-
- new_access_count = access_count.GetValueAsUnsigned(123456)
- self.assertTrue(new_access_count - start_access_count == 1)
- start_access_count = new_access_count
-
- #
- # Now call the setter, then make sure that
- nonexistant_change = frame.EvaluateExpression(
- "mine.nonexistantInt = 10", False)
- nonexistant_error = nonexistant_change.GetError()
- self.assertTrue(nonexistant_error.Success())
-
- # Calling the setter function would up the access count, so make sure
- # that happened.
-
- new_access_count = access_count.GetValueAsUnsigned(123456)
- self.assertTrue(new_access_count - start_access_count == 1)
- start_access_count = new_access_count
-
- #
- # Now we call the getter of a property that is backed by an ivar,
- # make sure it works and that we actually update the backing ivar.
- #
-
- 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")
-
- # Make sure that class property getter works as expected
- value = frame.EvaluateExpression("BaseClass.classInt", False)
- self.assertTrue(value.GetError().Success())
- self.assertTrue(value.GetValueAsUnsigned(11111) == 123)
-
- # Make sure that class property setter works as expected
- value = frame.EvaluateExpression("BaseClass.classInt = 234", False)
- self.assertTrue(value.GetError().Success())
-
- # Verify that setter above actually worked
- value = frame.EvaluateExpression("BaseClass.classInt", False)
- self.assertTrue(value.GetError().Success())
- self.assertTrue(value.GetValueAsUnsigned(11111) == 234)