[A] add function ft_delete_range
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user