41 boost::unit_test::data::make( {
false,
true } ), oldEmptyTable )
47 for(
const wxString& filename : { wxString(
"hierarchy_aliases.kicad_pro" ),
48 wxString(
"hierarchy_aliases.kicad_sch" ),
49 wxString(
"sub1.kicad_sch" ), wxString(
"sub2.kicad_sch" ) } )
54 const wxString projectFile =
directory.PathStr() +
"/hierarchy_aliases.kicad_pro";
55 const wxString schematicFile =
directory.PathStr() +
"/hierarchy_aliases.kicad_sch";
60 std::ifstream input( projectFile.ToStdString() );
61 nlohmann::json document = nlohmann::json::parse( input );
63 document[
"meta"][
"version"] = 3;
64 document[
"schematic"][
"bus_aliases"] = nlohmann::json::object();
65 std::ofstream output( projectFile.ToStdString() );
66 output << document.dump( 2 );
71 std::vector<wxString> retainedMembers;
74 auto schematic = std::make_unique<SCHEMATIC>( &
project );
79 schematic->AddTopLevelSheet( root );
80 schematic->RemoveTopLevelSheet(
empty );
97 auto schematic = load( settings.
Prj() );
100 schematic->SetBusAliases( {} );
108 auto schematic = load( settings.
Prj() );
109 BOOST_CHECK( schematic->GetAllBusAliases().empty() );
112 auto sheets = schematic->RootScreen()->Items().OfType(
SCH_SHEET_T );
114 std::unique_ptr<SCH_SHEET> appended(
115 static_cast<SCH_SHEET*
>( ( *sheets.begin() )->Duplicate(
false ) ) );
116 appended->SetScreen(
nullptr );
117 appended->SetFileName(
source +
"sub1.kicad_sch" );
122 schematic->AddTopLevelSheet( appended.release() );
123 auto imported = schematic->GetBusAlias(
"ALIAS2" );
125 BOOST_CHECK( !schematic->GetBusAlias(
"ALIAS1" ) );
126 auto changed = imported->Clone();
127 retainedMembers = imported->Members();
128 std::reverse( retainedMembers.begin(), retainedMembers.end() );
130 changed->SetMembers( retainedMembers );
131 schematic->SetBusAliases( { changed } );
138 auto schematic = load( settings.
Prj() );
140 BOOST_CHECK( schematic->GetBusAlias(
"ALIAS2" )->Members() == retainedMembers );
141 BOOST_CHECK( !schematic->GetBusAlias(
"ALIAS1" ) );
144 const std::map<std::string, UTF8> properties{ {
"hierarchical_sheet_load",
"" } };
146 source +
"hierarchy_aliases.kicad_sch", schematic.get(),
nullptr, &properties ) );
149 schematic->AddTopLevelSheet( imported.release() );
152 BOOST_CHECK( schematic->GetBusAlias(
"ALIAS2" )->Members() != retainedMembers );
SCH_SHEET * LoadSchematicFile(const wxString &aFileName, SCHEMATIC *aSchematic, SCH_SHEET *aAppendToMe=nullptr, const std::map< std::string, UTF8 > *aProperties=nullptr) override
Load information from some input file format that this SCH_IO implementation knows about,...