First git commit.
This commit is contained in:
89
autotest/test_eventqueue.tcc
Normal file
89
autotest/test_eventqueue.tcc
Normal file
@@ -0,0 +1,89 @@
|
||||
#include <uhub.h>
|
||||
|
||||
static struct event_queue* eq;
|
||||
static int eq_val;
|
||||
struct event* libevent_handle;
|
||||
|
||||
static void eq_callback(void* callback_data, struct event_data* event_data)
|
||||
{
|
||||
eq_val += event_data->id;
|
||||
}
|
||||
|
||||
EXO_TEST(eventqueue_init_1, {
|
||||
eq = 0;
|
||||
eq_val = 0;
|
||||
return event_queue_initialize(&eq, eq_callback, &eq_val) == 0 && event_queue_size(eq) == 0;
|
||||
});
|
||||
|
||||
EXO_TEST(eventqueue_init_2, {
|
||||
/* hack */
|
||||
libevent_handle = eq->event;
|
||||
eq->event = 0;
|
||||
return eq->callback_data == &eq_val && eq->callback == eq_callback && eq->q1 && eq->q2 && !eq->locked;
|
||||
});
|
||||
|
||||
EXO_TEST(eventqueue_post_1, {
|
||||
struct event_data message;
|
||||
message.id = 0x1001;
|
||||
message.ptr = &message;
|
||||
message.flags = message.id * 2;
|
||||
event_queue_post(eq, &message);
|
||||
return event_queue_size(eq) == 1;
|
||||
});
|
||||
|
||||
EXO_TEST(eventqueue_process_1, {
|
||||
event_queue_process(eq);
|
||||
return eq_val == 0x1001;
|
||||
});
|
||||
|
||||
EXO_TEST(eventqueue_size_1, {
|
||||
eq_val = 0;
|
||||
return event_queue_size(eq) == 0;
|
||||
});
|
||||
|
||||
EXO_TEST(eventqueue_post_2, {
|
||||
struct event_data message;
|
||||
message.id = 0x1002;
|
||||
message.ptr = &message;
|
||||
message.flags = message.id * 2;
|
||||
event_queue_post(eq, &message);
|
||||
return event_queue_size(eq) == 1;
|
||||
});
|
||||
|
||||
EXO_TEST(eventqueue_size_2, {
|
||||
eq_val = 0;
|
||||
return event_queue_size(eq) == 1;
|
||||
});
|
||||
|
||||
|
||||
EXO_TEST(eventqueue_post_3, {
|
||||
struct event_data message;
|
||||
message.id = 0x1003;
|
||||
message.ptr = &message;
|
||||
message.flags = message.id * 2;
|
||||
event_queue_post(eq, &message);
|
||||
return event_queue_size(eq) == 2;
|
||||
});
|
||||
|
||||
EXO_TEST(eventqueue_size_3, {
|
||||
eq_val = 0;
|
||||
return event_queue_size(eq) == 2;
|
||||
});
|
||||
|
||||
EXO_TEST(eventqueue_process_2, {
|
||||
event_queue_process(eq);
|
||||
return eq_val == 0x2005;
|
||||
});
|
||||
|
||||
EXO_TEST(eventqueue_size_4, {
|
||||
eq_val = 0;
|
||||
return event_queue_size(eq) == 0;
|
||||
});
|
||||
|
||||
EXO_TEST(eventqueue_shutdown_1, {
|
||||
eq->event = libevent_handle;
|
||||
event_queue_shutdown(eq);
|
||||
return 1;
|
||||
});
|
||||
|
||||
|
||||
71
autotest/test_hub.tcc
Normal file
71
autotest/test_hub.tcc
Normal file
@@ -0,0 +1,71 @@
|
||||
#include <uhub.h>
|
||||
|
||||
static struct hub_config g_config;
|
||||
static struct acl_handle g_acl;
|
||||
static struct hub_info* g_hub;
|
||||
|
||||
/*
|
||||
static void create_test_user()
|
||||
{
|
||||
if (g_user)
|
||||
return;
|
||||
|
||||
g_user = (struct user*) malloc(sizeof(struct user));
|
||||
memset(g_user, 0, sizeof(struct user));
|
||||
memcpy(g_user->id.nick, "exotic-tester", 13);
|
||||
g_user->sid = 1;
|
||||
}
|
||||
*/
|
||||
|
||||
EXO_TEST(hub_net_startup, {
|
||||
return (net_initialize() != -1);
|
||||
});
|
||||
|
||||
EXO_TEST(hub_config_initialize, {
|
||||
config_defaults(&g_config);
|
||||
return 1;
|
||||
});
|
||||
|
||||
EXO_TEST(hub_acl_initialize, {
|
||||
return (acl_initialize(&g_config, &g_acl) != -1);
|
||||
});
|
||||
|
||||
EXO_TEST(hub_service_initialize, {
|
||||
g_hub = hub_start_service(&g_config);
|
||||
return g_hub ? 1 : 0;
|
||||
});
|
||||
|
||||
EXO_TEST(hub_variables_startup, {
|
||||
hub_set_variables(g_hub, &g_acl);
|
||||
return 1;
|
||||
});
|
||||
|
||||
/*** HUB IS OPERATIONAL HERE! ***/
|
||||
|
||||
EXO_TEST(hub_variables_shutdown, {
|
||||
hub_free_variables(g_hub);
|
||||
return 1;
|
||||
});
|
||||
|
||||
EXO_TEST(hub_acl_shutdown, {
|
||||
acl_shutdown(&g_acl);
|
||||
return 1;
|
||||
});
|
||||
|
||||
EXO_TEST(hub_config_shutdown, {
|
||||
free_config(&g_config);
|
||||
return 1;
|
||||
});
|
||||
|
||||
EXO_TEST(hub_service_shutdown, {
|
||||
if (g_hub)
|
||||
{
|
||||
hub_shutdown_service(g_hub);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
|
||||
EXO_TEST(hub_net_shutdown, {
|
||||
return (net_shutdown() != -1);
|
||||
});
|
||||
155
autotest/test_inf.tcc
Normal file
155
autotest/test_inf.tcc
Normal file
@@ -0,0 +1,155 @@
|
||||
#include <uhub.h>
|
||||
|
||||
#define USER_CID "GNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI"
|
||||
#define USER_PID "3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y"
|
||||
#define USER_NICK "Friend"
|
||||
#define USER_SID "AAAB"
|
||||
|
||||
static struct user* inf_user = 0;
|
||||
static struct hub_info* inf_hub = 0;
|
||||
|
||||
extern int hub_handle_info_login(struct user* user, struct adc_message* cmd);
|
||||
|
||||
static void inf_create_hub()
|
||||
{
|
||||
inf_hub = (struct hub_info*) hub_malloc_zero(sizeof(struct hub_info));
|
||||
inf_hub->users = (struct user_manager*) hub_malloc_zero(sizeof(struct user_manager));
|
||||
inf_hub->users->list = list_create();
|
||||
inf_hub->users->free_sid = 1;
|
||||
|
||||
inf_hub->acl = (struct acl_handle*) hub_malloc_zero(sizeof(struct acl_handle));
|
||||
inf_hub->config = (struct hub_config*) hub_malloc_zero(sizeof(struct hub_config));
|
||||
|
||||
config_defaults(inf_hub->config);
|
||||
acl_initialize(inf_hub->config, inf_hub->acl);
|
||||
}
|
||||
|
||||
static void inf_destroy_hub()
|
||||
{
|
||||
/* FIXME */
|
||||
}
|
||||
|
||||
|
||||
static void inf_create_user()
|
||||
{
|
||||
if (inf_user) return;
|
||||
inf_user = (struct user*) hub_malloc_zero(sizeof(struct user));
|
||||
inf_user->id.sid = 1;
|
||||
inf_user->sd = -1;
|
||||
inf_user->hub = inf_hub;
|
||||
inf_user->limits.upload_slots = 1;
|
||||
}
|
||||
|
||||
static void inf_destroy_user()
|
||||
{
|
||||
if (!inf_user) return;
|
||||
hub_free(inf_user);
|
||||
inf_user = 0;
|
||||
}
|
||||
|
||||
EXO_TEST(inf_create_setup,
|
||||
{
|
||||
inf_create_hub();
|
||||
inf_create_user();
|
||||
return (inf_user && inf_hub);
|
||||
});
|
||||
|
||||
|
||||
|
||||
#define CHECK_INF(MSG, EXPECT) \
|
||||
struct adc_message* msg = adc_msg_parse_verify(inf_user, MSG, strlen(MSG)); \
|
||||
int ok = hub_handle_info_login(inf_user, msg); \
|
||||
adc_msg_free(msg); \
|
||||
if (ok != EXPECT) \
|
||||
printf("Expected %d, got %d\n", EXPECT, ok); \
|
||||
return ok == EXPECT;
|
||||
|
||||
|
||||
EXO_TEST(inf_ok_1, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", 0); });
|
||||
|
||||
/* check CID abuse */
|
||||
EXO_TEST(inf_cid_1, { CHECK_INF("BINF AAAB NIFriend PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_cid_missing); });
|
||||
EXO_TEST(inf_cid_2, { CHECK_INF("BINF AAAB NIFriend IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_cid_invalid); });
|
||||
EXO_TEST(inf_cid_3, { CHECK_INF("BINF AAAB NIFriend IDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_cid_invalid); });
|
||||
EXO_TEST(inf_cid_4, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2R PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_cid_invalid); }); /* cid 1 byte short */
|
||||
EXO_TEST(inf_cid_5, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RX PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_cid_invalid); }); /* cid 1 byte longer */
|
||||
EXO_TEST(inf_cid_6, { CHECK_INF("BINF AAAB NIFriend IDA PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_cid_invalid); });
|
||||
EXO_TEST(inf_cid_7, { CHECK_INF("BINF AAAB NIFriend IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_cid_invalid); }); /* multi */
|
||||
EXO_TEST(inf_cid_8, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n", status_msg_inf_error_cid_invalid); });
|
||||
EXO_TEST(inf_cid_9, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI\n", status_msg_inf_error_cid_invalid); });
|
||||
|
||||
/* equivalent to the pid versions */
|
||||
EXO_TEST(inf_pid_1, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI\n", status_msg_inf_error_pid_missing); }); /* pid missing */
|
||||
EXO_TEST(inf_pid_2, { CHECK_INF("BINF AAAB NIFriend ID3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y PDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n", status_msg_inf_error_cid_invalid); }); /* variant of inf_cid_2 */
|
||||
EXO_TEST(inf_pid_3, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n", status_msg_inf_error_pid_invalid); }); /* pid invalid */
|
||||
EXO_TEST(inf_pid_4, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7\n", status_msg_inf_error_pid_invalid); }); /* pid 1 byte short */
|
||||
EXO_TEST(inf_pid_5, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7YX\n", status_msg_inf_error_pid_invalid); }); /* pid 1 byte longer */
|
||||
EXO_TEST(inf_pid_6, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PDA\n", status_msg_inf_error_pid_invalid); }); /* very short pid */
|
||||
EXO_TEST(inf_pid_7, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y PDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n", status_msg_inf_error_pid_invalid); });
|
||||
EXO_TEST(inf_pid_8, { CHECK_INF("BINF AAAB NIFriend PDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_pid_invalid); });
|
||||
EXO_TEST(inf_pid_9, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_pid_invalid); });
|
||||
|
||||
/* check nickname abuse */
|
||||
EXO_TEST(inf_nick_01, { CHECK_INF("BINF AAAB IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_nick_missing); });
|
||||
EXO_TEST(inf_nick_02, { CHECK_INF("BINF AAAB NI IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_nick_short); });
|
||||
EXO_TEST(inf_nick_03, { CHECK_INF("BINF AAAB NIa IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_nick_short); });
|
||||
EXO_TEST(inf_nick_04, { CHECK_INF("BINF AAAB NIabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_nick_long); });
|
||||
EXO_TEST(inf_nick_05, { CHECK_INF("BINF AAAB NI\\sabc IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_nick_spaces); });
|
||||
EXO_TEST(inf_nick_06, { CHECK_INF("BINF AAAB NIa\\sc IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", 0); });
|
||||
EXO_TEST(inf_nick_07, { CHECK_INF("BINF AAAB NIa\tc IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_nick_bad_chars); });
|
||||
EXO_TEST(inf_nick_08, { CHECK_INF("BINF AAAB NIa\\nc IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_nick_bad_chars); });
|
||||
EXO_TEST(inf_nick_09, { CHECK_INF("BINF AAAB NIabc NIdef IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n", status_msg_inf_error_nick_multiple); });
|
||||
EXO_TEST(inf_nick_10, {
|
||||
const char* line = "BINF AAAB IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y\n";
|
||||
char nick[10];
|
||||
nick[0] = 0xf7; nick[1] = 0x80; nick[2] = 0x7f; nick[3] = 0x81; nick[4] = 0x98; nick[5] = 0x00;
|
||||
struct adc_message* msg = adc_msg_parse_verify(inf_user, line, strlen(line));
|
||||
|
||||
adc_msg_add_named_argument(msg, "NI", nick);
|
||||
int ok = hub_handle_info_login(inf_user, msg);
|
||||
adc_msg_free(msg);
|
||||
if (ok != status_msg_inf_error_nick_not_utf8)
|
||||
printf("Expected %d, got %d\n", status_msg_inf_error_nick_not_utf8, ok);
|
||||
return ok == status_msg_inf_error_nick_not_utf8;
|
||||
});
|
||||
|
||||
/* check limits for slots and share */
|
||||
EXO_TEST(inf_limits_1, { inf_hub->config->limit_min_slots = 1; CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y SL0\n", status_msg_user_slots_low); });
|
||||
EXO_TEST(inf_limits_2, { inf_hub->config->limit_max_slots = 5; CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y SL99\n", status_msg_user_slots_high); });
|
||||
EXO_TEST(inf_limits_3, { inf_hub->config->limit_min_share = 100; CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y SS104857599\n", status_msg_user_share_size_low); });
|
||||
EXO_TEST(inf_limits_4, { inf_hub->config->limit_max_share = 500; CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y SS524288001\n", status_msg_user_share_size_high); });
|
||||
|
||||
/* setup for check limits for hubs */
|
||||
EXO_TEST(inf_limit_hubs_setup,
|
||||
{
|
||||
inf_hub->config->limit_min_slots = 0;
|
||||
inf_hub->config->limit_max_slots = 0;
|
||||
inf_hub->config->limit_max_share = 0;
|
||||
inf_hub->config->limit_min_share = 0;
|
||||
inf_hub->config->limit_max_hubs_user = 10;
|
||||
inf_hub->config->limit_max_hubs_reg = 10;
|
||||
inf_hub->config->limit_max_hubs_op = 10;
|
||||
inf_hub->config->limit_min_hubs_user = 2;
|
||||
inf_hub->config->limit_min_hubs_reg = 2;
|
||||
inf_hub->config->limit_min_hubs_op = 2;
|
||||
inf_hub->config->limit_max_hubs = 25;
|
||||
|
||||
return 1;
|
||||
} );
|
||||
|
||||
|
||||
EXO_TEST(inf_limit_hubs_1, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y HN15\n", status_msg_user_hub_limit_high); });
|
||||
EXO_TEST(inf_limit_hubs_2, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y HN1\n", status_msg_user_hub_limit_low); });
|
||||
EXO_TEST(inf_limit_hubs_3, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y HO15\n", status_msg_user_hub_limit_high); });
|
||||
EXO_TEST(inf_limit_hubs_4, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y HO1\n", status_msg_user_hub_limit_low); });
|
||||
EXO_TEST(inf_limit_hubs_5, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y HR15\n", status_msg_user_hub_limit_high); });
|
||||
EXO_TEST(inf_limit_hubs_6, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y HR1\n", status_msg_user_hub_limit_low); });
|
||||
EXO_TEST(inf_limit_hubs_7, { CHECK_INF("BINF AAAB NIFriend IDGNSSMURMD7K466NGZIHU65TP3S3UZSQ6MN5B2RI PD3A4545WFVGZLSGUXZLG7OS6ULQUVG3HM2T63I7Y HN15 HR15 HO15\n", status_msg_user_hub_limit_high); });
|
||||
|
||||
|
||||
EXO_TEST(inf_destroy_setup,
|
||||
{
|
||||
inf_destroy_user();
|
||||
inf_destroy_hub();
|
||||
return 1;
|
||||
});
|
||||
599
autotest/test_ipfilter.tcc
Normal file
599
autotest/test_ipfilter.tcc
Normal file
@@ -0,0 +1,599 @@
|
||||
#include <uhub.h>
|
||||
|
||||
static int ipv6 = 0;
|
||||
|
||||
static struct ip_addr_encap ip4_a;
|
||||
static struct ip_addr_encap ip4_b;
|
||||
static struct ip_addr_encap ip4_c;
|
||||
static struct ip_addr_encap ip6_a;
|
||||
static struct ip_addr_encap ip6_b;
|
||||
static struct ip_addr_encap ip6_c;
|
||||
static struct ip_addr_encap mask;
|
||||
static struct ip_ban_record ban6;
|
||||
static struct ip_ban_record ban4;
|
||||
|
||||
EXO_TEST(prepare_network, {
|
||||
return net_initialize() == 0;
|
||||
});
|
||||
|
||||
EXO_TEST(check_ipv6, {
|
||||
ipv6 = net_is_ipv6_supported();
|
||||
return ipv6 != -1;
|
||||
});
|
||||
|
||||
EXO_TEST(create_addresses_1, {
|
||||
return
|
||||
ip_convert_to_binary("192.168.0.0", &ip4_a) &&
|
||||
ip_convert_to_binary("192.168.255.255", &ip4_b) &&
|
||||
ip_convert_to_binary("192.168.0.1", &ip4_c);
|
||||
});
|
||||
|
||||
EXO_TEST(create_addresses_2, {
|
||||
return
|
||||
ip_convert_to_binary("2001::201:2ff:fefa:0", &ip6_a) &&
|
||||
ip_convert_to_binary("2001::201:2ff:fefa:ffff", &ip6_b) &&
|
||||
ip_convert_to_binary("2001::201:2ff:fefa:fffe", &ip6_c);
|
||||
});
|
||||
|
||||
EXO_TEST(ip_is_valid_ipv4_1, {
|
||||
return ip_is_valid_ipv4("127.0.0.1");
|
||||
});
|
||||
|
||||
EXO_TEST(ip_is_valid_ipv4_2, {
|
||||
return ip_is_valid_ipv4("10.18.1.178");
|
||||
});
|
||||
|
||||
EXO_TEST(ip_is_valid_ipv4_3, {
|
||||
return ip_is_valid_ipv4("10.18.1.178");
|
||||
});
|
||||
|
||||
EXO_TEST(ip_is_valid_ipv4_4, {
|
||||
return ip_is_valid_ipv4("224.0.0.1");
|
||||
});
|
||||
|
||||
EXO_TEST(ip_is_valid_ipv4_5, {
|
||||
return !ip_is_valid_ipv4("224.0.0.");
|
||||
});
|
||||
|
||||
EXO_TEST(ip_is_valid_ipv4_6, {
|
||||
return !ip_is_valid_ipv4("invalid");
|
||||
});
|
||||
|
||||
EXO_TEST(ip_is_valid_ipv4_7, {
|
||||
return !ip_is_valid_ipv4("localhost");
|
||||
});
|
||||
|
||||
EXO_TEST(ip_is_valid_ipv4_8, {
|
||||
return !ip_is_valid_ipv4("123.45.67.890");
|
||||
});
|
||||
|
||||
EXO_TEST(ip_is_valid_ipv4_9, {
|
||||
return !ip_is_valid_ipv4("777.777.777.777");
|
||||
});
|
||||
|
||||
EXO_TEST(ip_is_valid_ipv6_1, {
|
||||
if (!ipv6) return 1;
|
||||
return ip_is_valid_ipv6("::");
|
||||
});
|
||||
|
||||
EXO_TEST(ip_is_valid_ipv6_2, {
|
||||
if (!ipv6) return 1;
|
||||
return ip_is_valid_ipv6("::1");
|
||||
});
|
||||
|
||||
EXO_TEST(ip_is_valid_ipv6_3, {
|
||||
if (!ipv6) return 1;
|
||||
return ip_is_valid_ipv6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff");
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_compare_1, {
|
||||
return ip_compare(&ip4_a, &ip4_b) < 0;
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_compare_2, {
|
||||
return ip_compare(&ip4_a, &ip4_c) < 0;
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_compare_3, {
|
||||
return ip_compare(&ip4_b, &ip4_c) > 0;
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_compare_4, {
|
||||
return ip_compare(&ip4_b, &ip4_a) > 0;
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_compare_5, {
|
||||
return ip_compare(&ip4_c, &ip4_a) > 0;
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_compare_6, {
|
||||
if (!ipv6) return 1;
|
||||
return ip_compare(&ip4_c, &ip4_c) == 0;
|
||||
});
|
||||
|
||||
EXO_TEST(ip6_compare_1, {
|
||||
if (!ipv6) return 1;
|
||||
return ip_compare(&ip6_a, &ip6_b) < 0;
|
||||
});
|
||||
|
||||
EXO_TEST(ip6_compare_2, {
|
||||
if (!ipv6) return 1;
|
||||
return ip_compare(&ip6_a, &ip6_c) < 0;
|
||||
});
|
||||
|
||||
EXO_TEST(ip6_compare_3, {
|
||||
if (!ipv6) return 1;
|
||||
return ip_compare(&ip6_b, &ip6_c) > 0;
|
||||
});
|
||||
|
||||
EXO_TEST(ip6_compare_4, {
|
||||
if (!ipv6) return 1;
|
||||
return ip_compare(&ip6_b, &ip6_a) > 0;
|
||||
});
|
||||
|
||||
EXO_TEST(ip6_compare_5, {
|
||||
if (!ipv6) return 1;
|
||||
return ip_compare(&ip6_c, &ip6_a) > 0;
|
||||
});
|
||||
|
||||
EXO_TEST(ip6_compare_6, {
|
||||
if (!ipv6) return 1;
|
||||
return ip_compare(&ip6_c, &ip6_c) == 0;
|
||||
});
|
||||
|
||||
static int compare_str(const char* s1, const char* s2)
|
||||
{
|
||||
int ok = strcmp(s1, s2);
|
||||
#ifdef DEBUG_TESTS
|
||||
if (ok)
|
||||
{
|
||||
printf("compare_str fail: s1='%s', s2='%s'\n", s1, s2);
|
||||
}
|
||||
#endif
|
||||
return ok;
|
||||
}
|
||||
|
||||
#define LMASK4(bits) !ip_mask_create_left (AF_INET, bits, &mask)
|
||||
#define LMASK6(bits) (ipv6 ? !ip_mask_create_left (AF_INET6, bits, &mask) : 1)
|
||||
#define RMASK4(bits) !ip_mask_create_right(AF_INET, bits, &mask)
|
||||
#define RMASK6(bits) (ipv6 ? !ip_mask_create_right(AF_INET6, bits, &mask) : 1)
|
||||
#define CHECK4(expect) !compare_str(ip_convert_to_string(&mask), expect)
|
||||
#define CHECK6(expect) (ipv6 ? !compare_str(ip_convert_to_string(&mask), expect) : 1)
|
||||
|
||||
/* Check IPv4 masks */
|
||||
EXO_TEST(ipv4_lmask_create_0, { return LMASK4( 0) && CHECK4("0.0.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_1, { return LMASK4( 1) && CHECK4("128.0.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_2, { return LMASK4( 2) && CHECK4("192.0.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_3, { return LMASK4( 3) && CHECK4("224.0.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_4, { return LMASK4( 4) && CHECK4("240.0.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_5, { return LMASK4( 5) && CHECK4("248.0.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_6, { return LMASK4( 6) && CHECK4("252.0.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_7, { return LMASK4( 7) && CHECK4("254.0.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_8, { return LMASK4( 8) && CHECK4("255.0.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_9, { return LMASK4( 9) && CHECK4("255.128.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_10, { return LMASK4(10) && CHECK4("255.192.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_11, { return LMASK4(11) && CHECK4("255.224.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_12, { return LMASK4(12) && CHECK4("255.240.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_13, { return LMASK4(13) && CHECK4("255.248.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_14, { return LMASK4(14) && CHECK4("255.252.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_15, { return LMASK4(15) && CHECK4("255.254.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_16, { return LMASK4(16) && CHECK4("255.255.0.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_17, { return LMASK4(17) && CHECK4("255.255.128.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_18, { return LMASK4(18) && CHECK4("255.255.192.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_19, { return LMASK4(19) && CHECK4("255.255.224.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_20, { return LMASK4(20) && CHECK4("255.255.240.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_21, { return LMASK4(21) && CHECK4("255.255.248.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_22, { return LMASK4(22) && CHECK4("255.255.252.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_23, { return LMASK4(23) && CHECK4("255.255.254.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_24, { return LMASK4(24) && CHECK4("255.255.255.0"); });
|
||||
EXO_TEST(ipv4_lmask_create_25, { return LMASK4(25) && CHECK4("255.255.255.128"); });
|
||||
EXO_TEST(ipv4_lmask_create_26, { return LMASK4(26) && CHECK4("255.255.255.192"); });
|
||||
EXO_TEST(ipv4_lmask_create_27, { return LMASK4(27) && CHECK4("255.255.255.224"); });
|
||||
EXO_TEST(ipv4_lmask_create_28, { return LMASK4(28) && CHECK4("255.255.255.240"); });
|
||||
EXO_TEST(ipv4_lmask_create_29, { return LMASK4(29) && CHECK4("255.255.255.248"); });
|
||||
EXO_TEST(ipv4_lmask_create_30, { return LMASK4(30) && CHECK4("255.255.255.252"); });
|
||||
EXO_TEST(ipv4_lmask_create_31, { return LMASK4(31) && CHECK4("255.255.255.254"); });
|
||||
EXO_TEST(ipv4_lmask_create_32, { return LMASK4(32) && CHECK4("255.255.255.255"); });
|
||||
|
||||
/* Check IPv4 right to left mask */
|
||||
EXO_TEST(ipv4_rmask_create_0, { return RMASK4( 0) && CHECK4("0.0.0.0"); });
|
||||
EXO_TEST(ipv4_rmask_create_1, { return RMASK4( 1) && CHECK4("0.0.0.1"); });
|
||||
EXO_TEST(ipv4_rmask_create_2, { return RMASK4( 2) && CHECK4("0.0.0.3"); });
|
||||
EXO_TEST(ipv4_rmask_create_3, { return RMASK4( 3) && CHECK4("0.0.0.7"); });
|
||||
EXO_TEST(ipv4_rmask_create_4, { return RMASK4( 4) && CHECK4("0.0.0.15"); });
|
||||
EXO_TEST(ipv4_rmask_create_5, { return RMASK4( 5) && CHECK4("0.0.0.31"); });
|
||||
EXO_TEST(ipv4_rmask_create_6, { return RMASK4( 6) && CHECK4("0.0.0.63"); });
|
||||
EXO_TEST(ipv4_rmask_create_7, { return RMASK4( 7) && CHECK4("0.0.0.127"); });
|
||||
EXO_TEST(ipv4_rmask_create_8, { return RMASK4( 8) && CHECK4("0.0.0.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_9, { return RMASK4( 9) && CHECK4("0.0.1.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_10, { return RMASK4(10) && CHECK4("0.0.3.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_11, { return RMASK4(11) && CHECK4("0.0.7.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_12, { return RMASK4(12) && CHECK4("0.0.15.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_13, { return RMASK4(13) && CHECK4("0.0.31.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_14, { return RMASK4(14) && CHECK4("0.0.63.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_15, { return RMASK4(15) && CHECK4("0.0.127.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_16, { return RMASK4(16) && CHECK4("0.0.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_17, { return RMASK4(17) && CHECK4("0.1.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_18, { return RMASK4(18) && CHECK4("0.3.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_19, { return RMASK4(19) && CHECK4("0.7.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_20, { return RMASK4(20) && CHECK4("0.15.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_21, { return RMASK4(21) && CHECK4("0.31.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_22, { return RMASK4(22) && CHECK4("0.63.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_23, { return RMASK4(23) && CHECK4("0.127.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_24, { return RMASK4(24) && CHECK4("0.255.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_25, { return RMASK4(25) && CHECK4("1.255.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_26, { return RMASK4(26) && CHECK4("3.255.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_27, { return RMASK4(27) && CHECK4("7.255.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_28, { return RMASK4(28) && CHECK4("15.255.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_29, { return RMASK4(29) && CHECK4("31.255.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_30, { return RMASK4(30) && CHECK4("63.255.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_31, { return RMASK4(31) && CHECK4("127.255.255.255"); });
|
||||
EXO_TEST(ipv4_rmask_create_32, { return RMASK4(32) && CHECK4("255.255.255.255"); });
|
||||
|
||||
|
||||
/* Check IPv6 masks */
|
||||
EXO_TEST(ip6_lmask_create_0, { return LMASK6( 0) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_lmask_create_1, { return LMASK6( 1) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); });
|
||||
EXO_TEST(ip6_lmask_create_2, { return LMASK6( 2) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); });
|
||||
EXO_TEST(ip6_lmask_create_3, { return LMASK6( 3) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); });
|
||||
EXO_TEST(ip6_lmask_create_4, { return LMASK6( 4) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); });
|
||||
EXO_TEST(ip6_lmask_create_5, { return LMASK6( 5) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); });
|
||||
EXO_TEST(ip6_lmask_create_6, { return LMASK6( 6) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); });
|
||||
EXO_TEST(ip6_lmask_create_7, { return LMASK6( 7) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); });
|
||||
EXO_TEST(ip6_lmask_create_8, { return LMASK6( 8) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); });
|
||||
EXO_TEST(ip6_lmask_create_9, { return LMASK6( 9) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); });
|
||||
EXO_TEST(ip6_lmask_create_10, { return LMASK6( 10) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); });
|
||||
EXO_TEST(ip6_lmask_create_11, { return LMASK6( 11) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); });
|
||||
EXO_TEST(ip6_lmask_create_12, { return LMASK6( 12) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); });
|
||||
EXO_TEST(ip6_lmask_create_13, { return LMASK6( 13) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); });
|
||||
EXO_TEST(ip6_lmask_create_14, { return LMASK6( 14) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); });
|
||||
EXO_TEST(ip6_lmask_create_15, { return LMASK6( 15) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); });
|
||||
EXO_TEST(ip6_lmask_create_16, { return LMASK6( 16) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff::")); });
|
||||
EXO_TEST(ip6_lmask_create_17, { return LMASK6( 17) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:fffe::")); });
|
||||
EXO_TEST(ip6_lmask_create_18, { return LMASK6( 18) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:fffc::")); });
|
||||
EXO_TEST(ip6_lmask_create_19, { return LMASK6( 19) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:fff8::")); });
|
||||
EXO_TEST(ip6_lmask_create_20, { return LMASK6( 20) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:fff0::")); });
|
||||
EXO_TEST(ip6_lmask_create_21, { return LMASK6( 21) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffe0:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffe0::")); });
|
||||
EXO_TEST(ip6_lmask_create_22, { return LMASK6( 22) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffc0:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffc0::")); });
|
||||
EXO_TEST(ip6_lmask_create_23, { return LMASK6( 23) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ff80:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ff80::")); });
|
||||
EXO_TEST(ip6_lmask_create_24, { return LMASK6( 24) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ff00:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ff00::")); });
|
||||
EXO_TEST(ip6_lmask_create_25, { return LMASK6( 25) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:fe00:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:fe00::")); });
|
||||
EXO_TEST(ip6_lmask_create_26, { return LMASK6( 26) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:fc00:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:fc00::")); });
|
||||
EXO_TEST(ip6_lmask_create_27, { return LMASK6( 27) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:f800:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:f800::")); });
|
||||
EXO_TEST(ip6_lmask_create_28, { return LMASK6( 28) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:f000:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:f000::")); });
|
||||
EXO_TEST(ip6_lmask_create_29, { return LMASK6( 29) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:e000:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:e000::")); });
|
||||
EXO_TEST(ip6_lmask_create_30, { return LMASK6( 30) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:c000:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:c000::")); });
|
||||
EXO_TEST(ip6_lmask_create_31, { return LMASK6( 31) && (CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:8000:0") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:8000::")); });
|
||||
EXO_TEST(ip6_lmask_create_32, { return LMASK6( 32) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff::"); });
|
||||
EXO_TEST(ip6_lmask_create_33, { return LMASK6( 33) && CHECK6("ffff:ffff:ffff:ffff:ffff:fffe::"); });
|
||||
EXO_TEST(ip6_lmask_create_34, { return LMASK6( 34) && CHECK6("ffff:ffff:ffff:ffff:ffff:fffc::"); });
|
||||
EXO_TEST(ip6_lmask_create_35, { return LMASK6( 35) && CHECK6("ffff:ffff:ffff:ffff:ffff:fff8::"); });
|
||||
EXO_TEST(ip6_lmask_create_36, { return LMASK6( 36) && CHECK6("ffff:ffff:ffff:ffff:ffff:fff0::"); });
|
||||
EXO_TEST(ip6_lmask_create_37, { return LMASK6( 37) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffe0::"); });
|
||||
EXO_TEST(ip6_lmask_create_38, { return LMASK6( 38) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffc0::"); });
|
||||
EXO_TEST(ip6_lmask_create_39, { return LMASK6( 39) && CHECK6("ffff:ffff:ffff:ffff:ffff:ff80::"); });
|
||||
EXO_TEST(ip6_lmask_create_40, { return LMASK6( 40) && CHECK6("ffff:ffff:ffff:ffff:ffff:ff00::"); });
|
||||
EXO_TEST(ip6_lmask_create_41, { return LMASK6( 41) && CHECK6("ffff:ffff:ffff:ffff:ffff:fe00::"); });
|
||||
EXO_TEST(ip6_lmask_create_42, { return LMASK6( 42) && CHECK6("ffff:ffff:ffff:ffff:ffff:fc00::"); });
|
||||
EXO_TEST(ip6_lmask_create_43, { return LMASK6( 43) && CHECK6("ffff:ffff:ffff:ffff:ffff:f800::"); });
|
||||
EXO_TEST(ip6_lmask_create_44, { return LMASK6( 44) && CHECK6("ffff:ffff:ffff:ffff:ffff:f000::"); });
|
||||
EXO_TEST(ip6_lmask_create_45, { return LMASK6( 45) && CHECK6("ffff:ffff:ffff:ffff:ffff:e000::"); });
|
||||
EXO_TEST(ip6_lmask_create_46, { return LMASK6( 46) && CHECK6("ffff:ffff:ffff:ffff:ffff:c000::"); });
|
||||
EXO_TEST(ip6_lmask_create_47, { return LMASK6( 47) && CHECK6("ffff:ffff:ffff:ffff:ffff:8000::"); });
|
||||
EXO_TEST(ip6_lmask_create_48, { return LMASK6( 48) && CHECK6("ffff:ffff:ffff:ffff:ffff::"); });
|
||||
EXO_TEST(ip6_lmask_create_49, { return LMASK6( 49) && CHECK6("ffff:ffff:ffff:ffff:fffe::"); });
|
||||
EXO_TEST(ip6_lmask_create_50, { return LMASK6( 50) && CHECK6("ffff:ffff:ffff:ffff:fffc::"); });
|
||||
EXO_TEST(ip6_lmask_create_51, { return LMASK6( 51) && CHECK6("ffff:ffff:ffff:ffff:fff8::"); });
|
||||
EXO_TEST(ip6_lmask_create_52, { return LMASK6( 52) && CHECK6("ffff:ffff:ffff:ffff:fff0::"); });
|
||||
EXO_TEST(ip6_lmask_create_53, { return LMASK6( 53) && CHECK6("ffff:ffff:ffff:ffff:ffe0::"); });
|
||||
EXO_TEST(ip6_lmask_create_54, { return LMASK6( 54) && CHECK6("ffff:ffff:ffff:ffff:ffc0::"); });
|
||||
EXO_TEST(ip6_lmask_create_55, { return LMASK6( 55) && CHECK6("ffff:ffff:ffff:ffff:ff80::"); });
|
||||
EXO_TEST(ip6_lmask_create_56, { return LMASK6( 56) && CHECK6("ffff:ffff:ffff:ffff:ff00::"); });
|
||||
EXO_TEST(ip6_lmask_create_57, { return LMASK6( 57) && CHECK6("ffff:ffff:ffff:ffff:fe00::"); });
|
||||
EXO_TEST(ip6_lmask_create_58, { return LMASK6( 58) && CHECK6("ffff:ffff:ffff:ffff:fc00::"); });
|
||||
EXO_TEST(ip6_lmask_create_59, { return LMASK6( 59) && CHECK6("ffff:ffff:ffff:ffff:f800::"); });
|
||||
EXO_TEST(ip6_lmask_create_60, { return LMASK6( 60) && CHECK6("ffff:ffff:ffff:ffff:f000::"); });
|
||||
EXO_TEST(ip6_lmask_create_61, { return LMASK6( 61) && CHECK6("ffff:ffff:ffff:ffff:e000::"); });
|
||||
EXO_TEST(ip6_lmask_create_62, { return LMASK6( 62) && CHECK6("ffff:ffff:ffff:ffff:c000::"); });
|
||||
EXO_TEST(ip6_lmask_create_63, { return LMASK6( 63) && CHECK6("ffff:ffff:ffff:ffff:8000::"); });
|
||||
EXO_TEST(ip6_lmask_create_64, { return LMASK6( 64) && CHECK6("ffff:ffff:ffff:ffff::"); });
|
||||
EXO_TEST(ip6_lmask_create_65, { return LMASK6( 65) && CHECK6("ffff:ffff:ffff:fffe::"); });
|
||||
EXO_TEST(ip6_lmask_create_66, { return LMASK6( 66) && CHECK6("ffff:ffff:ffff:fffc::"); });
|
||||
EXO_TEST(ip6_lmask_create_67, { return LMASK6( 67) && CHECK6("ffff:ffff:ffff:fff8::"); });
|
||||
EXO_TEST(ip6_lmask_create_68, { return LMASK6( 68) && CHECK6("ffff:ffff:ffff:fff0::"); });
|
||||
EXO_TEST(ip6_lmask_create_69, { return LMASK6( 69) && CHECK6("ffff:ffff:ffff:ffe0::"); });
|
||||
EXO_TEST(ip6_lmask_create_70, { return LMASK6( 70) && CHECK6("ffff:ffff:ffff:ffc0::"); });
|
||||
EXO_TEST(ip6_lmask_create_71, { return LMASK6( 71) && CHECK6("ffff:ffff:ffff:ff80::"); });
|
||||
EXO_TEST(ip6_lmask_create_72, { return LMASK6( 72) && CHECK6("ffff:ffff:ffff:ff00::"); });
|
||||
EXO_TEST(ip6_lmask_create_73, { return LMASK6( 73) && CHECK6("ffff:ffff:ffff:fe00::"); });
|
||||
EXO_TEST(ip6_lmask_create_74, { return LMASK6( 74) && CHECK6("ffff:ffff:ffff:fc00::"); });
|
||||
EXO_TEST(ip6_lmask_create_75, { return LMASK6( 75) && CHECK6("ffff:ffff:ffff:f800::"); });
|
||||
EXO_TEST(ip6_lmask_create_76, { return LMASK6( 76) && CHECK6("ffff:ffff:ffff:f000::"); });
|
||||
EXO_TEST(ip6_lmask_create_77, { return LMASK6( 77) && CHECK6("ffff:ffff:ffff:e000::"); });
|
||||
EXO_TEST(ip6_lmask_create_78, { return LMASK6( 78) && CHECK6("ffff:ffff:ffff:c000::"); });
|
||||
EXO_TEST(ip6_lmask_create_79, { return LMASK6( 79) && CHECK6("ffff:ffff:ffff:8000::"); });
|
||||
EXO_TEST(ip6_lmask_create_80, { return LMASK6( 80) && CHECK6("ffff:ffff:ffff::"); });
|
||||
EXO_TEST(ip6_lmask_create_81, { return LMASK6( 81) && CHECK6("ffff:ffff:fffe::"); });
|
||||
EXO_TEST(ip6_lmask_create_82, { return LMASK6( 82) && CHECK6("ffff:ffff:fffc::"); });
|
||||
EXO_TEST(ip6_lmask_create_83, { return LMASK6( 83) && CHECK6("ffff:ffff:fff8::"); });
|
||||
EXO_TEST(ip6_lmask_create_84, { return LMASK6( 84) && CHECK6("ffff:ffff:fff0::"); });
|
||||
EXO_TEST(ip6_lmask_create_85, { return LMASK6( 85) && CHECK6("ffff:ffff:ffe0::"); });
|
||||
EXO_TEST(ip6_lmask_create_86, { return LMASK6( 86) && CHECK6("ffff:ffff:ffc0::"); });
|
||||
EXO_TEST(ip6_lmask_create_87, { return LMASK6( 87) && CHECK6("ffff:ffff:ff80::"); });
|
||||
EXO_TEST(ip6_lmask_create_88, { return LMASK6( 88) && CHECK6("ffff:ffff:ff00::"); });
|
||||
EXO_TEST(ip6_lmask_create_89, { return LMASK6( 89) && CHECK6("ffff:ffff:fe00::"); });
|
||||
EXO_TEST(ip6_lmask_create_90, { return LMASK6( 90) && CHECK6("ffff:ffff:fc00::"); });
|
||||
EXO_TEST(ip6_lmask_create_91, { return LMASK6( 91) && CHECK6("ffff:ffff:f800::"); });
|
||||
EXO_TEST(ip6_lmask_create_92, { return LMASK6( 92) && CHECK6("ffff:ffff:f000::"); });
|
||||
EXO_TEST(ip6_lmask_create_93, { return LMASK6( 93) && CHECK6("ffff:ffff:e000::"); });
|
||||
EXO_TEST(ip6_lmask_create_94, { return LMASK6( 94) && CHECK6("ffff:ffff:c000::"); });
|
||||
EXO_TEST(ip6_lmask_create_95, { return LMASK6( 95) && CHECK6("ffff:ffff:8000::"); });
|
||||
EXO_TEST(ip6_lmask_create_96, { return LMASK6( 96) && CHECK6("ffff:ffff::"); });
|
||||
EXO_TEST(ip6_lmask_create_97, { return LMASK6( 97) && CHECK6("ffff:fffe::"); });
|
||||
EXO_TEST(ip6_lmask_create_98, { return LMASK6( 98) && CHECK6("ffff:fffc::"); });
|
||||
EXO_TEST(ip6_lmask_create_99, { return LMASK6( 99) && CHECK6("ffff:fff8::"); });
|
||||
EXO_TEST(ip6_lmask_create_100, { return LMASK6(100) && CHECK6("ffff:fff0::"); });
|
||||
EXO_TEST(ip6_lmask_create_101, { return LMASK6(101) && CHECK6("ffff:ffe0::"); });
|
||||
EXO_TEST(ip6_lmask_create_102, { return LMASK6(102) && CHECK6("ffff:ffc0::"); });
|
||||
EXO_TEST(ip6_lmask_create_103, { return LMASK6(103) && CHECK6("ffff:ff80::"); });
|
||||
EXO_TEST(ip6_lmask_create_104, { return LMASK6(104) && CHECK6("ffff:ff00::"); });
|
||||
EXO_TEST(ip6_lmask_create_105, { return LMASK6(105) && CHECK6("ffff:fe00::"); });
|
||||
EXO_TEST(ip6_lmask_create_106, { return LMASK6(106) && CHECK6("ffff:fc00::"); });
|
||||
EXO_TEST(ip6_lmask_create_107, { return LMASK6(107) && CHECK6("ffff:f800::"); });
|
||||
EXO_TEST(ip6_lmask_create_108, { return LMASK6(108) && CHECK6("ffff:f000::"); });
|
||||
EXO_TEST(ip6_lmask_create_109, { return LMASK6(109) && CHECK6("ffff:e000::"); });
|
||||
EXO_TEST(ip6_lmask_create_110, { return LMASK6(110) && CHECK6("ffff:c000::"); });
|
||||
EXO_TEST(ip6_lmask_create_111, { return LMASK6(111) && CHECK6("ffff:8000::"); });
|
||||
EXO_TEST(ip6_lmask_create_112, { return LMASK6(112) && CHECK6("ffff::"); });
|
||||
EXO_TEST(ip6_lmask_create_113, { return LMASK6(113) && CHECK6("fffe::"); });
|
||||
EXO_TEST(ip6_lmask_create_114, { return LMASK6(114) && CHECK6("fffc::"); });
|
||||
EXO_TEST(ip6_lmask_create_115, { return LMASK6(115) && CHECK6("fff8::"); });
|
||||
EXO_TEST(ip6_lmask_create_116, { return LMASK6(116) && CHECK6("fff0::"); });
|
||||
EXO_TEST(ip6_lmask_create_117, { return LMASK6(117) && CHECK6("ffe0::"); });
|
||||
EXO_TEST(ip6_lmask_create_118, { return LMASK6(118) && CHECK6("ffc0::"); });
|
||||
EXO_TEST(ip6_lmask_create_119, { return LMASK6(119) && CHECK6("ff80::"); });
|
||||
EXO_TEST(ip6_lmask_create_120, { return LMASK6(120) && CHECK6("ff00::"); });
|
||||
EXO_TEST(ip6_lmask_create_121, { return LMASK6(121) && CHECK6("fe00::"); });
|
||||
EXO_TEST(ip6_lmask_create_122, { return LMASK6(122) && CHECK6("fc00::"); });
|
||||
EXO_TEST(ip6_lmask_create_123, { return LMASK6(123) && CHECK6("f800::"); });
|
||||
EXO_TEST(ip6_lmask_create_124, { return LMASK6(124) && CHECK6("f000::"); });
|
||||
EXO_TEST(ip6_lmask_create_125, { return LMASK6(125) && CHECK6("e000::"); });
|
||||
EXO_TEST(ip6_lmask_create_126, { return LMASK6(126) && CHECK6("c000::"); });
|
||||
EXO_TEST(ip6_lmask_create_127, { return LMASK6(127) && CHECK6("8000::"); });
|
||||
EXO_TEST(ip6_lmask_create_128, { return LMASK6(128) && CHECK6("::"); });
|
||||
|
||||
/* Check IPv6 right to left masks */
|
||||
EXO_TEST(ip6_rmask_create_0, { return RMASK6( 0) && CHECK6("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_1, { return RMASK6( 1) && CHECK6("7fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_2, { return RMASK6( 2) && CHECK6("3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_3, { return RMASK6( 3) && CHECK6("1fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_4, { return RMASK6( 4) && CHECK6("fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_5, { return RMASK6( 5) && CHECK6("7ff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_6, { return RMASK6( 6) && CHECK6("3ff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_7, { return RMASK6( 7) && CHECK6("1ff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_8, { return RMASK6( 8) && CHECK6("ff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_9, { return RMASK6( 9) && CHECK6("7f:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_10, { return RMASK6( 10) && CHECK6("3f:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_11, { return RMASK6( 11) && CHECK6("1f:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_12, { return RMASK6( 12) && CHECK6("f:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_13, { return RMASK6( 13) && CHECK6("7:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_14, { return RMASK6( 14) && CHECK6("3:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_15, { return RMASK6( 15) && CHECK6("1:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); });
|
||||
EXO_TEST(ip6_rmask_create_16, { return RMASK6( 16) && (CHECK6("0:ffff:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::ffff:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
EXO_TEST(ip6_rmask_create_17, { return RMASK6( 17) && (CHECK6("0:7fff:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::7fff:ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
EXO_TEST(ip6_rmask_create_18, { return RMASK6( 18) && (CHECK6("0:3fff:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::3fff:ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
EXO_TEST(ip6_rmask_create_19, { return RMASK6( 19) && (CHECK6("0:1fff:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::1fff:ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
EXO_TEST(ip6_rmask_create_20, { return RMASK6( 20) && (CHECK6("0:fff:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::fff:ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
EXO_TEST(ip6_rmask_create_21, { return RMASK6( 21) && (CHECK6("0:7ff:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::7ff:ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
EXO_TEST(ip6_rmask_create_22, { return RMASK6( 22) && (CHECK6("0:3ff:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::3ff:ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
EXO_TEST(ip6_rmask_create_23, { return RMASK6( 23) && (CHECK6("0:1ff:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::1ff:ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
EXO_TEST(ip6_rmask_create_24, { return RMASK6( 24) && (CHECK6("0:ff:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::ff:ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
EXO_TEST(ip6_rmask_create_25, { return RMASK6( 25) && (CHECK6("0:7f:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::7f:ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
EXO_TEST(ip6_rmask_create_26, { return RMASK6( 26) && (CHECK6("0:3f:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::3f:ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
EXO_TEST(ip6_rmask_create_27, { return RMASK6( 27) && (CHECK6("0:1f:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::1f:ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
EXO_TEST(ip6_rmask_create_28, { return RMASK6( 28) && (CHECK6("0:f:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::f:ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
EXO_TEST(ip6_rmask_create_29, { return RMASK6( 29) && (CHECK6("0:7:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::7:ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
EXO_TEST(ip6_rmask_create_30, { return RMASK6( 30) && (CHECK6("0:3:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::3:ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
EXO_TEST(ip6_rmask_create_31, { return RMASK6( 31) && (CHECK6("0:1:ffff:ffff:ffff:ffff:ffff:ffff") || CHECK6("::1:ffff:ffff:ffff:ffff:ffff:ffff")); });
|
||||
|
||||
EXO_TEST(check_ban_setup_1, {
|
||||
return ip_convert_to_binary("2001::201:2ff:fefa:0", &ban6.lo) &&
|
||||
ip_convert_to_binary("2001::201:2ff:fefa:ffff", &ban6.hi) &&
|
||||
ip_convert_to_binary("192.168.0.0", &ban4.lo) &&
|
||||
ip_convert_to_binary("192.168.0.255", &ban4.hi);
|
||||
});
|
||||
|
||||
EXO_TEST(check_ban_ipv4_1, {
|
||||
struct ip_addr_encap addr; ip_convert_to_binary("192.168.0.0", &addr);
|
||||
return acl_check_ip_range(&addr, &ban4);
|
||||
});
|
||||
|
||||
EXO_TEST(check_ban_ipv4_2, {
|
||||
struct ip_addr_encap addr; ip_convert_to_binary("192.168.0.1", &addr);
|
||||
return acl_check_ip_range(&addr, &ban4);
|
||||
});
|
||||
|
||||
EXO_TEST(check_ban_ipv4_3, {
|
||||
struct ip_addr_encap addr; ip_convert_to_binary("192.168.0.255", &addr);
|
||||
return acl_check_ip_range(&addr, &ban4);
|
||||
});
|
||||
|
||||
EXO_TEST(check_ban_ipv4_4, {
|
||||
struct ip_addr_encap addr; ip_convert_to_binary("192.168.1.0", &addr);
|
||||
return !acl_check_ip_range(&addr, &ban4);
|
||||
});
|
||||
|
||||
EXO_TEST(check_ban_ipv4_5, {
|
||||
struct ip_addr_encap addr; ip_convert_to_binary("192.167.255.255", &addr);
|
||||
return !acl_check_ip_range(&addr, &ban4);
|
||||
});
|
||||
|
||||
EXO_TEST(check_ban_ipv6_1, {
|
||||
if (!ipv6) return 1;
|
||||
struct ip_addr_encap addr; ip_convert_to_binary("2001::201:2ff:fefa:0", &addr);
|
||||
return acl_check_ip_range(&addr, &ban6);
|
||||
});
|
||||
|
||||
EXO_TEST(check_ban_ipv6_2, {
|
||||
if (!ipv6) return 1;
|
||||
struct ip_addr_encap addr; ip_convert_to_binary("2001::201:2ff:fefa:1", &addr);
|
||||
return acl_check_ip_range(&addr, &ban6);
|
||||
});
|
||||
|
||||
EXO_TEST(check_ban_ipv6_3, {
|
||||
if (!ipv6) return 1;
|
||||
struct ip_addr_encap addr; ip_convert_to_binary("2001::201:2ff:fefa:fffe", &addr);
|
||||
return acl_check_ip_range(&addr, &ban6);
|
||||
});
|
||||
|
||||
EXO_TEST(check_ban_ipv6_4, {
|
||||
if (!ipv6) return 1;
|
||||
struct ip_addr_encap addr; ip_convert_to_binary("2001::201:2ff:fefa:ffff", &addr);
|
||||
return acl_check_ip_range(&addr, &ban6);
|
||||
});
|
||||
|
||||
EXO_TEST(check_ban_ipv6_5, {
|
||||
if (!ipv6) return 1;
|
||||
struct ip_addr_encap addr; ip_convert_to_binary("2001::201:2ff:fefb:0", &addr);
|
||||
return !acl_check_ip_range(&addr, &ban6);
|
||||
});
|
||||
|
||||
EXO_TEST(check_ban_ipv6_6, {
|
||||
if (!ipv6) return 1;
|
||||
struct ip_addr_encap addr; ip_convert_to_binary("2001::201:2ff:fef9:ffff", &addr);
|
||||
return !acl_check_ip_range(&addr, &ban6);
|
||||
});
|
||||
|
||||
EXO_TEST(check_ban_afmix_1, {
|
||||
if (!ipv6) return 1;
|
||||
struct ip_addr_encap addr; ip_convert_to_binary("2001::201:2ff:fef9:ffff", &addr);
|
||||
return !acl_check_ip_range(&addr, &ban4);
|
||||
});
|
||||
|
||||
EXO_TEST(check_ban_afmix_2, {
|
||||
struct ip_addr_encap addr; ip_convert_to_binary("10.20.30.40", &addr);
|
||||
return !acl_check_ip_range(&addr, &ban6);
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_bitwise_AND_1, {
|
||||
ip_convert_to_binary("255.255.255.255", &ip4_a);
|
||||
ip_convert_to_binary("255.255.255.0", &ip4_b);
|
||||
ip_mask_apply_AND(&ip4_a, &ip4_b, &ip4_c);
|
||||
return !strcmp(ip_convert_to_string(&ip4_c), "255.255.255.0");
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_bitwise_AND_2, {
|
||||
ip_convert_to_binary("192.168.217.113", &ip4_a);
|
||||
ip_convert_to_binary("255.255.255.0", &ip4_b);
|
||||
ip_mask_apply_AND(&ip4_a, &ip4_b, &ip4_c);
|
||||
return !strcmp(ip_convert_to_string(&ip4_c), "192.168.217.0");
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_bitwise_AND_3, {
|
||||
ip_convert_to_binary("192.168.217.113", &ip4_a);
|
||||
ip_convert_to_binary("255.255.0.0", &ip4_b);
|
||||
ip_mask_apply_AND(&ip4_a, &ip4_b, &ip4_c);
|
||||
return !strcmp(ip_convert_to_string(&ip4_c), "192.168.0.0");
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_bitwise_AND_4, {
|
||||
ip_convert_to_binary("192.168.217.113", &ip4_a);
|
||||
ip_convert_to_binary("255.0.0.0", &ip4_b);
|
||||
ip_mask_apply_AND(&ip4_a, &ip4_b, &ip4_c);
|
||||
return !strcmp(ip_convert_to_string(&ip4_c), "192.0.0.0");
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_bitwise_AND_5, {
|
||||
ip_convert_to_binary("192.168.217.113", &ip4_a);
|
||||
ip_convert_to_binary("0.0.0.0", &ip4_b);
|
||||
ip_mask_apply_AND(&ip4_a, &ip4_b, &ip4_c);
|
||||
return !strcmp(ip_convert_to_string(&ip4_c), "0.0.0.0");
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_bitwise_OR_1, {
|
||||
ip_convert_to_binary("255.255.255.255", &ip4_a);
|
||||
ip_convert_to_binary("255.255.255.0", &ip4_b);
|
||||
ip_mask_apply_OR(&ip4_a, &ip4_b, &ip4_c);
|
||||
return !strcmp(ip_convert_to_string(&ip4_c), "255.255.255.255");
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_bitwise_OR_2, {
|
||||
ip_convert_to_binary("192.168.217.113", &ip4_a);
|
||||
ip_convert_to_binary("255.255.255.0", &ip4_b);
|
||||
ip_mask_apply_OR(&ip4_a, &ip4_b, &ip4_c);
|
||||
return !strcmp(ip_convert_to_string(&ip4_c), "255.255.255.113");
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_bitwise_OR_3, {
|
||||
ip_convert_to_binary("192.168.217.113", &ip4_a);
|
||||
ip_convert_to_binary("255.255.0.0", &ip4_b);
|
||||
ip_mask_apply_OR(&ip4_a, &ip4_b, &ip4_c);
|
||||
return !strcmp(ip_convert_to_string(&ip4_c), "255.255.217.113");
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_bitwise_OR_4, {
|
||||
ip_convert_to_binary("192.168.217.113", &ip4_a);
|
||||
ip_convert_to_binary("255.0.0.0", &ip4_b);
|
||||
ip_mask_apply_OR(&ip4_a, &ip4_b, &ip4_c);
|
||||
return !strcmp(ip_convert_to_string(&ip4_c), "255.168.217.113");
|
||||
});
|
||||
|
||||
EXO_TEST(ip4_bitwise_OR_5, {
|
||||
ip_convert_to_binary("192.168.217.113", &ip4_a);
|
||||
ip_convert_to_binary("0.0.0.0", &ip4_b);
|
||||
ip_mask_apply_OR(&ip4_a, &ip4_b, &ip4_c);
|
||||
return !strcmp(ip_convert_to_string(&ip4_c), "192.168.217.113");
|
||||
});
|
||||
|
||||
EXO_TEST(ip6_bitwise_AND_1, {
|
||||
if (!ipv6) return 1;
|
||||
ip_convert_to_binary("7f7f:ffff:ffff:3f3f:ffff:ffff:ffff:ffff", &ip6_a);
|
||||
ip_convert_to_binary("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0", &ip6_b);
|
||||
ip_mask_apply_AND(&ip6_a, &ip6_b, &ip6_c);
|
||||
return !strcmp(ip_convert_to_string(&ip6_c), "7f7f:ffff:ffff:3f3f:ffff:ffff:ffff:0") ||
|
||||
!strcmp(ip_convert_to_string(&ip6_c), "7f7f:ffff:ffff:3f3f:ffff:ffff:ffff::");
|
||||
});
|
||||
|
||||
EXO_TEST(ip6_bitwise_AND_2, {
|
||||
if (!ipv6) return 1;
|
||||
ip_convert_to_binary("7777:cccc:3333:1111:ffff:ffff:ffff:ffff", &ip6_a);
|
||||
ip_convert_to_binary("ffff:ffff:ffff:ffff::", &ip6_b);
|
||||
ip_mask_apply_AND(&ip6_a, &ip6_b, &ip6_c);
|
||||
return !strcmp(ip_convert_to_string(&ip6_c), "7777:cccc:3333:1111::");
|
||||
});
|
||||
|
||||
EXO_TEST(ip6_bitwise_AND_3, {
|
||||
if (!ipv6) return 1;
|
||||
ip_convert_to_binary("7777:cccc:3333:1111:ffff:ffff:ffff:ffff", &ip6_a);
|
||||
ip_convert_to_binary("::", &ip6_b);
|
||||
ip_mask_apply_AND(&ip6_a, &ip6_b, &ip6_c);
|
||||
return !strcmp(ip_convert_to_string(&ip6_c), "::");
|
||||
});
|
||||
|
||||
EXO_TEST(ip6_bitwise_OR_1, {
|
||||
if (!ipv6) return 1;
|
||||
ip_convert_to_binary("7f7f:ffff:ffff:3f3f:ffff:ffff:ffff:ffff", &ip6_a);
|
||||
ip_convert_to_binary("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0", &ip6_b);
|
||||
ip_mask_apply_OR(&ip6_a, &ip6_b, &ip6_c);
|
||||
return !strcmp(ip_convert_to_string(&ip6_c), "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff");
|
||||
});
|
||||
|
||||
EXO_TEST(ip6_bitwise_OR_2, {
|
||||
if (!ipv6) return 1;
|
||||
ip_convert_to_binary("7777:cccc:3333:1111:ffff:ffff:ffff:ffff", &ip6_a);
|
||||
ip_convert_to_binary("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0", &ip6_b);
|
||||
ip_mask_apply_OR(&ip6_a, &ip6_b, &ip6_c);
|
||||
return !strcmp(ip_convert_to_string(&ip6_c), "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff");
|
||||
});
|
||||
|
||||
EXO_TEST(ip6_bitwise_OR_3, {
|
||||
if (!ipv6) return 1;
|
||||
ip_convert_to_binary("7777:cccc:3333:1111:ffff:ffff:ffff:1c1c", &ip6_a);
|
||||
ip_convert_to_binary("::", &ip6_b);
|
||||
ip_mask_apply_OR(&ip6_a, &ip6_b, &ip6_c);
|
||||
return !strcmp(ip_convert_to_string(&ip6_c), "7777:cccc:3333:1111:ffff:ffff:ffff:1c1c");
|
||||
});
|
||||
|
||||
EXO_TEST(shutdown_network, {
|
||||
return net_shutdown() == 0;
|
||||
});
|
||||
137
autotest/test_list.tcc
Normal file
137
autotest/test_list.tcc
Normal file
@@ -0,0 +1,137 @@
|
||||
#include <uhub.h>
|
||||
|
||||
static struct linked_list* list = NULL;
|
||||
|
||||
static char A[2] = { 'A', 0 };
|
||||
static char B[2] = { 'B', 0 };
|
||||
static char C[2] = { 'C', 0 };
|
||||
|
||||
static void null_free(void* ptr)
|
||||
{
|
||||
(void) ptr;
|
||||
}
|
||||
|
||||
|
||||
EXO_TEST(list_create_destroy, {
|
||||
int ok = 0;
|
||||
struct linked_list* alist;
|
||||
alist = list_create();
|
||||
if (alist) ok = 1;
|
||||
list_destroy(alist);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(list_create, {
|
||||
list = list_create();
|
||||
return list->size == 0;
|
||||
});
|
||||
|
||||
EXO_TEST(list_append_1, {
|
||||
list_append(list, (char*) A);
|
||||
return list->size == 1;
|
||||
});
|
||||
|
||||
EXO_TEST(list_remove_1, {
|
||||
list_remove(list, (char*) A);
|
||||
return list->size == 0;
|
||||
});
|
||||
|
||||
|
||||
EXO_TEST(list_append_2, {
|
||||
list_append(list, A);
|
||||
list_append(list, B);
|
||||
return list->size == 2;
|
||||
});
|
||||
|
||||
EXO_TEST(list_remove_2, {
|
||||
list_remove(list, (char*) A);
|
||||
return list->size == 1;
|
||||
});
|
||||
|
||||
EXO_TEST(list_remove_3, {
|
||||
list_remove(list, (char*) A); /* already removed, so should have no effect */
|
||||
return list->size == 1;
|
||||
});
|
||||
|
||||
EXO_TEST(list_remove_4, {
|
||||
list_remove(list, (char*) B); /* already removed, so should have no effect */
|
||||
return list->size == 0;
|
||||
});
|
||||
|
||||
EXO_TEST(list_append_3, {
|
||||
list_append(list, A);
|
||||
list_append(list, B);
|
||||
list_append(list, C);
|
||||
return list->size == 3;
|
||||
});
|
||||
|
||||
EXO_TEST(list_append_4, {
|
||||
list_append(list, A); /* OK. adding the same one *AGAIN* */
|
||||
return list->size == 4;
|
||||
});
|
||||
|
||||
EXO_TEST(list_remove_5, {
|
||||
list_remove(list, A); /* removing the first one. */
|
||||
return list->size == 3;
|
||||
});
|
||||
|
||||
EXO_TEST(list_get_index_1, {
|
||||
return list_get_index(list, 0) == B;
|
||||
});
|
||||
|
||||
EXO_TEST(list_get_index_2, {
|
||||
return list_get_index(list, 1) == C;
|
||||
});
|
||||
|
||||
EXO_TEST(list_get_index_3, {
|
||||
return list_get_index(list, 2) == A;
|
||||
});
|
||||
|
||||
EXO_TEST(list_get_index_4, {
|
||||
return list_get_index(list, 3) == NULL;
|
||||
});
|
||||
|
||||
EXO_TEST(list_get_first_1, {
|
||||
return list_get_first(list) == B;
|
||||
});
|
||||
|
||||
EXO_TEST(list_get_first_next_1, {
|
||||
return list_get_next(list) == C;
|
||||
});
|
||||
|
||||
EXO_TEST(list_get_first_next_2, {
|
||||
return list_get_next(list) == A;
|
||||
});
|
||||
|
||||
EXO_TEST(list_get_last_1, {
|
||||
return list_get_last(list) == A;
|
||||
});
|
||||
|
||||
EXO_TEST(list_get_last_prev_1, {
|
||||
return list_get_prev(list) == C;
|
||||
});
|
||||
|
||||
EXO_TEST(list_get_last_prev_2, {
|
||||
return list_get_prev(list) == B;
|
||||
});
|
||||
|
||||
EXO_TEST(list_get_last_prev_next_1, {
|
||||
return list_get_next(list) == C;
|
||||
});
|
||||
|
||||
EXO_TEST(list_clear, {
|
||||
list_clear(list, &null_free);
|
||||
return list->size == 0 && list->first == 0 && list->last == 0 && list->iterator == 0;
|
||||
});
|
||||
|
||||
|
||||
EXO_TEST(list_destroy_1, {
|
||||
list_destroy(list);
|
||||
return 1;
|
||||
});
|
||||
|
||||
EXO_TEST(list_destroy_2, {
|
||||
list_destroy(0);
|
||||
return 1;
|
||||
});
|
||||
|
||||
37
autotest/test_memory.tcc
Normal file
37
autotest/test_memory.tcc
Normal file
@@ -0,0 +1,37 @@
|
||||
#include <uhub.h>
|
||||
|
||||
struct adc_message* g_msg;
|
||||
|
||||
EXO_TEST(test_message_refc_1, {
|
||||
g_msg = adc_msg_create("IMSG Hello\\sWorld!");
|
||||
return g_msg != NULL;
|
||||
});
|
||||
|
||||
EXO_TEST(test_message_refc_2, {
|
||||
return g_msg->references == 0; // 0
|
||||
});
|
||||
|
||||
EXO_TEST(test_message_refc_3, {
|
||||
adc_msg_incref(g_msg);
|
||||
return g_msg->references == 1; // 1
|
||||
});
|
||||
|
||||
EXO_TEST(test_message_refc_4, {
|
||||
adc_msg_incref(g_msg);
|
||||
return g_msg->references == 2; // 2
|
||||
});
|
||||
|
||||
EXO_TEST(test_message_refc_5, {
|
||||
adc_msg_free(g_msg);
|
||||
return g_msg->references == 1; // 1
|
||||
});
|
||||
|
||||
EXO_TEST(test_message_refc_6, {
|
||||
adc_msg_free(g_msg);
|
||||
return g_msg->references == 0; // 0
|
||||
});
|
||||
|
||||
EXO_TEST(test_message_refc_7, {
|
||||
adc_msg_free(g_msg);
|
||||
return 1;
|
||||
});
|
||||
521
autotest/test_message.tcc
Normal file
521
autotest/test_message.tcc
Normal file
@@ -0,0 +1,521 @@
|
||||
#include <uhub.h>
|
||||
static struct user* g_user = 0;
|
||||
static const char* test_string1 = "IINF AAfoo BBbar CCwhat\n";
|
||||
static const char* test_string2 = "BMSG AAAB Hello\\sWorld!\n";
|
||||
static const char* test_string3 = "BINF AAAB IDAN7ZMSLIEBL53OPTM7WXGSTXUS3XOY6KQS5LBGX NIFriend DEstuff SL3 SS0 SF0 VEQuickDC/0.4.17 US6430 SUADC0,TCP4,UDP4 I4127.0.0.1 HO5 HN1 AW\n";
|
||||
static const char* test_string4 = "BMSG AAAB\n";
|
||||
static const char* test_string5 = "BMSG AAAB \n";
|
||||
|
||||
static void create_test_user()
|
||||
{
|
||||
if (g_user)
|
||||
return;
|
||||
|
||||
g_user = (struct user*) malloc(sizeof(struct user));
|
||||
memset(g_user, 0, sizeof(struct user));
|
||||
memcpy(g_user->id.nick, "exotic-tester", 13);
|
||||
g_user->id.sid = 1;
|
||||
}
|
||||
|
||||
EXO_TEST(adc_message_parse_1, {
|
||||
struct adc_message* msg = adc_msg_create("IMSG Hello\\sWorld!");
|
||||
int ok = msg != NULL;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_2, {
|
||||
struct adc_message* msg = adc_msg_create(test_string2);
|
||||
return msg == NULL;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_3, {
|
||||
create_test_user();
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "BMSG AAAB Hello\\sWorld!", 23);
|
||||
int ok = msg != NULL;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_4, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "BMSG AAAC Hello\\sWorld!", 23);
|
||||
return msg == NULL;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_5, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "BMSG AAAB Hello\\sWorld!\n", 24);
|
||||
int ok = msg != NULL;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_6, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "FMSG AAAB +TCP4 Hello\\sWorld!\n", 30);
|
||||
int ok = msg != NULL;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_7, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "FMSG AAAB -TCP4 Hello\\sWorld!\n", 30);
|
||||
int ok = msg != NULL;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_8, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "FMSG AAAB +TCP4+UDP4 Hello\\sWorld!\n", 35);
|
||||
int ok = msg != NULL;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_9, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "FMSG AAAB +TCP4-UDP4 Hello\\sWorld!\n", 35);
|
||||
int ok = msg != NULL;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_10, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "FMSG AAAB -TCP4-UDP4 Hello\\sWorld!\n", 35);
|
||||
int ok = msg != NULL;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_11, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "FMSG AAAB Hello\\sWorld!\n", 24);
|
||||
return msg == NULL;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_12, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "FMSG AAAB Hello\\sWorld!\n", 25);
|
||||
return msg == NULL;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_13, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "FMSG AAAB +jalla Hello\\sWorld!\n", 31);
|
||||
return msg == NULL;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_14, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "FMSG AAAB +jall Hello\\sWorld!\n", 30);
|
||||
int ok = msg != NULL;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_15, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "FMSG AAAB +TCP4 Hello\\sWorld!\n", 30);
|
||||
int ok = msg != NULL;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_16, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "BMSG AAAB Hello\\sWorld!\n", 24);
|
||||
int ok = msg != NULL;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_17, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "BMSG aaab Hello\\sWorld!\n", 24);
|
||||
return msg == NULL;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_18, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "DMSG AAAB AAAC Hello\\sthere!\n", 29);
|
||||
int ok = msg != NULL;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_19, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "DMSG AAAC AAAB Hello\\sthere!\n", 29);
|
||||
return msg == NULL;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_parse_20, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "EMSG AAAB AAAC Hello\\sthere!\n", 29);
|
||||
int ok = msg != NULL;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
|
||||
EXO_TEST(adc_message_parse_21, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, "EMSG AAAC AAAB Hello\\sthere!\n", 29);
|
||||
return msg == NULL;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_add_arg_1, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_add_argument(msg, "XXwtf?");
|
||||
int ok = strcmp(msg->cache, "IINF AAfoo BBbar CCwhat XXwtf?\n") == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_add_arg_2, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_add_named_argument(msg, "XX", "wtf?");
|
||||
int ok = strcmp(msg->cache, "IINF AAfoo BBbar CCwhat XXwtf?\n") == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_remove_arg_1, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_remove_named_argument(msg, "AA");
|
||||
int ok = strcmp(msg->cache, "IINF BBbar CCwhat\n") == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_remove_arg_2, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_remove_named_argument(msg, "BB");
|
||||
int ok = strcmp(msg->cache, "IINF AAfoo CCwhat\n") == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_remove_arg_3, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_remove_named_argument(msg, "CC");
|
||||
int ok = strcmp(msg->cache, "IINF AAfoo BBbar\n") == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_remove_arg_4, {
|
||||
/* this ensures we can remove the last element also */
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, test_string3, strlen(test_string3));
|
||||
adc_msg_remove_named_argument(msg, "AW");
|
||||
int ok = strcmp(msg->cache, "BINF AAAB IDAN7ZMSLIEBL53OPTM7WXGSTXUS3XOY6KQS5LBGX NIFriend DEstuff SL3 SS0 SF0 VEQuickDC/0.4.17 US6430 SUADC0,TCP4,UDP4 I4127.0.0.1 HO5 HN1\n") == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_replace_arg_1, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_remove_named_argument(msg, "AA");
|
||||
int ok = strcmp(msg->cache, "IINF BBbar CCwhat\n") == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_replace_arg_2, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_remove_named_argument(msg, "BB");
|
||||
int ok = strcmp(msg->cache, "IINF AAfoo CCwhat\n") == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_replace_arg_3, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_remove_named_argument(msg, "CC");
|
||||
int ok = strcmp(msg->cache, "IINF AAfoo BBbar\n") == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_get_arg_1, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
char* c = adc_msg_get_argument(msg, 0);
|
||||
int ok = strcmp(c, "AAfoo") == 0;
|
||||
adc_msg_free(msg);
|
||||
hub_free(c);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_get_arg_2, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
char* c = adc_msg_get_argument(msg, 1);
|
||||
int ok = strcmp(c, "BBbar") == 0;
|
||||
adc_msg_free(msg);
|
||||
hub_free(c);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_get_arg_3, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
char* c = adc_msg_get_argument(msg, 2);
|
||||
int ok = strcmp(c, "CCwhat") == 0;
|
||||
adc_msg_free(msg);
|
||||
hub_free(c);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_get_arg_4, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
char* c = adc_msg_get_argument(msg, 3);
|
||||
int ok = c == 0;
|
||||
adc_msg_free(msg);
|
||||
hub_free(c);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_get_named_arg_1, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
char* c = adc_msg_get_named_argument(msg, "AA");
|
||||
int ok = strcmp(c, "foo") == 0;
|
||||
adc_msg_free(msg);
|
||||
hub_free(c);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_get_named_arg_2, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
char* c = adc_msg_get_named_argument(msg, "BB");
|
||||
int ok = strcmp(c, "bar") == 0;
|
||||
adc_msg_free(msg);
|
||||
hub_free(c);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_get_named_arg_3, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
char* c = adc_msg_get_named_argument(msg, "CC");
|
||||
int ok = strcmp(c, "what") == 0;
|
||||
adc_msg_free(msg);
|
||||
hub_free(c);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_get_named_arg_4, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
char* c = adc_msg_get_named_argument(msg, "XX");
|
||||
int ok = c == 0;
|
||||
adc_msg_free(msg);
|
||||
hub_free(c);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_has_named_arg_1, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
int n = adc_msg_has_named_argument(msg, "XX");
|
||||
adc_msg_free(msg);
|
||||
return n == 0;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_has_named_arg_2, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
int n = adc_msg_has_named_argument(msg, "BB");
|
||||
adc_msg_free(msg);
|
||||
return n == 1;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_has_named_arg_3, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
int n = adc_msg_has_named_argument(msg, "CC");
|
||||
adc_msg_free(msg);
|
||||
return n == 1;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_has_named_arg_4, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_add_argument(msg, "XXwtf?");
|
||||
int n = adc_msg_has_named_argument(msg, "XX");
|
||||
adc_msg_free(msg);
|
||||
return n == 1;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_has_named_arg_5, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_add_argument(msg, "XXone");
|
||||
adc_msg_add_argument(msg, "XXtwo");
|
||||
int n = adc_msg_has_named_argument(msg, "XX");
|
||||
adc_msg_free(msg);
|
||||
return n == 2;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_has_named_arg_6, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_add_argument(msg, "XXone");
|
||||
adc_msg_add_argument(msg, "XXtwo");
|
||||
adc_msg_add_argument(msg, "XXthree");
|
||||
int n = adc_msg_has_named_argument(msg, "XX");
|
||||
adc_msg_free(msg);
|
||||
return n == 3;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_has_named_arg_7, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
int n = adc_msg_has_named_argument(msg, "AA");
|
||||
adc_msg_free(msg);
|
||||
return n == 1;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_terminate_1, {
|
||||
struct adc_message* msg = adc_msg_create("IINF AAfoo BBbar CCwhat");
|
||||
adc_msg_unterminate(msg);
|
||||
int ok = strcmp(msg->cache, "IINF AAfoo BBbar CCwhat") == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_terminate_2, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_unterminate(msg);
|
||||
adc_msg_terminate(msg);
|
||||
int ok = strcmp(msg->cache, "IINF AAfoo BBbar CCwhat\n") == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_terminate_3, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_unterminate(msg);
|
||||
adc_msg_terminate(msg);
|
||||
adc_msg_unterminate(msg);
|
||||
int ok = strcmp(msg->cache, "IINF AAfoo BBbar CCwhat") == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_terminate_4, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_unterminate(msg);
|
||||
adc_msg_terminate(msg);
|
||||
adc_msg_terminate(msg);
|
||||
int ok = strcmp(msg->cache, "IINF AAfoo BBbar CCwhat\n") == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_terminate_5, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_terminate(msg);
|
||||
adc_msg_terminate(msg);
|
||||
int ok = strcmp(msg->cache, "IINF AAfoo BBbar CCwhat\n") == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_terminate_6, {
|
||||
struct adc_message* msg = adc_msg_create(test_string1);
|
||||
adc_msg_unterminate(msg);
|
||||
adc_msg_unterminate(msg);
|
||||
int ok = strcmp(msg->cache, "IINF AAfoo BBbar CCwhat") == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_escape_1, {
|
||||
char* s = adc_msg_escape(test_string1);
|
||||
int ok = strcmp(s, "IINF\\sAAfoo\\sBBbar\\sCCwhat\\n") == 0;
|
||||
hub_free(s);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_escape_2, {
|
||||
char* s = adc_msg_escape(test_string1);
|
||||
char* s2 = adc_msg_unescape(s);
|
||||
int ok = strcmp(s2, test_string1) == 0;
|
||||
hub_free(s);
|
||||
hub_free(s2);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_escape_3, {
|
||||
char* s = adc_msg_unescape(test_string1);
|
||||
int ok = strcmp(s, test_string1) == 0;
|
||||
hub_free(s);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_copy_1, {
|
||||
struct adc_message* msg1 = adc_msg_create(test_string1);
|
||||
struct adc_message* msg2 = adc_msg_copy(msg1);
|
||||
int ok = strncmp(msg1->cache, msg2->cache, msg1->length) == 0;
|
||||
adc_msg_free(msg1);
|
||||
adc_msg_free(msg2);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_copy_2, {
|
||||
struct adc_message* msg1 = adc_msg_parse_verify(g_user, test_string2, strlen(test_string2));
|
||||
struct adc_message* msg2 = adc_msg_copy(msg1);
|
||||
int ok = msg1->source == msg2->source;
|
||||
adc_msg_free(msg1);
|
||||
adc_msg_free(msg2);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_copy_3, {
|
||||
struct adc_message* msg1 = adc_msg_parse_verify(g_user, test_string2, strlen(test_string2));
|
||||
struct adc_message* msg2 = adc_msg_copy(msg1);
|
||||
int ok = ( msg1->cmd == msg2->cmd &&
|
||||
msg1->source == msg2->source &&
|
||||
msg1->target == msg2->target &&
|
||||
msg1->length == msg2->length &&
|
||||
msg1->priority == msg2->priority &&
|
||||
msg1->capacity == msg2->capacity && /* might not be true! */
|
||||
strcmp(msg1->cache, msg2->cache) == 0);
|
||||
adc_msg_free(msg1);
|
||||
adc_msg_free(msg2);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_copy_4, {
|
||||
struct adc_message* msg1 = adc_msg_parse_verify(g_user, test_string2, strlen(test_string2));
|
||||
struct adc_message* msg2 = adc_msg_copy(msg1);
|
||||
int ok = msg2->target == 0;
|
||||
adc_msg_free(msg1);
|
||||
adc_msg_free(msg2);
|
||||
return ok;
|
||||
});
|
||||
|
||||
|
||||
static struct adc_message* updater1 = NULL;
|
||||
static struct adc_message* updater2 = NULL;
|
||||
static const char* update_info1 = "BINF AAAB IDABCDEFGHIJKLMNOPQRSTUVWXYZ1234567ABCDEF NItester SL10 SS12817126127 SF4125 HN3 HR0 HO0 VE++\\s0.698 US104857600 DS81911808 SUTCP4,UDP4 I4127.0.0.1\n";
|
||||
static const char* update_info2 = "BINF AAAB HN34 SF4126 SS12817526127\n";
|
||||
|
||||
EXO_TEST(adc_message_update_1, {
|
||||
updater1 = adc_msg_parse_verify(g_user, update_info1, strlen(update_info1));
|
||||
return updater1 != NULL;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_update_2, {
|
||||
user_set_info(g_user, updater1);
|
||||
return strcmp(g_user->info->cache, updater1->cache) == 0 && g_user->info == updater1;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_update_3, {
|
||||
updater2 = adc_msg_parse_verify(g_user, update_info2, strlen(update_info2));
|
||||
return updater2 != NULL;
|
||||
});
|
||||
|
||||
extern void update_user_info(struct user* u, struct adc_message* cmd);
|
||||
|
||||
EXO_TEST(adc_message_update_4, {
|
||||
update_user_info(g_user, updater2);
|
||||
return strlen(g_user->info->cache) == 159;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_empty_1, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, test_string2, strlen(test_string2));
|
||||
int ok = adc_msg_is_empty(msg) == 0;
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_empty_2, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, test_string4, strlen(test_string4));
|
||||
int ok = adc_msg_is_empty(msg);
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
EXO_TEST(adc_message_empty_3, {
|
||||
struct adc_message* msg = adc_msg_parse_verify(g_user, test_string5, strlen(test_string5));
|
||||
int ok = adc_msg_is_empty(msg) == 0; /* arguably not empty, contains a space */
|
||||
adc_msg_free(msg);
|
||||
return ok;
|
||||
});
|
||||
|
||||
103
autotest/test_misc.tcc
Normal file
103
autotest/test_misc.tcc
Normal file
@@ -0,0 +1,103 @@
|
||||
#include <uhub.h>
|
||||
|
||||
EXO_TEST(is_num_0, { return is_num('0'); });
|
||||
EXO_TEST(is_num_1, { return is_num('1'); });
|
||||
EXO_TEST(is_num_2, { return is_num('2'); });
|
||||
EXO_TEST(is_num_3, { return is_num('3'); });
|
||||
EXO_TEST(is_num_4, { return is_num('4'); });
|
||||
EXO_TEST(is_num_5, { return is_num('5'); });
|
||||
EXO_TEST(is_num_6, { return is_num('6'); });
|
||||
EXO_TEST(is_num_7, { return is_num('7'); });
|
||||
EXO_TEST(is_num_8, { return is_num('8'); });
|
||||
EXO_TEST(is_num_9, { return is_num('9'); });
|
||||
EXO_TEST(is_num_10, { return !is_num('/'); });
|
||||
EXO_TEST(is_num_11, { return !is_num(':'); });
|
||||
|
||||
EXO_TEST(is_space_1, { return is_space(' '); });
|
||||
EXO_TEST(is_space_2, { return !is_space('\t'); });
|
||||
EXO_TEST(is_white_space_1, { return is_white_space(' '); });
|
||||
EXO_TEST(is_white_space_2, { return is_white_space('\t'); });
|
||||
EXO_TEST(is_white_space_3, { return !is_white_space('A'); });
|
||||
EXO_TEST(is_white_space_4, { return !is_white_space('!'); });
|
||||
|
||||
EXO_TEST(itoa_1, { return strcmp(uhub_itoa(0), "0") == 0; });
|
||||
EXO_TEST(itoa_2, { return strcmp(uhub_itoa(1), "1") == 0; });
|
||||
EXO_TEST(itoa_3, { return strcmp(uhub_itoa(-1), "-1") == 0; });
|
||||
EXO_TEST(itoa_4, { return strcmp(uhub_itoa(255), "255") == 0; });
|
||||
EXO_TEST(itoa_5, { return strcmp(uhub_itoa(-3), "-3") == 0; });
|
||||
EXO_TEST(itoa_6, { return strcmp(uhub_itoa(-2147483647), "-2147483647") == 0; });
|
||||
EXO_TEST(itoa_7, { return strcmp(uhub_itoa(2147483647), "2147483647") == 0; });
|
||||
EXO_TEST(itoa_8, { return strcmp(uhub_itoa(-65536), "-65536") == 0; });
|
||||
|
||||
EXO_TEST(base32_valid_1, { return is_valid_base32_char('A'); });
|
||||
EXO_TEST(base32_valid_2, { return is_valid_base32_char('B'); });
|
||||
EXO_TEST(base32_valid_3, { return is_valid_base32_char('C'); });
|
||||
EXO_TEST(base32_valid_4, { return is_valid_base32_char('D'); });
|
||||
EXO_TEST(base32_valid_5, { return is_valid_base32_char('E'); });
|
||||
EXO_TEST(base32_valid_6, { return is_valid_base32_char('F'); });
|
||||
EXO_TEST(base32_valid_7, { return is_valid_base32_char('G'); });
|
||||
EXO_TEST(base32_valid_8, { return is_valid_base32_char('H'); });
|
||||
EXO_TEST(base32_valid_9, { return is_valid_base32_char('I'); });
|
||||
EXO_TEST(base32_valid_10, { return is_valid_base32_char('J'); });
|
||||
EXO_TEST(base32_valid_11, { return is_valid_base32_char('K'); });
|
||||
EXO_TEST(base32_valid_12, { return is_valid_base32_char('L'); });
|
||||
EXO_TEST(base32_valid_13, { return is_valid_base32_char('M'); });
|
||||
EXO_TEST(base32_valid_14, { return is_valid_base32_char('N'); });
|
||||
EXO_TEST(base32_valid_15, { return is_valid_base32_char('O'); });
|
||||
EXO_TEST(base32_valid_16, { return is_valid_base32_char('P'); });
|
||||
EXO_TEST(base32_valid_17, { return is_valid_base32_char('Q'); });
|
||||
EXO_TEST(base32_valid_18, { return is_valid_base32_char('R'); });
|
||||
EXO_TEST(base32_valid_19, { return is_valid_base32_char('S'); });
|
||||
EXO_TEST(base32_valid_20, { return is_valid_base32_char('T'); });
|
||||
EXO_TEST(base32_valid_21, { return is_valid_base32_char('U'); });
|
||||
EXO_TEST(base32_valid_22, { return is_valid_base32_char('V'); });
|
||||
EXO_TEST(base32_valid_23, { return is_valid_base32_char('W'); });
|
||||
EXO_TEST(base32_valid_24, { return is_valid_base32_char('X'); });
|
||||
EXO_TEST(base32_valid_25, { return is_valid_base32_char('Y'); });
|
||||
EXO_TEST(base32_valid_26, { return is_valid_base32_char('Z'); });
|
||||
EXO_TEST(base32_valid_27, { return is_valid_base32_char('2'); });
|
||||
EXO_TEST(base32_valid_28, { return is_valid_base32_char('3'); });
|
||||
EXO_TEST(base32_valid_29, { return is_valid_base32_char('4'); });
|
||||
EXO_TEST(base32_valid_30, { return is_valid_base32_char('5'); });
|
||||
EXO_TEST(base32_valid_31, { return is_valid_base32_char('6'); });
|
||||
EXO_TEST(base32_valid_32, { return is_valid_base32_char('7'); });
|
||||
|
||||
EXO_TEST(base32_invalid_1, { return !is_valid_base32_char('a'); });
|
||||
EXO_TEST(base32_invalid_2, { return !is_valid_base32_char('b'); });
|
||||
EXO_TEST(base32_invalid_3, { return !is_valid_base32_char('c'); });
|
||||
EXO_TEST(base32_invalid_4, { return !is_valid_base32_char('d'); });
|
||||
EXO_TEST(base32_invalid_5, { return !is_valid_base32_char('e'); });
|
||||
EXO_TEST(base32_invalid_6, { return !is_valid_base32_char('f'); });
|
||||
EXO_TEST(base32_invalid_7, { return !is_valid_base32_char('g'); });
|
||||
EXO_TEST(base32_invalid_8, { return !is_valid_base32_char('h'); });
|
||||
EXO_TEST(base32_invalid_9, { return !is_valid_base32_char('i'); });
|
||||
EXO_TEST(base32_invalid_10, { return !is_valid_base32_char('j'); });
|
||||
EXO_TEST(base32_invalid_11, { return !is_valid_base32_char('k'); });
|
||||
EXO_TEST(base32_invalid_12, { return !is_valid_base32_char('l'); });
|
||||
EXO_TEST(base32_invalid_13, { return !is_valid_base32_char('m'); });
|
||||
EXO_TEST(base32_invalid_14, { return !is_valid_base32_char('n'); });
|
||||
EXO_TEST(base32_invalid_15, { return !is_valid_base32_char('o'); });
|
||||
EXO_TEST(base32_invalid_16, { return !is_valid_base32_char('p'); });
|
||||
EXO_TEST(base32_invalid_17, { return !is_valid_base32_char('q'); });
|
||||
EXO_TEST(base32_invalid_18, { return !is_valid_base32_char('r'); });
|
||||
EXO_TEST(base32_invalid_19, { return !is_valid_base32_char('s'); });
|
||||
EXO_TEST(base32_invalid_20, { return !is_valid_base32_char('t'); });
|
||||
EXO_TEST(base32_invalid_21, { return !is_valid_base32_char('u'); });
|
||||
EXO_TEST(base32_invalid_22, { return !is_valid_base32_char('v'); });
|
||||
EXO_TEST(base32_invalid_23, { return !is_valid_base32_char('w'); });
|
||||
EXO_TEST(base32_invalid_24, { return !is_valid_base32_char('x'); });
|
||||
EXO_TEST(base32_invalid_25, { return !is_valid_base32_char('y'); });
|
||||
EXO_TEST(base32_invalid_26, { return !is_valid_base32_char('z'); });
|
||||
EXO_TEST(base32_invalid_27, { return !is_valid_base32_char('0'); });
|
||||
EXO_TEST(base32_invalid_28, { return !is_valid_base32_char('1'); });
|
||||
EXO_TEST(base32_invalid_29, { return !is_valid_base32_char('8'); });
|
||||
EXO_TEST(base32_invalid_30, { return !is_valid_base32_char('9'); });
|
||||
EXO_TEST(base32_invalid_31, { return !is_valid_base32_char('@'); });
|
||||
|
||||
EXO_TEST(utf8_valid_1, { return is_valid_utf8("abcdefghijklmnopqrstuvwxyz"); });
|
||||
EXO_TEST(utf8_valid_2, { return is_valid_utf8("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); });
|
||||
EXO_TEST(utf8_valid_3, { return is_valid_utf8("0123456789"); });
|
||||
EXO_TEST(utf8_valid_4, { return is_valid_utf8( (char[]) { 0x65, 0x00} ); });
|
||||
EXO_TEST(utf8_valid_5, { return !is_valid_utf8( (char[]) { 0xD8, 0x00} ); });
|
||||
|
||||
|
||||
69
autotest/test_tiger.tcc
Normal file
69
autotest/test_tiger.tcc
Normal file
@@ -0,0 +1,69 @@
|
||||
#include <uhub.h>
|
||||
|
||||
#define DEBUG_HASH
|
||||
|
||||
static char* byte_to_hex(char* dest, uint8_t c)
|
||||
{
|
||||
static const char* hexchars = "0123456789abcdef";
|
||||
*dest = hexchars[c / 16]; dest++;
|
||||
*dest = hexchars[c % 16]; dest++;
|
||||
return dest;
|
||||
}
|
||||
|
||||
|
||||
static int test_tiger_hex(char* input, char* expected) {
|
||||
char buf[TIGERSIZE*2+1];
|
||||
uint64_t tiger_res[3];
|
||||
int i = 0;
|
||||
#ifdef DEBUG_HASH
|
||||
int res = 0;
|
||||
#endif
|
||||
char* ptr = buf;
|
||||
buf[TIGERSIZE*2] = 0;
|
||||
|
||||
tiger((uint64_t*) input, strlen(input), (uint64_t*) tiger_res);
|
||||
for (i = 0; i < TIGERSIZE; i++)
|
||||
ptr = byte_to_hex(ptr, (char) (((uint8_t*) tiger_res)[i]) );
|
||||
|
||||
#ifdef DEBUG_HASH
|
||||
res = strcasecmp(buf, expected) == 0 ? 1 : 0;
|
||||
|
||||
if (!res)
|
||||
{
|
||||
printf("Expected: '%s', Got: '%s'\n", expected, buf);
|
||||
}
|
||||
return res;
|
||||
#else
|
||||
return strcasecmp(buf, expected) == 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
EXO_TEST(hash_tiger_1, {
|
||||
return test_tiger_hex("", "3293AC630C13F0245F92BBB1766E16167A4E58492DDE73F3");
|
||||
});
|
||||
|
||||
EXO_TEST(hash_tiger_2, {
|
||||
return test_tiger_hex("a", "77BEFBEF2E7EF8AB2EC8F93BF587A7FC613E247F5F247809");
|
||||
});
|
||||
|
||||
EXO_TEST(hash_tiger_3, {
|
||||
return test_tiger_hex("abc", "2AAB1484E8C158F2BFB8C5FF41B57A525129131C957B5F93");
|
||||
});
|
||||
|
||||
EXO_TEST(hash_tiger_4, {
|
||||
return test_tiger_hex("message digest", "D981F8CB78201A950DCF3048751E441C517FCA1AA55A29F6");
|
||||
});
|
||||
|
||||
EXO_TEST(hash_tiger_5, {
|
||||
return test_tiger_hex("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", "0F7BF9A19B9C58F2B7610DF7E84F0AC3A71C631E7B53F78E");
|
||||
});
|
||||
|
||||
EXO_TEST(hash_tiger_6, {
|
||||
return test_tiger_hex("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", "8DCEA680A17583EE502BA38A3C368651890FFBCCDC49A8CC");
|
||||
});
|
||||
|
||||
EXO_TEST(hash_tiger_7, {
|
||||
return test_tiger_hex("12345678901234567890123456789012345678901234567890123456789012345678901234567890", "1C14795529FD9F207A958F84C52F11E887FA0CABDFD91BFD");
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user