mirror of
https://github.com/weechat/weechat.git
synced 2026-06-13 06:34:47 +02:00
1357 lines
37 KiB
C++
1357 lines
37 KiB
C++
/*
|
|
* SPDX-FileCopyrightText: 2023-2026 Sébastien Helleu <flashcode@flashtux.org>
|
|
*
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
*
|
|
* This file is part of WeeChat, the extensible chat client.
|
|
*
|
|
* WeeChat is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* WeeChat is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/* Tests API info functions */
|
|
|
|
#include "CppUTest/TestHarness.h"
|
|
|
|
#include "tests.h"
|
|
|
|
extern "C"
|
|
{
|
|
#ifndef HAVE_CONFIG_H
|
|
#define HAVE_CONFIG_H
|
|
#endif
|
|
#include <unistd.h>
|
|
#include <string.h>
|
|
#include "src/core/weechat.h"
|
|
#include "src/core/core-config.h"
|
|
#include "src/core/core-config-file.h"
|
|
#include "src/core/core-hashtable.h"
|
|
#include "src/core/core-hook.h"
|
|
#include "src/core/core-infolist.h"
|
|
#include "src/core/core-input.h"
|
|
#include "src/core/core-proxy.h"
|
|
#include "src/core/core-secure.h"
|
|
#include "src/core/core-util.h"
|
|
#include "src/core/core-version.h"
|
|
#include "src/gui/gui-bar.h"
|
|
#include "src/gui/gui-bar-item.h"
|
|
#include "src/gui/gui-buffer.h"
|
|
#include "src/gui/gui-color.h"
|
|
#include "src/gui/gui-filter.h"
|
|
#include "src/gui/gui-input.h"
|
|
#include "src/gui/gui-layout.h"
|
|
#include "src/gui/gui-window.h"
|
|
|
|
extern char *plugin_api_info_absolute_path (const char *directory);
|
|
}
|
|
|
|
TEST_GROUP(PluginApiInfo)
|
|
{
|
|
};
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_version_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, VersionCb)
|
|
{
|
|
const char *version;
|
|
char *str;
|
|
|
|
version = version_get_version ();
|
|
WEE_TEST_STR(version, hook_info_get (NULL, "version", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_version_number_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, VersionNumberCb)
|
|
{
|
|
char *str, str_version_number[128];
|
|
|
|
snprintf (str_version_number, sizeof (str_version_number),
|
|
"%lu", util_version_number (version_get_version ()));
|
|
WEE_TEST_STR(str_version_number, hook_info_get (NULL, "version_number", NULL));
|
|
WEE_TEST_STR(str_version_number, hook_info_get (NULL, "version_number", ""));
|
|
|
|
WEE_TEST_STR("256" /* 0x00000100 */, hook_info_get (NULL, "version_number", "0.0.1"));
|
|
WEE_TEST_STR("16909056" /* 0x01020300 */, hook_info_get (NULL, "version_number", "1.2.3"));
|
|
WEE_TEST_STR("1484470272" /* 0x587B3800 */, hook_info_get (NULL, "version_number", "88.123.56"));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_version_git_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, VersionGitCb)
|
|
{
|
|
const char *version_git;
|
|
char *str;
|
|
|
|
version_git = version_get_git ();
|
|
WEE_TEST_STR(version_git, hook_info_get (NULL, "version_git", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_date_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, DateCb)
|
|
{
|
|
const char *compilation_date;
|
|
char *str;
|
|
|
|
compilation_date = version_get_compilation_date_time ();
|
|
WEE_TEST_STR(compilation_date, hook_info_get (NULL, "date", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_pid_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, PidCb)
|
|
{
|
|
char *str, str_pid[64];
|
|
|
|
snprintf (str_pid, sizeof (str_pid), "%d", (int)getpid ());
|
|
WEE_TEST_STR(str_pid, hook_info_get (NULL, "pid", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_dir_separator_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, DirSeparatorCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR(DIR_SEPARATOR, hook_info_get (NULL, "dir_separator", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_absolute_path
|
|
*/
|
|
|
|
TEST(PluginApiInfo, AbsolutePath)
|
|
{
|
|
char *str;
|
|
|
|
STRCMP_EQUAL(NULL, plugin_api_info_absolute_path (NULL));
|
|
STRCMP_EQUAL(NULL, plugin_api_info_absolute_path (""));
|
|
STRCMP_EQUAL(NULL, plugin_api_info_absolute_path ("/invalid/dir"));
|
|
|
|
WEE_TEST_STR("/", plugin_api_info_absolute_path ("/tmp/.."));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_absolute_path
|
|
* plugin_api_info_weechat_config_dir_cb
|
|
* plugin_api_info_weechat_data_dir_cb
|
|
* plugin_api_info_weechat_state_dir_cb
|
|
* plugin_api_info_weechat_cache_dir_cb
|
|
* plugin_api_info_weechat_runtime_dir_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, WeechatDir)
|
|
{
|
|
char *str;
|
|
|
|
str = hook_info_get (NULL, "weechat_config_dir", NULL);
|
|
CHECK(str);
|
|
CHECK(str[0] == '/');
|
|
CHECK(strlen (str) > 1);
|
|
CHECK(strstr (str, "/tmp_weechat_test"));
|
|
free (str);
|
|
|
|
str = hook_info_get (NULL, "weechat_data_dir", NULL);
|
|
CHECK(str);
|
|
CHECK(str[0] == '/');
|
|
CHECK(strlen (str) > 1);
|
|
CHECK(strstr (str, "/tmp_weechat_test"));
|
|
free (str);
|
|
|
|
str = hook_info_get (NULL, "weechat_state_dir", NULL);
|
|
CHECK(str);
|
|
CHECK(str[0] == '/');
|
|
CHECK(strlen (str) > 1);
|
|
CHECK(strstr (str, "/tmp_weechat_test"));
|
|
free (str);
|
|
|
|
str = hook_info_get (NULL, "weechat_cache_dir", NULL);
|
|
CHECK(str);
|
|
CHECK(str[0] == '/');
|
|
CHECK(strlen (str) > 1);
|
|
CHECK(strstr (str, "/tmp_weechat_test"));
|
|
free (str);
|
|
|
|
str = hook_info_get (NULL, "weechat_runtime_dir", NULL);
|
|
CHECK(str);
|
|
CHECK(str[0] == '/');
|
|
CHECK(strlen (str) > 1);
|
|
CHECK(strstr (str, "/tmp_weechat_test"));
|
|
free (str);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_weechat_libdir_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, WeechatLibdirCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR(WEECHAT_LIBDIR, hook_info_get (NULL, "weechat_libdir", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_weechat_sharedir_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, WeechatSharedirCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR(WEECHAT_SHAREDIR,
|
|
hook_info_get (NULL, "weechat_sharedir", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_weechat_localedir_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, WeechatLocaledirCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR(LOCALEDIR, hook_info_get (NULL, "weechat_localedir", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_weechat_site_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, WeechatSiteCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR(WEECHAT_WEBSITE, hook_info_get (NULL, "weechat_site", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_weechat_site_download_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, WeechatSiteDownloadCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR(WEECHAT_WEBSITE_DOWNLOAD,
|
|
hook_info_get (NULL, "weechat_site_download", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_weechat_upgrading_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, WeechatUpgradingCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR("0", hook_info_get (NULL, "weechat_upgrading", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_weechat_headless_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, WeechatHeadlessCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR("0", hook_info_get (NULL, "weechat_headless", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_weechat_daemon_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, WeechatDaemonCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR("0", hook_info_get (NULL, "weechat_daemon", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_auto_connect_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, AutoConnectCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR("1", hook_info_get (NULL, "auto_connect", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_auto_load_scripts_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, AutoLoadScriptsCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR("1", hook_info_get (NULL, "auto_load_scripts", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_buffer_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, BufferCb)
|
|
{
|
|
char *str, str_buffer[64];
|
|
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "buffer", NULL));
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "buffer", ""));
|
|
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "buffer", "zzz"));
|
|
|
|
snprintf (str_buffer, sizeof (str_buffer), "%p", gui_buffers);
|
|
WEE_TEST_STR(str_buffer, hook_info_get (NULL, "buffer", "core.weechat"));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_charset_terminal_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, CharsetTerminalCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR (weechat_local_charset,
|
|
hook_info_get (NULL, "charset_terminal", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_charset_internal_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, CharsetInternalCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR (WEECHAT_INTERNAL_CHARSET,
|
|
hook_info_get (NULL, "charset_internal", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_locale_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, LocaleCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR (setlocale (LC_MESSAGES, NULL),
|
|
hook_info_get (NULL, "locale", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_inactivity_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InactivityCb)
|
|
{
|
|
char *str, *error;
|
|
long long inactivity;
|
|
|
|
str = hook_info_get (NULL, "inactivity", NULL);
|
|
inactivity = strtoll (str, &error, 10);
|
|
CHECK(error && !error[0]);
|
|
CHECK(inactivity >= 0);
|
|
free (str);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_filters_enabled_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, FiltersEnabledCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR("1", hook_info_get (NULL, "filters_enabled", NULL));
|
|
|
|
gui_filter_global_disable ();
|
|
WEE_TEST_STR("0", hook_info_get (NULL, "filters_enabled", NULL));
|
|
|
|
gui_filter_global_enable ();
|
|
WEE_TEST_STR("1", hook_info_get (NULL, "filters_enabled", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_cursor_mode_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, CursorModeCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR("0", hook_info_get (NULL, "cursor_mode", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_mouse_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, MouseCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR("0", hook_info_get (NULL, "mouse", NULL));
|
|
|
|
config_file_option_set (config_look_mouse, "1", 1);
|
|
WEE_TEST_STR("1", hook_info_get (NULL, "mouse", NULL));
|
|
|
|
config_file_option_set (config_look_mouse, "0", 1);
|
|
WEE_TEST_STR("0", hook_info_get (NULL, "mouse", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_term_width_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, TermWidthCb)
|
|
{
|
|
char *str, str_width[64];
|
|
|
|
snprintf (str_width, sizeof (str_width), "%d", gui_window_get_width ());
|
|
WEE_TEST_STR(str_width, hook_info_get (NULL, "term_width", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_term_height_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, TermHeightCb)
|
|
{
|
|
char *str, str_height[64];
|
|
|
|
snprintf (str_height, sizeof (str_height), "%d", gui_window_get_height ());
|
|
WEE_TEST_STR(str_height, hook_info_get (NULL, "term_height", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_term_colors_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, TermColorsCb)
|
|
{
|
|
char *str, str_colors[64];
|
|
|
|
snprintf (str_colors, sizeof (str_colors),
|
|
"%d", gui_color_get_term_colors ());
|
|
WEE_TEST_STR(str_colors, hook_info_get (NULL, "term_colors", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_term_color_pairs_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, TermColorPairsCb)
|
|
{
|
|
char *str, str_color_pairs[64];
|
|
|
|
snprintf (str_color_pairs, sizeof (str_color_pairs),
|
|
"%d", gui_color_get_term_color_pairs ());
|
|
WEE_TEST_STR(str_color_pairs, hook_info_get (NULL, "term_color_pairs", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_color_ansi_regex_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, ColorAnsiRegexCb)
|
|
{
|
|
char *str;
|
|
|
|
WEE_TEST_STR(GUI_COLOR_REGEX_ANSI_DECODE,
|
|
hook_info_get (NULL, "color_ansi_regex", NULL));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_color_term2rgb_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, ColorTerm2rgbCb)
|
|
{
|
|
char *str;
|
|
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "color_term2rgb", NULL));
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "color_term2rgb", ""));
|
|
|
|
WEE_TEST_STR("8421504", hook_info_get (NULL, "color_term2rgb", "8"));
|
|
WEE_TEST_STR("11534080", hook_info_get (NULL, "color_term2rgb", "154"));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_color_rgb2term_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, ColorRgb2termCb)
|
|
{
|
|
char *str;
|
|
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "color_rgb2term", NULL));
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "color_rgb2term", ""));
|
|
|
|
WEE_TEST_STR("8", hook_info_get (NULL, "color_rgb2term", "8421504"));
|
|
WEE_TEST_STR("154", hook_info_get (NULL, "color_rgb2term", "11534080"));
|
|
WEE_TEST_STR("11", hook_info_get (NULL, "color_rgb2term", "11534080,64"));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_nick_color_cb
|
|
* plugin_api_info_nick_color_name_cb
|
|
* plugin_api_info_nick_color_ignore_case_cb
|
|
* plugin_api_info_nick_color_name_ignore_case_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, NickColor)
|
|
{
|
|
char *str, str_color[64];
|
|
|
|
WEE_TEST_STR("186", hook_info_get (NULL, "nick_color_name", "Nick"));
|
|
snprintf (str_color, sizeof (str_color), "%s", gui_color_get_custom ("186"));
|
|
WEE_TEST_STR(str_color, hook_info_get (NULL, "nick_color", "Nick"));
|
|
|
|
WEE_TEST_STR("blue",
|
|
hook_info_get (NULL,
|
|
"nick_color_name",
|
|
"Nick;green,blue,red,yellow,cyan,magenta"));
|
|
snprintf (str_color, sizeof (str_color), "%s", gui_color_get_custom ("blue"));
|
|
WEE_TEST_STR(str_color,
|
|
hook_info_get (NULL,
|
|
"nick_color",
|
|
"Nick;green,blue,red,yellow,cyan,magenta"));
|
|
|
|
WEE_TEST_STR("212",
|
|
hook_info_get (NULL,
|
|
"nick_color_name_ignore_case", "Nick;26"));
|
|
snprintf (str_color, sizeof (str_color), "%s", gui_color_get_custom ("212"));
|
|
WEE_TEST_STR(str_color, hook_info_get (NULL, "nick_color_ignore_case", "Nick;26"));
|
|
|
|
WEE_TEST_STR("green",
|
|
hook_info_get (NULL,
|
|
"nick_color_name_ignore_case",
|
|
"Nick;26;green,blue,red,yellow,cyan,magenta"));
|
|
snprintf (str_color, sizeof (str_color), "%s", gui_color_get_custom ("green"));
|
|
WEE_TEST_STR(str_color,
|
|
hook_info_get (NULL,
|
|
"nick_color_ignore_case",
|
|
"Nick;26;green,blue,red,yellow,cyan,magenta"));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_build_uptime
|
|
* plugin_api_info_uptime_cb
|
|
* plugin_api_info_uptime_current_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, Uptime)
|
|
{
|
|
char *str, *error;
|
|
long long seconds;
|
|
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "uptime", "invalid"));
|
|
|
|
str = hook_info_get (NULL, "uptime", NULL);
|
|
STRNCMP_EQUAL("0:00:00:", str, 8);
|
|
free (str);
|
|
str = hook_info_get (NULL, "uptime_current", NULL);
|
|
STRNCMP_EQUAL("0:00:00:", str, 8);
|
|
free (str);
|
|
|
|
WEE_TEST_STR("0", hook_info_get (NULL, "uptime", "days"));
|
|
WEE_TEST_STR("0", hook_info_get (NULL, "uptime_current", "days"));
|
|
|
|
str = hook_info_get (NULL, "uptime", "seconds");
|
|
seconds = strtoll (str, &error, 10);
|
|
CHECK(error && !error[0]);
|
|
CHECK(seconds >= 0);
|
|
str = hook_info_get (NULL, "uptime_current", "seconds");
|
|
seconds = strtoll (str, &error, 10);
|
|
CHECK(error && !error[0]);
|
|
CHECK(seconds >= 0);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_totp_generate_cb
|
|
* plugin_api_info_totp_validate_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, TotpGenerateCb)
|
|
{
|
|
char *str;
|
|
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "totp_generate", NULL));
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "totp_generate", ""));
|
|
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "totp_validate", NULL));
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "totp_validate", ""));
|
|
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "totp_generate",
|
|
"secretpasswordbase32,abc"));
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "totp_generate",
|
|
"secretpasswordbase32,1540624066,abc"));
|
|
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "totp_validate",
|
|
"secretpasswordbase32,123456,abc"));
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "totp_validate",
|
|
"secretpasswordbase32,123456,1540624066,abc"));
|
|
|
|
WEE_TEST_STR("065486",
|
|
hook_info_get (NULL,
|
|
"totp_generate",
|
|
"secretpasswordbase32,1540624066,6"));
|
|
|
|
WEE_TEST_STR("1",
|
|
hook_info_get (NULL,
|
|
"totp_validate",
|
|
"secretpasswordbase32,065486,1540624066,30"));
|
|
WEE_TEST_STR("0",
|
|
hook_info_get (NULL,
|
|
"totp_validate",
|
|
"secretpasswordbase32,123456,1540624066,30"));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_plugin_loaded_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, PluginLoadedCb)
|
|
{
|
|
char *str;
|
|
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "plugin_loaded", NULL));
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "plugin_loaded", ""));
|
|
|
|
STRCMP_EQUAL(NULL, hook_info_get (NULL, "plugin_loaded", "xxx"));
|
|
|
|
WEE_TEST_STR("1", hook_info_get (NULL, "plugin_loaded", "alias"));
|
|
WEE_TEST_STR("1", hook_info_get (NULL, "plugin_loaded", "irc"));
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_hashtable_secured_data_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, HashtableSecuredDataCb)
|
|
{
|
|
struct t_hashtable *hashtable;
|
|
|
|
hashtable = hook_info_get_hashtable (NULL, "secured_data", NULL);
|
|
CHECK(hashtable);
|
|
LONGS_EQUAL(0, hashtable_get_integer (hashtable, "items_count"));
|
|
hashtable_free (hashtable);
|
|
|
|
hashtable_set (secure_hashtable_data, "password", "S3cr3t!");
|
|
hashtable = hook_info_get_hashtable (NULL, "secured_data", NULL);
|
|
CHECK(hashtable);
|
|
LONGS_EQUAL(1, hashtable_get_integer (hashtable, "items_count"));
|
|
STRCMP_EQUAL("S3cr3t!", (const char *)hashtable_get (hashtable, "password"));
|
|
hashtable_free (hashtable);
|
|
hashtable_remove (secure_hashtable_data, "password");
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_bar_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistBarCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
|
|
/* invalid bar pointer */
|
|
POINTERS_EQUAL(NULL, hook_infolist_get (NULL, "bar", (void *)0x1, NULL));
|
|
|
|
/* all bars */
|
|
infolist = hook_infolist_get (NULL, "bar", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("input", infolist_string (infolist, "name"));
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("status", infolist_string (infolist, "name"));
|
|
CHECK(infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one bar with pointer */
|
|
infolist = hook_infolist_get (NULL, "bar", gui_bars, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("input", infolist_string (infolist, "name"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one bar with name (mask) */
|
|
infolist = hook_infolist_get (NULL, "bar", NULL, "titl*");
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("title", infolist_string (infolist, "name"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_bar_item_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistBarItemCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
|
|
/* invalid bar item pointer */
|
|
POINTERS_EQUAL(NULL, hook_infolist_get (NULL, "bar_item", (void *)0x1, NULL));
|
|
|
|
/* all bar items */
|
|
infolist = hook_infolist_get (NULL, "bar_item", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("input_paste", infolist_string (infolist, "name"));
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("input_prompt", infolist_string (infolist, "name"));
|
|
CHECK(infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one bar item with pointer */
|
|
infolist = hook_infolist_get (NULL, "bar_item", gui_bar_items, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("input_paste", infolist_string (infolist, "name"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one bar item with name (mask) */
|
|
infolist = hook_infolist_get (NULL, "bar_item", NULL, "tim*");
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("time", infolist_string (infolist, "name"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_bar_window_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistBarWindowCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
struct t_gui_bar *ptr_bar;
|
|
|
|
/* invalid bar window pointer */
|
|
POINTERS_EQUAL(NULL, hook_infolist_get (NULL, "bar_window", (void *)0x1, NULL));
|
|
|
|
/* all bar windows */
|
|
infolist = hook_infolist_get (NULL, "bar_window", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
ptr_bar = (struct t_gui_bar *)infolist_pointer (infolist, "bar");
|
|
CHECK(ptr_bar);
|
|
STRCMP_EQUAL("buflist", ptr_bar->name);
|
|
CHECK(infolist_next (infolist));
|
|
ptr_bar = (struct t_gui_bar *)infolist_pointer (infolist, "bar");
|
|
CHECK(ptr_bar);
|
|
STRCMP_EQUAL("input", ptr_bar->name);
|
|
CHECK(infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one bar window with pointer */
|
|
infolist = hook_infolist_get (NULL, "bar_window", gui_windows->bar_windows, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
ptr_bar = (struct t_gui_bar *)infolist_pointer (infolist, "bar");
|
|
CHECK(ptr_bar);
|
|
STRCMP_EQUAL("input", ptr_bar->name);
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_buffer_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistBufferCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
|
|
/* invalid buffer pointer */
|
|
POINTERS_EQUAL(NULL, hook_infolist_get (NULL, "buffer", (void *)0x1, NULL));
|
|
|
|
/* all buffers */
|
|
infolist = hook_infolist_get (NULL, "buffer", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("core.weechat", infolist_string (infolist, "full_name"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one buffer with pointer */
|
|
infolist = hook_infolist_get (NULL, "buffer", gui_buffers, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("core.weechat", infolist_string (infolist, "full_name"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one buffer with name (mask) */
|
|
infolist = hook_infolist_get (NULL, "buffer", NULL, "core.w*");
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("core.weechat", infolist_string (infolist, "full_name"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_buffer_lines_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistBufferLinesCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
time_t date;
|
|
|
|
/* invalid buffer lines pointer */
|
|
POINTERS_EQUAL(NULL, hook_infolist_get (NULL, "buffer_lines", (void *)0x1, NULL));
|
|
|
|
/* lines of core buffer */
|
|
infolist = hook_infolist_get (NULL, "buffer_lines", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
date = infolist_time (infolist, "date");
|
|
CHECK(date > 0);
|
|
CHECK(infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* lines of core buffer (using buffer pointer) */
|
|
infolist = hook_infolist_get (NULL, "buffer_lines", gui_buffers, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
LONGS_EQUAL(date, infolist_time (infolist, "date"));
|
|
CHECK(infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_filter_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistFilterCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
struct t_gui_filter *ptr_filter1, *ptr_filter2;
|
|
|
|
/* without filters */
|
|
infolist = hook_infolist_get (NULL, "filter", NULL, NULL);
|
|
CHECK(infolist);
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* with two filters */
|
|
ptr_filter1 = gui_filter_new (1, "test_filter1", "core.weechat",
|
|
"tag1", "regex1.*");
|
|
CHECK(ptr_filter1);
|
|
ptr_filter2 = gui_filter_new (1, "test_filter2", "core.weechat",
|
|
"tag2", "regex2.*");
|
|
CHECK(ptr_filter2);
|
|
infolist = hook_infolist_get (NULL, "filter", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("test_filter1", infolist_string (infolist, "name"));
|
|
STRCMP_EQUAL("tag1", infolist_string (infolist, "tags"));
|
|
LONGS_EQUAL(1, infolist_integer (infolist, "tags_count"));
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("test_filter2", infolist_string (infolist, "name"));
|
|
STRCMP_EQUAL("tag2", infolist_string (infolist, "tags"));
|
|
LONGS_EQUAL(1, infolist_integer (infolist, "tags_count"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one filter with name (mask) */
|
|
infolist = hook_infolist_get (NULL, "filter", NULL, "test_*2");
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("test_filter2", infolist_string (infolist, "name"));
|
|
STRCMP_EQUAL("tag2", infolist_string (infolist, "tags"));
|
|
LONGS_EQUAL(1, infolist_integer (infolist, "tags_count"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
gui_filter_free (ptr_filter1);
|
|
gui_filter_free (ptr_filter2);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_history_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistHistoryCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
|
|
/* invalid history pointer */
|
|
POINTERS_EQUAL(NULL, hook_infolist_get (NULL, "history", (void *)0x1, NULL));
|
|
|
|
gui_input_insert_string (gui_buffers, "abc");
|
|
gui_input_return (gui_buffers);
|
|
|
|
/* global history */
|
|
infolist = hook_infolist_get (NULL, "history", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("abc", infolist_string (infolist, "text"));
|
|
infolist_free (infolist);
|
|
|
|
/* history of core buffer */
|
|
input_data (gui_buffers, "abc", NULL, 1, 0);
|
|
infolist = hook_infolist_get (NULL, "history", gui_buffers, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("abc", infolist_string (infolist, "text"));
|
|
infolist_free (infolist);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_hook_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistHookCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
const char *ptr_name;
|
|
struct t_hook *ptr_hook;
|
|
char *name, str_args[1024];
|
|
|
|
/* invalid hook pointer */
|
|
POINTERS_EQUAL(NULL, hook_infolist_get (NULL, "hook", (void *)0x1, NULL));
|
|
|
|
/* all hooks */
|
|
infolist = hook_infolist_get (NULL, "hook", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
ptr_hook = (struct t_hook *)infolist_pointer (infolist, "pointer");
|
|
ptr_name = infolist_string (infolist, "command");
|
|
CHECK(ptr_name);
|
|
name = strdup (ptr_name);
|
|
STRCMP_EQUAL("command", infolist_string (infolist, "type"));
|
|
CHECK(infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one command with pointer */
|
|
infolist = hook_infolist_get (NULL, "hook", ptr_hook, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("command", infolist_string (infolist, "type"));
|
|
STRCMP_EQUAL(name, infolist_string (infolist, "command"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one command with name */
|
|
snprintf (str_args, sizeof (str_args), "command,%s", name);
|
|
infolist = hook_infolist_get (NULL, "hook", NULL, str_args);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("command", infolist_string (infolist, "type"));
|
|
STRCMP_EQUAL(name, infolist_string (infolist, "command"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* all completion hooks */
|
|
infolist = hook_infolist_get (NULL, "hook", NULL, "completion");
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("completion", infolist_string (infolist, "type"));
|
|
CHECK(infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
free (name);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_hotlist_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistHotlistCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
|
|
gui_buffer_set (gui_buffers, "hotlist", "2");
|
|
|
|
/* hotlist (one buffer) */
|
|
infolist = hook_infolist_get (NULL, "hotlist", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
LONGS_EQUAL(2, infolist_integer (infolist, "priority"));
|
|
STRCMP_EQUAL("core", infolist_string (infolist, "plugin_name"));
|
|
STRCMP_EQUAL("weechat", infolist_string (infolist, "buffer_name"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
gui_buffer_set (gui_buffers, "hotlist", "-1");
|
|
|
|
/* hotlist (empty) */
|
|
infolist = hook_infolist_get (NULL, "hotlist", NULL, NULL);
|
|
CHECK(infolist);
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_key_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistKeyCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
|
|
/* invalid key context */
|
|
POINTERS_EQUAL(NULL, hook_infolist_get (NULL, "key", NULL, "invalid_context"));
|
|
|
|
/* keys */
|
|
infolist = hook_infolist_get (NULL, "key", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("backspace", infolist_string (infolist, "key"));
|
|
CHECK(infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* keys of context "search" */
|
|
infolist = hook_infolist_get (NULL, "key", NULL, "search");
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("ctrl-q", infolist_string (infolist, "key"));
|
|
CHECK(infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_layout_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistLayoutCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
struct t_gui_layout *ptr_layout;
|
|
|
|
ptr_layout = gui_layout_alloc ("test_layout");
|
|
CHECK(ptr_layout);
|
|
gui_layout_add (ptr_layout);
|
|
gui_layout_window_store (ptr_layout);
|
|
|
|
/* layouts */
|
|
infolist = hook_infolist_get (NULL, "layout", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("test_layout", infolist_string (infolist, "name"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
gui_layout_remove (ptr_layout);
|
|
|
|
/* no layouts */
|
|
infolist = hook_infolist_get (NULL, "layout", NULL, NULL);
|
|
CHECK(infolist);
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_nicklist_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistNicklistCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
|
|
/* missing buffer pointer */
|
|
POINTERS_EQUAL(NULL, hook_infolist_get (NULL, "nicklist", NULL, NULL));
|
|
|
|
/* invalid buffer pointer */
|
|
POINTERS_EQUAL(NULL, hook_infolist_get (NULL, "nicklist", (void *)0x1, NULL));
|
|
|
|
/* nicklist */
|
|
infolist = hook_infolist_get (NULL, "nicklist", gui_buffers, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("group", infolist_string (infolist, "type"));
|
|
STRCMP_EQUAL("root", infolist_string (infolist, "name"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_option_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistOptionCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
|
|
/* invalid option name */
|
|
infolist = hook_infolist_get (NULL, "option", NULL, "invalid.name");
|
|
CHECK(infolist);
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* all options */
|
|
infolist = hook_infolist_get (NULL, "option", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("alias", infolist_string (infolist, "config_name"));
|
|
CHECK(infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* option with name */
|
|
infolist = hook_infolist_get (NULL, "option", NULL, "weechat.look.mouse");
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("weechat", infolist_string (infolist, "config_name"));
|
|
STRCMP_EQUAL("weechat.look.mouse", infolist_string (infolist, "full_name"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_plugin_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistPluginCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
struct t_weechat_plugin *ptr_plugin;
|
|
const char *ptr_name;
|
|
char *name;
|
|
|
|
/* invalid plugin pointer */
|
|
POINTERS_EQUAL(NULL, hook_infolist_get (NULL, "plugin", (void *)0x1, NULL));
|
|
|
|
/* all plugins */
|
|
infolist = hook_infolist_get (NULL, "plugin", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
ptr_plugin = (struct t_weechat_plugin *)infolist_pointer (infolist, "pointer");
|
|
CHECK(infolist_integer (infolist, "priority") > 0);
|
|
ptr_name = infolist_string (infolist, "name");
|
|
CHECK(ptr_name);
|
|
name = strdup (ptr_name);
|
|
CHECK(infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one plugin with pointer */
|
|
infolist = hook_infolist_get (NULL, "plugin", ptr_plugin, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL(name, infolist_string (infolist, "name"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one plugin with name */
|
|
infolist = hook_infolist_get (NULL, "plugin", NULL, "spel*");
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("spell", infolist_string (infolist, "name"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
free (name);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_proxy_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistProxyCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
struct t_proxy *ptr_proxy1, *ptr_proxy2;
|
|
|
|
/* invalid proxy pointer */
|
|
POINTERS_EQUAL(NULL, hook_infolist_get (NULL, "proxy", (void *)0x1, NULL));
|
|
|
|
ptr_proxy1 = proxy_new ("proxy1", "http", "off",
|
|
"proxy1.example.com", "8000", "user1", "pass1");
|
|
CHECK(ptr_proxy1);
|
|
ptr_proxy2 = proxy_new ("proxy2", "http", "off",
|
|
"proxy2.example.com", "9000", "user2", "pass2");
|
|
CHECK(ptr_proxy2);
|
|
|
|
/* all proxies */
|
|
infolist = hook_infolist_get (NULL, "proxy", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("proxy1", infolist_string (infolist, "name"));
|
|
CHECK(infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one proxy with pointer */
|
|
infolist = hook_infolist_get (NULL, "proxy", ptr_proxy2, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("proxy2", infolist_string (infolist, "name"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one proxy with name (mask) */
|
|
infolist = hook_infolist_get (NULL, "proxy", NULL, "*xy1");
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("proxy1", infolist_string (infolist, "name"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
proxy_free (ptr_proxy1);
|
|
proxy_free (ptr_proxy2);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_url_options_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistUrlOptionsCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
|
|
/* URL options */
|
|
infolist = hook_infolist_get (NULL, "url_options", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
STRCMP_EQUAL("VERBOSE", infolist_string (infolist, "name"));
|
|
CHECK(infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_infolist_window_cb
|
|
*/
|
|
|
|
TEST(PluginApiInfo, InfolistWindowCb)
|
|
{
|
|
struct t_infolist *infolist;
|
|
|
|
/* invalid window pointer */
|
|
POINTERS_EQUAL(NULL, hook_infolist_get (NULL, "window", (void *)0x1, NULL));
|
|
|
|
/* invalid window number */
|
|
POINTERS_EQUAL(NULL, hook_infolist_get (NULL, "window", NULL, "123"));
|
|
|
|
/* all windows */
|
|
infolist = hook_infolist_get (NULL, "window", NULL, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
POINTERS_EQUAL(gui_buffers, infolist_pointer (infolist, "buffer"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one window with pointer */
|
|
infolist = hook_infolist_get (NULL, "window", gui_windows, NULL);
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
POINTERS_EQUAL(gui_buffers, infolist_pointer (infolist, "buffer"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* current window */
|
|
infolist = hook_infolist_get (NULL, "window", NULL, "current");
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
POINTERS_EQUAL(gui_buffers, infolist_pointer (infolist, "buffer"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
|
|
/* one window with number */
|
|
infolist = hook_infolist_get (NULL, "window", NULL, "1");
|
|
CHECK(infolist);
|
|
CHECK(infolist_next (infolist));
|
|
POINTERS_EQUAL(gui_buffers, infolist_pointer (infolist, "buffer"));
|
|
POINTERS_EQUAL(NULL, infolist_next (infolist));
|
|
infolist_free (infolist);
|
|
}
|
|
|
|
/*
|
|
* Test functions:
|
|
* plugin_api_info_init
|
|
*/
|
|
|
|
TEST(PluginApiInfo, Init)
|
|
{
|
|
/* TODO: write tests */
|
|
}
|