[A] Added test for an empty table
This commit is contained in:
parent
e52347948c
commit
f528c48c78
23
src/fort.c
23
src/fort.c
@ -715,12 +715,14 @@ static fort_row_t* create_row_from_string(const char *str)
|
|||||||
|
|
||||||
char *pos = str_copy;
|
char *pos = str_copy;
|
||||||
char *base_pos = str_copy;
|
char *base_pos = str_copy;
|
||||||
|
int number_of_separators = 0;
|
||||||
while (*pos) {
|
while (*pos) {
|
||||||
pos = strchr(pos, FORT_COL_SEPARATOR);
|
pos = strchr(pos, FORT_COL_SEPARATOR);
|
||||||
if (pos != NULL) {
|
if (pos != NULL) {
|
||||||
*(pos) = '\0';
|
*(pos) = '\0';
|
||||||
++pos;
|
++pos;
|
||||||
}
|
number_of_separators++;
|
||||||
|
}
|
||||||
|
|
||||||
fort_cell_t *cell = create_cell();
|
fort_cell_t *cell = create_cell();
|
||||||
if (cell == NULL)
|
if (cell == NULL)
|
||||||
@ -743,6 +745,25 @@ static fort_row_t* create_row_from_string(const char *str)
|
|||||||
base_pos = pos;
|
base_pos = pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* special case if in format string last cell is empty */
|
||||||
|
while (vector_size(row->cells) < (number_of_separators + 1)) {
|
||||||
|
fort_cell_t *cell = create_cell();
|
||||||
|
if (cell == NULL)
|
||||||
|
goto clear;
|
||||||
|
|
||||||
|
int status = fill_buffer_from_string(cell->str_buffer, "");
|
||||||
|
if (IS_ERROR(status)) {
|
||||||
|
destroy_cell(cell);
|
||||||
|
goto clear;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = vector_push(row->cells, &cell);
|
||||||
|
if (IS_ERROR(status)) {
|
||||||
|
destroy_cell(cell);
|
||||||
|
goto clear;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
F_FREE(str_copy);
|
F_FREE(str_copy);
|
||||||
return row;
|
return row;
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ void test_table_basic(void **state)
|
|||||||
assert_true( n == 4 );
|
assert_true( n == 4 );
|
||||||
n = ft_row_printf(table, 1, "%c|%s|%f", 'c', "234", 3.14);
|
n = ft_row_printf(table, 1, "%c|%s|%f", 'c', "234", 3.14);
|
||||||
assert_true( n == 3 );
|
assert_true( n == 3 );
|
||||||
n = ft_row_printf(table, 2, "%s|%f||%c", "234", 3.14, 'c');
|
n = ft_row_printf(table, 2, "%s|%f||", "234", 3.14);
|
||||||
assert_true( n == 4 );
|
assert_true( n == 4 );
|
||||||
|
|
||||||
char *table_str = ft_to_string(table);
|
char *table_str = ft_to_string(table);
|
||||||
@ -186,10 +186,45 @@ void test_table_basic(void **state)
|
|||||||
"| | | | |\n"
|
"| | | | |\n"
|
||||||
"========================================\n"
|
"========================================\n"
|
||||||
"| | | | |\n"
|
"| | | | |\n"
|
||||||
"| 234 | 3.140000 | | c |\n"
|
"| 234 | 3.140000 | | |\n"
|
||||||
"| | | | |\n"
|
"| | | | |\n"
|
||||||
"========================================\n";
|
"========================================\n";
|
||||||
|
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
free(table_str);
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
WHEN("All cells are empty") {
|
||||||
|
table = ft_create_table();
|
||||||
|
|
||||||
|
int n = ft_hdr_printf(table, "|||");
|
||||||
|
assert_true( n == 4 );
|
||||||
|
n = ft_row_printf(table, 1, "|||");
|
||||||
|
assert_true( n == 4 );
|
||||||
|
n = ft_row_printf(table, 2, "|||");
|
||||||
|
assert_true( n == 4 );
|
||||||
|
|
||||||
|
char *table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"=============\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"=============\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"=============\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"=============\n";
|
||||||
|
|
||||||
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user