Skip to content

Commit

Permalink
core: add function gui_buffer_search_by_id (issue #2081)
Browse files Browse the repository at this point in the history
  • Loading branch information
flashcode committed Mar 12, 2024
1 parent c71e6a5 commit 5af0415
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 0 deletions.
20 changes: 20 additions & 0 deletions src/gui/gui-buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -2860,6 +2860,26 @@ gui_buffer_search_main ()
return NULL;
}

/*
* Searches for a buffer by id (unique identifier).
*/

struct t_gui_buffer *
gui_buffer_search_by_id (long long id)
{
struct t_gui_buffer *ptr_buffer;

for (ptr_buffer = gui_buffers; ptr_buffer;
ptr_buffer = ptr_buffer->next_buffer)
{
if (ptr_buffer->id == id)
return ptr_buffer;
}

/* buffer not found */
return NULL;
}

/*
* Searches for a buffer by full name (example: "irc.libera.#weechat").
*
Expand Down
1 change: 1 addition & 0 deletions src/gui/gui-buffer.h
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,7 @@ extern void gui_buffer_add_value_num_displayed (struct t_gui_buffer *buffer,
int value);
extern int gui_buffer_is_main (const char *plugin_name, const char *name);
extern struct t_gui_buffer *gui_buffer_search_main ();
extern struct t_gui_buffer *gui_buffer_search_by_id (long long id);
extern struct t_gui_buffer *gui_buffer_search_by_full_name (const char *full_name);
extern struct t_gui_buffer *gui_buffer_search (const char *plugin, const char *name);
extern struct t_gui_buffer *gui_buffer_search_by_partial_name (const char *plugin,
Expand Down
23 changes: 23 additions & 0 deletions tests/unit/gui/test-gui-buffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1313,6 +1313,29 @@ TEST(GuiBuffer, SearchMain)
gui_buffer_close (buffer);
}

/*
* Tests functions:
* gui_buffer_search_by_id
*/

TEST(GuiBuffer, SearchById)
{
struct t_gui_buffer *buffer;

buffer = gui_buffer_new (NULL, TEST_BUFFER_NAME,
NULL, NULL, NULL,
NULL, NULL, NULL);
CHECK(buffer);

POINTERS_EQUAL(NULL, gui_buffer_search_by_id (-1));
POINTERS_EQUAL(NULL, gui_buffer_search_by_id (0));

POINTERS_EQUAL(gui_buffers, gui_buffer_search_by_id (gui_buffers->id));
POINTERS_EQUAL(buffer, gui_buffer_search_by_id (buffer->id));

gui_buffer_close (buffer);
}

/*
* Tests functions:
* gui_buffer_search_by_full_name
Expand Down

0 comments on commit 5af0415

Please sign in to comment.