52 std::vector<DRC_ITEM> violations;
55 std::vector<wxString> allClasses{
"ANY",
"CAP_1",
"CAP_2",
"CLASS_1",
56 "CLASS_2",
"CLASS_3",
"CLASS_4",
"MULTI_REF",
57 "REF_WILDCARD",
"REF_WILDCARD2",
"RES_1",
"RES_2",
60 auto testClasses = [&allClasses](
const wxString& ref,
const COMPONENT_CLASS* compClass, std::vector<wxString> assignedClasses)
62 std::vector<wxString> unassignedClasses;
63 std::ranges::set_difference(allClasses, assignedClasses, std::back_inserter(unassignedClasses));
65 for(
const wxString& className : assignedClasses )
67 if( !compClass->ContainsClassName( className ) )
69 BOOST_ERROR( wxString::Format(
70 "%s component class failed (%s expected but not found - full class %s)",
71 ref, className, compClass->GetName() ) );
75 for(
const wxString& className : unassignedClasses )
77 if( compClass->ContainsClassName( className ) )
79 BOOST_ERROR( wxString::Format(
80 "%s component class failed (%s found but not expected - full class %s)",
81 ref, className, compClass->GetName() ) );
86 for(
const auto fp : m_board->Footprints() )
88 if( fp->Reference().GetText() == wxT(
"C1" ) )
90 testClasses(
"C1", fp->GetComponentClass(), {
"CAP_1",
"CLASS_3",
"CLASS_4"});
93 if( fp->Reference().GetText() == wxT(
"C2" ) )
95 testClasses(
"C2", fp->GetComponentClass(), {
"CAP_2",
"CLASS_3"});
98 if( fp->Reference().GetText() == wxT(
"C3" ) )
100 testClasses(
"C2", fp->GetComponentClass(), {});
103 if( fp->Reference().GetText() == wxT(
"R8" ) )
105 testClasses(
"R8", fp->GetComponentClass(), {
"RES_1",
"RES_2"});
108 if( fp->Reference().GetText() == wxT(
"R88" ) )
110 testClasses(
"R88", fp->GetComponentClass(), {
"RES_2"});
113 if( fp->Reference().GetText() == wxT(
"R2" ) )
115 testClasses(
"R2", fp->GetComponentClass(), {
"CLASS_1",
"RES_1",
"RES_2",
"RES_3"});
118 if( fp->Reference().GetText() == wxT(
"R1" ) )
120 testClasses(
"R1", fp->GetComponentClass(), {
"CLASS_1",
"CLASS_2",
"RES_1",
"RES_2",
"RES_4"});
123 if( fp->Reference().GetText() == wxT(
"U1" ) )
125 testClasses(
"U1", fp->GetComponentClass(), {
"ANY" } );
128 if( fp->Reference().GetText() == wxT(
"U2" ) )
130 testClasses(
"U2", fp->GetComponentClass(), {
"ANY" } );
133 if( fp->Reference().GetText() == wxT(
"U3" ) )
135 testClasses(
"U3", fp->GetComponentClass(), {
"MULTI_REF" } );
138 if( fp->Reference().GetText() == wxT(
"U4" ) )
140 testClasses(
"U4", fp->GetComponentClass(), {
"MULTI_REF" } );
143 if( fp->Reference().GetText() == wxT(
"U55" ) )
145 testClasses(
"U55", fp->GetComponentClass(), {
"REF_WILDCARD",
"REF_WILDCARD2" } );
148 if( fp->Reference().GetText() == wxT(
"U555" ) )
150 testClasses(
"U555", fp->GetComponentClass(), {
"REF_WILDCARD2" } );
153 if( fp->Reference().GetText() == wxT(
"R3" ) )
155 testClasses(
"R3", fp->GetComponentClass(), {
"/SHEET1/",
"RES_1",
"RES_2" } );
Container for design settings for a BOARD object.
A lightweight representation of a component class.
void LoadBoard(SETTINGS_MANAGER &aSettingsManager, const wxString &aRelPath, std::unique_ptr< BOARD > &aBoard)
SETTINGS_MANAGER m_settingsManager
std::unique_ptr< BOARD > m_board
PCB_COMPONENT_CLASS_FIXTURE()
BOOST_FIXTURE_TEST_CASE(ComponentClasses, PCB_COMPONENT_CLASS_FIXTURE)