62 for(
PAD*
pad : m_board->Footprints()[0]->Pads() )
64 if(
pad->GetNumber() ==
"2" ||
pad->GetNumber() ==
"4" ||
pad->GetNumber() ==
"6" )
72 for(
PCB_TRACK* track : m_board->Tracks() )
81 track->SetWidth( track->GetWidth() +
delta +
delta );
85 arc12 = track->m_Uuid;
91 bool foundPad2Error =
false;
92 bool foundPad4Error =
false;
93 bool foundPad6Error =
false;
94 bool foundArc8Error =
false;
95 bool foundArc12Error =
false;
96 bool foundOtherError =
false;
101 [&](
const std::shared_ptr<DRC_ITEM>& aItem,
VECTOR2I aPos,
int aLayer )
105 BOARD_ITEM* item_a = m_board->GetItem( aItem->GetMainItemID() );
106 PAD* pad_a = dynamic_cast<PAD*>( item_a );
107 PCB_TRACK* trk_a = dynamic_cast<PCB_TRACK*>( item_a );
109 BOARD_ITEM* item_b = m_board->GetItem( aItem->GetAuxItemID() );
110 PAD* pad_b = dynamic_cast<PAD*>( item_b );
111 PCB_TRACK* trk_b = dynamic_cast<PCB_TRACK*>( item_b );
113 if( pad_a && pad_a->GetNumber() ==
"2" ) foundPad2Error = true;
114 else if( pad_a && pad_a->GetNumber() ==
"4" ) foundPad4Error = true;
115 else if( pad_a && pad_a->GetNumber() ==
"6" ) foundPad6Error = true;
116 else if( pad_b && pad_b->GetNumber() ==
"2" ) foundPad2Error = true;
117 else if( pad_b && pad_b->GetNumber() ==
"4" ) foundPad4Error = true;
118 else if( pad_b && pad_b->GetNumber() ==
"6" ) foundPad6Error = true;
119 else if( trk_a && trk_a->m_Uuid == arc8 ) foundArc8Error = true;
120 else if( trk_a && trk_a->m_Uuid == arc12 ) foundArc12Error = true;
121 else if( trk_b && trk_b->m_Uuid == arc8 ) foundArc8Error = true;
122 else if( trk_b && trk_b->m_Uuid == arc12 ) foundArc12Error = true;
123 else foundOtherError = true;
129 BOOST_CHECK_EQUAL( foundPad2Error,
true );
130 BOOST_CHECK_EQUAL( foundPad4Error,
true );
131 BOOST_CHECK_EQUAL( foundPad6Error,
true );
132 BOOST_CHECK_EQUAL( foundArc8Error,
true );
133 BOOST_CHECK_EQUAL( foundArc12Error,
true );
134 BOOST_CHECK_EQUAL( foundOtherError,
false );
150 for(
ZONE* zone : m_board->Zones() )
152 if( zone->GetLayerSet().Contains(
F_Cu ) )
166 for(
ZONE* zone : m_board->Zones() )
168 if( zone->GetLayerSet().Contains(
F_Cu ) )
181 std::vector<wxString> tests = {
"issue18",
194 for(
const wxString& relPath : tests )
202 std::vector<DRC_ITEM> violations;
205 [&](
const std::shared_ptr<DRC_ITEM>& aItem,
VECTOR2I aPos,
int aLayer )
208 violations.push_back( *aItem );
213 if( violations.empty() )
215 BOOST_CHECK_EQUAL( 1, 1 );
216 BOOST_TEST_MESSAGE( (
const char*)(wxString::Format(
"Zone fill regression: %s passed", relPath ).utf8_str()) );
222 std::map<KIID, EDA_ITEM*> itemMap;
223 m_board->FillItemMap( itemMap );
225 for(
const DRC_ITEM& item : violations )
231 BOOST_ERROR( (
const char*)(wxString::Format(
"Zone fill regression: %s failed", relPath ).utf8_str()) );
constexpr EDA_IU_SCALE pcbIUScale
Container for design settings for a BOARD object.
std::shared_ptr< DRC_ENGINE > m_DRCEngine
Represent a set of closed polygons.
void BooleanAdd(const SHAPE_POLY_SET &b, POLYGON_MODE aFastMode)
Perform boolean polyset union For aFastMode meaning, see function booleanOp.
int OutlineCount() const
Return the number of outlines in the set.
Handle a list of polygons defining a copper zone.
void LoadBoard(SETTINGS_MANAGER &aSettingsManager, const wxString &aRelPath, std::unique_ptr< BOARD > &aBoard)
void FillZones(BOARD *m_board)
std::unique_ptr< BOARD > m_board
SETTINGS_MANAGER m_settingsManager
BOOST_FIXTURE_TEST_CASE(BasicZoneFills, ZONE_FILL_TEST_FIXTURE)
@ PCB_ARC_T
class PCB_ARC, an arc track segment on a copper layer
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".