/* * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2022 KiCad Developers, see AUTHORS.TXT for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, you may find one at * http://www.gnu.org/licenses/ */ #include #include #include #include #include #include #include #include #include struct ERC_REGRESSION_TEST_FIXTURE { ERC_REGRESSION_TEST_FIXTURE() : m_settingsManager( true /* headless */ ) { } SETTINGS_MANAGER m_settingsManager; std::unique_ptr m_schematic; }; BOOST_FIXTURE_TEST_CASE( ERCFourWayJunctions, ERC_REGRESSION_TEST_FIXTURE ) { LOCALE_IO dummy; // Check for Errors when using global labels std::vector> tests = { { "issue17870", 6 } }; for( const std::pair& test : tests ) { KI_TEST::LoadSchematic( m_settingsManager, test.first, m_schematic ); ERC_SETTINGS& settings = m_schematic->ErcSettings(); SHEETLIST_ERC_ITEMS_PROVIDER errors( m_schematic.get() ); settings.m_ERCSeverities[ERCE_FOUR_WAY_JUNCTION] = RPT_SEVERITY_ERROR; ERC_TESTER tester( m_schematic.get() ); tester.TestFourWayJunction(); errors.SetSeverities( RPT_SEVERITY_ERROR | RPT_SEVERITY_WARNING ); ERC_REPORT reportWriter( m_schematic.get(), EDA_UNITS::MILLIMETRES ); BOOST_CHECK_MESSAGE( errors.GetCount() == test.second, "Expected " << test.second << " errors in " << test.first.ToStdString() << " but got " << errors.GetCount() << "\n" << reportWriter.GetTextReport() ); } }