mirror of
https://git.jabber.space/devs/cproof.git
synced 2026-07-27 00:56:22 +00:00
Use hashtables for plugin disco features
This commit is contained in:
131
tests/unittests/test_plugins_disco.c
Normal file
131
tests/unittests/test_plugins_disco.c
Normal file
@@ -0,0 +1,131 @@
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
#include <setjmp.h>
|
||||
#include <cmocka.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "plugins/disco.h"
|
||||
|
||||
void
|
||||
returns_empty_list_when_none(void **state)
|
||||
{
|
||||
disco_close();
|
||||
GList *features = disco_get_features();
|
||||
|
||||
assert_int_equal(g_list_length(features), 0);
|
||||
|
||||
g_list_free(features);
|
||||
disco_close();
|
||||
}
|
||||
|
||||
void
|
||||
returns_added_feature(void **state)
|
||||
{
|
||||
disco_close();
|
||||
disco_add_feature("my_plugin", "some:feature:example");
|
||||
|
||||
GList *features = disco_get_features();
|
||||
assert_int_equal(g_list_length(features), 1);
|
||||
char *feature = features->data;
|
||||
assert_string_equal(feature, "some:feature:example");
|
||||
|
||||
g_list_free(features);
|
||||
disco_close();
|
||||
}
|
||||
|
||||
void
|
||||
resets_features_on_close(void **state)
|
||||
{
|
||||
disco_close();
|
||||
disco_add_feature("my_plugin", "some:feature:example");
|
||||
|
||||
GList *features = disco_get_features();
|
||||
assert_int_equal(g_list_length(features), 1);
|
||||
g_list_free(features);
|
||||
|
||||
disco_close();
|
||||
features = disco_get_features();
|
||||
assert_int_equal(g_list_length(features), 0);
|
||||
|
||||
g_list_free(features);
|
||||
disco_close();
|
||||
}
|
||||
|
||||
void
|
||||
returns_all_added_features(void **state)
|
||||
{
|
||||
disco_close();
|
||||
disco_add_feature("first_plugin", "first:feature");
|
||||
disco_add_feature("first_plugin", "second:feature");
|
||||
disco_add_feature("second_plugin", "third:feature");
|
||||
disco_add_feature("third_plugin", "fourth:feature");
|
||||
disco_add_feature("third_plugin", "fifth:feature");
|
||||
|
||||
GList *features = disco_get_features();
|
||||
|
||||
assert_int_equal(g_list_length(features), 5);
|
||||
assert_true(g_list_find_custom(features, "first:feature", g_strcmp0));
|
||||
assert_true(g_list_find_custom(features, "second:feature", g_strcmp0));
|
||||
assert_true(g_list_find_custom(features, "third:feature", g_strcmp0));
|
||||
assert_true(g_list_find_custom(features, "fourth:feature", g_strcmp0));
|
||||
assert_true(g_list_find_custom(features, "fifth:feature", g_strcmp0));
|
||||
|
||||
g_list_free(features);
|
||||
disco_close();
|
||||
}
|
||||
|
||||
void
|
||||
does_not_add_duplicate_feature(void **state)
|
||||
{
|
||||
disco_close();
|
||||
disco_add_feature("my_plugin", "my:feature");
|
||||
disco_add_feature("some_other_plugin", "my:feature");
|
||||
|
||||
GList *features = disco_get_features();
|
||||
assert_int_equal(g_list_length(features), 1);
|
||||
|
||||
g_list_free(features);
|
||||
disco_close();
|
||||
}
|
||||
|
||||
void
|
||||
removes_plugin_features(void **state)
|
||||
{
|
||||
disco_close();
|
||||
disco_add_feature("plugin1", "plugin1:feature1");
|
||||
disco_add_feature("plugin1", "plugin1:feature2");
|
||||
disco_add_feature("plugin2", "plugin2:feature1");
|
||||
|
||||
GList *features = disco_get_features();
|
||||
assert_int_equal(g_list_length(features), 3);
|
||||
g_list_free(features);
|
||||
|
||||
disco_remove_features("plugin1");
|
||||
|
||||
features = disco_get_features();
|
||||
assert_int_equal(g_list_length(features), 1);
|
||||
|
||||
g_list_free(features);
|
||||
disco_close();
|
||||
}
|
||||
|
||||
void
|
||||
does_not_remove_feature_when_more_than_one_reference(void **state)
|
||||
{
|
||||
disco_close();
|
||||
disco_add_feature("plugin1", "feature1");
|
||||
disco_add_feature("plugin1", "feature2");
|
||||
disco_add_feature("plugin2", "feature1");
|
||||
|
||||
GList *features = disco_get_features();
|
||||
assert_int_equal(g_list_length(features), 2);
|
||||
g_list_free(features);
|
||||
|
||||
disco_remove_features("plugin1");
|
||||
|
||||
features = disco_get_features();
|
||||
assert_int_equal(g_list_length(features), 1);
|
||||
|
||||
g_list_free(features);
|
||||
disco_close();
|
||||
}
|
||||
7
tests/unittests/test_plugins_disco.h
Normal file
7
tests/unittests/test_plugins_disco.h
Normal file
@@ -0,0 +1,7 @@
|
||||
void returns_empty_list_when_none(void **state);
|
||||
void returns_added_feature(void **state);
|
||||
void resets_features_on_close(void **state);
|
||||
void returns_all_added_features(void **state);
|
||||
void does_not_add_duplicate_feature(void **state);
|
||||
void removes_plugin_features(void **state);
|
||||
void does_not_remove_feature_when_more_than_one_reference(void **state);
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "test_cmd_disconnect.h"
|
||||
#include "test_form.h"
|
||||
#include "test_callbacks.h"
|
||||
#include "test_plugins_disco.h"
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
const UnitTest all_tests[] = {
|
||||
@@ -587,6 +588,14 @@ int main(int argc, char* argv[]) {
|
||||
|
||||
unit_test(returns_no_commands),
|
||||
unit_test(returns_commands),
|
||||
|
||||
unit_test(returns_empty_list_when_none),
|
||||
unit_test(returns_added_feature),
|
||||
unit_test(resets_features_on_close),
|
||||
unit_test(returns_all_added_features),
|
||||
unit_test(does_not_add_duplicate_feature),
|
||||
unit_test(removes_plugin_features),
|
||||
unit_test(does_not_remove_feature_when_more_than_one_reference),
|
||||
};
|
||||
|
||||
return run_tests(all_tests);
|
||||
|
||||
Reference in New Issue
Block a user