[R] Refactoring of tests
This commit is contained in:
parent
2b5a2f3fa0
commit
ef7640f5e6
@ -5,9 +5,7 @@ cmake_minimum_required(VERSION 2.8)
|
|||||||
|
|
||||||
# Built options
|
# Built options
|
||||||
option(FORT_CXX_BUILD "Compile with c++ compiler instead of c" OFF)
|
option(FORT_CXX_BUILD "Compile with c++ compiler instead of c" OFF)
|
||||||
#option(FORT_COVERALLS_BUILD "Build for coveralls" OFF)
|
|
||||||
set(FORT_BUILD_TYPE "common" CACHE STRING "Built types (possible values: common, asan, ubsan, coveralls)")
|
set(FORT_BUILD_TYPE "common" CACHE STRING "Built types (possible values: common, asan, ubsan, coveralls)")
|
||||||
#set(FORT_COMPILER "gcc" CACHE STRING "Compiler (possible values: gcc, clang, msvc)")
|
|
||||||
|
|
||||||
|
|
||||||
# Determine compiler (pos. values Clang, GNU, Intel, MSVC, AppleClang... (https://cmake.org/cmake/help/v3.0/variable/CMAKE_LANG_COMPILER_ID.html)
|
# Determine compiler (pos. values Clang, GNU, Intel, MSVC, AppleClang... (https://cmake.org/cmake/help/v3.0/variable/CMAKE_LANG_COMPILER_ID.html)
|
||||||
@ -63,8 +61,12 @@ add_executable(${PROJECT_NAME}_example
|
|||||||
set(TEST_SOURCES
|
set(TEST_SOURCES
|
||||||
tests/test.c
|
tests/test.c
|
||||||
tests/test_vector.c
|
tests/test_vector.c
|
||||||
tests/test_table.c
|
tests/test_string_buffer.c
|
||||||
tests/test_string_buffer.c)
|
tests/test_table_geometry.c
|
||||||
|
tests/test_table_basic.c
|
||||||
|
tests/test_table_border_style.c
|
||||||
|
tests/test_table_options.c
|
||||||
|
tests/test_utility.c)
|
||||||
add_executable(${PROJECT_NAME}_test
|
add_executable(${PROJECT_NAME}_test
|
||||||
${FORT_SOURCES}
|
${FORT_SOURCES}
|
||||||
${TEST_SOURCES})
|
${TEST_SOURCES})
|
||||||
@ -113,7 +115,4 @@ if(FORT_COMPILER STREQUAL "GNU")
|
|||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=gold")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=gold")
|
||||||
endif(FORT_COMPILER STREQUAL "GNU")
|
endif(FORT_COMPILER STREQUAL "GNU")
|
||||||
|
|
||||||
# Coveralls support
|
|
||||||
#if(FORT_COVERALLS_BUILD)
|
|
||||||
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -fprofile-arcs -ftest-coverage")
|
|
||||||
#endif(FORT_COVERALLS_BUILD)
|
|
||||||
|
26
src/fort.c
26
src/fort.c
@ -196,7 +196,7 @@ int ft_write(FTABLE *FT_RESTRICT table, const char* FT_RESTRICT cell_content)
|
|||||||
assert(table);
|
assert(table);
|
||||||
string_buffer_t *str_buffer = get_cur_str_buffer_and_create_if_not_exists(table);
|
string_buffer_t *str_buffer = get_cur_str_buffer_and_create_if_not_exists(table);
|
||||||
if (str_buffer == NULL)
|
if (str_buffer == NULL)
|
||||||
return F_ERROR;
|
return FT_ERROR;
|
||||||
|
|
||||||
int status = fill_buffer_from_string(str_buffer, cell_content);
|
int status = fill_buffer_from_string(str_buffer, cell_content);
|
||||||
if (IS_SUCCESS(status)) {
|
if (IS_SUCCESS(status)) {
|
||||||
@ -220,7 +220,7 @@ int ft_wwrite(FTABLE *FT_RESTRICT table, const wchar_t* FT_RESTRICT cell_content
|
|||||||
assert(table);
|
assert(table);
|
||||||
string_buffer_t *str_buffer = get_cur_str_buffer_and_create_if_not_exists(table);
|
string_buffer_t *str_buffer = get_cur_str_buffer_and_create_if_not_exists(table);
|
||||||
if (str_buffer == NULL)
|
if (str_buffer == NULL)
|
||||||
return F_ERROR;
|
return FT_ERROR;
|
||||||
|
|
||||||
int status = fill_buffer_from_wstring(str_buffer, cell_content);
|
int status = fill_buffer_from_wstring(str_buffer, cell_content);
|
||||||
if (IS_SUCCESS(status)) {
|
if (IS_SUCCESS(status)) {
|
||||||
@ -345,7 +345,7 @@ int ft_row_write(FTABLE *FT_RESTRICT table, size_t cols, const char* FT_RESTRICT
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ft_row_write_ln(FTABLE *FT_RESTRICT table, size_t cols, const char* FT_RESTRICT cells[])
|
int ft_row_write_ln(FTABLE *FT_RESTRICT table, size_t cols, const char* FT_RESTRICT cells[])
|
||||||
@ -375,7 +375,7 @@ int ft_s_table_write(FTABLE *FT_RESTRICT table, size_t rows, size_t cols, const
|
|||||||
if (i != rows - 1)
|
if (i != rows - 1)
|
||||||
ft_ln(table);
|
ft_ln(table);
|
||||||
}
|
}
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ft_s_table_write_ln(FTABLE *FT_RESTRICT table, size_t rows, size_t cols, const char* FT_RESTRICT table_cells[rows][cols])
|
int ft_s_table_write_ln(FTABLE *FT_RESTRICT table, size_t rows, size_t cols, const char* FT_RESTRICT table_cells[rows][cols])
|
||||||
@ -402,7 +402,7 @@ int ft_table_write(FTABLE *FT_RESTRICT table, size_t rows, size_t cols, const ch
|
|||||||
if (i != rows - 1)
|
if (i != rows - 1)
|
||||||
ft_ln(table);
|
ft_ln(table);
|
||||||
}
|
}
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ft_table_write_ln(FTABLE *FT_RESTRICT table, size_t rows, size_t cols, const char* * FT_RESTRICT table_cells[rows])
|
int ft_table_write_ln(FTABLE *FT_RESTRICT table, size_t rows, size_t cols, const char* * FT_RESTRICT table_cells[rows])
|
||||||
@ -649,7 +649,7 @@ int ft_add_separator(FTABLE *table)
|
|||||||
while(vector_size(table->separators) <= table->cur_row) {
|
while(vector_size(table->separators) <= table->cur_row) {
|
||||||
separator_t *sep_p = create_separator(F_FALSE);
|
separator_t *sep_p = create_separator(F_FALSE);
|
||||||
if (sep_p == NULL)
|
if (sep_p == NULL)
|
||||||
return F_MEMORY_ERROR;
|
return FT_MEMORY_ERROR;
|
||||||
int status = vector_push(table->separators, &sep_p);
|
int status = vector_push(table->separators, &sep_p);
|
||||||
if (IS_ERROR(status))
|
if (IS_ERROR(status))
|
||||||
return status;
|
return status;
|
||||||
@ -662,8 +662,8 @@ int ft_add_separator(FTABLE *table)
|
|||||||
(*sep_p)->enabled = F_TRUE;
|
(*sep_p)->enabled = F_TRUE;
|
||||||
|
|
||||||
if (*sep_p == NULL)
|
if (*sep_p == NULL)
|
||||||
return F_ERROR;
|
return FT_ERROR;
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -753,7 +753,7 @@ static void set_border_options_for_options(fort_table_options_t *options, struct
|
|||||||
int ft_set_default_border_style(struct ft_border_style *style)
|
int ft_set_default_border_style(struct ft_border_style *style)
|
||||||
{
|
{
|
||||||
set_border_options_for_options(&g_table_options, style);
|
set_border_options_for_options(&g_table_options, style);
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ft_set_border_style(FTABLE *table, struct ft_border_style *style)
|
int ft_set_border_style(FTABLE *table, struct ft_border_style *style)
|
||||||
@ -762,10 +762,10 @@ int ft_set_border_style(FTABLE *table, struct ft_border_style *style)
|
|||||||
if (table->options == NULL) {
|
if (table->options == NULL) {
|
||||||
table->options = create_table_options();
|
table->options = create_table_options();
|
||||||
if (table->options == NULL)
|
if (table->options == NULL)
|
||||||
return F_MEMORY_ERROR;
|
return FT_MEMORY_ERROR;
|
||||||
}
|
}
|
||||||
set_border_options_for_options(table->options, style);
|
set_border_options_for_options(table->options, style);
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -777,12 +777,12 @@ int ft_set_option(FTABLE *table, unsigned row, unsigned col, uint32_t option, in
|
|||||||
if (table->options == NULL) {
|
if (table->options == NULL) {
|
||||||
table->options = create_table_options();
|
table->options = create_table_options();
|
||||||
if (table->options == NULL)
|
if (table->options == NULL)
|
||||||
return F_MEMORY_ERROR;
|
return FT_MEMORY_ERROR;
|
||||||
}
|
}
|
||||||
if (table->options->cell_options == NULL) {
|
if (table->options->cell_options == NULL) {
|
||||||
table->options->cell_options = create_cell_opt_container();
|
table->options->cell_options = create_cell_opt_container();
|
||||||
if (table->options->cell_options == NULL) {
|
if (table->options->cell_options == NULL) {
|
||||||
return F_ERROR;
|
return FT_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return set_cell_option(table->options->cell_options, row, col, option, value);
|
return set_cell_option(table->options->cell_options, row, col, option, value);
|
||||||
|
@ -61,9 +61,9 @@ enum F_BOOL
|
|||||||
* RETURN CODES
|
* RETURN CODES
|
||||||
* ***************************************************************************/
|
* ***************************************************************************/
|
||||||
typedef int fort_status_t;
|
typedef int fort_status_t;
|
||||||
#define F_SUCCESS 0
|
#define FT_SUCCESS 0
|
||||||
#define F_MEMORY_ERROR -1
|
#define FT_MEMORY_ERROR -1
|
||||||
#define F_ERROR -2
|
#define FT_ERROR -2
|
||||||
#define IS_SUCCESS(arg) ((arg) >= 0)
|
#define IS_SUCCESS(arg) ((arg) >= 0)
|
||||||
#define IS_ERROR(arg) ((arg) < 0)
|
#define IS_ERROR(arg) ((arg) < 0)
|
||||||
|
|
||||||
|
@ -175,7 +175,7 @@ static fort_status_t set_cell_option_impl(fort_cell_options_t *opt, uint32_t opt
|
|||||||
opt->row_type = (enum RowType)value;
|
opt->row_type = (enum RowType)value;
|
||||||
}
|
}
|
||||||
|
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -183,7 +183,7 @@ fort_status_t set_cell_option(fort_cell_opt_container_t *cont, unsigned row, uns
|
|||||||
{
|
{
|
||||||
fort_cell_options_t* opt = get_cell_opt_and_create_if_not_exists(cont, row, col);
|
fort_cell_options_t* opt = get_cell_opt_and_create_if_not_exists(cont, row, col);
|
||||||
if (opt == NULL)
|
if (opt == NULL)
|
||||||
return F_ERROR;
|
return FT_ERROR;
|
||||||
|
|
||||||
return set_cell_option_impl(opt, option, value);
|
return set_cell_option_impl(opt, option, value);
|
||||||
/*
|
/*
|
||||||
@ -194,7 +194,7 @@ fort_status_t set_cell_option(fort_cell_opt_container_t *cont, unsigned row, uns
|
|||||||
opt->align = value;
|
opt->align = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,12 +157,12 @@ fort_status_t realloc_string_buffer_without_copy(string_buffer_t *buffer)
|
|||||||
assert(buffer);
|
assert(buffer);
|
||||||
char *new_str = (char*)F_MALLOC(buffer->data_sz * 2);
|
char *new_str = (char*)F_MALLOC(buffer->data_sz * 2);
|
||||||
if (new_str == NULL) {
|
if (new_str == NULL) {
|
||||||
return F_MEMORY_ERROR;
|
return FT_MEMORY_ERROR;
|
||||||
}
|
}
|
||||||
F_FREE(buffer->str.data);
|
F_FREE(buffer->str.data);
|
||||||
buffer->str.data = new_str;
|
buffer->str.data = new_str;
|
||||||
buffer->data_sz *= 2;
|
buffer->data_sz *= 2;
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
fort_status_t fill_buffer_from_string(string_buffer_t *buffer, const char *str)
|
fort_status_t fill_buffer_from_string(string_buffer_t *buffer, const char *str)
|
||||||
@ -173,7 +173,7 @@ fort_status_t fill_buffer_from_string(string_buffer_t *buffer, const char *str)
|
|||||||
size_t sz = strlen(str);
|
size_t sz = strlen(str);
|
||||||
char * copy = F_STRDUP(str);
|
char * copy = F_STRDUP(str);
|
||||||
if (copy == NULL)
|
if (copy == NULL)
|
||||||
return F_MEMORY_ERROR;
|
return FT_MEMORY_ERROR;
|
||||||
|
|
||||||
while (sz >= string_buffer_capacity(buffer)) {
|
while (sz >= string_buffer_capacity(buffer)) {
|
||||||
int status = realloc_string_buffer_without_copy(buffer);
|
int status = realloc_string_buffer_without_copy(buffer);
|
||||||
@ -185,7 +185,7 @@ fort_status_t fill_buffer_from_string(string_buffer_t *buffer, const char *str)
|
|||||||
buffer->str.cstr = copy;
|
buffer->str.cstr = copy;
|
||||||
buffer->type = CharBuf;
|
buffer->type = CharBuf;
|
||||||
|
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
fort_status_t fill_buffer_from_wstring(string_buffer_t *buffer, const wchar_t *str)
|
fort_status_t fill_buffer_from_wstring(string_buffer_t *buffer, const wchar_t *str)
|
||||||
@ -196,7 +196,7 @@ fort_status_t fill_buffer_from_wstring(string_buffer_t *buffer, const wchar_t *s
|
|||||||
size_t sz = wcslen(str);
|
size_t sz = wcslen(str);
|
||||||
wchar_t * copy = F_WCSDUP(str);
|
wchar_t * copy = F_WCSDUP(str);
|
||||||
if (copy == NULL)
|
if (copy == NULL)
|
||||||
return F_MEMORY_ERROR;
|
return FT_MEMORY_ERROR;
|
||||||
|
|
||||||
while (sz >= string_buffer_capacity(buffer)) {
|
while (sz >= string_buffer_capacity(buffer)) {
|
||||||
int status = realloc_string_buffer_without_copy(buffer);
|
int status = realloc_string_buffer_without_copy(buffer);
|
||||||
@ -208,7 +208,7 @@ fort_status_t fill_buffer_from_wstring(string_buffer_t *buffer, const wchar_t *s
|
|||||||
buffer->str.wstr = copy;
|
buffer->str.wstr = copy;
|
||||||
buffer->type = WCharBuf;
|
buffer->type = WCharBuf;
|
||||||
|
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
12
src/table.c
12
src/table.c
@ -85,7 +85,7 @@ fort_status_t get_table_sizes(const FTABLE *table, size_t *rows, size_t *cols)
|
|||||||
*cols = cols_in_row;
|
*cols = cols_in_row;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
fort_status_t table_rows_and_cols_geometry(const FTABLE *table,
|
fort_status_t table_rows_and_cols_geometry(const FTABLE *table,
|
||||||
@ -93,7 +93,7 @@ fort_status_t table_rows_and_cols_geometry(const FTABLE *table,
|
|||||||
size_t **row_height_arr_p, size_t *row_height_arr_sz)
|
size_t **row_height_arr_p, size_t *row_height_arr_sz)
|
||||||
{
|
{
|
||||||
if (table == NULL) {
|
if (table == NULL) {
|
||||||
return F_ERROR;
|
return FT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -109,7 +109,7 @@ fort_status_t table_rows_and_cols_geometry(const FTABLE *table,
|
|||||||
if (col_width_arr == NULL || row_height_arr == NULL) {
|
if (col_width_arr == NULL || row_height_arr == NULL) {
|
||||||
F_FREE(col_width_arr);
|
F_FREE(col_width_arr);
|
||||||
F_FREE(row_height_arr);
|
F_FREE(row_height_arr);
|
||||||
return F_ERROR;
|
return FT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
context_t context;
|
context_t context;
|
||||||
@ -146,7 +146,7 @@ fort_status_t table_rows_and_cols_geometry(const FTABLE *table,
|
|||||||
*col_width_arr_sz = cols;
|
*col_width_arr_sz = cols;
|
||||||
*row_height_arr_p = row_height_arr;
|
*row_height_arr_p = row_height_arr;
|
||||||
*row_height_arr_sz = rows;
|
*row_height_arr_sz = rows;
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -155,7 +155,7 @@ fort_status_t table_rows_and_cols_geometry(const FTABLE *table,
|
|||||||
fort_status_t table_geometry(const FTABLE *table, size_t *height, size_t *width)
|
fort_status_t table_geometry(const FTABLE *table, size_t *height, size_t *width)
|
||||||
{
|
{
|
||||||
if (table == NULL)
|
if (table == NULL)
|
||||||
return F_ERROR;
|
return FT_ERROR;
|
||||||
|
|
||||||
*height = 0;
|
*height = 0;
|
||||||
*width = 0;
|
*width = 0;
|
||||||
@ -181,7 +181,7 @@ fort_status_t table_geometry(const FTABLE *table, size_t *height, size_t *width)
|
|||||||
}
|
}
|
||||||
F_FREE(col_width_arr);
|
F_FREE(col_width_arr);
|
||||||
F_FREE(row_height_arr);
|
F_FREE(row_height_arr);
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ int vector_push (vector_t* vector, const void* item)
|
|||||||
|
|
||||||
if (vector->m_size == vector->m_capacity) {
|
if (vector->m_size == vector->m_capacity) {
|
||||||
if (vector_reallocate_(vector, vector->m_capacity * 2) == -1)
|
if (vector_reallocate_(vector, vector->m_capacity * 2) == -1)
|
||||||
return F_ERROR;
|
return FT_ERROR;
|
||||||
vector->m_capacity = vector->m_capacity * 2;
|
vector->m_capacity = vector->m_capacity * 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ int vector_push (vector_t* vector, const void* item)
|
|||||||
|
|
||||||
++(vector->m_size);
|
++(vector->m_size);
|
||||||
|
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -134,13 +134,13 @@ int vector_erase(vector_t *vector, size_t index)
|
|||||||
assert(vector);
|
assert(vector);
|
||||||
|
|
||||||
if (vector->m_size == 0 || index >= vector->m_size)
|
if (vector->m_size == 0 || index >= vector->m_size)
|
||||||
return F_ERROR;
|
return FT_ERROR;
|
||||||
|
|
||||||
memmove((char*)vector->m_data + vector->m_item_size * index,
|
memmove((char*)vector->m_data + vector->m_item_size * index,
|
||||||
(char*)vector->m_data + vector->m_item_size * (index + 1),
|
(char*)vector->m_data + vector->m_item_size * (index + 1),
|
||||||
(vector->m_size - 1 - index) * vector->m_item_size);
|
(vector->m_size - 1 - index) * vector->m_item_size);
|
||||||
vector->m_size--;
|
vector->m_size--;
|
||||||
return F_SUCCESS;
|
return FT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,11 +3,12 @@
|
|||||||
|
|
||||||
struct test_case test_suit [] = {
|
struct test_case test_suit [] = {
|
||||||
{"test_vector_basic", test_vector_basic},
|
{"test_vector_basic", test_vector_basic},
|
||||||
|
{"test_string_buffer", test_string_buffer},
|
||||||
{"test_table_sizes", test_table_sizes},
|
{"test_table_sizes", test_table_sizes},
|
||||||
{"test_table_geometry", test_table_geometry},
|
{"test_table_geometry", test_table_geometry},
|
||||||
{"test_table_basic", test_table_basic},
|
{"test_table_basic", test_table_basic},
|
||||||
|
{"test_table_border_style", test_table_border_style},
|
||||||
{"test_table_options", test_table_options},
|
{"test_table_options", test_table_options},
|
||||||
{"test_string_buffer", test_string_buffer},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
@ -16,7 +17,7 @@ int main(void) {
|
|||||||
int i;
|
int i;
|
||||||
for (i = 0; i < n_tests; ++i) {
|
for (i = 0; i < n_tests; ++i) {
|
||||||
fprintf(stderr, "[ RUN ] %s\n", test_suit[i].name);
|
fprintf(stderr, "[ RUN ] %s\n", test_suit[i].name);
|
||||||
test_suit[i].test(NULL);
|
test_suit[i].test();
|
||||||
fprintf(stderr, "[ OK ] %s\n", test_suit[i].name);
|
fprintf(stderr, "[ OK ] %s\n", test_suit[i].name);
|
||||||
}
|
}
|
||||||
fprintf(stderr, "[==========] %d test(s) run.\n", n_tests);
|
fprintf(stderr, "[==========] %d test(s) run.\n", n_tests);
|
||||||
|
@ -24,10 +24,8 @@ void test_buffer_text_width(void);
|
|||||||
void test_buffer_text_height(void);
|
void test_buffer_text_height(void);
|
||||||
|
|
||||||
|
|
||||||
void test_string_buffer(void **state)
|
void test_string_buffer(void)
|
||||||
{
|
{
|
||||||
(void)state;
|
|
||||||
|
|
||||||
test_strchr_count();
|
test_strchr_count();
|
||||||
test_str_n_substring();
|
test_str_n_substring();
|
||||||
test_buffer_text_width();
|
test_buffer_text_width();
|
||||||
|
@ -1,819 +0,0 @@
|
|||||||
//#define FT_EXTERN static
|
|
||||||
#include "tests.h"
|
|
||||||
#include "fort.h"
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
//#include "fort.c"
|
|
||||||
#include "table.h"
|
|
||||||
#include "options.h"
|
|
||||||
#include "vector.h"
|
|
||||||
|
|
||||||
|
|
||||||
int set_test_options_for_table(FTABLE *table)
|
|
||||||
{
|
|
||||||
assert(table);
|
|
||||||
int status = F_SUCCESS;
|
|
||||||
status |= ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_BOTTOM_PADDING, 1);
|
|
||||||
status |= ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_TOP_PADDING, 1);
|
|
||||||
status |= ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_LEFT_PADDING, 1);
|
|
||||||
status |= ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_RIGHT_PADDING, 1);
|
|
||||||
status |= ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_EMPTY_STR_HEIGHT, 1);
|
|
||||||
|
|
||||||
assert_true( status == F_SUCCESS );
|
|
||||||
|
|
||||||
|
|
||||||
struct ft_border_style brdr_style;
|
|
||||||
brdr_style.border_chs.top_border_ch = '-';
|
|
||||||
brdr_style.border_chs.separator_ch = '-';
|
|
||||||
brdr_style.border_chs.bottom_border_ch = '-';
|
|
||||||
brdr_style.border_chs.side_border_ch = '|';
|
|
||||||
brdr_style.border_chs.out_intersect_ch = '+';
|
|
||||||
brdr_style.border_chs.in_intersect_ch = '+';
|
|
||||||
|
|
||||||
brdr_style.header_border_chs.top_border_ch = '-';
|
|
||||||
brdr_style.header_border_chs.separator_ch = '-';
|
|
||||||
brdr_style.header_border_chs.bottom_border_ch = '-';
|
|
||||||
brdr_style.header_border_chs.side_border_ch = '|';
|
|
||||||
brdr_style.header_border_chs.out_intersect_ch = '+';
|
|
||||||
brdr_style.header_border_chs.in_intersect_ch = '+';
|
|
||||||
|
|
||||||
brdr_style.hor_separator_char = '=';
|
|
||||||
return ft_set_border_style(table, &brdr_style);
|
|
||||||
}
|
|
||||||
|
|
||||||
int set_test_options_as_default()
|
|
||||||
{
|
|
||||||
int status = F_SUCCESS;
|
|
||||||
|
|
||||||
status |= ft_set_default_option(FT_OPT_MIN_WIDTH, 0);
|
|
||||||
status |= ft_set_default_option(FT_OPT_TEXT_ALIGN, RightAligned);
|
|
||||||
|
|
||||||
status |= ft_set_default_option(FT_OPT_BOTTOM_PADDING, 1);
|
|
||||||
status |= ft_set_default_option(FT_OPT_TOP_PADDING, 1);
|
|
||||||
status |= ft_set_default_option(FT_OPT_LEFT_PADDING, 1);
|
|
||||||
status |= ft_set_default_option(FT_OPT_RIGHT_PADDING, 1);
|
|
||||||
status |= ft_set_default_option(FT_OPT_EMPTY_STR_HEIGHT, 1);
|
|
||||||
|
|
||||||
assert_true( status == F_SUCCESS );
|
|
||||||
|
|
||||||
|
|
||||||
struct ft_border_style brdr_style;
|
|
||||||
brdr_style.border_chs.top_border_ch = '-';
|
|
||||||
brdr_style.border_chs.separator_ch = '-';
|
|
||||||
brdr_style.border_chs.bottom_border_ch = '-';
|
|
||||||
brdr_style.border_chs.side_border_ch = '|';
|
|
||||||
brdr_style.border_chs.out_intersect_ch = '+';
|
|
||||||
brdr_style.border_chs.in_intersect_ch = '+';
|
|
||||||
|
|
||||||
brdr_style.header_border_chs.top_border_ch = '-';
|
|
||||||
brdr_style.header_border_chs.separator_ch = '-';
|
|
||||||
brdr_style.header_border_chs.bottom_border_ch = '-';
|
|
||||||
brdr_style.header_border_chs.side_border_ch = '|';
|
|
||||||
brdr_style.header_border_chs.out_intersect_ch = '+';
|
|
||||||
brdr_style.header_border_chs.in_intersect_ch = '+';
|
|
||||||
|
|
||||||
brdr_style.hor_separator_char = '=';
|
|
||||||
|
|
||||||
return ft_set_default_border_style(&brdr_style);
|
|
||||||
}
|
|
||||||
|
|
||||||
void test_table_sizes(void **state)
|
|
||||||
{
|
|
||||||
(void)state;
|
|
||||||
FTABLE *table = ft_create_table();
|
|
||||||
assert_true( table != NULL );
|
|
||||||
// ft_set_table_options(table, &test_table_opts);
|
|
||||||
|
|
||||||
assert_true( set_test_options_for_table(table) == F_SUCCESS);
|
|
||||||
|
|
||||||
|
|
||||||
size_t rows = 0;
|
|
||||||
size_t cols = 0;
|
|
||||||
int status = F_SUCCESS;
|
|
||||||
|
|
||||||
WHEN("Table is empty") {
|
|
||||||
status = get_table_sizes(table, &rows, &cols);
|
|
||||||
assert_true( IS_SUCCESS(status) );
|
|
||||||
assert_true( rows == 0 );
|
|
||||||
assert_true( cols == 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("Insert one cell") {
|
|
||||||
int n = ft_printf_ln(table, "%c", 'c');
|
|
||||||
assert_true( n == 1 );
|
|
||||||
status = get_table_sizes(table, &rows, &cols);
|
|
||||||
assert_true( IS_SUCCESS(status) );
|
|
||||||
assert_true( rows == 1 );
|
|
||||||
assert_true( cols == 1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("Insert two cells in the next row") {
|
|
||||||
int n = ft_printf_ln(table, "%c|%c", 'c', 'd');
|
|
||||||
assert_true( n == 2 );
|
|
||||||
status = get_table_sizes(table, &rows, &cols);
|
|
||||||
assert_true( IS_SUCCESS(status) );
|
|
||||||
assert_true( rows == 2 );
|
|
||||||
assert_true( cols == 2 );
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("Insert five cells in the next row") {
|
|
||||||
int n = ft_printf_ln(table, "%d|%d|%d|%d|%d", 1, 2, 3, 4, 5);
|
|
||||||
assert_true( n == 5 );
|
|
||||||
status = get_table_sizes(table, &rows, &cols);
|
|
||||||
assert_true( IS_SUCCESS(status) );
|
|
||||||
assert_true( rows == 3 );
|
|
||||||
assert_true( cols == 5 );
|
|
||||||
}
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void test_table_geometry(void **state)
|
|
||||||
{
|
|
||||||
(void)state;
|
|
||||||
FTABLE *table = ft_create_table();
|
|
||||||
assert_true( table != NULL );
|
|
||||||
// ft_set_table_options(table, &test_table_opts);
|
|
||||||
assert_true( set_test_options_for_table(table) == F_SUCCESS);
|
|
||||||
|
|
||||||
size_t height = 0;
|
|
||||||
size_t width = 0;
|
|
||||||
int status = F_SUCCESS;
|
|
||||||
|
|
||||||
WHEN("Table is empty") {
|
|
||||||
status = table_geometry(table, &height, &width);
|
|
||||||
assert_true( IS_SUCCESS(status) );
|
|
||||||
assert_true( height == 2 );
|
|
||||||
assert_true( width == 3 );
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("Table has one cell") {
|
|
||||||
int n = ft_printf_ln(table, "%c", 'c');
|
|
||||||
assert_true( n == 1 );
|
|
||||||
status = table_geometry(table, &height, &width);
|
|
||||||
assert_true( IS_SUCCESS(status) );
|
|
||||||
assert_true( height == 5 );
|
|
||||||
assert_true( width == 6 );
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("Inserting 3 cells in the next row") {
|
|
||||||
int n = ft_printf_ln(table, "%c|%s|%c", 'c', "as", 'e');
|
|
||||||
assert_true( n == 3 );
|
|
||||||
status = table_geometry(table, &height, &width);
|
|
||||||
assert_true( IS_SUCCESS(status) );
|
|
||||||
assert_true( height == 9 );
|
|
||||||
assert_true( width == 15 );
|
|
||||||
}
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
void test_table_basic(void **state)
|
|
||||||
{
|
|
||||||
(void)state;
|
|
||||||
|
|
||||||
FTABLE *table = NULL;
|
|
||||||
|
|
||||||
WHEN("All columns are equal and not empty") {
|
|
||||||
table = ft_create_table();
|
|
||||||
assert_true( table != NULL );
|
|
||||||
// ft_set_table_options(table, &test_table_opts);
|
|
||||||
assert_true( set_test_options_for_table(table) == F_SUCCESS);
|
|
||||||
|
|
||||||
ft_set_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
|
||||||
int n = ft_printf_ln(table, "%d|%c|%s|%f", 3, 'c', "234", 3.14);
|
|
||||||
|
|
||||||
assert_true( n == 4 );
|
|
||||||
n = ft_printf_ln(table, "%d|%c|%s|%f", 3, 'c', "234", 3.14);
|
|
||||||
assert_true( n == 4 );
|
|
||||||
n = ft_printf_ln(table, "%d|%c|%s|%f", 3, 'c', "234", 3.14);
|
|
||||||
assert_true( n == 4 );
|
|
||||||
|
|
||||||
const char *table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
const char *table_str_etalon =
|
|
||||||
"+---+---+-----+----------+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | c | 234 | 3.140000 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+-----+----------+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | c | 234 | 3.140000 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+-----+----------+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | c | 234 | 3.140000 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+-----+----------+\n";
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
WHEN("All columns are not equal and not empty") {
|
|
||||||
table = ft_create_table();
|
|
||||||
assert_true( table != NULL );
|
|
||||||
// ft_set_table_options(table, &test_table_opts);
|
|
||||||
assert_true( set_test_options_for_table(table) == F_SUCCESS);
|
|
||||||
|
|
||||||
ft_set_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
|
||||||
int n = ft_printf_ln(table, "%d|%c|%s|%f", 3, 'c', "234", 3.14);
|
|
||||||
|
|
||||||
assert_true( n == 4 );
|
|
||||||
n = ft_printf_ln(table, "%c|%s|%f|%d", 'c', "234", 3.14, 3);
|
|
||||||
assert_true( n == 4 );
|
|
||||||
n = ft_printf_ln(table, "%s|%f|%d|%c", "234", 3.14, 3, 'c');
|
|
||||||
assert_true( n == 4 );
|
|
||||||
|
|
||||||
const char *table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
const char *table_str_etalon =
|
|
||||||
"+-----+----------+----------+----------+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | c | 234 | 3.140000 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+-----+----------+----------+----------+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| c | 234 | 3.140000 | 3 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+-----+----------+----------+----------+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 234 | 3.140000 | 3 | c |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+-----+----------+----------+----------+\n";
|
|
||||||
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("All columns are not equal and some cells are empty") {
|
|
||||||
table = ft_create_table();
|
|
||||||
assert_true( table != NULL );
|
|
||||||
// ft_set_table_options(table, &test_table_opts);
|
|
||||||
assert_true( set_test_options_for_table(table) == F_SUCCESS);
|
|
||||||
|
|
||||||
ft_set_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
|
||||||
int n = ft_printf_ln(table, "||%s|%f", "234", 3.14);
|
|
||||||
|
|
||||||
assert_true( n == 4 );
|
|
||||||
n = ft_printf_ln(table, "%c|%s|%f", 'c', "234", 3.14);
|
|
||||||
assert_true( n == 3 );
|
|
||||||
n = ft_printf_ln(table, "%s|%f||", "234", 3.14);
|
|
||||||
assert_true( n == 4 );
|
|
||||||
|
|
||||||
const char *table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
const char *table_str_etalon =
|
|
||||||
"+-----+----------+----------+----------+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| | | 234 | 3.140000 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+-----+----------+----------+----------+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| c | 234 | 3.140000 | |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+-----+----------+----------+----------+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 234 | 3.140000 | | |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+-----+----------+----------+----------+\n";
|
|
||||||
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("All cells are empty") {
|
|
||||||
table = ft_create_table();
|
|
||||||
assert_true( table != NULL );
|
|
||||||
// ft_set_table_options(table, &test_table_opts);
|
|
||||||
assert_true( set_test_options_for_table(table) == F_SUCCESS);
|
|
||||||
|
|
||||||
ft_set_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
|
||||||
int n = ft_printf_ln(table, "|||");
|
|
||||||
|
|
||||||
assert_true( n == 4 );
|
|
||||||
n = ft_printf_ln(table, "|||");
|
|
||||||
assert_true( n == 4 );
|
|
||||||
n = ft_printf_ln(table, "|||");
|
|
||||||
assert_true( n == 4 );
|
|
||||||
|
|
||||||
const 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);
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FTABLE *create_test_int_table(int set_test_opts)
|
|
||||||
{
|
|
||||||
FTABLE *table = NULL;
|
|
||||||
|
|
||||||
table = ft_create_table();
|
|
||||||
assert_true( table != NULL );
|
|
||||||
if (set_test_opts) {
|
|
||||||
assert_true( set_test_options_for_table(table) == F_SUCCESS);
|
|
||||||
}
|
|
||||||
// ft_set_table_options(table, &test_table_opts);
|
|
||||||
|
|
||||||
assert_true (table != NULL);
|
|
||||||
|
|
||||||
ft_set_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
|
||||||
int n = ft_printf_ln(table, "%d|%d|%d|%d", 3, 4, 55, 67);
|
|
||||||
|
|
||||||
assert_true( n == 4 );
|
|
||||||
|
|
||||||
assert(ft_write(table, "3") == F_SUCCESS);
|
|
||||||
assert(ft_write(table, "4") == F_SUCCESS);
|
|
||||||
assert(ft_write(table, "55") == F_SUCCESS);
|
|
||||||
assert(ft_write_ln(table, "67") == F_SUCCESS);
|
|
||||||
|
|
||||||
assert(ft_write(table, "3") == F_SUCCESS);
|
|
||||||
assert(ft_write(table, "4") == F_SUCCESS);
|
|
||||||
assert(ft_write(table, "55") == F_SUCCESS);
|
|
||||||
assert(ft_write_ln(table, "67") == F_SUCCESS);
|
|
||||||
|
|
||||||
return table;
|
|
||||||
}
|
|
||||||
|
|
||||||
void test_table_options(void **state)
|
|
||||||
{
|
|
||||||
(void)state;
|
|
||||||
FTABLE *table = NULL;
|
|
||||||
|
|
||||||
// fort_table_options_t def_options =;
|
|
||||||
// ft_get_default_options(&def_options);
|
|
||||||
|
|
||||||
|
|
||||||
WHEN("All paddings = 1") {
|
|
||||||
set_test_options_as_default();
|
|
||||||
|
|
||||||
ft_set_default_option(FT_OPT_BOTTOM_PADDING, 1);
|
|
||||||
ft_set_default_option(FT_OPT_TOP_PADDING, 1);
|
|
||||||
ft_set_default_option(FT_OPT_LEFT_PADDING, 1);
|
|
||||||
ft_set_default_option(FT_OPT_RIGHT_PADDING, 1);
|
|
||||||
|
|
||||||
table = create_test_int_table(0);
|
|
||||||
|
|
||||||
const char *table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
const char *table_str_etalon =
|
|
||||||
"+---+---+----+----+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+----+----+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+----+----+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+----+----+\n";
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("Separator testing") {
|
|
||||||
table = create_test_int_table(1);
|
|
||||||
ft_add_separator(table);
|
|
||||||
|
|
||||||
ft_set_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
|
||||||
int n = ft_printf_ln(table, "%d|%d|%d|%d", 3, 4, 55, 67);
|
|
||||||
|
|
||||||
assert_true( n == 4 );
|
|
||||||
|
|
||||||
const char *table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
const char *table_str_etalon =
|
|
||||||
"+---+---+----+----+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+----+----+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+----+----+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+===+===+====+====+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+----+----+\n";
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("Top and bottom padding = 0") {
|
|
||||||
|
|
||||||
ft_set_default_option(FT_OPT_BOTTOM_PADDING, 0);
|
|
||||||
ft_set_default_option(FT_OPT_TOP_PADDING, 0);
|
|
||||||
ft_set_default_option(FT_OPT_LEFT_PADDING, 1);
|
|
||||||
ft_set_default_option(FT_OPT_RIGHT_PADDING, 1);
|
|
||||||
|
|
||||||
table = create_test_int_table(0);
|
|
||||||
|
|
||||||
const char *table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
const char *table_str_etalon =
|
|
||||||
"+---+---+----+----+\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"+---+---+----+----+\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"+---+---+----+----+\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"+---+---+----+----+\n";
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("Left and right padding = 0") {
|
|
||||||
|
|
||||||
ft_set_default_option(FT_OPT_BOTTOM_PADDING, 1);
|
|
||||||
ft_set_default_option(FT_OPT_TOP_PADDING, 1);
|
|
||||||
ft_set_default_option(FT_OPT_LEFT_PADDING, 0);
|
|
||||||
ft_set_default_option(FT_OPT_RIGHT_PADDING, 0);
|
|
||||||
|
|
||||||
table = create_test_int_table(0);
|
|
||||||
|
|
||||||
const char *table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
const char *table_str_etalon =
|
|
||||||
"+-+-+--+--+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"|3|4|55|67|\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+-+-+--+--+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"|3|4|55|67|\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+-+-+--+--+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"|3|4|55|67|\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+-+-+--+--+\n";
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("All paddings = 0") {
|
|
||||||
|
|
||||||
ft_set_default_option(FT_OPT_BOTTOM_PADDING, 0);
|
|
||||||
ft_set_default_option(FT_OPT_TOP_PADDING, 0);
|
|
||||||
ft_set_default_option(FT_OPT_LEFT_PADDING, 0);
|
|
||||||
ft_set_default_option(FT_OPT_RIGHT_PADDING, 0);
|
|
||||||
|
|
||||||
table = create_test_int_table(0);
|
|
||||||
|
|
||||||
const char *table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
const char *table_str_etalon =
|
|
||||||
"+-+-+--+--+\n"
|
|
||||||
"|3|4|55|67|\n"
|
|
||||||
"+-+-+--+--+\n"
|
|
||||||
"|3|4|55|67|\n"
|
|
||||||
"+-+-+--+--+\n"
|
|
||||||
"|3|4|55|67|\n"
|
|
||||||
"+-+-+--+--+\n";
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("Empty string has 0 heigt") {
|
|
||||||
|
|
||||||
ft_set_default_option(FT_OPT_BOTTOM_PADDING, 1);
|
|
||||||
ft_set_default_option(FT_OPT_TOP_PADDING, 1);
|
|
||||||
ft_set_default_option(FT_OPT_LEFT_PADDING, 1);
|
|
||||||
ft_set_default_option(FT_OPT_RIGHT_PADDING, 1);
|
|
||||||
ft_set_default_option(FT_OPT_EMPTY_STR_HEIGHT, 0);
|
|
||||||
|
|
||||||
table = create_test_int_table(0);
|
|
||||||
int n = ft_printf_ln(table, "|||");
|
|
||||||
assert_true( n == 4 );
|
|
||||||
|
|
||||||
const char *table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
const char *table_str_etalon =
|
|
||||||
"+---+---+----+----+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+----+----+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+----+----+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+----+----+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+----+----+\n";
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("Changing cell separators") {
|
|
||||||
|
|
||||||
struct ft_border_style brdr_style;
|
|
||||||
brdr_style.border_chs.top_border_ch = '|';
|
|
||||||
brdr_style.border_chs.separator_ch = '|';
|
|
||||||
brdr_style.border_chs.bottom_border_ch = '|';
|
|
||||||
brdr_style.border_chs.side_border_ch = '=';
|
|
||||||
brdr_style.border_chs.out_intersect_ch = '+';
|
|
||||||
brdr_style.border_chs.in_intersect_ch = '#';
|
|
||||||
|
|
||||||
brdr_style.header_border_chs.top_border_ch = '*';
|
|
||||||
brdr_style.header_border_chs.separator_ch = '*';
|
|
||||||
brdr_style.header_border_chs.bottom_border_ch = '*';
|
|
||||||
brdr_style.header_border_chs.side_border_ch = 'v';
|
|
||||||
brdr_style.header_border_chs.out_intersect_ch = '+';
|
|
||||||
brdr_style.header_border_chs.in_intersect_ch = '#';
|
|
||||||
ft_set_default_border_style(&brdr_style);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
table = create_test_int_table(0);
|
|
||||||
const char *table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
const char *table_str_etalon =
|
|
||||||
"+***+***+****+****+\n"
|
|
||||||
"v v v v v\n"
|
|
||||||
"v 3 v 4 v 55 v 67 v\n"
|
|
||||||
"v v v v v\n"
|
|
||||||
"+***#***#****#****+\n"
|
|
||||||
"= = = = =\n"
|
|
||||||
"= 3 = 4 = 55 = 67 =\n"
|
|
||||||
"= = = = =\n"
|
|
||||||
"+|||#|||#||||#||||+\n"
|
|
||||||
"= = = = =\n"
|
|
||||||
"= 3 = 4 = 55 = 67 =\n"
|
|
||||||
"= = = = =\n"
|
|
||||||
"+|||+|||+||||+||||+\n";
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
brdr_style.border_chs.top_border_ch = '|';
|
|
||||||
brdr_style.border_chs.separator_ch = '\0';
|
|
||||||
brdr_style.border_chs.bottom_border_ch = '|';
|
|
||||||
brdr_style.border_chs.side_border_ch = '=';
|
|
||||||
brdr_style.border_chs.out_intersect_ch = '+';
|
|
||||||
brdr_style.border_chs.in_intersect_ch = '\0';
|
|
||||||
|
|
||||||
brdr_style.header_border_chs.top_border_ch = '*';
|
|
||||||
brdr_style.header_border_chs.separator_ch = '*';
|
|
||||||
brdr_style.header_border_chs.bottom_border_ch = '*';
|
|
||||||
brdr_style.header_border_chs.side_border_ch = 'v';
|
|
||||||
brdr_style.header_border_chs.out_intersect_ch = '+';
|
|
||||||
brdr_style.header_border_chs.in_intersect_ch = '#';
|
|
||||||
|
|
||||||
ft_set_default_border_style(&brdr_style);
|
|
||||||
|
|
||||||
ft_set_default_option(FT_OPT_BOTTOM_PADDING, 0);
|
|
||||||
ft_set_default_option(FT_OPT_TOP_PADDING, 0);
|
|
||||||
ft_set_default_option(FT_OPT_LEFT_PADDING, 1);
|
|
||||||
ft_set_default_option(FT_OPT_RIGHT_PADDING, 1);
|
|
||||||
ft_set_default_option(FT_OPT_EMPTY_STR_HEIGHT, 0);
|
|
||||||
|
|
||||||
|
|
||||||
table = create_test_int_table(0);
|
|
||||||
table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
table_str_etalon =
|
|
||||||
"+***+***+****+****+\n"
|
|
||||||
"v 3 v 4 v 55 v 67 v\n"
|
|
||||||
"+***#***#****#****+\n"
|
|
||||||
"= 3 = 4 = 55 = 67 =\n"
|
|
||||||
"= 3 = 4 = 55 = 67 =\n"
|
|
||||||
"+|||+|||+||||+||||+\n";
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("Setting options for a particular table") {
|
|
||||||
|
|
||||||
table = create_test_int_table(0);
|
|
||||||
set_test_options_for_table(table);
|
|
||||||
|
|
||||||
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_BOTTOM_PADDING, 0);
|
|
||||||
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_TOP_PADDING, 0);
|
|
||||||
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_LEFT_PADDING, 0);
|
|
||||||
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_RIGHT_PADDING, 0);
|
|
||||||
|
|
||||||
const char *table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
const char *table_str_etalon =
|
|
||||||
"+-+-+--+--+\n"
|
|
||||||
"|3|4|55|67|\n"
|
|
||||||
"+-+-+--+--+\n"
|
|
||||||
"|3|4|55|67|\n"
|
|
||||||
"+-+-+--+--+\n"
|
|
||||||
"|3|4|55|67|\n"
|
|
||||||
"+-+-+--+--+\n";
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
|
|
||||||
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_BOTTOM_PADDING, 1);
|
|
||||||
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_TOP_PADDING, 1);
|
|
||||||
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_LEFT_PADDING, 0);
|
|
||||||
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_RIGHT_PADDING, 0);
|
|
||||||
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_EMPTY_STR_HEIGHT, 0);
|
|
||||||
|
|
||||||
table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
table_str_etalon =
|
|
||||||
"+-+-+--+--+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"|3|4|55|67|\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+-+-+--+--+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"|3|4|55|67|\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+-+-+--+--+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"|3|4|55|67|\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+-+-+--+--+\n";
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
WHEN("Set table width and column alignment") {
|
|
||||||
|
|
||||||
set_test_options_as_default();
|
|
||||||
|
|
||||||
table = create_test_int_table(0);
|
|
||||||
int status = F_SUCCESS;
|
|
||||||
|
|
||||||
status |= ft_set_option(table, FT_ANY_ROW, 1, FT_OPT_MIN_WIDTH, 7);
|
|
||||||
status |= ft_set_option(table, FT_ANY_ROW, 1, FT_OPT_TEXT_ALIGN, LeftAligned);
|
|
||||||
status |= ft_set_option(table, FT_ANY_ROW, 2, FT_OPT_MIN_WIDTH, 8);
|
|
||||||
status |= ft_set_option(table, FT_ANY_ROW, 2, FT_OPT_TEXT_ALIGN, CenterAligned);
|
|
||||||
|
|
||||||
status |= ft_set_option(table, 2, 3, FT_OPT_MIN_WIDTH, 6);
|
|
||||||
status |= ft_set_option(table, 2, 3, FT_OPT_TEXT_ALIGN, LeftAligned);
|
|
||||||
assert_true( status == F_SUCCESS);
|
|
||||||
|
|
||||||
|
|
||||||
const char *table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
const char *table_str_etalon =
|
|
||||||
"+---+-------+--------+------+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+-------+--------+------+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+-------+--------+------+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+-------+--------+------+\n";
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("Set table width and column alignment as default") {
|
|
||||||
|
|
||||||
set_test_options_as_default();
|
|
||||||
|
|
||||||
int status = F_SUCCESS;
|
|
||||||
status |= ft_set_default_option(FT_OPT_MIN_WIDTH, 5);
|
|
||||||
status |= ft_set_default_option(FT_OPT_TEXT_ALIGN, CenterAligned);
|
|
||||||
assert_true( status == F_SUCCESS);
|
|
||||||
|
|
||||||
table = create_test_int_table(0);
|
|
||||||
|
|
||||||
const char *table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
const char *table_str_etalon =
|
|
||||||
"+-----+-----+-----+-----+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+-----+-----+-----+-----+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+-----+-----+-----+-----+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | 4 | 55 | 67 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+-----+-----+-----+-----+\n";
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
WHEN("All columns are equal and not empty") {
|
|
||||||
set_test_options_as_default();
|
|
||||||
|
|
||||||
table = ft_create_table();
|
|
||||||
|
|
||||||
ft_set_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
|
||||||
int n = ft_printf_ln(table, "%d|%c|%s|%f", 4, 'c', "234", 3.14);
|
|
||||||
|
|
||||||
assert_true( n == 4 );
|
|
||||||
n = FT_NWRITE_LN(table, "5", "c", "234\n12", "3.140000");
|
|
||||||
assert_true( n == F_SUCCESS );
|
|
||||||
n = ft_printf_ln(table, "%d|%c|%s|%f", 3, 'c', "234", 3.14);
|
|
||||||
assert_true( n == 4 );
|
|
||||||
|
|
||||||
const char *table_str = ft_to_string(table);
|
|
||||||
assert_true( table_str != NULL );
|
|
||||||
const char *table_str_etalon =
|
|
||||||
"+---+---+-----+----------+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 4 | c | 234 | 3.140000 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+-----+----------+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 5 | c | 234 | 3.140000 |\n"
|
|
||||||
"| | | 12 | |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+-----+----------+\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"| 3 | c | 234 | 3.140000 |\n"
|
|
||||||
"| | | | |\n"
|
|
||||||
"+---+---+-----+----------+\n";
|
|
||||||
// fprintf(stderr, "content:\n%s", table_str);
|
|
||||||
|
|
||||||
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
|
||||||
|
|
||||||
ft_destroy_table(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
158
tests/test_table_basic.c
Normal file
158
tests/test_table_basic.c
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
#include "tests.h"
|
||||||
|
|
||||||
|
void test_table_basic(void)
|
||||||
|
{
|
||||||
|
FTABLE *table = NULL;
|
||||||
|
|
||||||
|
WHEN("All columns are equal and not empty") {
|
||||||
|
table = ft_create_table();
|
||||||
|
assert_true( table != NULL );
|
||||||
|
assert_true( set_test_options_for_table(table) == FT_SUCCESS);
|
||||||
|
|
||||||
|
ft_set_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
||||||
|
int n = ft_printf_ln(table, "%d|%c|%s|%f", 3, 'c', "234", 3.14);
|
||||||
|
|
||||||
|
assert_true( n == 4 );
|
||||||
|
n = ft_printf_ln(table, "%d|%c|%s|%f", 3, 'c', "234", 3.14);
|
||||||
|
assert_true( n == 4 );
|
||||||
|
n = ft_printf_ln(table, "%d|%c|%s|%f", 3, 'c', "234", 3.14);
|
||||||
|
assert_true( n == 4 );
|
||||||
|
|
||||||
|
const char *table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"+---+---+-----+----------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | c | 234 | 3.140000 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+-----+----------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | c | 234 | 3.140000 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+-----+----------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | c | 234 | 3.140000 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+-----+----------+\n";
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
WHEN("All columns are not equal and not empty") {
|
||||||
|
table = ft_create_table();
|
||||||
|
assert_true( table != NULL );
|
||||||
|
assert_true( set_test_options_for_table(table) == FT_SUCCESS);
|
||||||
|
|
||||||
|
ft_set_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
||||||
|
int n = ft_printf_ln(table, "%d|%c|%s|%f", 3, 'c', "234", 3.14);
|
||||||
|
|
||||||
|
assert_true( n == 4 );
|
||||||
|
n = ft_printf_ln(table, "%c|%s|%f|%d", 'c', "234", 3.14, 3);
|
||||||
|
assert_true( n == 4 );
|
||||||
|
n = ft_printf_ln(table, "%s|%f|%d|%c", "234", 3.14, 3, 'c');
|
||||||
|
assert_true( n == 4 );
|
||||||
|
|
||||||
|
const char *table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"+-----+----------+----------+----------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | c | 234 | 3.140000 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-----+----------+----------+----------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| c | 234 | 3.140000 | 3 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-----+----------+----------+----------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 234 | 3.140000 | 3 | c |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-----+----------+----------+----------+\n";
|
||||||
|
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
WHEN("All columns are not equal and some cells are empty") {
|
||||||
|
table = ft_create_table();
|
||||||
|
assert_true( table != NULL );
|
||||||
|
// ft_set_table_options(table, &test_table_opts);
|
||||||
|
assert_true( set_test_options_for_table(table) == FT_SUCCESS);
|
||||||
|
|
||||||
|
ft_set_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
||||||
|
int n = ft_printf_ln(table, "||%s|%f", "234", 3.14);
|
||||||
|
|
||||||
|
assert_true( n == 4 );
|
||||||
|
n = ft_printf_ln(table, "%c|%s|%f", 'c', "234", 3.14);
|
||||||
|
assert_true( n == 3 );
|
||||||
|
n = ft_printf_ln(table, "%s|%f||", "234", 3.14);
|
||||||
|
assert_true( n == 4 );
|
||||||
|
|
||||||
|
const char *table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"+-----+----------+----------+----------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| | | 234 | 3.140000 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-----+----------+----------+----------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| c | 234 | 3.140000 | |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-----+----------+----------+----------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 234 | 3.140000 | | |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-----+----------+----------+----------+\n";
|
||||||
|
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
WHEN("All cells are empty") {
|
||||||
|
table = ft_create_table();
|
||||||
|
assert_true( table != NULL );
|
||||||
|
assert_true( set_test_options_for_table(table) == FT_SUCCESS);
|
||||||
|
|
||||||
|
ft_set_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
||||||
|
int n = ft_printf_ln(table, "|||");
|
||||||
|
|
||||||
|
assert_true( n == 4 );
|
||||||
|
n = ft_printf_ln(table, "|||");
|
||||||
|
assert_true( n == 4 );
|
||||||
|
n = ft_printf_ln(table, "|||");
|
||||||
|
assert_true( n == 4 );
|
||||||
|
|
||||||
|
const 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);
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
}
|
144
tests/test_table_border_style.c
Normal file
144
tests/test_table_border_style.c
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
#include "tests.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_table_border_style(void)
|
||||||
|
{
|
||||||
|
FTABLE *table = NULL;
|
||||||
|
|
||||||
|
set_test_options_as_default();
|
||||||
|
|
||||||
|
|
||||||
|
WHEN("Changing cell separators") {
|
||||||
|
|
||||||
|
struct ft_border_style brdr_style;
|
||||||
|
brdr_style.border_chs.top_border_ch = '|';
|
||||||
|
brdr_style.border_chs.separator_ch = '|';
|
||||||
|
brdr_style.border_chs.bottom_border_ch = '|';
|
||||||
|
brdr_style.border_chs.side_border_ch = '=';
|
||||||
|
brdr_style.border_chs.out_intersect_ch = '+';
|
||||||
|
brdr_style.border_chs.in_intersect_ch = '#';
|
||||||
|
|
||||||
|
brdr_style.header_border_chs.top_border_ch = '*';
|
||||||
|
brdr_style.header_border_chs.separator_ch = '*';
|
||||||
|
brdr_style.header_border_chs.bottom_border_ch = '*';
|
||||||
|
brdr_style.header_border_chs.side_border_ch = 'v';
|
||||||
|
brdr_style.header_border_chs.out_intersect_ch = '+';
|
||||||
|
brdr_style.header_border_chs.in_intersect_ch = '#';
|
||||||
|
ft_set_default_border_style(&brdr_style);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
table = create_test_int_table(0);
|
||||||
|
const char *table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"+***+***+****+****+\n"
|
||||||
|
"v v v v v\n"
|
||||||
|
"v 3 v 4 v 55 v 67 v\n"
|
||||||
|
"v v v v v\n"
|
||||||
|
"+***#***#****#****+\n"
|
||||||
|
"= = = = =\n"
|
||||||
|
"= 3 = 4 = 55 = 67 =\n"
|
||||||
|
"= = = = =\n"
|
||||||
|
"+|||#|||#||||#||||+\n"
|
||||||
|
"= = = = =\n"
|
||||||
|
"= 3 = 4 = 55 = 67 =\n"
|
||||||
|
"= = = = =\n"
|
||||||
|
"+|||+|||+||||+||||+\n";
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
brdr_style.border_chs.top_border_ch = '|';
|
||||||
|
brdr_style.border_chs.separator_ch = '\0';
|
||||||
|
brdr_style.border_chs.bottom_border_ch = '|';
|
||||||
|
brdr_style.border_chs.side_border_ch = '=';
|
||||||
|
brdr_style.border_chs.out_intersect_ch = '+';
|
||||||
|
brdr_style.border_chs.in_intersect_ch = '\0';
|
||||||
|
|
||||||
|
brdr_style.header_border_chs.top_border_ch = '*';
|
||||||
|
brdr_style.header_border_chs.separator_ch = '*';
|
||||||
|
brdr_style.header_border_chs.bottom_border_ch = '*';
|
||||||
|
brdr_style.header_border_chs.side_border_ch = 'v';
|
||||||
|
brdr_style.header_border_chs.out_intersect_ch = '+';
|
||||||
|
brdr_style.header_border_chs.in_intersect_ch = '#';
|
||||||
|
|
||||||
|
ft_set_default_border_style(&brdr_style);
|
||||||
|
|
||||||
|
ft_set_default_option(FT_OPT_BOTTOM_PADDING, 0);
|
||||||
|
ft_set_default_option(FT_OPT_TOP_PADDING, 0);
|
||||||
|
ft_set_default_option(FT_OPT_LEFT_PADDING, 1);
|
||||||
|
ft_set_default_option(FT_OPT_RIGHT_PADDING, 1);
|
||||||
|
ft_set_default_option(FT_OPT_EMPTY_STR_HEIGHT, 0);
|
||||||
|
|
||||||
|
|
||||||
|
table = create_test_int_table(0);
|
||||||
|
table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
table_str_etalon =
|
||||||
|
"+***+***+****+****+\n"
|
||||||
|
"v 3 v 4 v 55 v 67 v\n"
|
||||||
|
"+***#***#****#****+\n"
|
||||||
|
"= 3 = 4 = 55 = 67 =\n"
|
||||||
|
"= 3 = 4 = 55 = 67 =\n"
|
||||||
|
"+|||+|||+||||+||||+\n";
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WHEN("Separator testing") {
|
||||||
|
table = create_test_int_table(1);
|
||||||
|
ft_add_separator(table);
|
||||||
|
|
||||||
|
ft_set_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
||||||
|
int n = ft_printf_ln(table, "%d|%d|%d|%d", 3, 4, 55, 67);
|
||||||
|
|
||||||
|
assert_true( n == 4 );
|
||||||
|
|
||||||
|
const char *table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"+---+---+----+----+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+----+----+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+----+----+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+===+===+====+====+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+----+----+\n";
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
90
tests/test_table_geometry.c
Normal file
90
tests/test_table_geometry.c
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
#include "tests.h"
|
||||||
|
#include "table.h"
|
||||||
|
|
||||||
|
|
||||||
|
void test_table_sizes(void)
|
||||||
|
{
|
||||||
|
FTABLE *table = ft_create_table();
|
||||||
|
assert_true( table != NULL );
|
||||||
|
assert_true( set_test_options_for_table(table) == FT_SUCCESS);
|
||||||
|
|
||||||
|
|
||||||
|
size_t rows = 0;
|
||||||
|
size_t cols = 0;
|
||||||
|
int status = FT_SUCCESS;
|
||||||
|
|
||||||
|
WHEN("Table is empty") {
|
||||||
|
status = get_table_sizes(table, &rows, &cols);
|
||||||
|
assert_true( IS_SUCCESS(status) );
|
||||||
|
assert_true( rows == 0 );
|
||||||
|
assert_true( cols == 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
WHEN("Insert one cell") {
|
||||||
|
int n = ft_printf_ln(table, "%c", 'c');
|
||||||
|
assert_true( n == 1 );
|
||||||
|
status = get_table_sizes(table, &rows, &cols);
|
||||||
|
assert_true( IS_SUCCESS(status) );
|
||||||
|
assert_true( rows == 1 );
|
||||||
|
assert_true( cols == 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
WHEN("Insert two cells in the next row") {
|
||||||
|
int n = ft_printf_ln(table, "%c|%c", 'c', 'd');
|
||||||
|
assert_true( n == 2 );
|
||||||
|
status = get_table_sizes(table, &rows, &cols);
|
||||||
|
assert_true( IS_SUCCESS(status) );
|
||||||
|
assert_true( rows == 2 );
|
||||||
|
assert_true( cols == 2 );
|
||||||
|
}
|
||||||
|
|
||||||
|
WHEN("Insert five cells in the next row") {
|
||||||
|
int n = ft_printf_ln(table, "%d|%d|%d|%d|%d", 1, 2, 3, 4, 5);
|
||||||
|
assert_true( n == 5 );
|
||||||
|
status = get_table_sizes(table, &rows, &cols);
|
||||||
|
assert_true( IS_SUCCESS(status) );
|
||||||
|
assert_true( rows == 3 );
|
||||||
|
assert_true( cols == 5 );
|
||||||
|
}
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void test_table_geometry(void)
|
||||||
|
{
|
||||||
|
FTABLE *table = ft_create_table();
|
||||||
|
assert_true( table != NULL );
|
||||||
|
assert_true( set_test_options_for_table(table) == FT_SUCCESS);
|
||||||
|
|
||||||
|
size_t height = 0;
|
||||||
|
size_t width = 0;
|
||||||
|
int status = FT_SUCCESS;
|
||||||
|
|
||||||
|
WHEN("Table is empty") {
|
||||||
|
status = table_geometry(table, &height, &width);
|
||||||
|
assert_true( IS_SUCCESS(status) );
|
||||||
|
assert_true( height == 2 );
|
||||||
|
assert_true( width == 3 );
|
||||||
|
}
|
||||||
|
|
||||||
|
WHEN("Table has one cell") {
|
||||||
|
int n = ft_printf_ln(table, "%c", 'c');
|
||||||
|
assert_true( n == 1 );
|
||||||
|
status = table_geometry(table, &height, &width);
|
||||||
|
assert_true( IS_SUCCESS(status) );
|
||||||
|
assert_true( height == 5 );
|
||||||
|
assert_true( width == 6 );
|
||||||
|
}
|
||||||
|
|
||||||
|
WHEN("Inserting 3 cells in the next row") {
|
||||||
|
int n = ft_printf_ln(table, "%c|%s|%c", 'c', "as", 'e');
|
||||||
|
assert_true( n == 3 );
|
||||||
|
status = table_geometry(table, &height, &width);
|
||||||
|
assert_true( IS_SUCCESS(status) );
|
||||||
|
assert_true( height == 9 );
|
||||||
|
assert_true( width == 15 );
|
||||||
|
}
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
344
tests/test_table_options.c
Normal file
344
tests/test_table_options.c
Normal file
@ -0,0 +1,344 @@
|
|||||||
|
//#define FT_EXTERN static
|
||||||
|
#include "tests.h"
|
||||||
|
#include "fort.h"
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "options.h"
|
||||||
|
#include "vector.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_table_options(void)
|
||||||
|
{
|
||||||
|
FTABLE *table = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
WHEN("All paddings = 1") {
|
||||||
|
set_test_options_as_default();
|
||||||
|
|
||||||
|
ft_set_default_option(FT_OPT_BOTTOM_PADDING, 1);
|
||||||
|
ft_set_default_option(FT_OPT_TOP_PADDING, 1);
|
||||||
|
ft_set_default_option(FT_OPT_LEFT_PADDING, 1);
|
||||||
|
ft_set_default_option(FT_OPT_RIGHT_PADDING, 1);
|
||||||
|
|
||||||
|
table = create_test_int_table(0);
|
||||||
|
|
||||||
|
const char *table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"+---+---+----+----+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+----+----+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+----+----+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+----+----+\n";
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
WHEN("Top and bottom padding = 0") {
|
||||||
|
|
||||||
|
ft_set_default_option(FT_OPT_BOTTOM_PADDING, 0);
|
||||||
|
ft_set_default_option(FT_OPT_TOP_PADDING, 0);
|
||||||
|
ft_set_default_option(FT_OPT_LEFT_PADDING, 1);
|
||||||
|
ft_set_default_option(FT_OPT_RIGHT_PADDING, 1);
|
||||||
|
|
||||||
|
table = create_test_int_table(0);
|
||||||
|
|
||||||
|
const char *table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"+---+---+----+----+\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"+---+---+----+----+\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"+---+---+----+----+\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"+---+---+----+----+\n";
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
WHEN("Left and right padding = 0") {
|
||||||
|
|
||||||
|
ft_set_default_option(FT_OPT_BOTTOM_PADDING, 1);
|
||||||
|
ft_set_default_option(FT_OPT_TOP_PADDING, 1);
|
||||||
|
ft_set_default_option(FT_OPT_LEFT_PADDING, 0);
|
||||||
|
ft_set_default_option(FT_OPT_RIGHT_PADDING, 0);
|
||||||
|
|
||||||
|
table = create_test_int_table(0);
|
||||||
|
|
||||||
|
const char *table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"+-+-+--+--+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"|3|4|55|67|\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-+-+--+--+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"|3|4|55|67|\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-+-+--+--+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"|3|4|55|67|\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-+-+--+--+\n";
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
WHEN("All paddings = 0") {
|
||||||
|
|
||||||
|
ft_set_default_option(FT_OPT_BOTTOM_PADDING, 0);
|
||||||
|
ft_set_default_option(FT_OPT_TOP_PADDING, 0);
|
||||||
|
ft_set_default_option(FT_OPT_LEFT_PADDING, 0);
|
||||||
|
ft_set_default_option(FT_OPT_RIGHT_PADDING, 0);
|
||||||
|
|
||||||
|
table = create_test_int_table(0);
|
||||||
|
|
||||||
|
const char *table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"+-+-+--+--+\n"
|
||||||
|
"|3|4|55|67|\n"
|
||||||
|
"+-+-+--+--+\n"
|
||||||
|
"|3|4|55|67|\n"
|
||||||
|
"+-+-+--+--+\n"
|
||||||
|
"|3|4|55|67|\n"
|
||||||
|
"+-+-+--+--+\n";
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
WHEN("Empty string has 0 heigt") {
|
||||||
|
|
||||||
|
ft_set_default_option(FT_OPT_BOTTOM_PADDING, 1);
|
||||||
|
ft_set_default_option(FT_OPT_TOP_PADDING, 1);
|
||||||
|
ft_set_default_option(FT_OPT_LEFT_PADDING, 1);
|
||||||
|
ft_set_default_option(FT_OPT_RIGHT_PADDING, 1);
|
||||||
|
ft_set_default_option(FT_OPT_EMPTY_STR_HEIGHT, 0);
|
||||||
|
|
||||||
|
table = create_test_int_table(0);
|
||||||
|
int n = ft_printf_ln(table, "|||");
|
||||||
|
assert_true( n == 4 );
|
||||||
|
|
||||||
|
const char *table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"+---+---+----+----+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+----+----+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+----+----+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+----+----+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+----+----+\n";
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WHEN("Setting options for a particular table") {
|
||||||
|
|
||||||
|
table = create_test_int_table(0);
|
||||||
|
set_test_options_for_table(table);
|
||||||
|
|
||||||
|
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_BOTTOM_PADDING, 0);
|
||||||
|
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_TOP_PADDING, 0);
|
||||||
|
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_LEFT_PADDING, 0);
|
||||||
|
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_RIGHT_PADDING, 0);
|
||||||
|
|
||||||
|
const char *table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"+-+-+--+--+\n"
|
||||||
|
"|3|4|55|67|\n"
|
||||||
|
"+-+-+--+--+\n"
|
||||||
|
"|3|4|55|67|\n"
|
||||||
|
"+-+-+--+--+\n"
|
||||||
|
"|3|4|55|67|\n"
|
||||||
|
"+-+-+--+--+\n";
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
|
||||||
|
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_BOTTOM_PADDING, 1);
|
||||||
|
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_TOP_PADDING, 1);
|
||||||
|
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_LEFT_PADDING, 0);
|
||||||
|
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_RIGHT_PADDING, 0);
|
||||||
|
ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_EMPTY_STR_HEIGHT, 0);
|
||||||
|
|
||||||
|
table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
table_str_etalon =
|
||||||
|
"+-+-+--+--+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"|3|4|55|67|\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-+-+--+--+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"|3|4|55|67|\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-+-+--+--+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"|3|4|55|67|\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-+-+--+--+\n";
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
WHEN("Set table width and column alignment") {
|
||||||
|
|
||||||
|
set_test_options_as_default();
|
||||||
|
|
||||||
|
table = create_test_int_table(0);
|
||||||
|
int status = FT_SUCCESS;
|
||||||
|
|
||||||
|
status |= ft_set_option(table, FT_ANY_ROW, 1, FT_OPT_MIN_WIDTH, 7);
|
||||||
|
status |= ft_set_option(table, FT_ANY_ROW, 1, FT_OPT_TEXT_ALIGN, LeftAligned);
|
||||||
|
status |= ft_set_option(table, FT_ANY_ROW, 2, FT_OPT_MIN_WIDTH, 8);
|
||||||
|
status |= ft_set_option(table, FT_ANY_ROW, 2, FT_OPT_TEXT_ALIGN, CenterAligned);
|
||||||
|
|
||||||
|
status |= ft_set_option(table, 2, 3, FT_OPT_MIN_WIDTH, 6);
|
||||||
|
status |= ft_set_option(table, 2, 3, FT_OPT_TEXT_ALIGN, LeftAligned);
|
||||||
|
assert_true( status == FT_SUCCESS);
|
||||||
|
|
||||||
|
|
||||||
|
const char *table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"+---+-------+--------+------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+-------+--------+------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+-------+--------+------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+-------+--------+------+\n";
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
WHEN("Set table width and column alignment as default") {
|
||||||
|
|
||||||
|
set_test_options_as_default();
|
||||||
|
|
||||||
|
int status = FT_SUCCESS;
|
||||||
|
status |= ft_set_default_option(FT_OPT_MIN_WIDTH, 5);
|
||||||
|
status |= ft_set_default_option(FT_OPT_TEXT_ALIGN, CenterAligned);
|
||||||
|
assert_true( status == FT_SUCCESS);
|
||||||
|
|
||||||
|
table = create_test_int_table(0);
|
||||||
|
|
||||||
|
const char *table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"+-----+-----+-----+-----+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-----+-----+-----+-----+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-----+-----+-----+-----+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | 4 | 55 | 67 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+-----+-----+-----+-----+\n";
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
WHEN("All columns are equal and not empty") {
|
||||||
|
set_test_options_as_default();
|
||||||
|
|
||||||
|
table = ft_create_table();
|
||||||
|
|
||||||
|
ft_set_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
||||||
|
int n = ft_printf_ln(table, "%d|%c|%s|%f", 4, 'c', "234", 3.14);
|
||||||
|
|
||||||
|
assert_true( n == 4 );
|
||||||
|
n = FT_NWRITE_LN(table, "5", "c", "234\n12", "3.140000");
|
||||||
|
assert_true( n == FT_SUCCESS );
|
||||||
|
n = ft_printf_ln(table, "%d|%c|%s|%f", 3, 'c', "234", 3.14);
|
||||||
|
assert_true( n == 4 );
|
||||||
|
|
||||||
|
const char *table_str = ft_to_string(table);
|
||||||
|
assert_true( table_str != NULL );
|
||||||
|
const char *table_str_etalon =
|
||||||
|
"+---+---+-----+----------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 4 | c | 234 | 3.140000 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+-----+----------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 5 | c | 234 | 3.140000 |\n"
|
||||||
|
"| | | 12 | |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+-----+----------+\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"| 3 | c | 234 | 3.140000 |\n"
|
||||||
|
"| | | | |\n"
|
||||||
|
"+---+---+-----+----------+\n";
|
||||||
|
// fprintf(stderr, "content:\n%s", table_str);
|
||||||
|
|
||||||
|
assert_true( strcmp(table_str, table_str_etalon) == 0);
|
||||||
|
|
||||||
|
ft_destroy_table(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
103
tests/test_utility.c
Normal file
103
tests/test_utility.c
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
#include "tests.h"
|
||||||
|
#include "fort.h"
|
||||||
|
|
||||||
|
int set_test_options_for_table(FTABLE *table)
|
||||||
|
{
|
||||||
|
assert(table);
|
||||||
|
int status = FT_SUCCESS;
|
||||||
|
status |= ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_BOTTOM_PADDING, 1);
|
||||||
|
status |= ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_TOP_PADDING, 1);
|
||||||
|
status |= ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_LEFT_PADDING, 1);
|
||||||
|
status |= ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_RIGHT_PADDING, 1);
|
||||||
|
status |= ft_set_option(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_OPT_EMPTY_STR_HEIGHT, 1);
|
||||||
|
|
||||||
|
assert_true( status == FT_SUCCESS );
|
||||||
|
|
||||||
|
|
||||||
|
struct ft_border_style brdr_style;
|
||||||
|
brdr_style.border_chs.top_border_ch = '-';
|
||||||
|
brdr_style.border_chs.separator_ch = '-';
|
||||||
|
brdr_style.border_chs.bottom_border_ch = '-';
|
||||||
|
brdr_style.border_chs.side_border_ch = '|';
|
||||||
|
brdr_style.border_chs.out_intersect_ch = '+';
|
||||||
|
brdr_style.border_chs.in_intersect_ch = '+';
|
||||||
|
|
||||||
|
brdr_style.header_border_chs.top_border_ch = '-';
|
||||||
|
brdr_style.header_border_chs.separator_ch = '-';
|
||||||
|
brdr_style.header_border_chs.bottom_border_ch = '-';
|
||||||
|
brdr_style.header_border_chs.side_border_ch = '|';
|
||||||
|
brdr_style.header_border_chs.out_intersect_ch = '+';
|
||||||
|
brdr_style.header_border_chs.in_intersect_ch = '+';
|
||||||
|
|
||||||
|
brdr_style.hor_separator_char = '=';
|
||||||
|
return ft_set_border_style(table, &brdr_style);
|
||||||
|
}
|
||||||
|
|
||||||
|
int set_test_options_as_default()
|
||||||
|
{
|
||||||
|
int status = FT_SUCCESS;
|
||||||
|
|
||||||
|
status |= ft_set_default_option(FT_OPT_MIN_WIDTH, 0);
|
||||||
|
status |= ft_set_default_option(FT_OPT_TEXT_ALIGN, RightAligned);
|
||||||
|
|
||||||
|
status |= ft_set_default_option(FT_OPT_BOTTOM_PADDING, 1);
|
||||||
|
status |= ft_set_default_option(FT_OPT_TOP_PADDING, 1);
|
||||||
|
status |= ft_set_default_option(FT_OPT_LEFT_PADDING, 1);
|
||||||
|
status |= ft_set_default_option(FT_OPT_RIGHT_PADDING, 1);
|
||||||
|
status |= ft_set_default_option(FT_OPT_EMPTY_STR_HEIGHT, 1);
|
||||||
|
|
||||||
|
assert_true( status == FT_SUCCESS );
|
||||||
|
|
||||||
|
|
||||||
|
struct ft_border_style brdr_style;
|
||||||
|
brdr_style.border_chs.top_border_ch = '-';
|
||||||
|
brdr_style.border_chs.separator_ch = '-';
|
||||||
|
brdr_style.border_chs.bottom_border_ch = '-';
|
||||||
|
brdr_style.border_chs.side_border_ch = '|';
|
||||||
|
brdr_style.border_chs.out_intersect_ch = '+';
|
||||||
|
brdr_style.border_chs.in_intersect_ch = '+';
|
||||||
|
|
||||||
|
brdr_style.header_border_chs.top_border_ch = '-';
|
||||||
|
brdr_style.header_border_chs.separator_ch = '-';
|
||||||
|
brdr_style.header_border_chs.bottom_border_ch = '-';
|
||||||
|
brdr_style.header_border_chs.side_border_ch = '|';
|
||||||
|
brdr_style.header_border_chs.out_intersect_ch = '+';
|
||||||
|
brdr_style.header_border_chs.in_intersect_ch = '+';
|
||||||
|
|
||||||
|
brdr_style.hor_separator_char = '=';
|
||||||
|
|
||||||
|
return ft_set_default_border_style(&brdr_style);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FTABLE *create_test_int_table(int set_test_opts)
|
||||||
|
{
|
||||||
|
FTABLE *table = NULL;
|
||||||
|
|
||||||
|
table = ft_create_table();
|
||||||
|
assert_true( table != NULL );
|
||||||
|
if (set_test_opts) {
|
||||||
|
assert_true( set_test_options_for_table(table) == FT_SUCCESS);
|
||||||
|
}
|
||||||
|
// ft_set_table_options(table, &test_table_opts);
|
||||||
|
|
||||||
|
assert_true (table != NULL);
|
||||||
|
|
||||||
|
ft_set_option(table, 0, FT_ANY_COLUMN, FT_OPT_ROW_TYPE, Header);
|
||||||
|
int n = ft_printf_ln(table, "%d|%d|%d|%d", 3, 4, 55, 67);
|
||||||
|
|
||||||
|
assert_true( n == 4 );
|
||||||
|
|
||||||
|
assert(ft_write(table, "3") == FT_SUCCESS);
|
||||||
|
assert(ft_write(table, "4") == FT_SUCCESS);
|
||||||
|
assert(ft_write(table, "55") == FT_SUCCESS);
|
||||||
|
assert(ft_write_ln(table, "67") == FT_SUCCESS);
|
||||||
|
|
||||||
|
assert(ft_write(table, "3") == FT_SUCCESS);
|
||||||
|
assert(ft_write(table, "4") == FT_SUCCESS);
|
||||||
|
assert(ft_write(table, "55") == FT_SUCCESS);
|
||||||
|
assert(ft_write_ln(table, "67") == FT_SUCCESS);
|
||||||
|
|
||||||
|
return table;
|
||||||
|
}
|
@ -4,9 +4,8 @@
|
|||||||
//#include "../src/fort.c"
|
//#include "../src/fort.c"
|
||||||
|
|
||||||
|
|
||||||
void test_vector_basic(void **state)
|
void test_vector_basic(void)
|
||||||
{
|
{
|
||||||
(void)state;
|
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
|
|
||||||
typedef short item_t;
|
typedef short item_t;
|
||||||
@ -64,10 +63,10 @@ void test_vector_basic(void **state)
|
|||||||
}
|
}
|
||||||
|
|
||||||
WHEN("Erasing items") {
|
WHEN("Erasing items") {
|
||||||
assert_true( vector_erase(vector, 20) != F_SUCCESS );
|
assert_true( vector_erase(vector, 20) != FT_SUCCESS );
|
||||||
|
|
||||||
assert_true( vector_erase(vector, 0) == F_SUCCESS );
|
assert_true( vector_erase(vector, 0) == FT_SUCCESS );
|
||||||
assert_true( vector_erase(vector, 10) == F_SUCCESS );
|
assert_true( vector_erase(vector, 10) == FT_SUCCESS );
|
||||||
|
|
||||||
item_t first_item = *(item_t*)vector_at(vector, 0);
|
item_t first_item = *(item_t*)vector_at(vector, 0);
|
||||||
assert_true( first_item == 2 );
|
assert_true( first_item == 2 );
|
||||||
|
@ -4,25 +4,37 @@
|
|||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
|
#include "fort_impl.h"
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
#define WHEN(...)
|
#define WHEN(...)
|
||||||
#define THEN(...)
|
#define THEN(...)
|
||||||
|
|
||||||
|
/* Test cases */
|
||||||
void test_vector_basic(void **state);
|
void test_vector_basic(void);
|
||||||
|
void test_string_buffer(void);
|
||||||
void test_table_sizes(void **state);
|
void test_table_sizes(void);
|
||||||
void test_table_geometry(void **state);
|
void test_table_geometry(void);
|
||||||
void test_table_basic(void **state);
|
void test_table_basic(void);
|
||||||
void test_table_options(void **state);
|
void test_table_border_style(void);
|
||||||
void test_string_buffer(void **state);
|
void test_table_options(void);
|
||||||
|
|
||||||
struct test_case
|
struct test_case
|
||||||
{
|
{
|
||||||
char name [128];
|
char name [128];
|
||||||
void (*test)(void **);
|
void (*test)(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Test utility funcitons
|
||||||
|
*/
|
||||||
|
|
||||||
#define assert_true(args) assert(args)
|
#define assert_true(args) assert(args)
|
||||||
|
|
||||||
|
int set_test_options_for_table(FTABLE *table);
|
||||||
|
int set_test_options_as_default();
|
||||||
|
FTABLE *create_test_int_table(int set_test_opts);
|
||||||
|
|
||||||
|
|
||||||
#endif // TESTS_H
|
#endif // TESTS_H
|
||||||
|
Loading…
Reference in New Issue
Block a user