PIVector2D - add funcs, optimize, tests, fixes, doxygen #194

Merged
andrey merged 29 commits from vibecoding_pivector2d into master 2026-02-27 23:58:45 +03:00
2 changed files with 41 additions and 2 deletions
Showing only changes of commit 14e62a41bd - Show all commits

View File

@@ -55,8 +55,14 @@ public:
//! \~english Index structure for 2D array elements (row, column). //! \~english Index structure for 2D array elements (row, column).
//! \~russian Структура индекса для элементов двумерного массива (строка, столбец). //! \~russian Структура индекса для элементов двумерного массива (строка, столбец).
struct Index { struct Index {
ssize_t row; ssize_t row = -1;
ssize_t col; 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. //! \~english Constructs an empty 2D array. No memory is allocated.

View File

@@ -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; 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); 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());
}