58 std::vector<std::pair<wxString, int>> tests = {
59 {
"NoConnectOnPin", 0 },
60 {
"NoConnectOnLine", 0 },
61 {
"NoConnectOnLineWithLabel", 1 },
62 {
"NoConnectOnLineWithGlobalLabel", 1 },
63 {
"NoConnectOnLineWithHierarchicalLabel", 3 },
64 {
"NoConnectPinsConnectedByLine", 1 },
65 {
"NoConnectPinsConnectedByLabel", 1 },
66 {
"issue24201/issue24201", 0 },
67 {
"issue24201_label/issue24201", 1 },
70 for(
bool useEngine : {
false,
true } )
74 for(
const std::pair<wxString, int>&
test : tests )
87 m_schematic->ConnectionGraph()->RunERC();
101 "Expected " <<
test.second <<
" errors in " <<
test.first.ToStdString()
102 <<
" but got " << errors.
GetCount() <<
"\n"
116 const std::vector<wxString> fixtures = {
117 "NoConnectOnPin",
"NoConnectOnLine",
"NoConnectOnLineWithLabel",
118 "NoConnectOnLineWithGlobalLabel",
"NoConnectOnLineWithHierarchicalLabel",
119 "NoConnectPinsConnectedByLine",
"NoConnectPinsConnectedByLabel",
120 "issue24201/issue24201",
"issue24201_label/issue24201",
"NoConnectOnPin"
124 const size_t movedFlagVariant = fixtures.size() - 1;
126 for(
size_t variant = 0; variant < fixtures.size(); ++variant )
128 const wxString& fixture = fixtures[variant];
134 std::unique_ptr<SCHEMATIC> schematic;
137 for(
auto& [code, severity] : schematic->ErcSettings().m_ERCSeverities )
143 if( variant == movedFlagVariant )
154 schematic->RebuildConnectivity();
157 schematic->ConnectionGraph()->RunERC();
162 static_cast<SCH_MARKER*
>( item )->SetExcluded(
true,
"Retained NC flag" );
165 schematic->RecordERCExclusions();
166 using DIAGNOSTIC = std::tuple<int, KIID_PATH, std::vector<KIID>,
VECTOR2I>;
167 const auto collect = [&]()
169 std::vector<DIAGNOSTIC>
result;
170 std::set<SCH_SCREEN*> screens;
173 screens.insert(
path.LastScreen() );
177 std::vector<SCH_MARKER*> markers;
181 auto* marker =
static_cast<SCH_MARKER*
>( item );
182 const auto error = std::static_pointer_cast<ERC_ITEM>( marker->GetRCItem() );
183 BOOST_CHECK( marker->IsExcluded() );
185 BOOST_CHECK( error->MainItemHasSheetPath() );
186 BOOST_CHECK( !error->AuxItemHasSheetPath() );
187 result.emplace_back( error->GetErrorCode(), error->GetSpecificSheetPath().PathRef(),
188 error->GetIDs(), marker->GetPosition() );
189 markers.push_back( marker );
193 screen->DeleteItem( marker );
201 if( variant == movedFlagVariant )
203 BOOST_REQUIRE_EQUAL(
expected.size(), 1 );
208 schematic->RebuildConnectivity();
209 schematic->ConnectionGraph()->Reset();
211 schematic->ResolveERCExclusionsPostUpdate();
212 BOOST_CHECK( collect() ==
expected );
216 BOOST_CHECK( collect().
empty() );
wxString result
Test unit parsing edge cases and error handling.
BOOST_CHECK_EQUAL(result, "25.4")