diff --git a/CMakeLists.txt b/CMakeLists.txt index 01905d6..18c7807 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,6 +67,7 @@ add_dependencies(adc utils) add_dependencies(network utils) add_executable(uhub ${PROJECT_SOURCE_DIR}/core/main.c ${uhub_SOURCES} ) +add_executable(test ${CMAKE_SOURCE_DIR}/autotest/test.c ${uhub_SOURCES} ) add_library(mod_example MODULE ${PROJECT_SOURCE_DIR}/plugins/mod_example.c) add_library(mod_welcome MODULE ${PROJECT_SOURCE_DIR}/plugins/mod_welcome.c) @@ -88,6 +89,7 @@ endif() if(WIN32) target_link_libraries(uhub ws2_32) + target_link_libraries(test ws2_32) target_link_libraries(mod_logging ws2_32) target_link_libraries(mod_welcome ws2_32) endif() @@ -103,6 +105,7 @@ set_target_properties( PROPERTIES PREFIX "") target_link_libraries(uhub ${CMAKE_DL_LIBS} adc network utils) +target_link_libraries(test ${CMAKE_DL_LIBS} adc network utils) target_link_libraries(mod_example utils) target_link_libraries(mod_welcome utils) target_link_libraries(mod_auth_simple utils) @@ -119,6 +122,7 @@ if(UNIX) add_executable(uhub-admin ${PROJECT_SOURCE_DIR}/tools/admin.c) target_link_libraries(uhub-admin adcclient adc network utils pthread) target_link_libraries(uhub pthread) + target_link_libraries(test pthread) if (ADC_STRESS) add_executable(adcrush ${PROJECT_SOURCE_DIR}/tools/adcrush.c ${adcclient_SOURCES}) @@ -157,6 +161,7 @@ endif() if(SSL_SUPPORT) target_link_libraries(uhub ${SSL_LIBS}) + target_link_libraries(test ${SSL_LIBS}) if(UNIX) target_link_libraries(uhub-admin ${SSL_LIBS}) endif() diff --git a/autotest/exotic b/autotest/exotic new file mode 100755 index 0000000..d0338ef --- /dev/null +++ b/autotest/exotic @@ -0,0 +1,371 @@ +#!/usr/bin/perl -w +# exotic 0.4 +# Copyright (c) 2007-2012, Jan Vidar Krey + +use strict; + +my $program = $0; +my $file; +my $line; +my @tests; +my $found; +my $test; +my @files; + +if ($#ARGV == -1) +{ + die "Usage: $program files\n"; +} + +my $version = "0.4"; + +foreach my $arg (@ARGV) +{ + push(@files, $arg); +} + + +print "/* THIS FILE IS AUTOMATICALLY GENERATED BY EXOTIC - DO NOT EDIT THIS FILE! */\n"; +print "/* exotic/$version (Mon Nov 7 11:15:31 CET 2011) */\n\n"; + +print "#define __EXOTIC__STANDALONE__\n"; +standalone_include_exotic_h(); + +if ($#ARGV >= 0) +{ + foreach $file (@ARGV) + { + $found = 0; + open( FILE, "$file") || next; + my @data = ; + my $comment = 0; + + foreach $line (@data) { + chomp($line); + + if ($comment == 1) + { + if ($line =~ /^(.*\*\/)(.*)/) + { + $line = $2; + $comment = 0; + } + else + { + next; # ignore comment data + } + } + + if ($line =~ /^(.*)\/\*(.*)\*\/(.*)$/) + { + $line = $1 . " " . $3; # exclude comment stuff in between "/*" and "*/". + } + + if ($line =~ /^(.*)(\/\/.*)$/) { + $line = $1; # exclude stuff after "//" (FIXME: does not work if they are inside a string) + } + + if ($line =~ /\/\*/) { + $comment = 1; + next; + } + + if ($line =~ /^\s*EXO_TEST\(\s*(\w+)\s*,/) + { + $found++; + push(@tests, $1); + } + } + + if ($found > 0) { + print "#include \"" . $file . "\"\n"; + } + + close(FILE); + } + print "\n"; +} + +# Write a main() that will start the test run +print "int main(int argc, char** argv)\n{\n"; +print "\tstruct exotic_handle handle;\n\n"; +print "\tif (exotic_initialize(&handle, argc, argv) == -1)\n\t\treturn -1;\n\n"; + +if ($#tests > 0) +{ + print "\t/* Register the tests to be run */\n"; + foreach $test (@tests) + { + print "\texotic_add_test(&handle, &exotic_test_" . $test . ", \"" . $test . "\");\n"; + } +} +else +{ + print "\t/* No tests are found! */\n"; +} + +print "\n"; +print "\treturn exotic_run(&handle);\n"; +print "}\n\n"; + + +standalone_include_exotic_c(); + +sub standalone_include_exotic_h { +print ' +/* + * Exotic (EXtatic.Org Test InfrastuCture) + * Copyright (c) 2007, Jan Vidar Krey + */ + +#ifndef EXO_TEST +#define EXO_TEST(NAME, block) int exotic_test_ ## NAME (void) block +#endif + +#ifndef HAVE_EXOTIC_AUTOTEST_H +#define HAVE_EXOTIC_AUTOTEST_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef int(*exo_test_t)(); + +enum exo_toggle { cfg_default, cfg_off, cfg_on }; + +struct exotic_handle +{ + enum exo_toggle config_show_summary; + enum exo_toggle config_show_pass; + enum exo_toggle config_show_fail; + unsigned int fail; + unsigned int pass; + struct exo_test_data* first; + struct exo_test_data* current; +}; + +extern int exotic_initialize(struct exotic_handle* handle, int argc, char** argv); +extern void exotic_add_test(struct exotic_handle* handle, exo_test_t, const char* name); +extern int exotic_run(struct exotic_handle* handle); + +#ifdef __cplusplus +} +#endif + +#endif /* HAVE_EXOTIC_AUTOTEST_H */ + +'; } +sub standalone_include_exotic_c { +print ' +/* + * Exotic - C/C++ source code testing + * Copyright (c) 2007, Jan Vidar Krey + */ + +#include +#include +#include +#include + +static void exotic_version(); + +#ifndef __EXOTIC__STANDALONE__ +#include "autotest.h" +static void exotic_version() +{ + printf("Extatic.org Test Infrastructure: exotic " "${version}" "\n\n"); + printf("Copyright (C) 2007 Jan Vidar Krey, janvidar@extatic.org\n"); + printf("This is free software with ABSOLUTELY NO WARRANTY.\n\n"); +} +#endif + +struct exo_test_data +{ + exo_test_t test; + char* name; + struct exo_test_data* next; +}; + + +static void exotic_summary(struct exotic_handle* handle) +{ + int total = handle->pass + handle->fail; + int pass_rate = total ? (100*handle->pass / total) : 0; + int fail_rate = total ? (100*handle->fail / total) : 0; + + printf("\n"); + printf("--------------------------------------------\n"); + printf("Results:\n"); + printf(" * Total tests run: %8d\n", total); + printf(" * Tests passed: %8d (~%d%%)\n", (int) handle->pass, pass_rate); + printf(" * Tests failed: %8d (~%d%%)\n", (int) handle->fail, fail_rate); + printf("--------------------------------------------\n"); +} + + +static void exotic_help(const char* program) +{ + printf("Usage: %s [OPTIONS]\n\n", program); + printf("Options:\n"); + printf(" --help -h Show this message\n"); + printf(" --version -v Show version\n"); + printf(" --summary -s show only summary)\n"); + printf(" --fail -f show only test failures\n"); + printf(" --pass -p show only test passes\n"); + printf("\nExamples:\n"); + printf(" %s -s -f\n\n", program); +} + + +int exotic_initialize(struct exotic_handle* handle, int argc, char** argv) +{ + int n; + if (!handle || !argv) return -1; + + memset(handle, 0, sizeof(struct exotic_handle)); + + for (n = 1; n < argc; n++) + { + if (!strcmp(argv[n], "-h") || !strcmp(argv[n], "--help")) + { + exotic_help(argv[0]); + exit(0); + } + + if (!strcmp(argv[n], "-v") || !strcmp(argv[n], "--version")) + { + exotic_version(); + exit(0); + } + + if (!strcmp(argv[n], "-s") || !strcmp(argv[n], "--summary")) + { + handle->config_show_summary = cfg_on; + continue; + } + + if (!strcmp(argv[n], "-f") || !strcmp(argv[n], "--fail")) + { + handle->config_show_fail = cfg_on; + continue; + } + + if (!strcmp(argv[n], "-p") || !strcmp(argv[n], "--pass")) + { + handle->config_show_pass = cfg_on; + continue; + } + + fprintf(stderr, "Unknown argument: %s\n\n", argv[n]); + exotic_help(argv[0]); + exit(0); + } + + if (handle->config_show_summary == cfg_on) + { + if (handle->config_show_pass == cfg_default) handle->config_show_pass = cfg_off; + if (handle->config_show_fail == cfg_default) handle->config_show_fail = cfg_off; + + } + else if (handle->config_show_pass == cfg_on) + { + if (handle->config_show_summary == cfg_default) handle->config_show_summary = cfg_off; + if (handle->config_show_fail == cfg_default) handle->config_show_fail = cfg_off; + } + else if (handle->config_show_fail == cfg_on) + { + if (handle->config_show_summary == cfg_default) handle->config_show_summary = cfg_off; + if (handle->config_show_fail == cfg_default) handle->config_show_fail = cfg_off; + } + else + { + if (handle->config_show_summary == cfg_default) handle->config_show_summary = cfg_on; + if (handle->config_show_fail == cfg_default) handle->config_show_fail = cfg_on; + if (handle->config_show_pass == cfg_default) handle->config_show_pass = cfg_on; + } + return 0; +} + + +void exotic_add_test(struct exotic_handle* handle, exo_test_t func, const char* name) +{ + if (!handle) + { + fprintf(stderr, "exotic_add_test: failed, no handle!\n"); + exit(-1); + } + + struct exo_test_data* test = (struct exo_test_data*) malloc(sizeof(struct exo_test_data)); + if (!test) + { + fprintf(stderr, "exotic_add_test: out of memory!\n"); + exit(-1); + } + + /* Create the test */ + memset(test, 0, sizeof(struct exo_test_data)); + test->test = func; + test->name = strdup(name); + + /* Register the test in the handle */ + if (!handle->first) + { + handle->first = test; + handle->current = test; + } + else + { + handle->current->next = test; + handle->current = test; + } +} + + +int exotic_run(struct exotic_handle* handle) +{ + struct exo_test_data* tmp = NULL; + + if (!handle) + { + fprintf(stderr, "Error: exotic is not initialized\n"); + return -1; + } + + handle->current = handle->first; + while (handle->current) + { + tmp = handle->current; + + if (handle->current->test()) { + if (handle->config_show_pass == cfg_on) printf("* PASS test \'%s\'\n", tmp->name); + handle->pass++; + } else { + if (handle->config_show_fail == cfg_on) printf("* FAIL test \'%s\'\n", tmp->name); + handle->fail++; + } + + handle->current = handle->current->next; + + free(tmp->name); + free(tmp); + } + + if (!handle->first) + { + printf("(No tests added)\n"); + } + + if (handle->config_show_summary == cfg_on) + exotic_summary(handle); + + return (handle->fail) ? handle->fail : 0; +} + + +static void exotic_version() { + printf("exotic 0.4-standalone\n\n"); + printf("Copyright (C) 2007 Jan Vidar Krey, janvidar@extatic.org\n"); + printf("This is free software with ABSOLUTELY NO WARRANTY.\n\n"); +} +'; } + diff --git a/autotest/test.c b/autotest/test.c new file mode 100644 index 0000000..cb3142d --- /dev/null +++ b/autotest/test.c @@ -0,0 +1,1002 @@ +/* THIS FILE IS AUTOMATICALLY GENERATED BY EXOTIC - DO NOT EDIT THIS FILE! */ +/* exotic/0.4 (Mon Nov 7 11:15:31 CET 2011) */ + +#define __EXOTIC__STANDALONE__ + +/* + * Exotic (EXtatic.Org Test InfrastuCture) + * Copyright (c) 2007, Jan Vidar Krey + */ + +#ifndef EXO_TEST +#define EXO_TEST(NAME, block) int exotic_test_ ## NAME (void) block +#endif + +#ifndef HAVE_EXOTIC_AUTOTEST_H +#define HAVE_EXOTIC_AUTOTEST_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef int(*exo_test_t)(); + +enum exo_toggle { cfg_default, cfg_off, cfg_on }; + +struct exotic_handle +{ + enum exo_toggle config_show_summary; + enum exo_toggle config_show_pass; + enum exo_toggle config_show_fail; + unsigned int fail; + unsigned int pass; + struct exo_test_data* first; + struct exo_test_data* current; +}; + +extern int exotic_initialize(struct exotic_handle* handle, int argc, char** argv); +extern void exotic_add_test(struct exotic_handle* handle, exo_test_t, const char* name); +extern int exotic_run(struct exotic_handle* handle); + +#ifdef __cplusplus +} +#endif + +#endif /* HAVE_EXOTIC_AUTOTEST_H */ + +#include "test_commands.tcc" +#include "test_credentials.tcc" +#include "test_eventqueue.tcc" +#include "test_hub.tcc" +#include "test_inf.tcc" +#include "test_ipfilter.tcc" +#include "test_list.tcc" +#include "test_memory.tcc" +#include "test_message.tcc" +#include "test_misc.tcc" +#include "test_sid.tcc" +#include "test_tiger.tcc" +#include "test_timer.tcc" +#include "test_tokenizer.tcc" +#include "test_usermanager.tcc" + +int main(int argc, char** argv) +{ + struct exotic_handle handle; + + if (exotic_initialize(&handle, argc, argv) == -1) + return -1; + + /* Register the tests to be run */ + exotic_add_test(&handle, &exotic_test_setup, "setup"); + exotic_add_test(&handle, &exotic_test_command_setup_user, "command_setup_user"); + exotic_add_test(&handle, &exotic_test_command_create, "command_create"); + exotic_add_test(&handle, &exotic_test_command_access_1, "command_access_1"); + exotic_add_test(&handle, &exotic_test_command_access_2, "command_access_2"); + exotic_add_test(&handle, &exotic_test_command_access_3, "command_access_3"); + exotic_add_test(&handle, &exotic_test_command_syntax_1, "command_syntax_1"); + exotic_add_test(&handle, &exotic_test_command_syntax_2, "command_syntax_2"); + exotic_add_test(&handle, &exotic_test_command_missing_args_1, "command_missing_args_1"); + exotic_add_test(&handle, &exotic_test_command_missing_args_2, "command_missing_args_2"); + exotic_add_test(&handle, &exotic_test_command_missing_args_3, "command_missing_args_3"); + exotic_add_test(&handle, &exotic_test_command_number_1, "command_number_1"); + exotic_add_test(&handle, &exotic_test_command_number_2, "command_number_2"); + exotic_add_test(&handle, &exotic_test_command_number_3, "command_number_3"); + exotic_add_test(&handle, &exotic_test_command_user_1, "command_user_1"); + exotic_add_test(&handle, &exotic_test_command_user_2, "command_user_2"); + exotic_add_test(&handle, &exotic_test_command_user_3, "command_user_3"); + exotic_add_test(&handle, &exotic_test_command_user_4, "command_user_4"); + exotic_add_test(&handle, &exotic_test_command_user_5, "command_user_5"); + exotic_add_test(&handle, &exotic_test_command_command_1, "command_command_1"); + exotic_add_test(&handle, &exotic_test_command_command_2, "command_command_2"); + exotic_add_test(&handle, &exotic_test_command_command_3, "command_command_3"); + exotic_add_test(&handle, &exotic_test_command_command_4, "command_command_4"); + exotic_add_test(&handle, &exotic_test_command_command_5, "command_command_5"); + exotic_add_test(&handle, &exotic_test_command_command_6, "command_command_6"); + exotic_add_test(&handle, &exotic_test_command_command_7, "command_command_7"); + exotic_add_test(&handle, &exotic_test_command_command_8, "command_command_8"); + exotic_add_test(&handle, &exotic_test_command_cred_1, "command_cred_1"); + exotic_add_test(&handle, &exotic_test_command_cred_2, "command_cred_2"); + exotic_add_test(&handle, &exotic_test_command_cred_3, "command_cred_3"); + exotic_add_test(&handle, &exotic_test_command_cred_4, "command_cred_4"); + exotic_add_test(&handle, &exotic_test_command_cred_5, "command_cred_5"); + exotic_add_test(&handle, &exotic_test_command_cred_6, "command_cred_6"); + exotic_add_test(&handle, &exotic_test_command_cred_7, "command_cred_7"); + exotic_add_test(&handle, &exotic_test_command_cred_8, "command_cred_8"); + exotic_add_test(&handle, &exotic_test_command_parse_3, "command_parse_3"); + exotic_add_test(&handle, &exotic_test_command_parse_4, "command_parse_4"); + exotic_add_test(&handle, &exotic_test_command_argument_integer_1, "command_argument_integer_1"); + exotic_add_test(&handle, &exotic_test_command_argument_integer_2, "command_argument_integer_2"); + exotic_add_test(&handle, &exotic_test_command_argument_integer_3, "command_argument_integer_3"); + exotic_add_test(&handle, &exotic_test_command_argument_user_1, "command_argument_user_1"); + exotic_add_test(&handle, &exotic_test_command_argument_cid_1, "command_argument_cid_1"); + exotic_add_test(&handle, &exotic_test_command_argument_cred_1, "command_argument_cred_1"); + exotic_add_test(&handle, &exotic_test_command_argument_cred_2, "command_argument_cred_2"); + exotic_add_test(&handle, &exotic_test_command_argument_cred_3, "command_argument_cred_3"); + exotic_add_test(&handle, &exotic_test_command_argument_cred_4, "command_argument_cred_4"); + exotic_add_test(&handle, &exotic_test_command_argument_cred_5, "command_argument_cred_5"); + exotic_add_test(&handle, &exotic_test_command_argument_cred_6, "command_argument_cred_6"); + exotic_add_test(&handle, &exotic_test_command_user_destroy, "command_user_destroy"); + exotic_add_test(&handle, &exotic_test_command_destroy, "command_destroy"); + exotic_add_test(&handle, &exotic_test_cleanup, "cleanup"); + exotic_add_test(&handle, &exotic_test_cred_to_string_1, "cred_to_string_1"); + exotic_add_test(&handle, &exotic_test_cred_to_string_2, "cred_to_string_2"); + exotic_add_test(&handle, &exotic_test_cred_to_string_3, "cred_to_string_3"); + exotic_add_test(&handle, &exotic_test_cred_to_string_4, "cred_to_string_4"); + exotic_add_test(&handle, &exotic_test_cred_to_string_5, "cred_to_string_5"); + exotic_add_test(&handle, &exotic_test_cred_to_string_6, "cred_to_string_6"); + exotic_add_test(&handle, &exotic_test_cred_to_string_7, "cred_to_string_7"); + exotic_add_test(&handle, &exotic_test_cred_to_string_8, "cred_to_string_8"); + exotic_add_test(&handle, &exotic_test_cred_from_string_1, "cred_from_string_1"); + exotic_add_test(&handle, &exotic_test_cred_from_string_2, "cred_from_string_2"); + exotic_add_test(&handle, &exotic_test_cred_from_string_3, "cred_from_string_3"); + exotic_add_test(&handle, &exotic_test_cred_from_string_4, "cred_from_string_4"); + exotic_add_test(&handle, &exotic_test_cred_from_string_5, "cred_from_string_5"); + exotic_add_test(&handle, &exotic_test_cred_from_string_6, "cred_from_string_6"); + exotic_add_test(&handle, &exotic_test_cred_from_string_7, "cred_from_string_7"); + exotic_add_test(&handle, &exotic_test_cred_from_string_8, "cred_from_string_8"); + exotic_add_test(&handle, &exotic_test_cred_from_string_9, "cred_from_string_9"); + exotic_add_test(&handle, &exotic_test_cred_from_string_10, "cred_from_string_10"); + exotic_add_test(&handle, &exotic_test_eventqueue_init_1, "eventqueue_init_1"); + exotic_add_test(&handle, &exotic_test_eventqueue_init_2, "eventqueue_init_2"); + exotic_add_test(&handle, &exotic_test_eventqueue_post_1, "eventqueue_post_1"); + exotic_add_test(&handle, &exotic_test_eventqueue_process_1, "eventqueue_process_1"); + exotic_add_test(&handle, &exotic_test_eventqueue_size_1, "eventqueue_size_1"); + exotic_add_test(&handle, &exotic_test_eventqueue_post_2, "eventqueue_post_2"); + exotic_add_test(&handle, &exotic_test_eventqueue_size_2, "eventqueue_size_2"); + exotic_add_test(&handle, &exotic_test_eventqueue_post_3, "eventqueue_post_3"); + exotic_add_test(&handle, &exotic_test_eventqueue_size_3, "eventqueue_size_3"); + exotic_add_test(&handle, &exotic_test_eventqueue_process_2, "eventqueue_process_2"); + exotic_add_test(&handle, &exotic_test_eventqueue_size_4, "eventqueue_size_4"); + exotic_add_test(&handle, &exotic_test_eventqueue_shutdown_1, "eventqueue_shutdown_1"); + exotic_add_test(&handle, &exotic_test_hub_net_startup, "hub_net_startup"); + exotic_add_test(&handle, &exotic_test_hub_config_initialize, "hub_config_initialize"); + exotic_add_test(&handle, &exotic_test_hub_acl_initialize, "hub_acl_initialize"); + exotic_add_test(&handle, &exotic_test_hub_service_initialize, "hub_service_initialize"); + exotic_add_test(&handle, &exotic_test_hub_variables_startup, "hub_variables_startup"); + exotic_add_test(&handle, &exotic_test_hub_variables_shutdown, "hub_variables_shutdown"); + exotic_add_test(&handle, &exotic_test_hub_acl_shutdown, "hub_acl_shutdown"); + exotic_add_test(&handle, &exotic_test_hub_config_shutdown, "hub_config_shutdown"); + exotic_add_test(&handle, &exotic_test_hub_service_shutdown, "hub_service_shutdown"); + exotic_add_test(&handle, &exotic_test_hub_net_shutdown, "hub_net_shutdown"); + exotic_add_test(&handle, &exotic_test_inf_create_setup, "inf_create_setup"); + exotic_add_test(&handle, &exotic_test_inf_ok_1, "inf_ok_1"); + exotic_add_test(&handle, &exotic_test_inf_cid_1, "inf_cid_1"); + exotic_add_test(&handle, &exotic_test_inf_cid_2, "inf_cid_2"); + exotic_add_test(&handle, &exotic_test_inf_cid_3, "inf_cid_3"); + exotic_add_test(&handle, &exotic_test_inf_cid_4, "inf_cid_4"); + exotic_add_test(&handle, &exotic_test_inf_cid_5, "inf_cid_5"); + exotic_add_test(&handle, &exotic_test_inf_cid_6, "inf_cid_6"); + exotic_add_test(&handle, &exotic_test_inf_cid_7, "inf_cid_7"); + exotic_add_test(&handle, &exotic_test_inf_cid_8, "inf_cid_8"); + exotic_add_test(&handle, &exotic_test_inf_cid_9, "inf_cid_9"); + exotic_add_test(&handle, &exotic_test_inf_pid_1, "inf_pid_1"); + exotic_add_test(&handle, &exotic_test_inf_pid_2, "inf_pid_2"); + exotic_add_test(&handle, &exotic_test_inf_pid_3, "inf_pid_3"); + exotic_add_test(&handle, &exotic_test_inf_pid_4, "inf_pid_4"); + exotic_add_test(&handle, &exotic_test_inf_pid_5, "inf_pid_5"); + exotic_add_test(&handle, &exotic_test_inf_pid_6, "inf_pid_6"); + exotic_add_test(&handle, &exotic_test_inf_pid_7, "inf_pid_7"); + exotic_add_test(&handle, &exotic_test_inf_pid_8, "inf_pid_8"); + exotic_add_test(&handle, &exotic_test_inf_pid_9, "inf_pid_9"); + exotic_add_test(&handle, &exotic_test_inf_nick_01, "inf_nick_01"); + exotic_add_test(&handle, &exotic_test_inf_nick_02, "inf_nick_02"); + exotic_add_test(&handle, &exotic_test_inf_nick_03, "inf_nick_03"); + exotic_add_test(&handle, &exotic_test_inf_nick_04, "inf_nick_04"); + exotic_add_test(&handle, &exotic_test_inf_nick_05, "inf_nick_05"); + exotic_add_test(&handle, &exotic_test_inf_nick_06, "inf_nick_06"); + exotic_add_test(&handle, &exotic_test_inf_nick_07, "inf_nick_07"); + exotic_add_test(&handle, &exotic_test_inf_nick_08, "inf_nick_08"); + exotic_add_test(&handle, &exotic_test_inf_nick_09, "inf_nick_09"); + exotic_add_test(&handle, &exotic_test_inf_nick_10, "inf_nick_10"); + exotic_add_test(&handle, &exotic_test_inf_limits_1, "inf_limits_1"); + exotic_add_test(&handle, &exotic_test_inf_limits_2, "inf_limits_2"); + exotic_add_test(&handle, &exotic_test_inf_limits_3, "inf_limits_3"); + exotic_add_test(&handle, &exotic_test_inf_limits_4, "inf_limits_4"); + exotic_add_test(&handle, &exotic_test_inf_limit_hubs_setup, "inf_limit_hubs_setup"); + exotic_add_test(&handle, &exotic_test_inf_limit_hubs_1, "inf_limit_hubs_1"); + exotic_add_test(&handle, &exotic_test_inf_limit_hubs_2, "inf_limit_hubs_2"); + exotic_add_test(&handle, &exotic_test_inf_limit_hubs_3, "inf_limit_hubs_3"); + exotic_add_test(&handle, &exotic_test_inf_limit_hubs_4, "inf_limit_hubs_4"); + exotic_add_test(&handle, &exotic_test_inf_limit_hubs_5, "inf_limit_hubs_5"); + exotic_add_test(&handle, &exotic_test_inf_limit_hubs_6, "inf_limit_hubs_6"); + exotic_add_test(&handle, &exotic_test_inf_limit_hubs_7, "inf_limit_hubs_7"); + exotic_add_test(&handle, &exotic_test_inf_destroy_setup, "inf_destroy_setup"); + exotic_add_test(&handle, &exotic_test_prepare_network, "prepare_network"); + exotic_add_test(&handle, &exotic_test_check_ipv6, "check_ipv6"); + exotic_add_test(&handle, &exotic_test_create_addresses_1, "create_addresses_1"); + exotic_add_test(&handle, &exotic_test_create_addresses_2, "create_addresses_2"); + exotic_add_test(&handle, &exotic_test_ip_is_valid_ipv4_1, "ip_is_valid_ipv4_1"); + exotic_add_test(&handle, &exotic_test_ip_is_valid_ipv4_2, "ip_is_valid_ipv4_2"); + exotic_add_test(&handle, &exotic_test_ip_is_valid_ipv4_3, "ip_is_valid_ipv4_3"); + exotic_add_test(&handle, &exotic_test_ip_is_valid_ipv4_4, "ip_is_valid_ipv4_4"); + exotic_add_test(&handle, &exotic_test_ip_is_valid_ipv4_5, "ip_is_valid_ipv4_5"); + exotic_add_test(&handle, &exotic_test_ip_is_valid_ipv4_6, "ip_is_valid_ipv4_6"); + exotic_add_test(&handle, &exotic_test_ip_is_valid_ipv4_7, "ip_is_valid_ipv4_7"); + exotic_add_test(&handle, &exotic_test_ip_is_valid_ipv4_8, "ip_is_valid_ipv4_8"); + exotic_add_test(&handle, &exotic_test_ip_is_valid_ipv4_9, "ip_is_valid_ipv4_9"); + exotic_add_test(&handle, &exotic_test_ip_is_valid_ipv6_1, "ip_is_valid_ipv6_1"); + exotic_add_test(&handle, &exotic_test_ip_is_valid_ipv6_2, "ip_is_valid_ipv6_2"); + exotic_add_test(&handle, &exotic_test_ip_is_valid_ipv6_3, "ip_is_valid_ipv6_3"); + exotic_add_test(&handle, &exotic_test_ip4_compare_1, "ip4_compare_1"); + exotic_add_test(&handle, &exotic_test_ip4_compare_2, "ip4_compare_2"); + exotic_add_test(&handle, &exotic_test_ip4_compare_3, "ip4_compare_3"); + exotic_add_test(&handle, &exotic_test_ip4_compare_4, "ip4_compare_4"); + exotic_add_test(&handle, &exotic_test_ip4_compare_5, "ip4_compare_5"); + exotic_add_test(&handle, &exotic_test_ip4_compare_6, "ip4_compare_6"); + exotic_add_test(&handle, &exotic_test_ip6_compare_1, "ip6_compare_1"); + exotic_add_test(&handle, &exotic_test_ip6_compare_2, "ip6_compare_2"); + exotic_add_test(&handle, &exotic_test_ip6_compare_3, "ip6_compare_3"); + exotic_add_test(&handle, &exotic_test_ip6_compare_4, "ip6_compare_4"); + exotic_add_test(&handle, &exotic_test_ip6_compare_5, "ip6_compare_5"); + exotic_add_test(&handle, &exotic_test_ip6_compare_6, "ip6_compare_6"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_0, "ipv4_lmask_create_0"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_1, "ipv4_lmask_create_1"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_2, "ipv4_lmask_create_2"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_3, "ipv4_lmask_create_3"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_4, "ipv4_lmask_create_4"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_5, "ipv4_lmask_create_5"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_6, "ipv4_lmask_create_6"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_7, "ipv4_lmask_create_7"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_8, "ipv4_lmask_create_8"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_9, "ipv4_lmask_create_9"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_10, "ipv4_lmask_create_10"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_11, "ipv4_lmask_create_11"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_12, "ipv4_lmask_create_12"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_13, "ipv4_lmask_create_13"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_14, "ipv4_lmask_create_14"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_15, "ipv4_lmask_create_15"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_16, "ipv4_lmask_create_16"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_17, "ipv4_lmask_create_17"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_18, "ipv4_lmask_create_18"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_19, "ipv4_lmask_create_19"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_20, "ipv4_lmask_create_20"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_21, "ipv4_lmask_create_21"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_22, "ipv4_lmask_create_22"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_23, "ipv4_lmask_create_23"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_24, "ipv4_lmask_create_24"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_25, "ipv4_lmask_create_25"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_26, "ipv4_lmask_create_26"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_27, "ipv4_lmask_create_27"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_28, "ipv4_lmask_create_28"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_29, "ipv4_lmask_create_29"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_30, "ipv4_lmask_create_30"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_31, "ipv4_lmask_create_31"); + exotic_add_test(&handle, &exotic_test_ipv4_lmask_create_32, "ipv4_lmask_create_32"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_0, "ipv4_rmask_create_0"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_1, "ipv4_rmask_create_1"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_2, "ipv4_rmask_create_2"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_3, "ipv4_rmask_create_3"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_4, "ipv4_rmask_create_4"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_5, "ipv4_rmask_create_5"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_6, "ipv4_rmask_create_6"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_7, "ipv4_rmask_create_7"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_8, "ipv4_rmask_create_8"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_9, "ipv4_rmask_create_9"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_10, "ipv4_rmask_create_10"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_11, "ipv4_rmask_create_11"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_12, "ipv4_rmask_create_12"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_13, "ipv4_rmask_create_13"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_14, "ipv4_rmask_create_14"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_15, "ipv4_rmask_create_15"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_16, "ipv4_rmask_create_16"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_17, "ipv4_rmask_create_17"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_18, "ipv4_rmask_create_18"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_19, "ipv4_rmask_create_19"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_20, "ipv4_rmask_create_20"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_21, "ipv4_rmask_create_21"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_22, "ipv4_rmask_create_22"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_23, "ipv4_rmask_create_23"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_24, "ipv4_rmask_create_24"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_25, "ipv4_rmask_create_25"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_26, "ipv4_rmask_create_26"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_27, "ipv4_rmask_create_27"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_28, "ipv4_rmask_create_28"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_29, "ipv4_rmask_create_29"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_30, "ipv4_rmask_create_30"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_31, "ipv4_rmask_create_31"); + exotic_add_test(&handle, &exotic_test_ipv4_rmask_create_32, "ipv4_rmask_create_32"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_0, "ip6_lmask_create_0"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_1, "ip6_lmask_create_1"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_2, "ip6_lmask_create_2"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_3, "ip6_lmask_create_3"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_4, "ip6_lmask_create_4"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_5, "ip6_lmask_create_5"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_6, "ip6_lmask_create_6"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_7, "ip6_lmask_create_7"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_8, "ip6_lmask_create_8"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_9, "ip6_lmask_create_9"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_10, "ip6_lmask_create_10"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_11, "ip6_lmask_create_11"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_12, "ip6_lmask_create_12"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_13, "ip6_lmask_create_13"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_14, "ip6_lmask_create_14"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_15, "ip6_lmask_create_15"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_16, "ip6_lmask_create_16"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_17, "ip6_lmask_create_17"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_18, "ip6_lmask_create_18"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_19, "ip6_lmask_create_19"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_20, "ip6_lmask_create_20"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_21, "ip6_lmask_create_21"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_22, "ip6_lmask_create_22"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_23, "ip6_lmask_create_23"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_24, "ip6_lmask_create_24"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_25, "ip6_lmask_create_25"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_26, "ip6_lmask_create_26"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_27, "ip6_lmask_create_27"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_28, "ip6_lmask_create_28"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_29, "ip6_lmask_create_29"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_30, "ip6_lmask_create_30"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_31, "ip6_lmask_create_31"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_32, "ip6_lmask_create_32"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_33, "ip6_lmask_create_33"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_34, "ip6_lmask_create_34"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_35, "ip6_lmask_create_35"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_36, "ip6_lmask_create_36"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_37, "ip6_lmask_create_37"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_38, "ip6_lmask_create_38"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_39, "ip6_lmask_create_39"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_40, "ip6_lmask_create_40"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_41, "ip6_lmask_create_41"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_42, "ip6_lmask_create_42"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_43, "ip6_lmask_create_43"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_44, "ip6_lmask_create_44"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_45, "ip6_lmask_create_45"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_46, "ip6_lmask_create_46"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_47, "ip6_lmask_create_47"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_48, "ip6_lmask_create_48"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_49, "ip6_lmask_create_49"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_50, "ip6_lmask_create_50"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_51, "ip6_lmask_create_51"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_52, "ip6_lmask_create_52"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_53, "ip6_lmask_create_53"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_54, "ip6_lmask_create_54"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_55, "ip6_lmask_create_55"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_56, "ip6_lmask_create_56"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_57, "ip6_lmask_create_57"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_58, "ip6_lmask_create_58"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_59, "ip6_lmask_create_59"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_60, "ip6_lmask_create_60"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_61, "ip6_lmask_create_61"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_62, "ip6_lmask_create_62"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_63, "ip6_lmask_create_63"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_64, "ip6_lmask_create_64"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_65, "ip6_lmask_create_65"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_66, "ip6_lmask_create_66"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_67, "ip6_lmask_create_67"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_68, "ip6_lmask_create_68"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_69, "ip6_lmask_create_69"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_70, "ip6_lmask_create_70"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_71, "ip6_lmask_create_71"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_72, "ip6_lmask_create_72"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_73, "ip6_lmask_create_73"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_74, "ip6_lmask_create_74"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_75, "ip6_lmask_create_75"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_76, "ip6_lmask_create_76"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_77, "ip6_lmask_create_77"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_78, "ip6_lmask_create_78"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_79, "ip6_lmask_create_79"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_80, "ip6_lmask_create_80"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_81, "ip6_lmask_create_81"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_82, "ip6_lmask_create_82"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_83, "ip6_lmask_create_83"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_84, "ip6_lmask_create_84"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_85, "ip6_lmask_create_85"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_86, "ip6_lmask_create_86"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_87, "ip6_lmask_create_87"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_88, "ip6_lmask_create_88"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_89, "ip6_lmask_create_89"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_90, "ip6_lmask_create_90"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_91, "ip6_lmask_create_91"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_92, "ip6_lmask_create_92"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_93, "ip6_lmask_create_93"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_94, "ip6_lmask_create_94"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_95, "ip6_lmask_create_95"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_96, "ip6_lmask_create_96"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_97, "ip6_lmask_create_97"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_98, "ip6_lmask_create_98"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_99, "ip6_lmask_create_99"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_100, "ip6_lmask_create_100"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_101, "ip6_lmask_create_101"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_102, "ip6_lmask_create_102"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_103, "ip6_lmask_create_103"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_104, "ip6_lmask_create_104"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_105, "ip6_lmask_create_105"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_106, "ip6_lmask_create_106"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_107, "ip6_lmask_create_107"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_108, "ip6_lmask_create_108"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_109, "ip6_lmask_create_109"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_110, "ip6_lmask_create_110"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_111, "ip6_lmask_create_111"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_112, "ip6_lmask_create_112"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_113, "ip6_lmask_create_113"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_114, "ip6_lmask_create_114"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_115, "ip6_lmask_create_115"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_116, "ip6_lmask_create_116"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_117, "ip6_lmask_create_117"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_118, "ip6_lmask_create_118"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_119, "ip6_lmask_create_119"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_120, "ip6_lmask_create_120"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_121, "ip6_lmask_create_121"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_122, "ip6_lmask_create_122"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_123, "ip6_lmask_create_123"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_124, "ip6_lmask_create_124"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_125, "ip6_lmask_create_125"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_126, "ip6_lmask_create_126"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_127, "ip6_lmask_create_127"); + exotic_add_test(&handle, &exotic_test_ip6_lmask_create_128, "ip6_lmask_create_128"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_0, "ip6_rmask_create_0"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_1, "ip6_rmask_create_1"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_2, "ip6_rmask_create_2"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_3, "ip6_rmask_create_3"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_4, "ip6_rmask_create_4"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_5, "ip6_rmask_create_5"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_6, "ip6_rmask_create_6"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_7, "ip6_rmask_create_7"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_8, "ip6_rmask_create_8"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_9, "ip6_rmask_create_9"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_10, "ip6_rmask_create_10"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_11, "ip6_rmask_create_11"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_12, "ip6_rmask_create_12"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_13, "ip6_rmask_create_13"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_14, "ip6_rmask_create_14"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_15, "ip6_rmask_create_15"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_16, "ip6_rmask_create_16"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_17, "ip6_rmask_create_17"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_18, "ip6_rmask_create_18"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_19, "ip6_rmask_create_19"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_20, "ip6_rmask_create_20"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_21, "ip6_rmask_create_21"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_22, "ip6_rmask_create_22"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_23, "ip6_rmask_create_23"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_24, "ip6_rmask_create_24"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_25, "ip6_rmask_create_25"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_26, "ip6_rmask_create_26"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_27, "ip6_rmask_create_27"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_28, "ip6_rmask_create_28"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_29, "ip6_rmask_create_29"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_30, "ip6_rmask_create_30"); + exotic_add_test(&handle, &exotic_test_ip6_rmask_create_31, "ip6_rmask_create_31"); + exotic_add_test(&handle, &exotic_test_check_ban_setup_1, "check_ban_setup_1"); + exotic_add_test(&handle, &exotic_test_check_ban_ipv4_1, "check_ban_ipv4_1"); + exotic_add_test(&handle, &exotic_test_check_ban_ipv4_2, "check_ban_ipv4_2"); + exotic_add_test(&handle, &exotic_test_check_ban_ipv4_3, "check_ban_ipv4_3"); + exotic_add_test(&handle, &exotic_test_check_ban_ipv4_4, "check_ban_ipv4_4"); + exotic_add_test(&handle, &exotic_test_check_ban_ipv4_5, "check_ban_ipv4_5"); + exotic_add_test(&handle, &exotic_test_check_ban_ipv6_1, "check_ban_ipv6_1"); + exotic_add_test(&handle, &exotic_test_check_ban_ipv6_2, "check_ban_ipv6_2"); + exotic_add_test(&handle, &exotic_test_check_ban_ipv6_3, "check_ban_ipv6_3"); + exotic_add_test(&handle, &exotic_test_check_ban_ipv6_4, "check_ban_ipv6_4"); + exotic_add_test(&handle, &exotic_test_check_ban_ipv6_5, "check_ban_ipv6_5"); + exotic_add_test(&handle, &exotic_test_check_ban_ipv6_6, "check_ban_ipv6_6"); + exotic_add_test(&handle, &exotic_test_check_ban_afmix_1, "check_ban_afmix_1"); + exotic_add_test(&handle, &exotic_test_check_ban_afmix_2, "check_ban_afmix_2"); + exotic_add_test(&handle, &exotic_test_ip4_bitwise_AND_1, "ip4_bitwise_AND_1"); + exotic_add_test(&handle, &exotic_test_ip4_bitwise_AND_2, "ip4_bitwise_AND_2"); + exotic_add_test(&handle, &exotic_test_ip4_bitwise_AND_3, "ip4_bitwise_AND_3"); + exotic_add_test(&handle, &exotic_test_ip4_bitwise_AND_4, "ip4_bitwise_AND_4"); + exotic_add_test(&handle, &exotic_test_ip4_bitwise_AND_5, "ip4_bitwise_AND_5"); + exotic_add_test(&handle, &exotic_test_ip4_bitwise_OR_1, "ip4_bitwise_OR_1"); + exotic_add_test(&handle, &exotic_test_ip4_bitwise_OR_2, "ip4_bitwise_OR_2"); + exotic_add_test(&handle, &exotic_test_ip4_bitwise_OR_3, "ip4_bitwise_OR_3"); + exotic_add_test(&handle, &exotic_test_ip4_bitwise_OR_4, "ip4_bitwise_OR_4"); + exotic_add_test(&handle, &exotic_test_ip4_bitwise_OR_5, "ip4_bitwise_OR_5"); + exotic_add_test(&handle, &exotic_test_ip6_bitwise_AND_1, "ip6_bitwise_AND_1"); + exotic_add_test(&handle, &exotic_test_ip6_bitwise_AND_2, "ip6_bitwise_AND_2"); + exotic_add_test(&handle, &exotic_test_ip6_bitwise_AND_3, "ip6_bitwise_AND_3"); + exotic_add_test(&handle, &exotic_test_ip6_bitwise_OR_1, "ip6_bitwise_OR_1"); + exotic_add_test(&handle, &exotic_test_ip6_bitwise_OR_2, "ip6_bitwise_OR_2"); + exotic_add_test(&handle, &exotic_test_ip6_bitwise_OR_3, "ip6_bitwise_OR_3"); + exotic_add_test(&handle, &exotic_test_ip_range_1, "ip_range_1"); + exotic_add_test(&handle, &exotic_test_ip_range_2, "ip_range_2"); + exotic_add_test(&handle, &exotic_test_ip_range_3, "ip_range_3"); + exotic_add_test(&handle, &exotic_test_ip_range_4, "ip_range_4"); + exotic_add_test(&handle, &exotic_test_shutdown_network, "shutdown_network"); + exotic_add_test(&handle, &exotic_test_list_create_destroy, "list_create_destroy"); + exotic_add_test(&handle, &exotic_test_list_create, "list_create"); + exotic_add_test(&handle, &exotic_test_list_append_1, "list_append_1"); + exotic_add_test(&handle, &exotic_test_list_remove_1, "list_remove_1"); + exotic_add_test(&handle, &exotic_test_list_append_2, "list_append_2"); + exotic_add_test(&handle, &exotic_test_list_remove_2, "list_remove_2"); + exotic_add_test(&handle, &exotic_test_list_remove_3, "list_remove_3"); + exotic_add_test(&handle, &exotic_test_list_remove_4, "list_remove_4"); + exotic_add_test(&handle, &exotic_test_list_append_3, "list_append_3"); + exotic_add_test(&handle, &exotic_test_list_append_4, "list_append_4"); + exotic_add_test(&handle, &exotic_test_list_remove_5, "list_remove_5"); + exotic_add_test(&handle, &exotic_test_list_get_index_1, "list_get_index_1"); + exotic_add_test(&handle, &exotic_test_list_get_index_2, "list_get_index_2"); + exotic_add_test(&handle, &exotic_test_list_get_index_3, "list_get_index_3"); + exotic_add_test(&handle, &exotic_test_list_get_index_4, "list_get_index_4"); + exotic_add_test(&handle, &exotic_test_list_get_first_1, "list_get_first_1"); + exotic_add_test(&handle, &exotic_test_list_get_first_next_1, "list_get_first_next_1"); + exotic_add_test(&handle, &exotic_test_list_get_first_next_2, "list_get_first_next_2"); + exotic_add_test(&handle, &exotic_test_list_get_last_1, "list_get_last_1"); + exotic_add_test(&handle, &exotic_test_list_get_last_prev_1, "list_get_last_prev_1"); + exotic_add_test(&handle, &exotic_test_list_get_last_prev_2, "list_get_last_prev_2"); + exotic_add_test(&handle, &exotic_test_list_get_last_prev_next_1, "list_get_last_prev_next_1"); + exotic_add_test(&handle, &exotic_test_list_clear, "list_clear"); + exotic_add_test(&handle, &exotic_test_list_destroy_1, "list_destroy_1"); + exotic_add_test(&handle, &exotic_test_list_destroy_2, "list_destroy_2"); + exotic_add_test(&handle, &exotic_test_test_message_refc_1, "test_message_refc_1"); + exotic_add_test(&handle, &exotic_test_test_message_refc_2, "test_message_refc_2"); + exotic_add_test(&handle, &exotic_test_test_message_refc_3, "test_message_refc_3"); + exotic_add_test(&handle, &exotic_test_test_message_refc_4, "test_message_refc_4"); + exotic_add_test(&handle, &exotic_test_test_message_refc_5, "test_message_refc_5"); + exotic_add_test(&handle, &exotic_test_test_message_refc_6, "test_message_refc_6"); + exotic_add_test(&handle, &exotic_test_test_message_refc_7, "test_message_refc_7"); + exotic_add_test(&handle, &exotic_test_adc_message_first, "adc_message_first"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_1, "adc_message_parse_1"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_2, "adc_message_parse_2"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_3, "adc_message_parse_3"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_4, "adc_message_parse_4"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_5, "adc_message_parse_5"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_6, "adc_message_parse_6"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_7, "adc_message_parse_7"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_8, "adc_message_parse_8"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_9, "adc_message_parse_9"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_10, "adc_message_parse_10"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_11, "adc_message_parse_11"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_12, "adc_message_parse_12"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_13, "adc_message_parse_13"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_14, "adc_message_parse_14"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_15, "adc_message_parse_15"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_16, "adc_message_parse_16"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_17, "adc_message_parse_17"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_18, "adc_message_parse_18"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_19, "adc_message_parse_19"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_20, "adc_message_parse_20"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_21, "adc_message_parse_21"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_22, "adc_message_parse_22"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_23, "adc_message_parse_23"); + exotic_add_test(&handle, &exotic_test_adc_message_parse_24, "adc_message_parse_24"); + exotic_add_test(&handle, &exotic_test_adc_message_add_arg_1, "adc_message_add_arg_1"); + exotic_add_test(&handle, &exotic_test_adc_message_add_arg_2, "adc_message_add_arg_2"); + exotic_add_test(&handle, &exotic_test_adc_message_remove_arg_1, "adc_message_remove_arg_1"); + exotic_add_test(&handle, &exotic_test_adc_message_remove_arg_2, "adc_message_remove_arg_2"); + exotic_add_test(&handle, &exotic_test_adc_message_remove_arg_3, "adc_message_remove_arg_3"); + exotic_add_test(&handle, &exotic_test_adc_message_remove_arg_4, "adc_message_remove_arg_4"); + exotic_add_test(&handle, &exotic_test_adc_message_replace_arg_1, "adc_message_replace_arg_1"); + exotic_add_test(&handle, &exotic_test_adc_message_replace_arg_2, "adc_message_replace_arg_2"); + exotic_add_test(&handle, &exotic_test_adc_message_replace_arg_3, "adc_message_replace_arg_3"); + exotic_add_test(&handle, &exotic_test_adc_message_get_arg_1, "adc_message_get_arg_1"); + exotic_add_test(&handle, &exotic_test_adc_message_get_arg_2, "adc_message_get_arg_2"); + exotic_add_test(&handle, &exotic_test_adc_message_get_arg_3, "adc_message_get_arg_3"); + exotic_add_test(&handle, &exotic_test_adc_message_get_arg_4, "adc_message_get_arg_4"); + exotic_add_test(&handle, &exotic_test_adc_message_get_named_arg_1, "adc_message_get_named_arg_1"); + exotic_add_test(&handle, &exotic_test_adc_message_get_named_arg_2, "adc_message_get_named_arg_2"); + exotic_add_test(&handle, &exotic_test_adc_message_get_named_arg_3, "adc_message_get_named_arg_3"); + exotic_add_test(&handle, &exotic_test_adc_message_get_named_arg_4, "adc_message_get_named_arg_4"); + exotic_add_test(&handle, &exotic_test_adc_message_has_named_arg_1, "adc_message_has_named_arg_1"); + exotic_add_test(&handle, &exotic_test_adc_message_has_named_arg_2, "adc_message_has_named_arg_2"); + exotic_add_test(&handle, &exotic_test_adc_message_has_named_arg_3, "adc_message_has_named_arg_3"); + exotic_add_test(&handle, &exotic_test_adc_message_has_named_arg_4, "adc_message_has_named_arg_4"); + exotic_add_test(&handle, &exotic_test_adc_message_has_named_arg_5, "adc_message_has_named_arg_5"); + exotic_add_test(&handle, &exotic_test_adc_message_has_named_arg_6, "adc_message_has_named_arg_6"); + exotic_add_test(&handle, &exotic_test_adc_message_has_named_arg_7, "adc_message_has_named_arg_7"); + exotic_add_test(&handle, &exotic_test_adc_message_terminate_1, "adc_message_terminate_1"); + exotic_add_test(&handle, &exotic_test_adc_message_terminate_2, "adc_message_terminate_2"); + exotic_add_test(&handle, &exotic_test_adc_message_terminate_3, "adc_message_terminate_3"); + exotic_add_test(&handle, &exotic_test_adc_message_terminate_4, "adc_message_terminate_4"); + exotic_add_test(&handle, &exotic_test_adc_message_terminate_5, "adc_message_terminate_5"); + exotic_add_test(&handle, &exotic_test_adc_message_terminate_6, "adc_message_terminate_6"); + exotic_add_test(&handle, &exotic_test_adc_message_escape_1, "adc_message_escape_1"); + exotic_add_test(&handle, &exotic_test_adc_message_escape_2, "adc_message_escape_2"); + exotic_add_test(&handle, &exotic_test_adc_message_escape_3, "adc_message_escape_3"); + exotic_add_test(&handle, &exotic_test_adc_message_copy_1, "adc_message_copy_1"); + exotic_add_test(&handle, &exotic_test_adc_message_copy_2, "adc_message_copy_2"); + exotic_add_test(&handle, &exotic_test_adc_message_copy_3, "adc_message_copy_3"); + exotic_add_test(&handle, &exotic_test_adc_message_copy_4, "adc_message_copy_4"); + exotic_add_test(&handle, &exotic_test_adc_message_update_1, "adc_message_update_1"); + exotic_add_test(&handle, &exotic_test_adc_message_update_2, "adc_message_update_2"); + exotic_add_test(&handle, &exotic_test_adc_message_update_3, "adc_message_update_3"); + exotic_add_test(&handle, &exotic_test_adc_message_update_4, "adc_message_update_4"); + exotic_add_test(&handle, &exotic_test_adc_message_update_4_cleanup, "adc_message_update_4_cleanup"); + exotic_add_test(&handle, &exotic_test_adc_message_empty_1, "adc_message_empty_1"); + exotic_add_test(&handle, &exotic_test_adc_message_empty_2, "adc_message_empty_2"); + exotic_add_test(&handle, &exotic_test_adc_message_empty_3, "adc_message_empty_3"); + exotic_add_test(&handle, &exotic_test_adc_message_last, "adc_message_last"); + exotic_add_test(&handle, &exotic_test_is_num_0, "is_num_0"); + exotic_add_test(&handle, &exotic_test_is_num_1, "is_num_1"); + exotic_add_test(&handle, &exotic_test_is_num_2, "is_num_2"); + exotic_add_test(&handle, &exotic_test_is_num_3, "is_num_3"); + exotic_add_test(&handle, &exotic_test_is_num_4, "is_num_4"); + exotic_add_test(&handle, &exotic_test_is_num_5, "is_num_5"); + exotic_add_test(&handle, &exotic_test_is_num_6, "is_num_6"); + exotic_add_test(&handle, &exotic_test_is_num_7, "is_num_7"); + exotic_add_test(&handle, &exotic_test_is_num_8, "is_num_8"); + exotic_add_test(&handle, &exotic_test_is_num_9, "is_num_9"); + exotic_add_test(&handle, &exotic_test_is_num_10, "is_num_10"); + exotic_add_test(&handle, &exotic_test_is_num_11, "is_num_11"); + exotic_add_test(&handle, &exotic_test_is_space_1, "is_space_1"); + exotic_add_test(&handle, &exotic_test_is_space_2, "is_space_2"); + exotic_add_test(&handle, &exotic_test_is_white_space_1, "is_white_space_1"); + exotic_add_test(&handle, &exotic_test_is_white_space_2, "is_white_space_2"); + exotic_add_test(&handle, &exotic_test_is_white_space_3, "is_white_space_3"); + exotic_add_test(&handle, &exotic_test_is_white_space_4, "is_white_space_4"); + exotic_add_test(&handle, &exotic_test_itoa_1, "itoa_1"); + exotic_add_test(&handle, &exotic_test_itoa_2, "itoa_2"); + exotic_add_test(&handle, &exotic_test_itoa_3, "itoa_3"); + exotic_add_test(&handle, &exotic_test_itoa_4, "itoa_4"); + exotic_add_test(&handle, &exotic_test_itoa_5, "itoa_5"); + exotic_add_test(&handle, &exotic_test_itoa_6, "itoa_6"); + exotic_add_test(&handle, &exotic_test_itoa_7, "itoa_7"); + exotic_add_test(&handle, &exotic_test_itoa_8, "itoa_8"); + exotic_add_test(&handle, &exotic_test_base32_valid_1, "base32_valid_1"); + exotic_add_test(&handle, &exotic_test_base32_valid_2, "base32_valid_2"); + exotic_add_test(&handle, &exotic_test_base32_valid_3, "base32_valid_3"); + exotic_add_test(&handle, &exotic_test_base32_valid_4, "base32_valid_4"); + exotic_add_test(&handle, &exotic_test_base32_valid_5, "base32_valid_5"); + exotic_add_test(&handle, &exotic_test_base32_valid_6, "base32_valid_6"); + exotic_add_test(&handle, &exotic_test_base32_valid_7, "base32_valid_7"); + exotic_add_test(&handle, &exotic_test_base32_valid_8, "base32_valid_8"); + exotic_add_test(&handle, &exotic_test_base32_valid_9, "base32_valid_9"); + exotic_add_test(&handle, &exotic_test_base32_valid_10, "base32_valid_10"); + exotic_add_test(&handle, &exotic_test_base32_valid_11, "base32_valid_11"); + exotic_add_test(&handle, &exotic_test_base32_valid_12, "base32_valid_12"); + exotic_add_test(&handle, &exotic_test_base32_valid_13, "base32_valid_13"); + exotic_add_test(&handle, &exotic_test_base32_valid_14, "base32_valid_14"); + exotic_add_test(&handle, &exotic_test_base32_valid_15, "base32_valid_15"); + exotic_add_test(&handle, &exotic_test_base32_valid_16, "base32_valid_16"); + exotic_add_test(&handle, &exotic_test_base32_valid_17, "base32_valid_17"); + exotic_add_test(&handle, &exotic_test_base32_valid_18, "base32_valid_18"); + exotic_add_test(&handle, &exotic_test_base32_valid_19, "base32_valid_19"); + exotic_add_test(&handle, &exotic_test_base32_valid_20, "base32_valid_20"); + exotic_add_test(&handle, &exotic_test_base32_valid_21, "base32_valid_21"); + exotic_add_test(&handle, &exotic_test_base32_valid_22, "base32_valid_22"); + exotic_add_test(&handle, &exotic_test_base32_valid_23, "base32_valid_23"); + exotic_add_test(&handle, &exotic_test_base32_valid_24, "base32_valid_24"); + exotic_add_test(&handle, &exotic_test_base32_valid_25, "base32_valid_25"); + exotic_add_test(&handle, &exotic_test_base32_valid_26, "base32_valid_26"); + exotic_add_test(&handle, &exotic_test_base32_valid_27, "base32_valid_27"); + exotic_add_test(&handle, &exotic_test_base32_valid_28, "base32_valid_28"); + exotic_add_test(&handle, &exotic_test_base32_valid_29, "base32_valid_29"); + exotic_add_test(&handle, &exotic_test_base32_valid_30, "base32_valid_30"); + exotic_add_test(&handle, &exotic_test_base32_valid_31, "base32_valid_31"); + exotic_add_test(&handle, &exotic_test_base32_valid_32, "base32_valid_32"); + exotic_add_test(&handle, &exotic_test_base32_invalid_1, "base32_invalid_1"); + exotic_add_test(&handle, &exotic_test_base32_invalid_2, "base32_invalid_2"); + exotic_add_test(&handle, &exotic_test_base32_invalid_3, "base32_invalid_3"); + exotic_add_test(&handle, &exotic_test_base32_invalid_4, "base32_invalid_4"); + exotic_add_test(&handle, &exotic_test_base32_invalid_5, "base32_invalid_5"); + exotic_add_test(&handle, &exotic_test_base32_invalid_6, "base32_invalid_6"); + exotic_add_test(&handle, &exotic_test_base32_invalid_7, "base32_invalid_7"); + exotic_add_test(&handle, &exotic_test_base32_invalid_8, "base32_invalid_8"); + exotic_add_test(&handle, &exotic_test_base32_invalid_9, "base32_invalid_9"); + exotic_add_test(&handle, &exotic_test_base32_invalid_10, "base32_invalid_10"); + exotic_add_test(&handle, &exotic_test_base32_invalid_11, "base32_invalid_11"); + exotic_add_test(&handle, &exotic_test_base32_invalid_12, "base32_invalid_12"); + exotic_add_test(&handle, &exotic_test_base32_invalid_13, "base32_invalid_13"); + exotic_add_test(&handle, &exotic_test_base32_invalid_14, "base32_invalid_14"); + exotic_add_test(&handle, &exotic_test_base32_invalid_15, "base32_invalid_15"); + exotic_add_test(&handle, &exotic_test_base32_invalid_16, "base32_invalid_16"); + exotic_add_test(&handle, &exotic_test_base32_invalid_17, "base32_invalid_17"); + exotic_add_test(&handle, &exotic_test_base32_invalid_18, "base32_invalid_18"); + exotic_add_test(&handle, &exotic_test_base32_invalid_19, "base32_invalid_19"); + exotic_add_test(&handle, &exotic_test_base32_invalid_20, "base32_invalid_20"); + exotic_add_test(&handle, &exotic_test_base32_invalid_21, "base32_invalid_21"); + exotic_add_test(&handle, &exotic_test_base32_invalid_22, "base32_invalid_22"); + exotic_add_test(&handle, &exotic_test_base32_invalid_23, "base32_invalid_23"); + exotic_add_test(&handle, &exotic_test_base32_invalid_24, "base32_invalid_24"); + exotic_add_test(&handle, &exotic_test_base32_invalid_25, "base32_invalid_25"); + exotic_add_test(&handle, &exotic_test_base32_invalid_26, "base32_invalid_26"); + exotic_add_test(&handle, &exotic_test_base32_invalid_27, "base32_invalid_27"); + exotic_add_test(&handle, &exotic_test_base32_invalid_28, "base32_invalid_28"); + exotic_add_test(&handle, &exotic_test_base32_invalid_29, "base32_invalid_29"); + exotic_add_test(&handle, &exotic_test_base32_invalid_30, "base32_invalid_30"); + exotic_add_test(&handle, &exotic_test_base32_invalid_31, "base32_invalid_31"); + exotic_add_test(&handle, &exotic_test_utf8_valid_1, "utf8_valid_1"); + exotic_add_test(&handle, &exotic_test_utf8_valid_2, "utf8_valid_2"); + exotic_add_test(&handle, &exotic_test_utf8_valid_3, "utf8_valid_3"); + exotic_add_test(&handle, &exotic_test_utf8_valid_4, "utf8_valid_4"); + exotic_add_test(&handle, &exotic_test_utf8_valid_5, "utf8_valid_5"); + exotic_add_test(&handle, &exotic_test_utf8_valid_6, "utf8_valid_6"); + exotic_add_test(&handle, &exotic_test_utf8_valid_7, "utf8_valid_7"); + exotic_add_test(&handle, &exotic_test_utf8_valid_8, "utf8_valid_8"); + exotic_add_test(&handle, &exotic_test_utf8_valid_9, "utf8_valid_9"); + exotic_add_test(&handle, &exotic_test_utf8_valid_10, "utf8_valid_10"); + exotic_add_test(&handle, &exotic_test_utf8_valid_11, "utf8_valid_11"); + exotic_add_test(&handle, &exotic_test_utf8_valid_12, "utf8_valid_12"); + exotic_add_test(&handle, &exotic_test_sid_create_pool, "sid_create_pool"); + exotic_add_test(&handle, &exotic_test_sid_check_0a, "sid_check_0a"); + exotic_add_test(&handle, &exotic_test_sid_check_0b, "sid_check_0b"); + exotic_add_test(&handle, &exotic_test_sid_alloc_1, "sid_alloc_1"); + exotic_add_test(&handle, &exotic_test_sid_check_1a, "sid_check_1a"); + exotic_add_test(&handle, &exotic_test_sid_check_1b, "sid_check_1b"); + exotic_add_test(&handle, &exotic_test_sid_alloc_2, "sid_alloc_2"); + exotic_add_test(&handle, &exotic_test_sid_check_2, "sid_check_2"); + exotic_add_test(&handle, &exotic_test_sid_alloc_3, "sid_alloc_3"); + exotic_add_test(&handle, &exotic_test_sid_check_3, "sid_check_3"); + exotic_add_test(&handle, &exotic_test_sid_alloc_4, "sid_alloc_4"); + exotic_add_test(&handle, &exotic_test_sid_check_4, "sid_check_4"); + exotic_add_test(&handle, &exotic_test_sid_alloc_5, "sid_alloc_5"); + exotic_add_test(&handle, &exotic_test_sid_check_6, "sid_check_6"); + exotic_add_test(&handle, &exotic_test_sid_list_all_1, "sid_list_all_1"); + exotic_add_test(&handle, &exotic_test_sid_remove_1, "sid_remove_1"); + exotic_add_test(&handle, &exotic_test_sid_remove_2, "sid_remove_2"); + exotic_add_test(&handle, &exotic_test_sid_remove_3, "sid_remove_3"); + exotic_add_test(&handle, &exotic_test_sid_remove_4, "sid_remove_4"); + exotic_add_test(&handle, &exotic_test_sid_destroy_pool, "sid_destroy_pool"); + exotic_add_test(&handle, &exotic_test_hash_tiger_1, "hash_tiger_1"); + exotic_add_test(&handle, &exotic_test_hash_tiger_2, "hash_tiger_2"); + exotic_add_test(&handle, &exotic_test_hash_tiger_3, "hash_tiger_3"); + exotic_add_test(&handle, &exotic_test_hash_tiger_4, "hash_tiger_4"); + exotic_add_test(&handle, &exotic_test_hash_tiger_5, "hash_tiger_5"); + exotic_add_test(&handle, &exotic_test_hash_tiger_6, "hash_tiger_6"); + exotic_add_test(&handle, &exotic_test_hash_tiger_7, "hash_tiger_7"); + exotic_add_test(&handle, &exotic_test_timer_setup, "timer_setup"); + exotic_add_test(&handle, &exotic_test_timer_check_timeout_0, "timer_check_timeout_0"); + exotic_add_test(&handle, &exotic_test_timer_add_event_1, "timer_add_event_1"); + exotic_add_test(&handle, &exotic_test_timer_check_timeout_1, "timer_check_timeout_1"); + exotic_add_test(&handle, &exotic_test_timer_remove_event_1, "timer_remove_event_1"); + exotic_add_test(&handle, &exotic_test_timer_check_timeout_2, "timer_check_timeout_2"); + exotic_add_test(&handle, &exotic_test_timer_remove_event_1_no_crash, "timer_remove_event_1_no_crash"); + exotic_add_test(&handle, &exotic_test_timer_add_5_events_1, "timer_add_5_events_1"); + exotic_add_test(&handle, &exotic_test_timer_check_5_events_1, "timer_check_5_events_1"); + exotic_add_test(&handle, &exotic_test_timer_process_5_events_1, "timer_process_5_events_1"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_0, "tokenizer_basic_0"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_1, "tokenizer_basic_1"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_1a, "tokenizer_basic_1a"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_1b, "tokenizer_basic_1b"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_1c, "tokenizer_basic_1c"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_1d, "tokenizer_basic_1d"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_1e, "tokenizer_basic_1e"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_2, "tokenizer_basic_2"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_2a, "tokenizer_basic_2a"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_3, "tokenizer_basic_3"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_3a, "tokenizer_basic_3a"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_3b, "tokenizer_basic_3b"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_3c, "tokenizer_basic_3c"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_3d, "tokenizer_basic_3d"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_compare_0, "tokenizer_basic_compare_0"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_compare_1, "tokenizer_basic_compare_1"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_compare_2, "tokenizer_basic_compare_2"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_compare_3, "tokenizer_basic_compare_3"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_compare_4, "tokenizer_basic_compare_4"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_compare_5, "tokenizer_basic_compare_5"); + exotic_add_test(&handle, &exotic_test_tokenizer_basic_compare_6, "tokenizer_basic_compare_6"); + exotic_add_test(&handle, &exotic_test_tokenizer_comment_1, "tokenizer_comment_1"); + exotic_add_test(&handle, &exotic_test_tokenizer_comment_2, "tokenizer_comment_2"); + exotic_add_test(&handle, &exotic_test_tokenizer_comment_3, "tokenizer_comment_3"); + exotic_add_test(&handle, &exotic_test_tokenizer_escape_1, "tokenizer_escape_1"); + exotic_add_test(&handle, &exotic_test_tokenizer_escape_2, "tokenizer_escape_2"); + exotic_add_test(&handle, &exotic_test_tokenizer_escape_3, "tokenizer_escape_3"); + exotic_add_test(&handle, &exotic_test_tokenizer_escape_4, "tokenizer_escape_4"); + exotic_add_test(&handle, &exotic_test_tokenizer_escape_5, "tokenizer_escape_5"); + exotic_add_test(&handle, &exotic_test_tokenizer_escape_6, "tokenizer_escape_6"); + exotic_add_test(&handle, &exotic_test_tokenizer_escape_7, "tokenizer_escape_7"); + exotic_add_test(&handle, &exotic_test_tokenizer_settings_1, "tokenizer_settings_1"); + exotic_add_test(&handle, &exotic_test_tokenizer_settings_2, "tokenizer_settings_2"); + exotic_add_test(&handle, &exotic_test_tokenizer_settings_3, "tokenizer_settings_3"); + exotic_add_test(&handle, &exotic_test_tokenizer_settings_4, "tokenizer_settings_4"); + exotic_add_test(&handle, &exotic_test_tokenizer_settings_5, "tokenizer_settings_5"); + exotic_add_test(&handle, &exotic_test_tokenizer_settings_6, "tokenizer_settings_6"); + exotic_add_test(&handle, &exotic_test_tokenizer_settings_7, "tokenizer_settings_7"); + exotic_add_test(&handle, &exotic_test_tokenizer_settings_8, "tokenizer_settings_8"); + exotic_add_test(&handle, &exotic_test_tokenizer_settings_9, "tokenizer_settings_9"); + exotic_add_test(&handle, &exotic_test_um_init_1, "um_init_1"); + exotic_add_test(&handle, &exotic_test_um_shutdown_1, "um_shutdown_1"); + exotic_add_test(&handle, &exotic_test_um_shutdown_2, "um_shutdown_2"); + exotic_add_test(&handle, &exotic_test_um_init_2, "um_init_2"); + exotic_add_test(&handle, &exotic_test_um_add_1, "um_add_1"); + exotic_add_test(&handle, &exotic_test_um_size_1, "um_size_1"); + exotic_add_test(&handle, &exotic_test_um_remove_1, "um_remove_1"); + exotic_add_test(&handle, &exotic_test_um_size_2, "um_size_2"); + exotic_add_test(&handle, &exotic_test_um_add_2, "um_add_2"); + exotic_add_test(&handle, &exotic_test_um_size_3, "um_size_3"); + exotic_add_test(&handle, &exotic_test_um_remove_2, "um_remove_2"); + exotic_add_test(&handle, &exotic_test_um_shutdown_4, "um_shutdown_4"); + + return exotic_run(&handle); +} + + +/* + * Exotic - C/C++ source code testing + * Copyright (c) 2007, Jan Vidar Krey + */ + +#include +#include +#include +#include + +static void exotic_version(); + +#ifndef __EXOTIC__STANDALONE__ +#include "autotest.h" +static void exotic_version() +{ + printf("Extatic.org Test Infrastructure: exotic " "${version}" "\n\n"); + printf("Copyright (C) 2007 Jan Vidar Krey, janvidar@extatic.org\n"); + printf("This is free software with ABSOLUTELY NO WARRANTY.\n\n"); +} +#endif + +struct exo_test_data +{ + exo_test_t test; + char* name; + struct exo_test_data* next; +}; + + +static void exotic_summary(struct exotic_handle* handle) +{ + int total = handle->pass + handle->fail; + int pass_rate = total ? (100*handle->pass / total) : 0; + int fail_rate = total ? (100*handle->fail / total) : 0; + + printf("\n"); + printf("--------------------------------------------\n"); + printf("Results:\n"); + printf(" * Total tests run: %8d\n", total); + printf(" * Tests passed: %8d (~%d%%)\n", (int) handle->pass, pass_rate); + printf(" * Tests failed: %8d (~%d%%)\n", (int) handle->fail, fail_rate); + printf("--------------------------------------------\n"); +} + + +static void exotic_help(const char* program) +{ + printf("Usage: %s [OPTIONS]\n\n", program); + printf("Options:\n"); + printf(" --help -h Show this message\n"); + printf(" --version -v Show version\n"); + printf(" --summary -s show only summary)\n"); + printf(" --fail -f show only test failures\n"); + printf(" --pass -p show only test passes\n"); + printf("\nExamples:\n"); + printf(" %s -s -f\n\n", program); +} + + +int exotic_initialize(struct exotic_handle* handle, int argc, char** argv) +{ + int n; + if (!handle || !argv) return -1; + + memset(handle, 0, sizeof(struct exotic_handle)); + + for (n = 1; n < argc; n++) + { + if (!strcmp(argv[n], "-h") || !strcmp(argv[n], "--help")) + { + exotic_help(argv[0]); + exit(0); + } + + if (!strcmp(argv[n], "-v") || !strcmp(argv[n], "--version")) + { + exotic_version(); + exit(0); + } + + if (!strcmp(argv[n], "-s") || !strcmp(argv[n], "--summary")) + { + handle->config_show_summary = cfg_on; + continue; + } + + if (!strcmp(argv[n], "-f") || !strcmp(argv[n], "--fail")) + { + handle->config_show_fail = cfg_on; + continue; + } + + if (!strcmp(argv[n], "-p") || !strcmp(argv[n], "--pass")) + { + handle->config_show_pass = cfg_on; + continue; + } + + fprintf(stderr, "Unknown argument: %s\n\n", argv[n]); + exotic_help(argv[0]); + exit(0); + } + + if (handle->config_show_summary == cfg_on) + { + if (handle->config_show_pass == cfg_default) handle->config_show_pass = cfg_off; + if (handle->config_show_fail == cfg_default) handle->config_show_fail = cfg_off; + + } + else if (handle->config_show_pass == cfg_on) + { + if (handle->config_show_summary == cfg_default) handle->config_show_summary = cfg_off; + if (handle->config_show_fail == cfg_default) handle->config_show_fail = cfg_off; + } + else if (handle->config_show_fail == cfg_on) + { + if (handle->config_show_summary == cfg_default) handle->config_show_summary = cfg_off; + if (handle->config_show_fail == cfg_default) handle->config_show_fail = cfg_off; + } + else + { + if (handle->config_show_summary == cfg_default) handle->config_show_summary = cfg_on; + if (handle->config_show_fail == cfg_default) handle->config_show_fail = cfg_on; + if (handle->config_show_pass == cfg_default) handle->config_show_pass = cfg_on; + } + return 0; +} + + +void exotic_add_test(struct exotic_handle* handle, exo_test_t func, const char* name) +{ + if (!handle) + { + fprintf(stderr, "exotic_add_test: failed, no handle!\n"); + exit(-1); + } + + struct exo_test_data* test = (struct exo_test_data*) malloc(sizeof(struct exo_test_data)); + if (!test) + { + fprintf(stderr, "exotic_add_test: out of memory!\n"); + exit(-1); + } + + /* Create the test */ + memset(test, 0, sizeof(struct exo_test_data)); + test->test = func; + test->name = strdup(name); + + /* Register the test in the handle */ + if (!handle->first) + { + handle->first = test; + handle->current = test; + } + else + { + handle->current->next = test; + handle->current = test; + } +} + + +int exotic_run(struct exotic_handle* handle) +{ + struct exo_test_data* tmp = NULL; + + if (!handle) + { + fprintf(stderr, "Error: exotic is not initialized\n"); + return -1; + } + + handle->current = handle->first; + while (handle->current) + { + tmp = handle->current; + + if (handle->current->test()) { + if (handle->config_show_pass == cfg_on) printf("* PASS test '%s'\n", tmp->name); + handle->pass++; + } else { + if (handle->config_show_fail == cfg_on) printf("* FAIL test '%s'\n", tmp->name); + handle->fail++; + } + + handle->current = handle->current->next; + + free(tmp->name); + free(tmp); + } + + if (!handle->first) + { + printf("(No tests added)\n"); + } + + if (handle->config_show_summary == cfg_on) + exotic_summary(handle); + + return (handle->fail) ? handle->fail : 0; +} + + +static void exotic_version() { + printf("exotic 0.4-standalone\n\n"); + printf("Copyright (C) 2007 Jan Vidar Krey, janvidar@extatic.org\n"); + printf("This is free software with ABSOLUTELY NO WARRANTY.\n\n"); +} diff --git a/autotest/update.sh b/autotest/update.sh new file mode 100755 index 0000000..5b2dba6 --- /dev/null +++ b/autotest/update.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +./exotic *.tcc > test.c +