[F] Fix compilation error
This commit is contained in:
parent
1ed13718d5
commit
4871105b0f
40
lib/fort.hpp
40
lib/fort.hpp
@ -1023,7 +1023,11 @@ public:
|
||||
};
|
||||
|
||||
/**
|
||||
* Table column.
|
||||
* Range of cells.
|
||||
*
|
||||
* @note: at the moment function of propery owener will work only on the
|
||||
* top left cell.
|
||||
* @todo: Implement their work on the whole range.
|
||||
*/
|
||||
class cell_range: public property_owner_t
|
||||
{
|
||||
@ -1031,17 +1035,26 @@ public:
|
||||
using property_owner_t::ps_row_idx_;
|
||||
using property_owner_t::ps_table_;
|
||||
public:
|
||||
table_column(std::size_t col_idx, table &tbl)
|
||||
: property_owner_t(FT_ANY_ROW, col_idx, &tbl) {}
|
||||
cell_range(size_t top_left_row, size_t top_left_col,
|
||||
size_t bottom_right_row, size_t bottom_right_col,
|
||||
table &tbl)
|
||||
: property_owner_t(top_left_row, top_left_col, &tbl),
|
||||
bottom_right_row_(bottom_right_row),
|
||||
bottom_right_col_(bottom_right_col)
|
||||
{}
|
||||
|
||||
void erase()
|
||||
{
|
||||
if (FT_IS_ERROR(ft_erase_range(ps_table_->table_,
|
||||
0, ps_coll_idx_,
|
||||
(UINT_MAX - 2), ps_coll_idx_))) {
|
||||
ps_row_idx_, ps_coll_idx_,
|
||||
bottom_right_row_, bottom_right_col_))) {
|
||||
throw std::runtime_error("Failed to erase column");
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
std::size_t bottom_right_row_;
|
||||
std::size_t bottom_right_col_;
|
||||
};
|
||||
|
||||
|
||||
@ -1164,6 +1177,23 @@ public:
|
||||
return table_column(col_idx, *this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get range of cells.
|
||||
*
|
||||
* @param col_idx
|
||||
* Column index.
|
||||
* @return
|
||||
* table_column object.
|
||||
*/
|
||||
class cell_range
|
||||
range(std::size_t top_left_row, std::size_t top_left_col,
|
||||
std::size_t bottom_right_row, std::size_t bottom_right_col)
|
||||
{
|
||||
return cell_range(top_left_row, top_left_col,
|
||||
bottom_right_row, bottom_right_col,
|
||||
*this);
|
||||
}
|
||||
|
||||
static class default_properties
|
||||
default_props()
|
||||
{
|
||||
|
40
src/fort.hpp
40
src/fort.hpp
@ -1023,7 +1023,11 @@ public:
|
||||
};
|
||||
|
||||
/**
|
||||
* Table column.
|
||||
* Range of cells.
|
||||
*
|
||||
* @note: at the moment function of propery owener will work only on the
|
||||
* top left cell.
|
||||
* @todo: Implement their work on the whole range.
|
||||
*/
|
||||
class cell_range: public property_owner_t
|
||||
{
|
||||
@ -1031,17 +1035,26 @@ public:
|
||||
using property_owner_t::ps_row_idx_;
|
||||
using property_owner_t::ps_table_;
|
||||
public:
|
||||
table_column(std::size_t col_idx, table &tbl)
|
||||
: property_owner_t(FT_ANY_ROW, col_idx, &tbl) {}
|
||||
cell_range(size_t top_left_row, size_t top_left_col,
|
||||
size_t bottom_right_row, size_t bottom_right_col,
|
||||
table &tbl)
|
||||
: property_owner_t(top_left_row, top_left_col, &tbl),
|
||||
bottom_right_row_(bottom_right_row),
|
||||
bottom_right_col_(bottom_right_col)
|
||||
{}
|
||||
|
||||
void erase()
|
||||
{
|
||||
if (FT_IS_ERROR(ft_erase_range(ps_table_->table_,
|
||||
0, ps_coll_idx_,
|
||||
(UINT_MAX - 2), ps_coll_idx_))) {
|
||||
ps_row_idx_, ps_coll_idx_,
|
||||
bottom_right_row_, bottom_right_col_))) {
|
||||
throw std::runtime_error("Failed to erase column");
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
std::size_t bottom_right_row_;
|
||||
std::size_t bottom_right_col_;
|
||||
};
|
||||
|
||||
|
||||
@ -1164,6 +1177,23 @@ public:
|
||||
return table_column(col_idx, *this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get range of cells.
|
||||
*
|
||||
* @param col_idx
|
||||
* Column index.
|
||||
* @return
|
||||
* table_column object.
|
||||
*/
|
||||
class cell_range
|
||||
range(std::size_t top_left_row, std::size_t top_left_col,
|
||||
std::size_t bottom_right_row, std::size_t bottom_right_col)
|
||||
{
|
||||
return cell_range(top_left_row, top_left_col,
|
||||
bottom_right_row, bottom_right_col,
|
||||
*this);
|
||||
}
|
||||
|
||||
static class default_properties
|
||||
default_props()
|
||||
{
|
||||
|
@ -1825,7 +1825,7 @@ static struct ft_table *create_test_table()
|
||||
|
||||
void test_table_erase(void)
|
||||
{
|
||||
WHEN("Test invalid arguments") {
|
||||
WHEN("Invalid arguments") {
|
||||
ft_table_t *table = create_test_table();
|
||||
|
||||
// invalid rows
|
||||
|
@ -401,6 +401,31 @@ static fort::char_table create_test_table()
|
||||
|
||||
void test_cpp_table_erase(void)
|
||||
{
|
||||
WHEN("Invalid arguments") {
|
||||
std::string err_msg;
|
||||
try {
|
||||
fort::char_table table = create_test_table();
|
||||
table.range(1, 1, 0, 0).erase();
|
||||
} catch (std::exception &e) {
|
||||
err_msg = e.what();
|
||||
}
|
||||
assert_string_equal(err_msg, std::string("Failed to erase column"));
|
||||
}
|
||||
|
||||
WHEN("Erase one cell") {
|
||||
fort::char_table table = create_test_table();
|
||||
table.range(1, 1, 1, 1).erase();
|
||||
|
||||
std::string table_str = table.to_string();
|
||||
std::string table_str_etalon =
|
||||
"+----+----+----+\n"
|
||||
"| 00 | 01 | 02 |\n"
|
||||
"| 10 | 12 | |\n"
|
||||
"| 20 | 21 | 22 |\n"
|
||||
"+----+----+----+\n";
|
||||
assert_string_equal(table_str, table_str_etalon);
|
||||
}
|
||||
|
||||
WHEN("Erase row") {
|
||||
fort::char_table table = create_test_table();
|
||||
table[1].erase();
|
||||
@ -414,51 +439,44 @@ void test_cpp_table_erase(void)
|
||||
assert_string_equal(table_str, table_str_etalon);
|
||||
}
|
||||
|
||||
// WHEN("Erase last row") {
|
||||
// ft_table_t *table = create_test_table();
|
||||
// assert_true(FT_IS_SUCCESS(ft_erase_range(table, 2, 0, 2, 999)));
|
||||
WHEN("Erase last row") {
|
||||
fort::char_table table = create_test_table();
|
||||
table[2].erase();
|
||||
|
||||
// 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);
|
||||
// }
|
||||
std::string table_str = table.to_string();
|
||||
std::string table_str_etalon =
|
||||
"+----+----+----+\n"
|
||||
"| 00 | 01 | 02 |\n"
|
||||
"| 10 | 11 | 12 |\n"
|
||||
"+----+----+----+\n";
|
||||
assert_string_equal(table_str, table_str_etalon);
|
||||
}
|
||||
|
||||
// WHEN("Erase column") {
|
||||
// ft_table_t *table = create_test_table();
|
||||
// assert_true(FT_IS_SUCCESS(ft_erase_range(table, 0, 1, 999, 1)));
|
||||
WHEN("Erase column") {
|
||||
fort::char_table table = create_test_table();
|
||||
table.column(1).erase();
|
||||
|
||||
// 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);
|
||||
// }
|
||||
std::string table_str = table.to_string();
|
||||
std::string table_str_etalon =
|
||||
"+----+----+\n"
|
||||
"| 00 | 02 |\n"
|
||||
"| 10 | 12 |\n"
|
||||
"| 20 | 22 |\n"
|
||||
"+----+----+\n";
|
||||
assert_string_equal(table_str, table_str_etalon);
|
||||
}
|
||||
|
||||
// WHEN("Erase last column") {
|
||||
// ft_table_t *table = create_test_table();
|
||||
// assert_true(FT_IS_SUCCESS(ft_erase_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);
|
||||
// }
|
||||
WHEN("Erase last column") {
|
||||
fort::char_table table = create_test_table();
|
||||
table.column(2).erase();
|
||||
|
||||
std::string table_str = table.to_string();
|
||||
std::string table_str_etalon =
|
||||
"+----+----+\n"
|
||||
"| 00 | 01 |\n"
|
||||
"| 10 | 11 |\n"
|
||||
"| 20 | 21 |\n"
|
||||
"+----+----+\n";
|
||||
assert_string_equal(table_str, table_str_etalon);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user