diff --git a/tests/math/testpivector2d.cpp b/tests/math/testpivector2d.cpp index aef6c86b..29831aab 100644 --- a/tests/math/testpivector2d.cpp +++ b/tests/math/testpivector2d.cpp @@ -652,6 +652,51 @@ TEST_F(Vector2DTest, transposed_returns_correct_dimensions) { } } +TEST(Vector2DTransposeTest, emptyMatrix_returnsEmpty) { + PIVector2D empty; + auto transposed = empty.transposed(); + EXPECT_TRUE(transposed.isEmpty()); + EXPECT_EQ(transposed.rows(), 0); + EXPECT_EQ(transposed.cols(), 0); +} + +TEST(Vector2DTransposeTest, singleElement_returnsSame) { + PIVector2D single(1, 1, 42); + auto transposed = single.transposed(); + EXPECT_EQ(transposed.rows(), 1); + EXPECT_EQ(transposed.cols(), 1); + EXPECT_EQ(transposed.element(0, 0), 42); +} + +TEST(Vector2DTransposeTest, oneRow_becomesOneColumn) { + PIVector2D rowVec(1, 5); + for (size_t c = 0; c < 5; ++c) rowVec.element(0, c) = static_cast(c); + auto transposed = rowVec.transposed(); + EXPECT_EQ(transposed.rows(), 5); + EXPECT_EQ(transposed.cols(), 1); + for (size_t r = 0; r < 5; ++r) { + EXPECT_EQ(transposed.element(r, 0), static_cast(r)); + } +} + +TEST(Vector2DTransposeTest, oneColumn_becomesOneRow) { + PIVector2D colVec(5, 1); + for (size_t r = 0; r < 5; ++r) colVec.element(r, 0) = static_cast(r); + auto transposed = colVec.transposed(); + EXPECT_EQ(transposed.rows(), 1); + EXPECT_EQ(transposed.cols(), 5); + for (size_t c = 0; c < 5; ++c) { + EXPECT_EQ(transposed.element(0, c), static_cast(c)); + } +} + +TEST_F(Vector2DTest, transposed_doesNotModifyOriginal) { + auto original = vec; // копия для сравнения + auto transposed = vec.transposed(); + // Проверяем, что исходный массив не изменился + EXPECT_EQ(vec, original); +} + TEST_F(Vector2DTest, reverseRows_reverses_row_order) { auto original = vec; vec.reverseRows();