[A] Added tests for span functions
This commit is contained in:
parent
19217a805d
commit
25992d0f9d
@ -128,18 +128,43 @@ int main(void)
|
|||||||
printf("Table:\n%s\n", ft_to_string(table));
|
printf("Table:\n%s\n", ft_to_string(table));
|
||||||
ft_destroy_table(table);
|
ft_destroy_table(table);
|
||||||
|
|
||||||
|
ft_set_default_border_style(FT_SOLID_ROUND_STYLE);
|
||||||
|
table = create_basic_table();
|
||||||
|
printf("Table:\n%s\n", ft_to_string(table));
|
||||||
|
ft_destroy_table(table);
|
||||||
|
|
||||||
ft_set_default_border_style(FT_DOUBLE_STYLE);
|
ft_set_default_border_style(FT_DOUBLE_STYLE);
|
||||||
table = create_basic_table();
|
table = create_basic_table();
|
||||||
printf("Table:\n%s\n", ft_to_string(table));
|
printf("Table:\n%s\n", ft_to_string(table));
|
||||||
ft_destroy_table(table);
|
ft_destroy_table(table);
|
||||||
|
|
||||||
|
ft_set_default_border_style(FT_DOUBLE2_STYLE);
|
||||||
|
table = create_basic_table();
|
||||||
|
printf("Table:\n%s\n", ft_to_string(table));
|
||||||
|
ft_destroy_table(table);
|
||||||
|
|
||||||
|
ft_set_default_border_style(FT_BOLD_STYLE);
|
||||||
|
table = create_basic_table();
|
||||||
|
printf("Table:\n%s\n", ft_to_string(table));
|
||||||
|
ft_destroy_table(table);
|
||||||
|
|
||||||
|
ft_set_default_border_style(FT_BOLD2_STYLE);
|
||||||
|
table = create_basic_table();
|
||||||
|
printf("Table:\n%s\n", ft_to_string(table));
|
||||||
|
ft_destroy_table(table);
|
||||||
|
|
||||||
|
ft_set_default_border_style(FT_FRAME_STYLE);
|
||||||
|
table = create_basic_table();
|
||||||
|
printf("Table:\n%s\n", ft_to_string(table));
|
||||||
|
ft_destroy_table(table);
|
||||||
|
|
||||||
/* Debug */
|
/* Debug */
|
||||||
ft_set_default_border_style(FT_SOLID_STYLE);
|
ft_set_default_border_style(FT_SOLID_STYLE);
|
||||||
table = create_basic_table();
|
table = create_basic_table();
|
||||||
ft_set_cell_option(table, FT_CUR_ROW, FT_ANY_COLUMN, FT_COPT_ROW_TYPE, FT_ROW_HEADER);
|
ft_set_cell_option(table, FT_CUR_ROW, FT_ANY_COLUMN, FT_COPT_ROW_TYPE, FT_ROW_HEADER);
|
||||||
ft_write_ln(table, "Summary", "", "", "8.7");
|
ft_write_ln(table, "Summary", "", "", "8.7");
|
||||||
ft_some_api(table, 6, 0, 3);
|
ft_set_cell_span(table, 6, 0, 3);
|
||||||
ft_some_api(table, 0, 0, 3);
|
ft_set_cell_span(table, 0, 0, 3);
|
||||||
printf("Table:\n%s\n", ft_to_string(table));
|
printf("Table:\n%s\n", ft_to_string(table));
|
||||||
ft_destroy_table(table);
|
ft_destroy_table(table);
|
||||||
|
|
||||||
|
@ -444,7 +444,12 @@ extern struct ft_border_style *FT_PLAIN_STYLE;
|
|||||||
extern struct ft_border_style *FT_DOT_STYLE;
|
extern struct ft_border_style *FT_DOT_STYLE;
|
||||||
extern struct ft_border_style *FT_EMPTY_STYLE;
|
extern struct ft_border_style *FT_EMPTY_STYLE;
|
||||||
extern struct ft_border_style *FT_SOLID_STYLE;
|
extern struct ft_border_style *FT_SOLID_STYLE;
|
||||||
|
extern struct ft_border_style *FT_SOLID_ROUND_STYLE;
|
||||||
extern struct ft_border_style *FT_DOUBLE_STYLE;
|
extern struct ft_border_style *FT_DOUBLE_STYLE;
|
||||||
|
extern struct ft_border_style *FT_DOUBLE2_STYLE;
|
||||||
|
extern struct ft_border_style *FT_BOLD_STYLE;
|
||||||
|
extern struct ft_border_style *FT_BOLD2_STYLE;
|
||||||
|
extern struct ft_border_style *FT_FRAME_STYLE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set default border style for all new formatted tables.
|
* Set default border style for all new formatted tables.
|
||||||
@ -576,6 +581,24 @@ FT_EXTERN int ft_set_default_tbl_option(uint32_t option, int value);
|
|||||||
FT_EXTERN int ft_set_tbl_option(FTABLE *table, uint32_t option, int value);
|
FT_EXTERN int ft_set_tbl_option(FTABLE *table, uint32_t option, int value);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set column span for the specified cell of the table.
|
||||||
|
*
|
||||||
|
* @param table
|
||||||
|
* A pointer to the FTABLE structure.
|
||||||
|
* @param row
|
||||||
|
* Cell row.
|
||||||
|
* @param col
|
||||||
|
* Cell column.
|
||||||
|
* @param hor_span
|
||||||
|
* Column span.
|
||||||
|
* @return
|
||||||
|
* - 0: Success; default table option was changed.
|
||||||
|
* - (<0): In case of error
|
||||||
|
*/
|
||||||
|
FT_EXTERN int ft_set_cell_span(FTABLE *table, size_t row, size_t col, size_t hor_span);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set functions for memory allocation and deallocation to be used instead of
|
* Set functions for memory allocation and deallocation to be used instead of
|
||||||
* standard ones.
|
* standard ones.
|
||||||
@ -594,7 +617,6 @@ FT_EXTERN void ft_set_memory_funcs(void *(*f_malloc)(size_t size), void (*f_free
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
FT_EXTERN void ft_some_api(FTABLE *table, size_t row, size_t col, size_t group_width);
|
|
||||||
|
|
||||||
#ifdef FT_HAVE_WCHAR
|
#ifdef FT_HAVE_WCHAR
|
||||||
|
|
||||||
|
39
src/fort.c
39
src/fort.c
@ -798,7 +798,12 @@ struct ft_border_style *FT_PLAIN_STYLE = (struct ft_border_style *) &FORT_PLAIN_
|
|||||||
struct ft_border_style *FT_DOT_STYLE = (struct ft_border_style *) &FORT_DOT_STYLE;
|
struct ft_border_style *FT_DOT_STYLE = (struct ft_border_style *) &FORT_DOT_STYLE;
|
||||||
struct ft_border_style *FT_EMPTY_STYLE = (struct ft_border_style *) &FORT_EMPTY_STYLE;
|
struct ft_border_style *FT_EMPTY_STYLE = (struct ft_border_style *) &FORT_EMPTY_STYLE;
|
||||||
struct ft_border_style *FT_SOLID_STYLE = (struct ft_border_style *) &FORT_SOLID_STYLE;
|
struct ft_border_style *FT_SOLID_STYLE = (struct ft_border_style *) &FORT_SOLID_STYLE;
|
||||||
|
struct ft_border_style *FT_SOLID_ROUND_STYLE = (struct ft_border_style *) &FORT_SOLID_ROUND_STYLE;
|
||||||
struct ft_border_style *FT_DOUBLE_STYLE = (struct ft_border_style *) &FORT_DOUBLE_STYLE;
|
struct ft_border_style *FT_DOUBLE_STYLE = (struct ft_border_style *) &FORT_DOUBLE_STYLE;
|
||||||
|
struct ft_border_style *FT_DOUBLE2_STYLE = (struct ft_border_style *) &FORT_DOUBLE2_STYLE;
|
||||||
|
struct ft_border_style *FT_BOLD_STYLE = (struct ft_border_style *) &FORT_BOLD_STYLE;
|
||||||
|
struct ft_border_style *FT_BOLD2_STYLE = (struct ft_border_style *) &FORT_BOLD2_STYLE;
|
||||||
|
struct ft_border_style *FT_FRAME_STYLE = (struct ft_border_style *) &FORT_FRAME_STYLE;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -810,7 +815,12 @@ static void set_border_options_for_options(fort_table_options_t *options, struct
|
|||||||
|| (struct fort_border_style *)style == &FORT_PLAIN_STYLE
|
|| (struct fort_border_style *)style == &FORT_PLAIN_STYLE
|
||||||
|| (struct fort_border_style *)style == &FORT_EMPTY_STYLE
|
|| (struct fort_border_style *)style == &FORT_EMPTY_STYLE
|
||||||
|| (struct fort_border_style *)style == &FORT_SOLID_STYLE
|
|| (struct fort_border_style *)style == &FORT_SOLID_STYLE
|
||||||
|| (struct fort_border_style *)style == &FORT_DOUBLE_STYLE) {
|
|| (struct fort_border_style *)style == &FORT_SOLID_ROUND_STYLE
|
||||||
|
|| (struct fort_border_style *)style == &FORT_DOUBLE_STYLE
|
||||||
|
|| (struct fort_border_style *)style == &FORT_DOUBLE2_STYLE
|
||||||
|
|| (struct fort_border_style *)style == &FORT_BOLD_STYLE
|
||||||
|
|| (struct fort_border_style *)style == &FORT_BOLD2_STYLE
|
||||||
|
|| (struct fort_border_style *)style == &FORT_FRAME_STYLE) {
|
||||||
memcpy(&(options->border_style), (struct fort_border_style *)style, sizeof(struct fort_border_style));
|
memcpy(&(options->border_style), (struct fort_border_style *)style, sizeof(struct fort_border_style));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -951,23 +961,20 @@ FT_EXTERN void ft_set_memory_funcs(void *(*f_malloc)(size_t size), void (*f_free
|
|||||||
set_memory_funcs(f_malloc, f_free);
|
set_memory_funcs(f_malloc, f_free);
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "cell.h"
|
FT_EXTERN int ft_set_cell_span(FTABLE *table, size_t row, size_t col, size_t hor_span)
|
||||||
FT_EXTERN void ft_some_api(FTABLE *table, size_t row, size_t col, size_t group_width)
|
|
||||||
{
|
{
|
||||||
assert(table);
|
assert(table);
|
||||||
if (group_width == 0)
|
if (hor_span < 2)
|
||||||
return;
|
return FT_EINVAL;
|
||||||
|
|
||||||
fort_row_t *row_p = get_row(table, row);
|
if (row == FT_CUR_ROW)
|
||||||
fort_cell_t *main_cell = get_cell(row_p, col);
|
row = table->cur_row;
|
||||||
set_cell_type(main_cell, GroupMasterCell);
|
if (row == FT_CUR_COLUMN)
|
||||||
--group_width;
|
col = table->cur_col;
|
||||||
++col;
|
|
||||||
|
|
||||||
while (group_width) {
|
fort_row_t *row_p = get_row_and_create_if_not_exists(table, row);
|
||||||
fort_cell_t *slave_cell = get_cell(row_p, col);
|
if (row_p == NULL)
|
||||||
set_cell_type(slave_cell, GroupSlaveCell);
|
return FT_ERROR;
|
||||||
--group_width;
|
|
||||||
++col;
|
return row_set_cell_span(row_p, col, hor_span);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
129
src/options.c
129
src/options.c
@ -324,24 +324,46 @@ fort_status_t set_default_cell_option(uint32_t option, int value)
|
|||||||
#define SOLID_STYLE { \
|
#define SOLID_STYLE { \
|
||||||
/* border_chars */ \
|
/* border_chars */ \
|
||||||
{ \
|
{ \
|
||||||
"┏", "━", "┳", "┓", \
|
"┌", "─", "┬", "┐", \
|
||||||
"┃", "┃", "┃", \
|
"│", "│", "│", \
|
||||||
"", "", "", "", \
|
"", "", "", "", \
|
||||||
"┗", "━", "┻", "┛" \
|
"└", "─", "┴", "╯" \
|
||||||
}, \
|
}, \
|
||||||
/* header_border_chars */ \
|
/* header_border_chars */ \
|
||||||
{ \
|
{ \
|
||||||
"┏", "━", "┳", "┓", \
|
"┌", "─", "┬", "┐", \
|
||||||
"┃", "┃", "┃", \
|
"│", "│", "│", \
|
||||||
"┣", "━", "╋", "┫", \
|
"├", "─", "┼", "┤", \
|
||||||
"┗", "━", "┻", "┛" \
|
"└", "─", "┴", "┘" \
|
||||||
}, \
|
}, \
|
||||||
/* separator_chars */ \
|
/* separator_chars */ \
|
||||||
{ \
|
{ \
|
||||||
"┣", "━", "╋", "┫", \
|
"├", "─", "┼", "┤", \
|
||||||
}, \
|
}, \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define SOLID_ROUND_STYLE { \
|
||||||
|
/* border_chars */ \
|
||||||
|
{ \
|
||||||
|
"╭", "─", "┬", "╮", \
|
||||||
|
"│", "│", "│", \
|
||||||
|
"", "", "", "", \
|
||||||
|
"╰", "─", "┴", "╯" \
|
||||||
|
}, \
|
||||||
|
/* header_border_chars */ \
|
||||||
|
{ \
|
||||||
|
"╭", "─", "┬", "╮", \
|
||||||
|
"│", "│", "│", \
|
||||||
|
"├", "─", "┼", "┤", \
|
||||||
|
"╰", "─", "┴", "╯" \
|
||||||
|
}, \
|
||||||
|
/* separator_chars */ \
|
||||||
|
{ \
|
||||||
|
"├", "─", "┼", "┤", \
|
||||||
|
}, \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#define DOUBLE_STYLE { \
|
#define DOUBLE_STYLE { \
|
||||||
/* border_chars */ \
|
/* border_chars */ \
|
||||||
{ \
|
{ \
|
||||||
@ -364,13 +386,104 @@ fort_status_t set_default_cell_option(uint32_t option, int value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define DOUBLE2_STYLE { \
|
||||||
|
/* border_chars */ \
|
||||||
|
{ \
|
||||||
|
"╔", "═", "╤", "╗", \
|
||||||
|
"║", "│", "║", \
|
||||||
|
"╟", "─", "┼", "╢", \
|
||||||
|
"╚", "═", "╧", "╝" \
|
||||||
|
}, \
|
||||||
|
/* header_border_chars */ \
|
||||||
|
{ \
|
||||||
|
"╔", "═", "╤", "╗", \
|
||||||
|
"║", "│", "║", \
|
||||||
|
"╠", "═", "╪", "╣", \
|
||||||
|
"╚", "═", "╧", "╝" \
|
||||||
|
}, \
|
||||||
|
/* separator_chars */ \
|
||||||
|
{ \
|
||||||
|
"╠", "═", "╪", "╣", \
|
||||||
|
}, \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define BOLD_STYLE { \
|
||||||
|
/* border_chars */ \
|
||||||
|
{ \
|
||||||
|
"┏", "━", "┳", "┓", \
|
||||||
|
"┃", "┃", "┃", \
|
||||||
|
"", "", "", "", \
|
||||||
|
"┗", "━", "┻", "┛" \
|
||||||
|
}, \
|
||||||
|
/* header_border_chars */ \
|
||||||
|
{ \
|
||||||
|
"┏", "━", "┳", "┓", \
|
||||||
|
"┃", "┃", "┃", \
|
||||||
|
"┣", "━", "╋", "┫", \
|
||||||
|
"┗", "━", "┻", "┛" \
|
||||||
|
}, \
|
||||||
|
/* separator_chars */ \
|
||||||
|
{ \
|
||||||
|
"┣", "━", "╋", "┫", \
|
||||||
|
}, \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define BOLD2_STYLE { \
|
||||||
|
/* border_chars */ \
|
||||||
|
{ \
|
||||||
|
"┏", "━", "┯", "┓", \
|
||||||
|
"┃", "│", "┃", \
|
||||||
|
"┠", "─", "┼", "┨", \
|
||||||
|
"┗", "━", "┷", "┛" \
|
||||||
|
}, \
|
||||||
|
/* header_border_chars */ \
|
||||||
|
{ \
|
||||||
|
"┏", "━", "┯", "┓", \
|
||||||
|
"┃", "│", "┃", \
|
||||||
|
"┣", "━", "┿", "┫", \
|
||||||
|
"┗", "━", "┷", "┛" \
|
||||||
|
}, \
|
||||||
|
/* separator_chars */ \
|
||||||
|
{ \
|
||||||
|
"┣", "━", "┿", "┫", \
|
||||||
|
}, \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define FRAME_STYLE { \
|
||||||
|
/* border_chars */ \
|
||||||
|
{ \
|
||||||
|
"▛", "▀", "▀", "▜", \
|
||||||
|
"▌", "┃", "▐", \
|
||||||
|
"", "", "", "", \
|
||||||
|
"▙", "▄", "▄", "▟" \
|
||||||
|
}, \
|
||||||
|
/* header_border_chars */ \
|
||||||
|
{ \
|
||||||
|
"▛", "▀", "▀", "▜", \
|
||||||
|
"▌", "┃", "▐", \
|
||||||
|
"▌", "━", "╋", "▐", \
|
||||||
|
"▙", "▄", "▄", "▟" \
|
||||||
|
}, \
|
||||||
|
/* separator_chars */ \
|
||||||
|
{ \
|
||||||
|
"▌", "━", "╋", "▐", \
|
||||||
|
}, \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
struct fort_border_style FORT_BASIC_STYLE = BASIC_STYLE;
|
struct fort_border_style FORT_BASIC_STYLE = BASIC_STYLE;
|
||||||
struct fort_border_style FORT_SIMPLE_STYLE = SIMPLE_STYLE;
|
struct fort_border_style FORT_SIMPLE_STYLE = SIMPLE_STYLE;
|
||||||
struct fort_border_style FORT_PLAIN_STYLE = PLAIN_STYLE;
|
struct fort_border_style FORT_PLAIN_STYLE = PLAIN_STYLE;
|
||||||
struct fort_border_style FORT_DOT_STYLE = DOT_STYLE;
|
struct fort_border_style FORT_DOT_STYLE = DOT_STYLE;
|
||||||
struct fort_border_style FORT_EMPTY_STYLE = EMPTY_STYLE;
|
struct fort_border_style FORT_EMPTY_STYLE = EMPTY_STYLE;
|
||||||
struct fort_border_style FORT_SOLID_STYLE = SOLID_STYLE;
|
struct fort_border_style FORT_SOLID_STYLE = SOLID_STYLE;
|
||||||
|
struct fort_border_style FORT_SOLID_ROUND_STYLE = SOLID_ROUND_STYLE;
|
||||||
struct fort_border_style FORT_DOUBLE_STYLE = DOUBLE_STYLE;
|
struct fort_border_style FORT_DOUBLE_STYLE = DOUBLE_STYLE;
|
||||||
|
struct fort_border_style FORT_DOUBLE2_STYLE = DOUBLE2_STYLE;
|
||||||
|
struct fort_border_style FORT_BOLD_STYLE = BOLD_STYLE;
|
||||||
|
struct fort_border_style FORT_BOLD2_STYLE = BOLD2_STYLE;
|
||||||
|
struct fort_border_style FORT_FRAME_STYLE = FRAME_STYLE;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -122,7 +122,12 @@ extern struct fort_border_style FORT_PLAIN_STYLE;
|
|||||||
extern struct fort_border_style FORT_DOT_STYLE;
|
extern struct fort_border_style FORT_DOT_STYLE;
|
||||||
extern struct fort_border_style FORT_EMPTY_STYLE;
|
extern struct fort_border_style FORT_EMPTY_STYLE;
|
||||||
extern struct fort_border_style FORT_SOLID_STYLE;
|
extern struct fort_border_style FORT_SOLID_STYLE;
|
||||||
|
extern struct fort_border_style FORT_SOLID_ROUND_STYLE;
|
||||||
extern struct fort_border_style FORT_DOUBLE_STYLE;
|
extern struct fort_border_style FORT_DOUBLE_STYLE;
|
||||||
|
extern struct fort_border_style FORT_DOUBLE2_STYLE;
|
||||||
|
extern struct fort_border_style FORT_BOLD_STYLE;
|
||||||
|
extern struct fort_border_style FORT_BOLD2_STYLE;
|
||||||
|
extern struct fort_border_style FORT_FRAME_STYLE;
|
||||||
|
|
||||||
|
|
||||||
struct fort_entire_table_options
|
struct fort_entire_table_options
|
||||||
|
30
src/row.c
30
src/row.c
@ -158,6 +158,34 @@ int get_row_cell_types(const fort_row_t *row, enum CellType *types, size_t types
|
|||||||
return FT_SUCCESS;
|
return FT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fort_status_t row_set_cell_span(fort_row_t *row, size_t cell_column, size_t hor_span)
|
||||||
|
{
|
||||||
|
assert(row);
|
||||||
|
|
||||||
|
if (hor_span < 2)
|
||||||
|
return FT_EINVAL;
|
||||||
|
|
||||||
|
fort_cell_t *main_cell = get_cell_and_create_if_not_exists(row, cell_column);
|
||||||
|
if (main_cell == NULL) {
|
||||||
|
return FT_ERROR;
|
||||||
|
}
|
||||||
|
set_cell_type(main_cell, GroupMasterCell);
|
||||||
|
--hor_span;
|
||||||
|
++cell_column;
|
||||||
|
|
||||||
|
while (hor_span) {
|
||||||
|
fort_cell_t *slave_cell = get_cell_and_create_if_not_exists(row, cell_column);
|
||||||
|
if (slave_cell == NULL) {
|
||||||
|
return FT_ERROR;
|
||||||
|
}
|
||||||
|
set_cell_type(slave_cell, GroupSlaveCell);
|
||||||
|
--hor_span;
|
||||||
|
++cell_column;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -970,3 +998,5 @@ clear:
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ fort_status_t swap_row(fort_row_t *cur_row, fort_row_t *ins_row, size_t pos);
|
|||||||
|
|
||||||
size_t group_cell_number(const fort_row_t *row, size_t master_cell_col);
|
size_t group_cell_number(const fort_row_t *row, size_t master_cell_col);
|
||||||
int get_row_cell_types(const fort_row_t *row, enum CellType *types, size_t types_sz);
|
int get_row_cell_types(const fort_row_t *row, enum CellType *types, size_t types_sz);
|
||||||
|
fort_status_t row_set_cell_span(fort_row_t *row, size_t cell_column, size_t hor_span);
|
||||||
|
|
||||||
int print_row_separator(char *buffer, size_t buffer_sz,
|
int print_row_separator(char *buffer, size_t buffer_sz,
|
||||||
const size_t *col_width_arr, size_t cols,
|
const size_t *col_width_arr, size_t cols,
|
||||||
|
@ -155,6 +155,12 @@ string_buffer_t *create_string_buffer(size_t number_of_chars, enum str_buf_type
|
|||||||
result->data_sz = sz;
|
result->data_sz = sz;
|
||||||
result->type = type;
|
result->type = type;
|
||||||
|
|
||||||
|
if (sz && type == CharBuf) {
|
||||||
|
result->str.cstr[0] = '\0';
|
||||||
|
} else if (sz && type == WCharBuf) {
|
||||||
|
result->str.wstr[0] = L'\0';
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -434,4 +434,63 @@ void test_table_cell_options(void)
|
|||||||
assert_str_equal(table_str, table_str_etalon);
|
assert_str_equal(table_str, table_str_etalon);
|
||||||
ft_destroy_table(table);
|
ft_destroy_table(table);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WHEN("Cells with spans") {
|
||||||
|
set_test_options_as_default();
|
||||||
|
|
||||||
|
table = ft_create_table();
|
||||||
|
int n = ft_set_cell_span(table, 0, 0, 5);
|
||||||
|
assert_true(n == FT_SUCCESS);
|
||||||
|
n = ft_set_cell_span(table, 1, 1, 3);
|
||||||
|
assert_true(n == FT_SUCCESS);
|
||||||
|
|
||||||
|
n = ft_set_cell_option(table, 0, FT_ANY_COLUMN, FT_COPT_ROW_TYPE, FT_ROW_HEADER);
|
||||||
|
assert_true(n == FT_SUCCESS);
|
||||||
|
n = ft_set_cell_option(table, 1, FT_ANY_COLUMN, FT_COPT_ROW_TYPE, FT_ROW_HEADER);
|
||||||
|
assert_true(n == FT_SUCCESS);
|
||||||
|
|
||||||
|
n = ft_write_ln(table, "111", "2222", "33333", "444444", "55555555");
|
||||||
|
assert_true(n == FT_SUCCESS);
|
||||||
|
n = ft_write_ln(table, "2222", "33333", "444444", "55555555", "111");
|
||||||
|
assert_true(n == FT_SUCCESS);
|
||||||
|
|
||||||
|
n = ft_write_ln(table, "33333", "444444", "55555555", "111", "2222");
|
||||||
|
assert_true(n == FT_SUCCESS);
|
||||||
|
n = ft_write_ln(table, "2222", "33333", "444444", "55555555", "111");
|
||||||
|
assert_true(n == FT_SUCCESS);
|
||||||
|
n = ft_write_ln(table, "2222", "33333", "444444", "55555555", "111");
|
||||||
|
assert_true(n == FT_SUCCESS);
|
||||||
|
|
||||||
|
n = ft_set_cell_span(table, 4, 3, 2);
|
||||||
|
assert_true(n == FT_SUCCESS);
|
||||||
|
|
||||||
|
|
||||||
|
const char *table_str = ft_to_string(table);
|
||||||
|
assert_true(table_str != NULL);
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"+---------------------------------------------+\n"
|
||||||
|
"| |\n"
|
||||||
|
"| 111 |\n"
|
||||||
|
"| |\n"
|
||||||
|
"+-------+------------------------------+------+\n"
|
||||||
|
"| | | |\n"
|
||||||
|
"| 2222 | 33333 | 111 |\n"
|
||||||
|
"| | | |\n"
|
||||||
|
"+-------+--------+----------+----------+------+\n"
|
||||||
|
"| | | | | |\n"
|
||||||
|
"| 33333 | 444444 | 55555555 | 111 | 2222 |\n"
|
||||||
|
"| | | | | |\n"
|
||||||
|
"+-------+--------+----------+----------+------+\n"
|
||||||
|
"| | | | | |\n"
|
||||||
|
"| 2222 | 33333 | 444444 | 55555555 | 111 |\n"
|
||||||
|
"| | | | | |\n"
|
||||||
|
"+-------+--------+----------+----------+------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 2222 | 33333 | 444444 | 55555555 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-------+--------+----------+-----------------+\n";
|
||||||
|
assert_str_equal(table_str, table_str_etalon);
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user