X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=ucw%2Ftable-test.c;h=c13ae2e369e4471cf64f94ac50286a48876e4add;hb=e7d7cfca2ed6368e93aa17429cd9236032d26b45;hp=75981633e261e279edfa8810e3c4e6c2a779c4c5;hpb=109b49e800f51579b08b97f4a9ef014f13bb813f;p=libucw.git diff --git a/ucw/table-test.c b/ucw/table-test.c index 75981633..c13ae2e3 100644 --- a/ucw/table-test.c +++ b/ucw/table-test.c @@ -6,14 +6,15 @@ #include #include +#include #include #include enum test_table_cols { - test_col0_str, test_col1_int, test_col2_uint, test_col3_bool, test_col4_double + test_col0_str, test_col1_int, test_col2_uint, test_col3_bool, test_col4_double, test_col5_size, test_col6_time }; -static uint test_column_order[] = { test_col3_bool, test_col4_double, test_col2_uint,test_col1_int, test_col0_str }; +static struct table_col_info test_column_order[] = { TBL_COL(test_col3_bool), TBL_COL(test_col4_double), TBL_COL(test_col2_uint), TBL_COL(test_col1_int), TBL_COL(test_col0_str) }; static struct table test_tbl = { TBL_COLUMNS { @@ -22,6 +23,8 @@ static struct table test_tbl = { [test_col2_uint] = TBL_COL_UINT("col2_uint", 9), [test_col3_bool] = TBL_COL_BOOL("col3_bool", 9), [test_col4_double] = TBL_COL_DOUBLE("col4_double", 11, 2), + [test_col5_size] = TBL_COL_SIZE("col5_size", 11), + [test_col6_time] = TBL_COL_TIMESTAMP("col6_timestamp", 20), TBL_COL_END }, TBL_COL_ORDER(test_column_order), @@ -70,36 +73,43 @@ static void do_default_order_test(struct fastbuf *out) static void do_print1(struct table *test_tbl) { table_col_str(test_tbl, test_col0_str, "sdsdf"); - table_append_str(test_tbl, "aaaaa"); table_col_int(test_tbl, test_col1_int, -10); table_col_int(test_tbl, test_col1_int, 10000); table_col_uint(test_tbl, test_col2_uint, 10); table_col_printf(test_tbl, test_col2_uint, "XXX-%u", 22222); table_col_bool(test_tbl, test_col3_bool, 1); table_col_double(test_tbl, test_col4_double, 1.5); + table_col_size(test_tbl, test_col5_size, (1024LLU*1024LLU*1024LLU*5LLU)); + table_col_timestamp(test_tbl, test_col6_time, 1404305876); table_end_row(test_tbl); table_col_str(test_tbl, test_col0_str, "test"); - table_append_str(test_tbl, "bbbbb"); table_col_int(test_tbl, test_col1_int, -100); table_col_uint(test_tbl, test_col2_uint, 100); table_col_bool(test_tbl, test_col3_bool, 0); table_col_double(test_tbl, test_col4_double, 1.5); + table_col_size(test_tbl, test_col5_size, (1024LLU*1024LLU*1024LLU*2LLU)); + table_col_timestamp(test_tbl, test_col6_time, 1404305909); table_end_row(test_tbl); } static char **cli_table_opts; -static int test_default_column_order; -static int test_invalid_option; -static int test_invalid_order; + +enum test_type_t { + TEST_DEFAULT_COLUMN_ORDER = 1, + TEST_INVALID_OPTION = 2, + TEST_INVALID_ORDER = 3 +}; + +static int test_to_perform = -1; static struct opt_section table_printer_opts = { OPT_ITEMS { OPT_HELP("Options:"), OPT_STRING_MULTIPLE('T', "table", cli_table_opts, OPT_REQUIRED_VALUE, "\tSets options for the table."), - OPT_BOOL('d', 0, test_default_column_order, 0, "\tRun the test that uses the default column order."), - OPT_BOOL('i', 0, test_invalid_option, 0, "\tTest the output for invalid option."), - OPT_BOOL('n', 0, test_invalid_order, 0, "\tTest the output for invalid names of columns for the 'cols' option."), + OPT_SWITCH('d', 0, test_to_perform, TEST_DEFAULT_COLUMN_ORDER, OPT_SINGLE, "\tRun the test that uses the default column order."), + OPT_SWITCH('i', 0, test_to_perform, TEST_INVALID_OPTION, OPT_SINGLE, "\tTest the output for invalid option."), + OPT_SWITCH('n', 0, test_to_perform, TEST_INVALID_ORDER, OPT_SINGLE, "\tTest the output for invalid names of columns for the 'cols' option."), OPT_END } }; @@ -109,10 +119,9 @@ static void process_command_line_opts(char *argv[], struct table *tbl) GARY_INIT(cli_table_opts, 0); opt_parse(&table_printer_opts, argv+1); - - for(uint i = 0; i < GARY_SIZE(cli_table_opts); i++) { - const char *rv = table_set_option(tbl, cli_table_opts[i]); - ASSERT_MSG(rv == NULL, "Tableprinter option parser returned error: '%s'.", rv); + const char *err = table_set_gary_options(tbl, cli_table_opts); + if(err) { + opt_failure("error while setting cmd line options: %s", err); } GARY_FREE(cli_table_opts); @@ -157,19 +166,21 @@ int main(int argc UNUSED, char **argv) process_command_line_opts(argv, &test_tbl); - if(test_invalid_order == 1) { - const char *rv = table_set_option(&test_tbl, "cols:test_col0_str,test_col1_int,xxx"); + const char *rv = NULL; + switch(test_to_perform) { + case TEST_INVALID_ORDER: + rv = table_set_option(&test_tbl, "cols:test_col0_str,test_col1_int,xxx"); if(rv) printf("Tableprinter option parser returned: '%s'.\n", rv); return 0; - } else if(test_default_column_order == 1) { + case TEST_DEFAULT_COLUMN_ORDER: do_default_order_test(out); bclose(out); return 0; - } else if(test_invalid_option == 1) { + case TEST_INVALID_OPTION: test_option_parser(&test_tbl); bclose(out); return 0; - } + }; table_start(&test_tbl, out); do_print1(&test_tbl);