"""
Fuzz tests an object after the default construction to make sure it does not crash lldb.
"""

import sys
import lldb

def fuzz_obj(obj):
    obj.GetName()
    obj.GetMangledName()
    obj.GetInstructions(lldb.SBTarget())
    sa = obj.GetStartAddress()
    ea = obj.GetEndAddress()
    # Do fuzz testing on the address obj, it should not crash lldb.
    import sb_address
    sb_address.fuzz_obj(sa)
    sb_address.fuzz_obj(ea)
    obj.GetPrologueByteSize
    obj.GetDescription(lldb.SBStream())
