Fix copyFromRawData and fromRawData bug
This commit is contained in:
@@ -4,6 +4,12 @@
|
||||
#include "Function1D.h"
|
||||
|
||||
|
||||
#define DISPLAY_MATRIX(Matrix)\
|
||||
printf("=====================================\r\n");\
|
||||
printf("%s:\r\n", #Matrix);\
|
||||
Matrix.printf();\
|
||||
printf("%s end================================\r\n", #Matrix);
|
||||
|
||||
class FunctionTester:public ::testing::Test{
|
||||
protected:
|
||||
static void SetUpFunctionTester(){
|
||||
@@ -21,6 +27,107 @@ double fourDecimalRound(double src){
|
||||
return round(src*10000.0)/10000.0;
|
||||
}
|
||||
|
||||
|
||||
TEST_F(FunctionTester, MatrixCreate) {
|
||||
double * dataA =Aurora::malloc(9);
|
||||
double * dataB = new double[9];
|
||||
double * dataC = new double[9];
|
||||
double * dataD = new double[9];
|
||||
//mkl matrix
|
||||
{
|
||||
Aurora::Matrix A = Aurora::Matrix::New(dataA, 3, 3);
|
||||
EXPECT_EQ(dataA, A.getData());
|
||||
EXPECT_EQ(9, A.getDataSize());
|
||||
EXPECT_EQ(2, A.getDims());
|
||||
EXPECT_EQ(3, A.getDimSize(0));
|
||||
EXPECT_EQ(3, A.getDimSize(1));
|
||||
EXPECT_EQ(Aurora::Normal, A.getValueType());
|
||||
DISPLAY_MATRIX(A)
|
||||
}
|
||||
// double [] matrix
|
||||
{
|
||||
Aurora::Matrix B = Aurora::Matrix::fromRawData(dataB, 3, 3);
|
||||
EXPECT_EQ(dataB, B.getData());
|
||||
EXPECT_EQ(9, B.getDataSize());
|
||||
EXPECT_EQ(2, B.getDims());
|
||||
EXPECT_EQ(3, B.getDimSize(0));
|
||||
EXPECT_EQ(3, B.getDimSize(1));
|
||||
EXPECT_EQ(Aurora::Normal, B.getValueType());
|
||||
DISPLAY_MATRIX(B)
|
||||
}
|
||||
// copy from double [] to mkl matrix
|
||||
{
|
||||
Aurora::Matrix C = Aurora::Matrix::copyFromRawData(dataC, 3, 3);
|
||||
EXPECT_NE(dataC, C.getData());
|
||||
EXPECT_EQ(9, C.getDataSize());
|
||||
EXPECT_EQ(2, C.getDims());
|
||||
EXPECT_EQ(3, C.getDimSize(0));
|
||||
EXPECT_EQ(3, C.getDimSize(1));
|
||||
EXPECT_EQ(Aurora::Normal, C.getValueType());
|
||||
DISPLAY_MATRIX(C)
|
||||
}
|
||||
// 2vector
|
||||
{
|
||||
Aurora::Matrix C = Aurora::Matrix::copyFromRawData(dataC, 9);
|
||||
EXPECT_NE(dataC, C.getData());
|
||||
EXPECT_EQ(9, C.getDataSize());
|
||||
EXPECT_EQ(2, C.getDims());
|
||||
EXPECT_EQ(9, C.getDimSize(0));
|
||||
EXPECT_EQ(1, C.getDimSize(1));
|
||||
EXPECT_EQ(Aurora::Normal, C.getValueType());
|
||||
DISPLAY_MATRIX(C)
|
||||
}
|
||||
// 2d vector
|
||||
{
|
||||
Aurora::Matrix C = Aurora::Matrix::fromRawData(dataC, 9, 1);
|
||||
EXPECT_EQ(dataC, C.getData());
|
||||
EXPECT_EQ(9, C.getDataSize());
|
||||
EXPECT_EQ(2, C.getDims());
|
||||
EXPECT_EQ(9, C.getDimSize(0));
|
||||
EXPECT_EQ(1, C.getDimSize(1));
|
||||
EXPECT_EQ(Aurora::Normal, C.getValueType());
|
||||
DISPLAY_MATRIX(C)
|
||||
}
|
||||
// 2d vector column major
|
||||
{
|
||||
Aurora::Matrix C = Aurora::Matrix::copyFromRawData(dataD, 1, 9);
|
||||
EXPECT_NE(dataD, C.getData());
|
||||
delete [] dataD;
|
||||
EXPECT_EQ(9, C.getDataSize());
|
||||
EXPECT_EQ(2, C.getDims());
|
||||
EXPECT_EQ(1, C.getDimSize(0));
|
||||
EXPECT_EQ(9, C.getDimSize(1));
|
||||
EXPECT_EQ(Aurora::Normal, C.getValueType());
|
||||
DISPLAY_MATRIX(C)
|
||||
}
|
||||
// 3d matrix
|
||||
{
|
||||
double * tempData = new double[9];
|
||||
Aurora::Matrix C = Aurora::Matrix::fromRawData(tempData, 3, 3,1);
|
||||
EXPECT_EQ(dataD, C.getData());
|
||||
EXPECT_EQ(9, C.getDataSize());
|
||||
EXPECT_EQ(3, C.getDims());
|
||||
EXPECT_EQ(3, C.getDimSize(0));
|
||||
EXPECT_EQ(3, C.getDimSize(1));
|
||||
EXPECT_EQ(1, C.getDimSize(2));
|
||||
EXPECT_EQ(Aurora::Normal, C.getValueType());
|
||||
DISPLAY_MATRIX(C)
|
||||
}
|
||||
// 3d matrix 2
|
||||
{
|
||||
double * tempData = new double[9];
|
||||
Aurora::Matrix C = Aurora::Matrix::fromRawData(tempData, 3, 1,3);
|
||||
EXPECT_EQ(dataD, C.getData());
|
||||
EXPECT_EQ(9, C.getDataSize());
|
||||
EXPECT_EQ(3, C.getDims());
|
||||
EXPECT_EQ(3, C.getDimSize(0));
|
||||
EXPECT_EQ(1, C.getDimSize(1));
|
||||
EXPECT_EQ(3, C.getDimSize(2));
|
||||
EXPECT_EQ(Aurora::Normal, C.getValueType());
|
||||
DISPLAY_MATRIX(C)
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(FunctionTester, matrixSlice) {
|
||||
double * dataA =Aurora::malloc(8);
|
||||
double * dataB =Aurora::malloc(8);
|
||||
@@ -79,26 +186,6 @@ TEST_F(FunctionTester, sign) {
|
||||
sign(A*B).printf();
|
||||
}
|
||||
|
||||
TEST_F(FunctionTester, matrix) {
|
||||
double * dataA =Aurora::malloc(9);
|
||||
double * dataB =Aurora::malloc(9);
|
||||
for (int i = 0; i < 9; ++i) {
|
||||
dataA[i]=(double)(i+1);
|
||||
dataB[i]=(double)(i+2);
|
||||
}
|
||||
Aurora::Matrix A = Aurora::Matrix::New(dataA,3,3);
|
||||
A.printf();
|
||||
Aurora::Matrix B = Aurora::Matrix::New(dataB,3,3);
|
||||
printf("B:\r\n");
|
||||
B.printf();
|
||||
printf("A*B:\r\n");
|
||||
(A*B).printf();
|
||||
printf("A*B+A:\r\n");
|
||||
(A*B+A).printf();
|
||||
A = (A*B+A)+3.;
|
||||
A.printf();
|
||||
}
|
||||
|
||||
|
||||
TEST_F(FunctionTester, immse){
|
||||
double dataA[9]={1,2,3,4,5,6,7,8,9};
|
||||
|
||||
Reference in New Issue
Block a user