Add Index access methods and validation functions to PIVector2D
- Add operator[], element(), and at() overloads for Index struct - Add isValid() and isNotValid() methods to Index - Add default initialization to -1 (invalid state) - Add parameterized constructor Index(row, col) - Add tests for new functionality
This commit is contained in:
@@ -55,8 +55,14 @@ public:
|
||||
//! \~english Index structure for 2D array elements (row, column).
|
||||
//! \~russian Структура индекса для элементов двумерного массива (строка, столбец).
|
||||
struct Index {
|
||||
ssize_t row;
|
||||
ssize_t col;
|
||||
ssize_t row = -1;
|
||||
ssize_t col = -1;
|
||||
|
||||
inline Index() = default;
|
||||
inline Index(ssize_t r, ssize_t c): row(r), col(c) {}
|
||||
|
||||
inline bool isValid() const { return row >= 0 && col >= 0; }
|
||||
inline bool isNotValid() const { return !isValid(); }
|
||||
};
|
||||
|
||||
//! \~english Constructs an empty 2D array. No memory is allocated.
|
||||
|
||||
@@ -1489,3 +1489,36 @@ TEST_F(Vector2DTest, index_structure_with_brace_initialization_works) {
|
||||
vec[{static_cast<ssize_t>(ROWS_COUNT_INIT - 1), static_cast<ssize_t>(COLS_COUNT_INIT - 1)}] = 200;
|
||||
EXPECT_EQ(vec.element(ROWS_COUNT_INIT - 1, COLS_COUNT_INIT - 1), 200);
|
||||
}
|
||||
|
||||
TEST(Vector2DIndexTest, default_constructor_initializes_to_invalid) {
|
||||
PIVector2D<int>::Index idx;
|
||||
EXPECT_TRUE(idx.isNotValid());
|
||||
EXPECT_FALSE(idx.isValid());
|
||||
EXPECT_EQ(idx.row, -1);
|
||||
EXPECT_EQ(idx.col, -1);
|
||||
}
|
||||
|
||||
TEST(Vector2DIndexTest, parameterized_constructor_initializes_correctly) {
|
||||
PIVector2D<int>::Index idx(5, 10);
|
||||
EXPECT_TRUE(idx.isValid());
|
||||
EXPECT_FALSE(idx.isNotValid());
|
||||
EXPECT_EQ(idx.row, 5);
|
||||
EXPECT_EQ(idx.col, 10);
|
||||
}
|
||||
|
||||
TEST(Vector2DIndexTest, isValid_returns_true_for_non_negative_values) {
|
||||
PIVector2D<int>::Index idx(0, 0);
|
||||
EXPECT_TRUE(idx.isValid());
|
||||
EXPECT_FALSE(idx.isNotValid());
|
||||
}
|
||||
|
||||
TEST(Vector2DIndexTest, isNotValid_returns_true_for_negative_values) {
|
||||
PIVector2D<int>::Index idx1;
|
||||
EXPECT_TRUE(idx1.isNotValid());
|
||||
|
||||
PIVector2D<int>::Index idx2(-1, 5);
|
||||
EXPECT_TRUE(idx2.isNotValid());
|
||||
|
||||
PIVector2D<int>::Index idx3(5, -1);
|
||||
EXPECT_TRUE(idx3.isNotValid());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user