Files
UR/test/ProcessData_Test.cpp
2023-06-12 11:37:00 +08:00

87 lines
2.4 KiB
C++

#include <gtest/gtest.h>
#include "Function2D.h"
#include "Matrix.h"
#include "src/reflectionReconstruction/preprocessData/resampleTransmissionVolume.h"
#include "src/reflectionReconstruction/preprocessData/precalcImageParameters.h"
#include "src/reflectionReconstruction/preprocessData/imageExtrapolation.h"
#include "src/common/getGeometryInfo.h"
#include "src/config/config.h"
#include "MatlabReader.h"
using namespace Recon;
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 ProcessData_Test : public ::testing::Test {
protected:
static void SetUpCommonTester() {
}
static void TearDownTestCase() {
}
void SetUp() {
}
void TearDown() {
}
};
TEST_F(ProcessData_Test, imageExtrapolation) {
MatlabReader m("/home/sun/testData/imageExtrapolation.mat");
auto smHelperInput = m.read("SMHelperInput");
auto smHelper = m.read("SMHelper");
auto result = imageExtrapolation(smHelperInput, 3);
for(int i=0;i<result.getDataSize();++i)
{
EXPECT_DOUBLE_AE(smHelper[i],result[i]) << i;
}
}
TEST_F(ProcessData_Test, resampleTransmissionVolume) {
MatlabReader m("/home/sun/testData/resampleTransmissionVolume.mat");
auto maxEmitter = m.read("maxEmitter");
auto maxPos = m.read("maxPos");
auto maxReceiver = m.read("maxReceiver");
auto minEmitter = m.read("minEmitter");
auto minPos = m.read("minPos");
auto minReceiver = m.read("minReceiver");
auto transVol = m.read("transVol");
auto speedMap3d = m.read("SpeedMap3D");
auto beginTransMap = m.read("begin_TransMap");
auto deltaTransMap = m.read("delta_TransMap");
Recon::GeometryInfo geom;
geom.maxEmitter = maxEmitter;
geom.minEmitter = minEmitter;
geom.maxReceiver = maxReceiver;
geom.minReceiver = minReceiver;
geom.minSize = m.read("minSize");
geom.maxSize = m.read("maxSize");
precalcImageParameters(geom);
auto r = resampleTransmissionVolume(transVol, maxPos, minPos, geom);
for(int i=0;i<r.transMap.getDataSize();++i)
{
EXPECT_DOUBLE_AE(speedMap3d[i],r.transMap[i]);
}
for(int i=0;i<r.beginTransMap.getDataSize();++i)
{
EXPECT_DOUBLE_AE(beginTransMap[i],r.beginTransMap[i]);
}
EXPECT_DOUBLE_AE(deltaTransMap[0],r.deltaTransMap);
}