88 lines
2.9 KiB
C++
88 lines
2.9 KiB
C++
#include <gtest/gtest.h>
|
|
#include <limits>
|
|
|
|
#include "Function1D.h"
|
|
#include "MatlabReader.h"
|
|
#include "Matrix.h"
|
|
#include "transmissionReconstruction/reconstruction/buildMatrix/DGradient.h"
|
|
#include "transmissionReconstruction/reconstruction/reconstruction.h"
|
|
|
|
|
|
|
|
|
|
inline double fourDecimalRound(double src){
|
|
return round(src*10000.0)/10000.0;
|
|
}
|
|
|
|
#define EXPECT_DOUBLE_AE(valueA,valueB)\
|
|
EXPECT_DOUBLE_EQ(fourDecimalRound(valueA),fourDecimalRound(valueB))
|
|
|
|
class Reconstruction_Test : public ::testing::Test {
|
|
protected:
|
|
static void SetUpReconstructionTester() {
|
|
|
|
}
|
|
|
|
static void TearDownTestCase() {
|
|
}
|
|
|
|
void SetUp() {
|
|
}
|
|
|
|
void TearDown() {
|
|
}
|
|
};
|
|
|
|
TEST_F(Reconstruction_Test, calculateMinimalMaximalTransducerPositions) {
|
|
auto senderList = Aurora::Matrix::fromRawData(new double[6]{1, 2, 3, 1, 2, 4}, 3, 2);
|
|
auto receiverList = Aurora::Matrix::fromRawData(new double[6]{1, 8, 3, 1, 2, 1}, 3, 2);
|
|
auto result = Recon::calculateMinimalMaximalTransducerPositions(senderList,receiverList);
|
|
EXPECT_DOUBLE_EQ(1.0,result.getData()[0]);
|
|
EXPECT_DOUBLE_EQ(2,result.getData()[1]);
|
|
EXPECT_DOUBLE_EQ(1.0,result.getData()[2]);
|
|
EXPECT_DOUBLE_EQ(1.0,result.getData()[3]);
|
|
EXPECT_DOUBLE_EQ(8,result.getData()[4]);
|
|
EXPECT_DOUBLE_EQ(4,result.getData()[5]);
|
|
}
|
|
|
|
TEST_F(Reconstruction_Test, calculateResolution) {
|
|
auto ddims = Aurora::Matrix::fromRawData(new double[6]{-0.1296,-0.1296,0.0185,0.1296,0.1295,0.1682}, 1, 6);
|
|
auto dims = Aurora::Matrix::fromRawData(new double[3]{128,128,74}, 1, 3);
|
|
auto result = Recon::calculateResolution(ddims, dims);
|
|
EXPECT_DOUBLE_AE(0.0020,result[0]);
|
|
EXPECT_DOUBLE_AE(0.0020,result[1]);
|
|
EXPECT_DOUBLE_AE(0.0021,result[2]);
|
|
}
|
|
|
|
TEST_F(Reconstruction_Test, getDimensions) {
|
|
auto ddims = Aurora::Matrix::fromRawData(new double[6]{-0.1296,-0.1296,0.0185,0.1296,0.1295,0.1682}, 1, 6);
|
|
double numPixelXY = 128;
|
|
auto result = Recon::getDimensions(numPixelXY,ddims);
|
|
EXPECT_DOUBLE_AE(128,result[0]);
|
|
EXPECT_DOUBLE_AE(128,result[1]);
|
|
EXPECT_DOUBLE_AE(74,result[2]);
|
|
}
|
|
|
|
TEST_F(Reconstruction_Test, discretizePositions) {
|
|
auto senderList = Aurora::Matrix::fromRawData(new double[6]{1, 2, 3, 1, 2, 4}, 3, 2);
|
|
auto receiverList = Aurora::Matrix::fromRawData(new double[6]{1, 8, 3, 1, 2, 1}, 3, 2);
|
|
double numPixelXY = 128;
|
|
auto result = Recon::discretizePositions(senderList,receiverList,numPixelXY);
|
|
EXPECT_DOUBLE_AE(128,result.receiverCoordList[1]);
|
|
EXPECT_DOUBLE_AE(1,result.senderCoordList[1]);
|
|
}
|
|
|
|
TEST_F(Reconstruction_Test, DGradient) {
|
|
MatlabReader m("/home/krad/TestData/DGradient.mat");
|
|
|
|
auto x = m.read("x");
|
|
auto y = m.read("y");
|
|
// x.forceReshape(x.getDataSize(), 1, 1);
|
|
auto result = Recon::DGradient(x,1,2);
|
|
for (size_t i = 0; i < result.getDataSize(); i++)
|
|
{
|
|
EXPECT_DOUBLE_AE(result.getData()[i],y.getData()[i])<<"index:"<<i;
|
|
}
|
|
}
|
|
|