mirror of https://github.com/pwndbg/pwndbg.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
from pwndbg.lib.functions import Flag
|
|
from pwndbg.lib.functions import format_flags_argument
|
|
from pwndbg.lib.functions import functions
|
|
from pwndbg.lib.functions_data import _functions
|
|
|
|
|
|
def test_functions_lookup():
|
|
# test that the lazy loading through __getitem__ works properly
|
|
key1 = next(iter(_functions.keys()))
|
|
assert functions.get(key1) == _functions[key1]
|
|
|
|
|
|
def test_functions_lookup_does_not_exist():
|
|
no_key = object()
|
|
not_found = object()
|
|
assert functions.get(no_key, not_found) is not_found
|
|
|
|
|
|
def test_format_flags_not_found():
|
|
# None of the known flags are found in the value.
|
|
flags = (
|
|
Flag(value=0x01, name="FLAG_1"),
|
|
Flag(value=0x02, name="FLAG_2"),
|
|
Flag(value=0x08, name="FLAG_8"),
|
|
)
|
|
formatted = "0x4"
|
|
assert format_flags_argument(flags, 0x4) == formatted
|
|
|
|
|
|
def test_format_flags_found():
|
|
flags = (
|
|
Flag(value=0x03, name="FLAG_3"),
|
|
Flag(value=0x01, name="FLAG_1"),
|
|
Flag(value=0x02, name="FLAG_2"),
|
|
Flag(value=0x08, name="FLAG_8"),
|
|
)
|
|
formatted = "0xf (FLAG_3|FLAG_8|0x4)"
|
|
assert format_flags_argument(flags, 0xF) == formatted
|