myxce/src/lib/testsuite/test_group.c
2026-02-28 17:55:50 +08:00

276 lines
5.1 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unity.h>
#include "group.h"
#include "utils.h"
#include "xstring.h"
static void test_all(void)
{
var mgr;
xce_group_t* all = NULL;
int rc = 0;
groupmgr_init(&mgr, 16, 16);
all = get_group(mgr, "all");
TEST_ASSERT_TRUE(all != NULL);
rc = is_in_group(all, "rshen");
TEST_ASSERT_TRUE(rc > 0);
destroy(mgr);
}
static void test_empty(void)
{
var mgr;
xce_group_t* empty = NULL;
int rc = 0;
groupmgr_init(&mgr, 16, 16);
empty = get_group(mgr, "empty");
TEST_ASSERT_TRUE(empty != NULL);
rc = is_in_group(empty, "rshen");
TEST_ASSERT_TRUE(rc == 0);
destroy(mgr);
}
static void test_all_1(void)
{
var mgr;
xce_group_config_t gdata = {
.name = "g1",
.members = { .count = 1, .data = (char*[]) { "all" } }
};
xce_group_t* g = NULL;
int rc = 0;
groupmgr_init(&mgr, 16, 16);
g = makeGroup(mgr, &gdata, NULL);
TEST_ASSERT_TRUE(g != NULL);
rc = is_in_group(g, "rshen");
TEST_ASSERT_TRUE(rc > 0);
destroy(mgr);
}
static void test_all_2(void)
{
var mgr;
xce_group_config_t gdata = {
.name = "g1",
.members = { .count = 2, .data = (char*[]) { "g2", "all" } }
};
xce_group_t* g = NULL;
int rc = 0;
groupmgr_init(&mgr, 16, 16);
g = makeGroup(mgr, &gdata, NULL);
TEST_ASSERT_TRUE(g != NULL);
rc = is_in_group(g, "rshen");
TEST_ASSERT_TRUE(rc > 0);
destroy(mgr);
}
static void test_empty_1(void)
{
var mgr;
xce_group_config_t gdata = {
.name = "g1",
.ex_members = { .count = 1, .data = (char*[]) { "all" } }
};
xce_group_t* g = NULL;
int rc = 0;
groupmgr_init(&mgr, 16, 16);
g = makeGroup(mgr, &gdata, NULL);
TEST_ASSERT_TRUE(g != NULL);
rc = is_in_group(g, "rshen");
TEST_ASSERT_TRUE(rc == 0);
destroy(mgr);
}
static void test_empty_2(void)
{
var mgr;
xce_group_config_t gdata = {
.name = "g1",
.members = { .count = 1, .data = (char*[]) { "empty" } }
};
xce_group_t* g = NULL;
int rc = 0;
groupmgr_init(&mgr, 16, 16);
g = makeGroup(mgr, &gdata, NULL);
TEST_ASSERT_TRUE(g != NULL);
rc = is_in_group(g, "rshen");
TEST_ASSERT_TRUE(rc == 0);
destroy(mgr);
}
static void test_include(void)
{
var mgr;
xce_group_config_t gdata = {
.name = "g1",
.members = { .count = 1, .data = (char*[]) { "rshen" } }
};
xce_group_t* g = NULL;
int rc = 0;
groupmgr_init(&mgr, 16, 16);
g = makeGroup(mgr, &gdata, NULL);
TEST_ASSERT_TRUE(g != NULL);
rc = is_in_group(g, "rshen");
TEST_ASSERT_TRUE(rc > 0);
destroy(mgr);
}
static void test_exclude(void)
{
var mgr;
xce_group_config_t gdata = {
.name = "g1",
.members = { .count = 1, .data = (char*[]) { "all" } },
.ex_members = { .count = 1, .data = (char*[]) { "rshen" } }
};
xce_group_t* g = NULL;
int rc = 0;
groupmgr_init(&mgr, 16, 16);
g = makeGroup(mgr, &gdata, NULL);
TEST_ASSERT_TRUE(g != NULL);
rc = is_in_group(g, "rshen");
TEST_ASSERT_TRUE(rc == 0);
destroy(mgr);
}
static void test_nest(void)
{
var mgr;
xce_group_config_t gdata1 = {
.name = "g1",
.members = { .count = 1, .data = (char*[]) { "rshen" } }
};
xce_group_config_t gdata2 = {
.name = "g2",
.members = { .count = 1, .data = (char*[]) { "g1" } }
};
xce_group_t* g = NULL;
int rc = 0;
groupmgr_init(&mgr, 16, 16);
g = makeGroup(mgr, &gdata1, NULL);
TEST_ASSERT_TRUE(g != NULL);
g = makeGroup(mgr, &gdata2, NULL);
TEST_ASSERT_TRUE(g != NULL);
rc = is_in_group(g, "rshen");
TEST_ASSERT_TRUE(rc != 0);
destroy(mgr);
}
static void test_nest2(void)
{
var mgr;
xce_group_config_t gdata1 = {
.name = "g1",
.members = { .count = 1, .data = (char*[]) { "rshen" } }
};
xce_group_config_t gdata2 = {
.name = "g2",
.members = { .count = 1, .data = (char*[]) { "all" } },
.ex_members = { .count = 1, .data = (char*[]) { "g1" } }
};
xce_group_t* g = NULL;
int rc = 0;
groupmgr_init(&mgr, 16, 16);
g = makeGroup(mgr, &gdata1, NULL);
TEST_ASSERT_TRUE(g != NULL);
g = makeGroup(mgr, &gdata2, NULL);
TEST_ASSERT_TRUE(g != NULL);
rc = is_in_group(g, "rshen");
TEST_ASSERT_TRUE(rc == 0);
destroy(mgr);
}
void test_group(void)
{
printf("\n>> group test\n\n");
xstring_table_init(139);
RUN_TEST(test_all);
RUN_TEST(test_empty);
RUN_TEST(test_all_1);
RUN_TEST(test_all_2);
RUN_TEST(test_empty_1);
RUN_TEST(test_empty_2);
RUN_TEST(test_include);
RUN_TEST(test_exclude);
RUN_TEST(test_nest);
RUN_TEST(test_nest2);
xstring_table_fini();
}