#include #include #include #include "Function1D.h" #include "MatlabReader.h" #include "Matrix.h" #include "config/config.h" #include "transmissionReconstruction/detection/detection.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)) #define ASSERT_DOUBLE_AE(valueA,valueB)\ ASSERT_DOUBLE_EQ(fourDecimalRound(valueA),fourDecimalRound(valueB)) class Detection_Test : public ::testing::Test { protected: static void SetUpDetectionTester() { } static void TearDownTestCase() { } void SetUp() { } void TearDown() { } }; TEST_F(Detection_Test, detectTofAndAttMex) { MatlabReader m("/home/krad/TestData/getBlockOfTransmissionData.mat"); auto AscanBlock = m.read("AscanBlock"); auto AscanRefBlock = m.read("AscanRefBlock"); auto distBlock = m.read("dists"); auto distBlockRef = m.read("distRefBlock"); auto sosWaterBlock = m.read("waterTempBlock"); auto sosWaterRefBlock = m.read("waterTempRefBlock"); double expectedSOSWater = 1.511948131508464e+03; auto result = Recon::detectTofAndAttMex( AscanBlock, AscanRefBlock, distBlock, distBlockRef, sosWaterBlock, sosWaterRefBlock, Recon::transParams::resampleFactor, Recon::transParams::nThreads, expectedSOSWater, Recon::transParams::useTimeWindowing, Recon::transParams::aScanReconstructionFrequency, Recon::transParams::offsetElectronic,Recon::transParams::detectionWindowATT, Recon::transParams::detectionWindowSOS, Recon::transParams::minSpeedOfSound, Recon::transParams::maxSpeedOfSound, Recon::transParams::gaussWindow); MatlabReader m2("/home/krad/TestData/sosResult.mat"); auto sosvalue = m2.read("sosValue"); ASSERT_EQ(sosvalue.getDataSize(), result.tof.getDataSize()); ASSERT_EQ(sosvalue.getDataSize(), result.sosValue.getDataSize()); ASSERT_EQ(sosvalue.getDataSize(), result.att.getDataSize()); #pragma omp parallel for for (size_t i = 0; i < result.tof.getDataSize(); i++) { EXPECT_DOUBLE_AE(0,result.tof[i])<<",index:"<