# HG changeset patch # User Benjamin Golinvaux # Date 1591109121 -7200 # Node ID 2a5f0f771fbd19d130f6d5dc07715bbe2fe9e130 # Parent 11141df26e0d492379514a378d224fdb60e31f83 VC2008 port + improved struct loader injection diff -r 11141df26e0d -r 2a5f0f771fbd UnitTestsSources/TestStructureSet.cpp --- a/UnitTestsSources/TestStructureSet.cpp Tue Jun 02 16:43:21 2020 +0200 +++ b/UnitTestsSources/TestStructureSet.cpp Tue Jun 02 16:45:21 2020 +0200 @@ -5673,7 +5673,7 @@ optimizedStructLoader = OrthancStone::DicomStructureSetLoader::Create(*loadersContext); // create the slice processor / instance lookup - boost::shared_ptr sliceProcessor = boost::make_shared(*optimizedStructLoader); + boost::shared_ptr sliceProcessor(new SliceProcessor(*optimizedStructLoader)); // Inject it into CT loader ctLoader->SetDicomSlicePostProcessor(sliceProcessor); @@ -5696,8 +5696,8 @@ } // DO NOT DELETE THOSE! - OrthancStone::DicomStructureSet* normalContent = normalStructLoader->GetContent(); - OrthancStone::DicomStructureSet* optimizedContent = optimizedStructLoader->GetContent(); + OrthancStone::DicomStructureSet* normalContent = normalStructLoader->GetContent(); + OrthancStone::DicomStructureSet* optimizedContent = optimizedStructLoader->GetContent(); EXPECT_EQ(normalContent->GetStructuresCount(), optimizedContent->GetStructuresCount()); @@ -5707,15 +5707,20 @@ std::vector allPlanes; - for (const auto& plane : axialPlanes) - allPlanes.push_back(plane); - for (const auto& plane : coronalPlanes) - allPlanes.push_back(plane); - for (const auto& plane : sagittalPlanes) - allPlanes.push_back(plane); + + // let's gather all the possible cutting planes in a single struct + for (size_t i = 0; i < axialPlanes.size(); ++i) + allPlanes.push_back(axialPlanes[i]); + + for (size_t i = 0; i < coronalPlanes.size(); ++i) + allPlanes.push_back(coronalPlanes[i]); + + for (size_t i = 0; i < sagittalPlanes.size(); ++i) + allPlanes.push_back(sagittalPlanes[i]); for (size_t i = 0; i < normalContent->GetStructuresCount(); ++i) { + std::cout << "Testing structure (" << i << "/" << normalContent->GetStructuresCount() << ")\n"; Vector structureCenter1 = normalContent->GetStructureCenter(i); const std::string& structureName1 = normalContent->GetStructureName(i); const std::string& structureInterpretation1 = normalContent->GetStructureInterpretation(i); @@ -5736,8 +5741,11 @@ EXPECT_EQ(structureColor1.GetGreen(), structureColor2.GetGreen()); EXPECT_EQ(structureColor1.GetBlue(), structureColor2.GetBlue()); - for (const auto& plane : allPlanes) + // "random" walk through the planes. Processing them all takes too long (~ 1 min) + for (size_t j = 0; j < allPlanes.size(); j += 37) { + const OrthancStone::CoordinateSystem3D& plane = allPlanes[j]; + std::vector< std::pair > segments1; std::vector< std::pair > segments2; @@ -5747,6 +5755,14 @@ // checks here EXPECT_EQ(ok1, ok2); EXPECT_EQ(segments1.size(), segments2.size()); + + for (size_t k = 0; k < segments1.size(); ++k) + { + EXPECT_NEAR(segments1[k].first.x, segments2[k].first.x, TOLERANCE); + EXPECT_NEAR(segments1[k].first.y, segments2[k].first.y, TOLERANCE); + EXPECT_NEAR(segments1[k].second.x, segments2[k].second.x, TOLERANCE); + EXPECT_NEAR(segments1[k].second.y, segments2[k].second.y, TOLERANCE); + } } }