feat: fix all TEST and add DICOM export TEST

This commit is contained in:
kradchen
2024-09-19 15:37:02 +08:00
parent 4c4ab3794e
commit 01210045bc
10 changed files with 287 additions and 377 deletions

View File

@@ -12,12 +12,12 @@
inline double fourDecimalRound(double src){
inline float fourDecimalRound(float src){
return round(src*10000.0)/10000.0;
}
#define EXPECT_DOUBLE_AE(valueA,valueB)\
EXPECT_DOUBLE_EQ(fourDecimalRound(valueA),fourDecimalRound(valueB))
#define EXPECT_FLOAT_AE(valueA,valueB)\
EXPECT_FLOAT_EQ(fourDecimalRound(valueA),fourDecimalRound(valueB))
class DataFilter_Test : public ::testing::Test {
protected:
@@ -36,41 +36,41 @@ protected:
};
TEST_F(DataFilter_Test, filterTransmissionSensitivityMap) {
double *dataA = new double[4]{1, 1, 1, 1};
float *dataA = new float[4]{1, 1, 1, 1};
auto slBlock = Aurora::Matrix::fromRawData(dataA, 4, 1);
double *dataB = new double[4]{1, 1, 1, 1};
float *dataB = new float[4]{1, 1, 1, 1};
auto snBlock = Aurora::Matrix::fromRawData(dataB, 4, 1);
double *data3 = new double[4]{1, 1, 1, 2};
float *data3 = new float[4]{1, 1, 1, 2};
auto rlBlock = Aurora::Matrix::fromRawData(data3, 4, 1);
double *data4 = new double[4]{1, 2, 3, 1};
float *data4 = new float[4]{1, 2, 3, 1};
auto rnBlock = Aurora::Matrix::fromRawData(data4, 4, 1);
std::vector<Aurora::Matrix> a66;
double *data6 = new double[6]{3, 2, 1, 9, 8, 6};
float *data6 = new float[6]{3, 2, 1, 9, 8, 6};
auto sensData0 = Aurora::Matrix::fromRawData(data6, 3, 2, 1);
a66.push_back(sensData0);
auto result = Recon::filterTransmissionSensitivityMap(0.3, slBlock, snBlock, rlBlock, rnBlock, a66);
EXPECT_EQ(4,result.getDataSize());
for (size_t i = 0; i < 4; i++)
{
EXPECT_DOUBLE_EQ(1.0,result.getData()[i]);
EXPECT_FLOAT_EQ(1.0,result.getData()[i]);
}
}
TEST_F(DataFilter_Test, filterTransmissionAngle) {
double *dataA = new double[12]{0.99,0.99,0.99,0.99,0.10,0.10,0.10,0.10,0,0,0,0};
float *dataA = new float[12]{0.99,0.99,0.99,0.99,0.10,0.10,0.10,0.10,0,0,0,0};
auto senderNormalBlock = Aurora::transpose(Aurora::Matrix::fromRawData(dataA, 4, 3));
double *dataB = new double[12]{0.99,0.99,0.99,0.98,0.10,0.10,0.10,-0.15,0,0,0,0};
float *dataB = new float[12]{0.99,0.99,0.99,0.98,0.10,0.10,0.10,-0.15,0,0,0,0};
auto receiverNormalBlock = Aurora::transpose(Aurora::Matrix::fromRawData(dataB, 4, 3));
double angleLowerLimit = 10;
double angleUpperLimit = 180;
float angleLowerLimit = 10;
float angleUpperLimit = 180;
auto result = Recon::filterTransmissionAngle(angleLowerLimit, angleUpperLimit, senderNormalBlock, receiverNormalBlock);
EXPECT_EQ(4,result.getDataSize());
EXPECT_DOUBLE_EQ(0.0,result.getData()[0]);
EXPECT_DOUBLE_EQ(0.0,result.getData()[1]);
EXPECT_DOUBLE_EQ(0.0,result.getData()[2]);
EXPECT_DOUBLE_EQ(1.0,result.getData()[3]);
EXPECT_FLOAT_EQ(0.0,result.getData()[0]);
EXPECT_FLOAT_EQ(0.0,result.getData()[1]);
EXPECT_FLOAT_EQ(0.0,result.getData()[2]);
EXPECT_FLOAT_EQ(1.0,result.getData()[3]);
}
@@ -88,12 +88,12 @@ TEST_F(DataFilter_Test, checkTofDetections) {
for (size_t i = 0; i < result.valid.getDataSize(); i++)
{
EXPECT_DOUBLE_AE(valid.getData()[i],result.valid.getData()[i]) << " :"<<i;
EXPECT_FLOAT_AE(valid.getData()[i],result.valid.getData()[i]) << " :"<<i;
}
for (size_t i = 0; i < result.tofValues.getDataSize(); i++)
{
EXPECT_DOUBLE_AE(tofValues.getData()[i],result.tofValues.getData()[i])<< " :"<<i;
EXPECT_FLOAT_AE(tofValues.getData()[i],result.tofValues.getData()[i])<< " :"<<i;
}
}
@@ -106,13 +106,13 @@ TEST_F(DataFilter_Test, calculateSnr) {
for (size_t i = 0; i < snrBlock.getDataSize(); i++)
{
EXPECT_DOUBLE_AE(snrBlock.getData()[i],result.getData()[i]);
EXPECT_FLOAT_AE(snrBlock.getData()[i],result.getData()[i]);
}
}
TEST_F(DataFilter_Test, findDefectTransmissionData) {
MatlabReader m("/home/sun/testData/findDefectTransmissionData.mat");
double *dataA = new double[3]{1, std::numeric_limits<double>::infinity(), -std::numeric_limits<double>::infinity()};
float *dataA = new float[3]{1, std::numeric_limits<float>::infinity(), -std::numeric_limits<float>::infinity()};
auto SNRList = m.read("vsnrlist");
auto SNRList2 = m.read("snrdifference");
auto validOut = m.read("validOut");
@@ -122,19 +122,19 @@ TEST_F(DataFilter_Test, findDefectTransmissionData) {
auto valid = valid1*valid2;
for (size_t i = 0; i < valid.getDataSize(); i++)
{
EXPECT_DOUBLE_AE(validOut[i],valid[i]);
EXPECT_FLOAT_AE(validOut[i],valid[i]);
}
}
TEST_F(DataFilter_Test, filterReflectionData) {
auto receiverPositionBlock = Aurora::transpose(Aurora::Matrix::fromRawData(new double[9]{-0.12,-0.12,-0.12,-0.01,-0.01,-0.01,0.03,0.03,0.04}, 3, 3));
auto senderPositionBlock = Aurora::transpose(Aurora::Matrix::fromRawData(new double[9]{-0.12,-0.12,-0.12,-0.01,-0.01,-0.01,0.03,0.03,0.03}, 3, 3));
auto senderNormalBlock = Aurora::transpose(Aurora::Matrix::fromRawData(new double[9]{0.99,0.99,0.99,0.10,0.10,0.10,0,0,0}, 3, 3));
auto receiverPositionBlock = Aurora::transpose(Aurora::Matrix::fromRawData(new float[9]{-0.12,-0.12,-0.12,-0.01,-0.01,-0.01,0.03,0.03,0.04}, 3, 3));
auto senderPositionBlock = Aurora::transpose(Aurora::Matrix::fromRawData(new float[9]{-0.12,-0.12,-0.12,-0.01,-0.01,-0.01,0.03,0.03,0.03}, 3, 3));
auto senderNormalBlock = Aurora::transpose(Aurora::Matrix::fromRawData(new float[9]{0.99,0.99,0.99,0.10,0.10,0.10,0,0,0}, 3, 3));
int constrictReflectionAngles = 1;
auto result = Recon::filterReflectionData(receiverPositionBlock, senderPositionBlock, senderNormalBlock, constrictReflectionAngles);
EXPECT_EQ(3, result.getDataSize());
EXPECT_DOUBLE_AE(result[0],1);
EXPECT_DOUBLE_AE(result[1],1);
EXPECT_DOUBLE_AE(result[2],0);
EXPECT_FLOAT_AE(result[0],1);
EXPECT_FLOAT_AE(result[1],1);
EXPECT_FLOAT_AE(result[2],0);
}