Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions lldb/bindings/interface/SBStructuredDataExtensions.i
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,18 @@ STRING_EXTENSION_OUTSIDE(SBStructuredData)
else:
raise TypeError(f"cannot subscript {self.type_name(data_type)} type")

def __str__(self):
data_type = self.GetType()
if data_type in (
eStructuredDataTypeString,
eStructuredDataTypeInteger,
eStructuredDataTypeSignedInteger,
eStructuredDataTypeFloat,
):
return str(self.dynamic)
else:
return repr(self)

def __bool__(self):
data_type = self.GetType()
if data_type == eStructuredDataTypeInvalid:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
Test some SBStructuredData API.
"""


import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil

import json


class TestStructuredDataAPI(TestBase):
NO_DEBUG_INFO_TESTCASE = True

Expand Down Expand Up @@ -346,7 +346,7 @@ def array_struct_test(self, dict_struct):
self.fail("wrong output: " + str(output))

def test_round_trip_scalars(self):
for original in (0, 11, -1, 0.0, 4.5, -0.25, True, False):
for original in (0, 11, -1, 0.0, 4.5, -0.25, "", "dirk", True, False):
constructor = type(original)
data = lldb.SBStructuredData()
data.SetFromJSON(json.dumps(original))
Expand All @@ -359,6 +359,19 @@ def test_dynamic(self):
data.SetFromJSON(json.dumps(original))
self.assertEqual(data.dynamic, original)

def test_round_trip_string(self):
# No 0.0, it inherently does not round trip.
for original in (0, 11, -1, 4.5, -0.25, "", "dirk", True, False):
data = lldb.SBStructuredData()
data.SetFromJSON(json.dumps(original))
self.assertEqual(str(data), str(original))

def test_str(self):
for original in ([15], {"id": 23}, None):
data = lldb.SBStructuredData()
data.SetFromJSON(json.dumps(original))
self.assertTrue(str(data))

def test_round_trip_int(self):
for original in (0, 11, -1):
data = lldb.SBStructuredData()
Expand Down
Loading