mirror of
https://github.com/tfussell/xlnt.git
synced 2024-03-22 13:11:17 +08:00
Merge pull request #608 from imgspc/iter_has_value
Add has_value to cell_iterator
This commit is contained in:
commit
d88c901faa
|
@ -136,6 +136,13 @@ public:
|
|||
/// </summary>
|
||||
cell_iterator operator++(int);
|
||||
|
||||
/// <summary>
|
||||
/// When iterating over a range that doesn't ignore null cells, operator*()
|
||||
/// will throw when trying to access the cells that are null. This method
|
||||
/// checks the existence of a cell.
|
||||
/// </summary>
|
||||
bool has_value() const;
|
||||
|
||||
private:
|
||||
/// <summary>
|
||||
/// If true, cells that don't exist in the worksheet will be skipped during iteration.
|
||||
|
@ -263,6 +270,13 @@ public:
|
|||
/// </summary>
|
||||
const_cell_iterator operator++(int);
|
||||
|
||||
/// <summary>
|
||||
/// When iterating over a range that doesn't ignore null cells, operator*()
|
||||
/// will throw when trying to access the cells that are null. This method
|
||||
/// checks the existence of a cell.
|
||||
/// </summary>
|
||||
bool has_value() const;
|
||||
|
||||
private:
|
||||
/// <summary>
|
||||
/// If true, cells that don't exist in the worksheet will be skipped during iteration.
|
||||
|
|
|
@ -278,4 +278,12 @@ const const_cell_iterator::reference const_cell_iterator::operator*() const
|
|||
{
|
||||
return ws_.cell(cursor_);
|
||||
}
|
||||
|
||||
bool cell_iterator::has_value() const{
|
||||
return ws_.has_cell(cursor_);
|
||||
}
|
||||
|
||||
bool const_cell_iterator::has_value() const{
|
||||
return ws_.has_cell(cursor_);
|
||||
}
|
||||
} // namespace xlnt
|
||||
|
|
|
@ -76,6 +76,7 @@ public:
|
|||
register_test(test_lowest_row_or_props);
|
||||
register_test(test_highest_row);
|
||||
register_test(test_highest_row_or_props);
|
||||
register_test(test_iterator_has_value);
|
||||
register_test(test_const_iterators);
|
||||
register_test(test_const_reverse_iterators);
|
||||
register_test(test_column_major_iterators);
|
||||
|
@ -586,6 +587,31 @@ public:
|
|||
xlnt_assert_equals(ws.highest_row_or_props(), 11);
|
||||
}
|
||||
|
||||
void test_iterator_has_value()
|
||||
{
|
||||
xlnt::workbook wb;
|
||||
auto ws = wb.active_sheet();
|
||||
|
||||
// make a worksheet with a blank row and column
|
||||
ws.cell("A1").value("A1");
|
||||
ws.cell("A3").value("A3");
|
||||
ws.cell("C1").value("C1");
|
||||
|
||||
xlnt_assert_equals(ws.columns(false)[0].begin().has_value(), true);
|
||||
xlnt_assert_equals(ws.rows(false)[0].begin().has_value(), true);
|
||||
|
||||
xlnt_assert_equals(ws.columns(false)[1].begin().has_value(), false);
|
||||
xlnt_assert_equals(ws.rows(false)[1].begin().has_value(), false);
|
||||
|
||||
// also test const interators.
|
||||
xlnt_assert_equals(ws.columns(false)[0].cbegin().has_value(), true);
|
||||
xlnt_assert_equals(ws.rows(false)[0].cbegin().has_value(), true);
|
||||
|
||||
xlnt_assert_equals(ws.columns(false)[1].cbegin().has_value(), false);
|
||||
xlnt_assert_equals(ws.rows(false)[1].cbegin().has_value(), false);
|
||||
|
||||
}
|
||||
|
||||
void test_const_iterators()
|
||||
{
|
||||
xlnt::workbook wb;
|
||||
|
|
Loading…
Reference in New Issue
Block a user