def test_read_memory_until_error_no_error(gdb_base_fixture):
    from memfault_gdb import read_memory_until_error

    read_size = 1024
    size = 1024 * 1024
    inferior = MagicMock()
    inferior.read_memory.return_value = b"A" * read_size
    data = read_memory_until_error(inferior, 0x20000000, size, read_size=read_size)
    assert data == b"A" * size
def test_read_memory_until_error_after_10k(gdb_base_fixture):
    from memfault_gdb import read_memory_until_error

    read_size = 1024
    size = 1024 * 1024
    inferior = MagicMock()
    total_size = 0

    def _read_memory_raise_after_10k(_addr, _size):
        nonlocal total_size
        total_size += _size
        if total_size > _size * 10:
            raise Exception()
        return b"A" * _size

    inferior.read_memory.side_effect = _read_memory_raise_after_10k
    data = read_memory_until_error(inferior, 0x20000000, size, read_size=read_size)
    assert data == b"A" * read_size * 10