X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Ftest-util.c;h=71a7f21835a915684a497b61de891cb5c1ab4c93;hb=e9c048007b113fdf05ca3ccbfa25d01c24f1da43;hp=c8026c13bf1de44fa628cafb57018a968a23107b;hpb=e0edde6fee279cdbbf3c179f5f50adaf0c7c7f1e;p=sliver-openvswitch.git diff --git a/tests/test-util.c b/tests/test-util.c index c8026c13b..71a7f2183 100644 --- a/tests/test-util.c +++ b/tests/test-util.c @@ -22,6 +22,7 @@ #include #include "byte-order.h" +#include "command-line.h" #include "random.h" #include "util.h" @@ -35,6 +36,25 @@ check_log_2_floor(uint32_t x, int n) } } +static void +test_log_2_floor(int argc OVS_UNUSED, char *argv[] OVS_UNUSED) +{ + int n; + + for (n = 0; n < 32; n++) { + /* Check minimum x such that f(x) == n. */ + check_log_2_floor(1 << n, n); + + /* Check maximum x such that f(x) == n. */ + check_log_2_floor((1 << n) | ((1 << n) - 1), n); + + /* Check a random value in the middle. */ + check_log_2_floor((random_uint32() & ((1 << n) - 1)) | (1 << n), n); + } + + /* log_2_floor(0) is undefined, so don't check it. */ +} + static void check_ctz(uint32_t x, int n) { @@ -45,6 +65,26 @@ check_ctz(uint32_t x, int n) } } +static void +test_ctz(int argc OVS_UNUSED, char *argv[] OVS_UNUSED) +{ + int n; + + for (n = 0; n < 32; n++) { + /* Check minimum x such that f(x) == n. */ + check_ctz(1 << n, n); + + /* Check maximum x such that f(x) == n. */ + check_ctz(UINT32_MAX << n, n); + + /* Check a random value in the middle. */ + check_ctz((random_uint32() | 1) << n, n); + } + + /* Check ctz(0). */ + check_ctz(0, 32); +} + /* Returns the sum of the squares of the first 'n' positive integers. */ static unsigned int sum_of_squares(int n) @@ -53,7 +93,7 @@ sum_of_squares(int n) } static void -check_bitwise_copy(void) +test_bitwise_copy(int argc OVS_UNUSED, char *argv[] OVS_UNUSED) { unsigned int n_loops; int src_ofs; @@ -103,7 +143,7 @@ check_bitwise_copy(void) } static void -check_bitwise_zero(void) +test_bitwise_zero(int argc OVS_UNUSED, char *argv[] OVS_UNUSED) { unsigned int n_loops; int dst_ofs; @@ -144,7 +184,7 @@ check_bitwise_zero(void) } static void -check_bitwise_one(void) +test_bitwise_one(int argc OVS_UNUSED, char *argv[] OVS_UNUSED) { unsigned int n_loops; int dst_ofs; @@ -185,11 +225,10 @@ check_bitwise_one(void) } static void -check_bitwise_is_all_zeros(void) +test_bitwise_is_all_zeros(int argc OVS_UNUSED, char *argv[] OVS_UNUSED) { int n_loops; - n_loops = 0; for (n_loops = 0; n_loops < 100; n_loops++) { ovs_be64 x = htonll(0); int i; @@ -229,36 +268,33 @@ check_bitwise_is_all_zeros(void) } } -int -main(void) +static void +test_follow_symlinks(int argc, char *argv[]) { - int n; - - for (n = 0; n < 32; n++) { - /* Check minimum x such that f(x) == n. */ - check_log_2_floor(1 << n, n); - check_ctz(1 << n, n); - - /* Check maximum x such that f(x) == n. */ - check_log_2_floor((1 << n) | ((1 << n) - 1), n); - check_ctz(UINT32_MAX << n, n); + int i; - /* Check a random value in the middle. */ - check_log_2_floor((random_uint32() & ((1 << n) - 1)) | (1 << n), n); - check_ctz((random_uint32() | 1) << n, n); + for (i = 1; i < argc; i++) { + char *target = follow_symlinks(argv[i]); + puts(target); + free(target); } +} + +static const struct command commands[] = { + {"ctz", 0, 0, test_ctz}, + {"log_2_floor", 0, 0, test_log_2_floor}, + {"bitwise_copy", 0, 0, test_bitwise_copy}, + {"bitwise_zero", 0, 0, test_bitwise_zero}, + {"bitwise_one", 0, 0, test_bitwise_one}, + {"bitwise_is_all_zeros", 0, 0, test_bitwise_is_all_zeros}, + {"follow-symlinks", 1, INT_MAX, test_follow_symlinks}, + {NULL, 0, 0, NULL}, +}; - /* Check ctz(0). - * (log_2_floor(0) is undefined.) */ - check_ctz(0, 32); - - check_bitwise_copy(); - - check_bitwise_zero(); - - check_bitwise_one(); - - check_bitwise_is_all_zeros(); - +int +main(int argc, char *argv[]) +{ + set_program_name(argv[0]); + run_command(argc - 1, argv + 1, commands); return 0; }