2 * Unit tests of table printer
4 * (c) 2014 Robert Kessl <robert.kessl@economia.cz>
13 enum test_table_cols {
14 test_col0_str, test_col1_int, test_col2_uint, test_col3_bool, test_col4_double
17 static struct table test_tbl = {
19 [test_col0_str] = TBL_COL_STR("col0_str", 30 | CELL_ALIGN_LEFT),
20 [test_col1_int] = TBL_COL_INT("col1_int", 8),
21 [test_col2_uint] = TBL_COL_UINT("col2_uint", 9),
22 [test_col3_bool] = TBL_COL_BOOL("col3_bool", 9 | CELL_ALIGN_LEFT),
23 [test_col4_double] = TBL_COL_DOUBLE("col4_double", 11 | CELL_ALIGN_LEFT, 5),
26 TBL_OUTPUT_HUMAN_READABLE,
27 TBL_COL_DELIMITER("\t"),
30 static int test_to_perform = -1;
31 static char **cli_table_opts;
33 static struct opt_section table_printer_opts = {
36 OPT_STRING_MULTIPLE('T', "table", cli_table_opts, OPT_REQUIRED_VALUE, "\tSets options for the table."),
42 static void process_command_line_opts(char *argv[], struct table *tbl)
44 GARY_INIT(cli_table_opts, 0);
46 opt_parse(&table_printer_opts, argv+1);
47 table_set_gary_options(tbl, cli_table_opts);
49 GARY_FREE(cli_table_opts);
52 static void print_table(struct table *tbl, struct fastbuf *out)
54 table_start(tbl, out);
56 struct fastbuf *colfb = table_col_fbstart(tbl, test_col0_str);
57 bputs(colfb, "HELLO");
58 bprintf(colfb, ",col_idx:%d", test_col0_str);
61 table_col_int(tbl, test_col1_int, -10);
62 table_col_uint(tbl, test_col2_uint, 10);
63 table_col_bool(tbl, test_col3_bool, 0);
64 table_col_double(tbl, test_col4_double, 3.1415926535897);
69 colfb = table_col_fbstart(tbl, test_col0_str);
71 bprintf(colfb, ",col_idx:%d", test_col0_str);
74 table_col_int(tbl, test_col1_int, -12345);
75 table_col_uint(tbl, test_col2_uint, 0xFF);
76 table_col_bool(tbl, test_col3_bool, 1);
77 table_col_double(tbl, test_col4_double, 1.61803398875);
82 colfb = table_col_fbstart(tbl, test_col0_str);
84 bprintf(colfb, ",col_idx:%d", test_col0_str);
87 table_col_int(tbl, test_col1_int, -54321);
88 table_col_uint(tbl, test_col2_uint, 0xFF00);
89 table_col_bool(tbl, test_col3_bool, 0);
90 table_col_double(tbl, test_col4_double, 2.718281828459045);
97 int main(int argc UNUSED, char **argv)
100 out = bfdopen_shared(1, 4096);
102 table_init(&test_tbl);
103 process_command_line_opts(argv, &test_tbl);
105 //bprintf(out, "width: %X; masked: %d; mask: %X\n", test_tbl.columns[0].width, test_tbl.columns[0].width & CELL_ALIGN_MASK, CELL_ALIGN_MASK);
108 print_table(&test_tbl, out);
109 table_cleanup(&test_tbl);