KiCad PCB EDA Suite
Loading...
Searching...
No Matches
test_drc_creepage_issue21482.cpp File Reference

Performance regression test for creepage DRC check. More...

#include <qa_utils/wx_utils/unit_test_utils.h>
#include <pcbnew_utils/board_test_utils.h>
#include <board.h>
#include <board_design_settings.h>
#include <footprint.h>
#include <pcb_track.h>
#include <pcb_marker.h>
#include <drc/drc_item.h>
#include <drc/drc_engine.h>
#include <settings/settings_manager.h>
#include <widgets/report_severity.h>
#include <chrono>
#include <cstdlib>
#include <fstream>

Go to the source code of this file.

Classes

struct  DRC_CREEPAGE_PERF_TEST_FIXTURE
 

Functions

 BOOST_FIXTURE_TEST_CASE (CreepagePerformanceIssue21482, DRC_CREEPAGE_PERF_TEST_FIXTURE)
 Test that creepage DRC check completes in a reasonable time.
 

Detailed Description

Performance regression test for creepage DRC check.

This test verifies that the creepage DRC check completes in a reasonable time even with many copper elements that are not in the creepage checking area.

Takes 11 seconds on my machine. Hopefully faster on better machines. Shooting for <15 seconds on boards with thousands of elements

Definition in file test_drc_creepage_issue21482.cpp.

Function Documentation

◆ BOOST_FIXTURE_TEST_CASE()

BOOST_FIXTURE_TEST_CASE ( CreepagePerformanceIssue21482 ,
DRC_CREEPAGE_PERF_TEST_FIXTURE  )

Test that creepage DRC check completes in a reasonable time.

This test uses a board with:

  • Components with creepage constraints (BI/RI netclasses)
  • Many vias/tracks that are NOT in the creepage checking area

The creepage check should NOT scale linearly with the number of unrelated copper elements.

Definition at line 87 of file test_drc_creepage_issue21482.cpp.

References BOOST_TEST_MESSAGE(), DRC_ENGINE::ClearViolationHandler(), DRCE_CREEPAGE, DRCE_FIRST, DRCE_LAST, end, BOARD_DESIGN_SETTINGS::GetSeverity(), KI_TEST::LoadBoard(), BOARD_DESIGN_SETTINGS::m_DRCEngine, BOARD_DESIGN_SETTINGS::m_DRCSeverities, MM, RPT_SEVERITY_ERROR, RPT_SEVERITY_IGNORE, DRC_ENGINE::RunTests(), and DRC_ENGINE::SetViolationHandler().