55 std::vector<std::pair<wxString, int>> tests = {
56 {
"NoConnectOnPin", 0 },
57 {
"NoConnectOnLine", 0 },
58 {
"NoConnectOnLineWithLabel", 1 },
59 {
"NoConnectOnLineWithGlobalLabel", 1 },
60 {
"NoConnectOnLineWithHierarchicalLabel", 3 },
61 {
"NoConnectPinsConnectedByLine", 1 },
62 {
"NoConnectPinsConnectedByLabel", 1 },
63 {
"issue24201/issue24201", 0 },
64 {
"issue24201_label/issue24201", 1 },
67 for(
bool useEngine : {
false,
true } )
71 for(
const std::pair<wxString, int>&
test : tests )
84 m_schematic->ConnectionGraph()->RunERC();
98 "Expected " <<
test.second <<
" errors in " <<
test.first.ToStdString()
99 <<
" but got " << errors.
GetCount() <<
"\n"
113 const std::vector<wxString> fixtures = {
114 "NoConnectOnPin",
"NoConnectOnLine",
"NoConnectOnLineWithLabel",
115 "NoConnectOnLineWithGlobalLabel",
"NoConnectOnLineWithHierarchicalLabel",
116 "NoConnectPinsConnectedByLine",
"NoConnectPinsConnectedByLabel",
117 "issue24201/issue24201",
"issue24201_label/issue24201",
"NoConnectOnPin"
121 const size_t movedFlagVariant = fixtures.size() - 1;
123 for(
size_t variant = 0; variant < fixtures.size(); ++variant )
125 const wxString& fixture = fixtures[variant];
131 std::unique_ptr<SCHEMATIC> schematic;
134 for(
auto& [code, severity] : schematic->ErcSettings().m_ERCSeverities )
140 if( variant == movedFlagVariant )
151 schematic->RebuildConnectivity();
154 schematic->ConnectionGraph()->RunERC();
159 static_cast<SCH_MARKER*
>( item )->SetExcluded(
true,
"Retained NC flag" );
162 schematic->RecordERCExclusions();
163 using DIAGNOSTIC = std::tuple<int, KIID_PATH, std::vector<KIID>,
VECTOR2I>;
164 const auto collect = [&]()
166 std::vector<DIAGNOSTIC>
result;
167 std::set<SCH_SCREEN*> screens;
170 screens.insert(
path.LastScreen() );
174 std::vector<SCH_MARKER*> markers;
178 auto* marker =
static_cast<SCH_MARKER*
>( item );
179 const auto error = std::static_pointer_cast<ERC_ITEM>( marker->GetRCItem() );
180 BOOST_CHECK( marker->IsExcluded() );
182 BOOST_CHECK( error->MainItemHasSheetPath() );
183 BOOST_CHECK( !error->AuxItemHasSheetPath() );
184 result.emplace_back( error->GetErrorCode(), error->GetSpecificSheetPath().PathRef(),
185 error->GetIDs(), marker->GetPosition() );
186 markers.push_back( marker );
190 screen->DeleteItem( marker );
198 if( variant == movedFlagVariant )
200 BOOST_REQUIRE_EQUAL(
expected.size(), 1 );
205 schematic->RebuildConnectivity();
206 schematic->ConnectionGraph()->Reset();
208 schematic->ResolveERCExclusionsPostUpdate();
209 BOOST_CHECK( collect() ==
expected );
213 BOOST_CHECK( collect().
empty() );
wxString result
Test unit parsing edge cases and error handling.
BOOST_CHECK_EQUAL(result, "25.4")