42 m_schematic( nullptr ),
56 wxFileName fn = GetSchematicPath( aBaseName );
58 BOOST_TEST_CHECKPOINT(
"Loading schematic " << fn.GetFullPath() );
64 m_schematic.release();
66 m_manager.LoadProject( pro.GetFullPath() );
70 m_schematic = std::make_unique<SCHEMATIC>( &m_manager.Prj() );
71 m_schematic->SetRoot( m_pi->LoadSchematicFile( fn.GetFullPath(), m_schematic.get() ) );
73 BOOST_REQUIRE_EQUAL( m_pi->GetError().IsEmpty(),
true );
75 m_schematic->CurrentSheet().push_back( &m_schematic->Root() );
79 for(
SCH_SCREEN* screen = screens.GetFirst(); screen; screen = screens.GetNext() )
80 screen->UpdateLocalLibSymbolLinks();
85 if( m_schematic->RootScreen()->GetFileFormatVersionAtLoad() < 20221002 )
88 if( m_schematic->RootScreen()->GetFileFormatVersionAtLoad() < 20221110 )
91 if( m_schematic->RootScreen()->GetFileFormatVersionAtLoad() < 20221206 )
93 for(
SCH_SCREEN* screen = screens.GetFirst(); screen; screen = screens.GetNext() )
94 screen->MigrateSimModels();
97 if( m_schematic->RootScreen()->GetFileFormatVersionAtLoad() < 20230221 )
98 screens.FixLegacyPowerSymbolMismatches();
104 sheet.UpdateAllScreenReferences();
109 std::unordered_set<SCH_SCREEN*> all_screens;
112 all_screens.insert(
path.LastScreen() );
116 m_schematic->ConnectionGraph()->Recalculate( sheets,
true );
123 fn.AppendDir(
"netlists" );
124 fn.AppendDir( aBaseName );
125 fn.SetName( aBaseName );
132template <
typename Exporter>
135 wxFileName netFile = m_schematic->Prj().GetProjectFullName();
138 netFile.SetName( netFile.GetName() +
"_test" );
142 return netFile.GetFullPath();
146template <
typename Exporter>
149 wxString netlistPath = GetNetlistPath(
true );
150 BOOST_TEST_CHECKPOINT(
"Writing netlist " << netlistPath );
153 if( wxFileExists( netlistPath ) )
154 wxRemoveFile( netlistPath );
157 std::unique_ptr<Exporter> exporter = std::make_unique<Exporter>( m_schematic.get() );
159 bool success = exporter->WriteNetlist( netlistPath, GetNetlistOptions(), reporter );
165template <
typename Exporter>
168 wxRemoveFile( GetNetlistPath(
true ) );
169 m_schematic->Reset();
173template <
typename Exporter>
~SCHEMATIC_TEST_FIXTURE()
virtual void LoadSchematic(const wxString &aRelativePath)
virtual wxFileName GetSchematicPath(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 AnnotatePowerSymbols()
Silently annotate the not yet annotated power symbols of the entire hierarchy of the sheet path list.
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...
void TestNetlist(const wxString &aBaseName)
virtual wxString GetNetlistPath(bool aTest=false)
A wrapper for reporting to a wxString object.
const wxString & GetMessages() const
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())
Definition of file extensions used in Kicad.