53 BOOST_TEST_CHECKPOINT(
"Loading schematic " << fn.GetFullPath() );
59 m_pi.reset( SCH_IO_MGR::FindPlugin( SCH_IO_MGR::SCH_KICAD ) );
64 m_manager.LoadProject( pro.GetFullPath() );
78 BOOST_REQUIRE_EQUAL(
m_pi->GetError().IsEmpty(),
true );
83 for(
SCH_SCREEN* screen = screens.GetFirst(); screen; screen = screens.GetNext() )
84 screen->UpdateLocalLibSymbolLinks();
89 if(
m_schematic->RootScreen()->GetFileFormatVersionAtLoad() < 20221002 )
92 if(
m_schematic->RootScreen()->GetFileFormatVersionAtLoad() < 20221110 )
95 if(
m_schematic->RootScreen()->GetFileFormatVersionAtLoad() < 20221206 )
97 for(
SCH_SCREEN* screen = screens.GetFirst(); screen; screen = screens.GetNext() )
98 screen->MigrateSimModels();
101 if( m_schematic->RootScreen()->GetFileFormatVersionAtLoad() < 20230221 )
102 screens.FixLegacyPowerSymbolMismatches();
106 sheet.UpdateAllScreenReferences();
111 std::unordered_set<SCH_SCREEN*> all_screens;
114 all_screens.insert(
path.LastScreen() );
118 m_schematic->ConnectionGraph()->Recalculate( sheets,
true );
125 fn.AppendDir(
"netlists" );
126 fn.AppendDir( aBaseName );
127 fn.SetName( aBaseName );
134template <
typename Exporter>
137 wxFileName netFile =
m_schematic->Project().GetProjectFullName();
140 netFile.SetName( netFile.GetName() +
"_test" );
144 return netFile.GetFullPath();
148template <
typename Exporter>
152 BOOST_TEST_CHECKPOINT(
"Writing netlist " << netlistPath );
155 if( wxFileExists( netlistPath ) )
156 wxRemoveFile( netlistPath );
159 std::unique_ptr<Exporter> exporter = std::make_unique<Exporter>(
m_schematic.get(),
nullptr );
167template <
typename Exporter>
175template <
typename Exporter>
virtual ~SCHEMATIC_TEST_FIXTURE()
SETTINGS_MANAGER m_manager
std::unique_ptr< SCHEMATIC > m_schematic
virtual void LoadSchematic(const wxFileName &aFn)
IO_RELEASER< SCH_IO > m_pi
virtual wxFileName SchematicQAPath(const wxString &aBaseName)
A factory which returns an instance of a SCH_IO.
static std::vector< std::pair< SCH_RULE_AREA *, SCH_SCREEN * > > UpdateRuleAreasInScreens(std::unordered_set< SCH_SCREEN * > &screens, KIGFX::SCH_VIEW *view)
Update all rule area connectvity / caches in the given sheet paths.
Container class that holds multiple SCH_SCREEN objects in a hierarchy.
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
void UpdateSheetInstanceData(const std::vector< SCH_SHEET_INSTANCE > &aSheetInstances)
Update all of the sheet instance information using aSheetInstances.
void UpdateSymbolInstanceData(const std::vector< SCH_SYMBOL_INSTANCE > &aSymbolInstances)
Update all of the symbol instance information using aSymbolInstances.
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
void TestNetlist(const wxString &aBaseName)
virtual void CompareNetlists()=0
virtual unsigned GetNetlistOptions()
virtual wxString GetNetlistPath(bool aTest=false)
A wrapper for reporting to a wxString object.
static const std::string NetlistFileExtension
static const std::string ProjectFileExtension
static const std::string KiCadSchematicFileExtension
void LoadSchematic(SETTINGS_MANAGER &aSettingsManager, const wxString &aRelPath, std::unique_ptr< SCHEMATIC > &aSchematic)
std::string GetEeschemaTestDataDir()
Get the configured location of Eeschema test data.
BOOST_REQUIRE(intersection.has_value()==c.ExpectedIntersection.has_value())
IbisParser parser & reporter
Definition of file extensions used in Kicad.