58 PAD* padWithFootprintMargin =
nullptr;
59 PAD* padWithNoMargin =
nullptr;
60 PAD* padWithOwnMargin =
nullptr;
62 for(
FOOTPRINT* fp : m_board->Footprints() )
64 if( fp->GetFPIDAsString() ==
"TestFootprint_WithSolderMaskMargin" )
67 BOOST_CHECK( fp->GetLocalSolderMaskMargin().has_value() );
70 for(
PAD*
pad : fp->Pads() )
72 if(
pad->GetNumber() ==
"1" )
74 padWithFootprintMargin =
pad;
77 BOOST_CHECK( !
pad->GetLocalSolderMaskMargin().has_value() );
81 else if( fp->GetFPIDAsString() ==
"TestFootprint_NoSolderMaskMargin" )
84 BOOST_CHECK( !fp->GetLocalSolderMaskMargin().has_value() );
86 for(
PAD*
pad : fp->Pads() )
88 if(
pad->GetNumber() ==
"1" )
89 padWithNoMargin =
pad;
92 else if( fp->GetFPIDAsString() ==
"TestFootprint_PadOverridesSolderMaskMargin" )
95 BOOST_CHECK( fp->GetLocalSolderMaskMargin().has_value() );
98 for(
PAD*
pad : fp->Pads() )
100 if(
pad->GetNumber() ==
"1" )
102 padWithOwnMargin =
pad;
105 BOOST_CHECK(
pad->GetLocalSolderMaskMargin().has_value() );
149 std::vector<PAD*> pads;
150 std::vector<PCB_TRACK*> tracks;
151 std::vector<PCB_SHAPE*> shapes;
153 for(
FOOTPRINT* fp : m_board->Footprints() )
155 for(
PAD*
pad : fp->Pads() )
156 pads.push_back(
pad );
158 for(
BOARD_ITEM* item : fp->GraphicalItems() )
161 shapes.push_back(
static_cast<PCB_SHAPE*
>( item ) );
165 for(
PCB_TRACK* track : m_board->Tracks() )
166 tracks.push_back( track );
171 shapes.push_back(
static_cast<PCB_SHAPE*
>( item ) );
176 const int iterations = 1000;
180 for(
int i = 0; i < iterations; ++i )
186 track->GetSolderMaskExpansion();
189 shape->GetSolderMaskExpansion();
194 int totalCalls = iterations * ( pads.size() + tracks.size() + shapes.size() );
196 BOOST_TEST_MESSAGE( wxString::Format(
"%d calls to GetSolderMaskExpansion took %0.1f ms "
198 totalCalls, timer.
msecs(),
199 timer.
msecs() * 1e6 / totalCalls ) );
205 wxString::Format(
"GetSolderMaskExpansion too slow: %0.1f ms for %d calls",
206 timer.
msecs(), totalCalls ) );
BOOST_CHECK_EQUAL(result, "25.4")