diff --git a/test/CudaMatrix_Test.cpp b/test/CudaMatrix_Test.cpp index 157d423..ab0972d 100644 --- a/test/CudaMatrix_Test.cpp +++ b/test/CudaMatrix_Test.cpp @@ -184,4 +184,41 @@ TEST_F(CudaMatrix_Test, MatrixMul) { ASSERT_FLOAT_EQ(D1[i],dhD[i]); } } -} \ No newline at end of file +} + +TEST_F(CudaMatrix_Test, matrixfunction) +{ + printf("Test CudaMatrix block(int aDim,int aBeginIndx, int aEndIndex) const\r\n"); + { + float *dataA = new float[9]{1,6,9,4,1,0,5,8,1}; + float *dataB = new float[3]{1,2,3}; + Aurora::CudaMatrix A = Aurora::Matrix::fromRawData(dataA, 3, 3).toDeviceMatrix(); + Aurora::CudaMatrix B = Aurora::Matrix::fromRawData(dataB, 1, 3).toDeviceMatrix(); + + Aurora::Matrix block1 = A.block(0, 1, 2).toHostMatrix(); + Aurora::Matrix block2 = A.toHostMatrix().block(0, 1, 2); + for (size_t i = 0; i < block1.getDataSize(); i++) + { + ASSERT_FLOAT_EQ(block1[i], block2[i]); + } + + block2 = A.toHostMatrix(); + A.setBlockValue(0, 1, 2,-1); + block1 = A.toHostMatrix(); + block2.setBlockValue(0, 1, 2,-1); + for (size_t i = 0; i < block1.getDataSize(); i++) + { + ASSERT_FLOAT_EQ(block1[i], block2[i]); + } + + Aurora::CudaMatrix C = Aurora::zeros(2,3).toDeviceMatrix(); + EXPECT_TRUE(A.setBlock(0, 0, 1, C)); + block1 = A.block(0, 0, 1).toHostMatrix(); + block2 = C.toHostMatrix(); + for(size_t i = 0; i < C.getDataSize(); i++) + { + ASSERT_FLOAT_EQ(block1[i], block2[i]); + } + } + +}