[A] add function ft_delete_range

This commit is contained in:
seleznevae
2020-01-19 13:37:31 +03:00
parent bd1c28a2cd
commit e644f0a504
10 changed files with 336 additions and 0 deletions

View File

@@ -1808,3 +1808,128 @@ void test_table_changing_cell(void)
ft_destroy_table(table);
}
}
static struct ft_table *create_test_table()
{
ft_table_t *table = ft_create_table();
assert_true(table != NULL);
ft_set_cell_prop(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_CPROP_BOTTOM_PADDING, 0);
ft_set_cell_prop(table, FT_ANY_ROW, FT_ANY_COLUMN, FT_CPROP_TOP_PADDING, 0);
ft_write_ln(table, "00", "01", "02");
ft_write_ln(table, "10", "11", "12");
ft_write_ln(table, "20", "21", "22");
return table;
}
void test_table_cell_deletion(void)
{
WHEN("Test invalid arguments") {
ft_table_t *table = create_test_table();
// invalid rows
assert_true(ft_delete_range(table, 1, 1, 0, 2) == FT_EINVAL);
// invalid colums
assert_true(ft_delete_range(table, 1, 1, 2, 0) == FT_EINVAL);
ft_destroy_table(table);
}
WHEN("Delete one cell") {
ft_table_t *table = create_test_table();
assert_true(FT_IS_SUCCESS(ft_delete_range(table, 1, 1, 1, 1)));
const char *table_str = ft_to_string(table);
assert_true(table_str != NULL);
const char *table_str_etalon =
"+----+----+----+\n"
"| 00 | 01 | 02 |\n"
"| 10 | 12 | |\n"
"| 20 | 21 | 22 |\n"
"+----+----+----+\n";
assert_str_equal(table_str, table_str_etalon);
ft_destroy_table(table);
}
WHEN("Delete one last cell") {
ft_table_t *table = create_test_table();
ft_write_ln(table, "30");
assert_true(FT_IS_SUCCESS(ft_delete_range(table, 3, 0, 3, 0)));
const char *table_str = ft_to_string(table);
assert_true(table_str != NULL);
const char *table_str_etalon =
"+----+----+----+\n"
"| 00 | 01 | 02 |\n"
"| 10 | 11 | 12 |\n"
"| 20 | 21 | 22 |\n"
"+----+----+----+\n";
assert_str_equal(table_str, table_str_etalon);
ft_destroy_table(table);
}
WHEN("Delete row") {
ft_table_t *table = create_test_table();
assert_true(FT_IS_SUCCESS(ft_delete_range(table, 1, 0, 1, 999)));
const char *table_str = ft_to_string(table);
assert_true(table_str != NULL);
const char *table_str_etalon =
"+----+----+----+\n"
"| 00 | 01 | 02 |\n"
"| 20 | 21 | 22 |\n"
"+----+----+----+\n";
assert_str_equal(table_str, table_str_etalon);
ft_destroy_table(table);
}
WHEN("Delete last row") {
ft_table_t *table = create_test_table();
assert_true(FT_IS_SUCCESS(ft_delete_range(table, 2, 0, 2, 999)));
const char *table_str = ft_to_string(table);
assert_true(table_str != NULL);
const char *table_str_etalon =
"+----+----+----+\n"
"| 00 | 01 | 02 |\n"
"| 10 | 11 | 12 |\n"
"+----+----+----+\n";
assert_str_equal(table_str, table_str_etalon);
ft_destroy_table(table);
}
WHEN("Delete column") {
ft_table_t *table = create_test_table();
assert_true(FT_IS_SUCCESS(ft_delete_range(table, 0, 1, 999, 1)));
const char *table_str = ft_to_string(table);
assert_true(table_str != NULL);
const char *table_str_etalon =
"+----+----+\n"
"| 00 | 02 |\n"
"| 10 | 12 |\n"
"| 20 | 22 |\n"
"+----+----+\n";
assert_str_equal(table_str, table_str_etalon);
ft_destroy_table(table);
}
WHEN("Delete last column") {
ft_table_t *table = create_test_table();
assert_true(FT_IS_SUCCESS(ft_delete_range(table, 0, 2, 999, 2)));
const char *table_str = ft_to_string(table);
assert_true(table_str != NULL);
const char *table_str_etalon =
"+----+----+\n"
"| 00 | 01 |\n"
"| 10 | 11 |\n"
"| 20 | 21 |\n"
"+----+----+\n";
assert_str_equal(table_str, table_str_etalon);
ft_destroy_table(table);
}
}

View File

@@ -12,6 +12,7 @@ void test_table_geometry(void);
void test_table_basic(void);
void test_table_copy(void);
void test_table_changing_cell(void);
void test_table_cell_deletion(void);
#ifdef FT_HAVE_WCHAR
void test_wcs_table_boundaries(void);
#endif
@@ -52,6 +53,7 @@ struct test_case bb_test_suite [] = {
{"test_table_write", test_table_write},
{"test_table_insert_strategy", test_table_insert_strategy},
{"test_table_changing_cell", test_table_changing_cell},
{"test_table_cell_deletion", test_table_cell_deletion},
{"test_table_border_style", test_table_border_style},
{"test_table_builtin_border_styles", test_table_builtin_border_styles},
{"test_table_cell_properties", test_table_cell_properties},