50 std::unique_ptr<LIB_SYMBOL> symbol = std::make_unique<LIB_SYMBOL>( wxS(
"Symbol" ) );
51 std::unique_ptr<SCH_SCREEN> screen = std::make_unique<SCH_SCREEN>();
55 SYMBOL_BUFFER buffer( std::move( symbol ), std::move( screen ) );
58 BOOST_CHECK( &buffer.
GetSymbol() == &symbolRef );
64 std::unique_ptr<LIB_SYMBOL> originalSymbol =
65 std::make_unique<LIB_SYMBOL>( wxS(
"OriginalSymbol" ) );
66 LIB_SYMBOL& originalSymbolRef = *originalSymbol;
70 BOOST_CHECK( &buffer.
GetOriginal() == &originalSymbolRef );
71 BOOST_CHECK( buffer.
GetOriginal() == originalSymbolRef );
81 wxArrayString symbolNames;
87 auto parentSymbol1 = std::make_unique<LIB_SYMBOL>( wxS(
"Parent1" ) );
94 parentSymbol1->GetValueField().SetText( parentSymbol1->GetName() );
95 libBuffer.
CreateBuffer( std::move( parentSymbol1 ), std::make_unique<SCH_SCREEN>() );
96 BOOST_CHECK( libBuffer.
GetSymbol( parentSymbol1Ref.
GetName() ) == &parentSymbol1Ref );
113 auto childSymbol1 = std::make_unique<LIB_SYMBOL>( wxS(
"Child1" ) );
116 childSymbol1->
SetParent( &parentSymbol1Ref );
117 childSymbol1->GetValueField().SetText( childSymbol1->GetName() );
118 libBuffer.
CreateBuffer( std::move( childSymbol1 ), std::make_unique<SCH_SCREEN>() );
119 BOOST_CHECK( libBuffer.
GetSymbol( childSymbol1Ref.
GetName() ) == &childSymbol1Ref );
140 std::shared_ptr<SYMBOL_BUFFER> buf = libBuffer.
GetBuffer( parentSymbol1Ref.
GetName() );
150 BOOST_CHECK( deletedOk );
151 BOOST_CHECK( libBuffer.
GetBuffers().empty() );
162 props.
name = wxS(
"Standalone" );
175 std::unique_ptr<LIB_SYMBOL> standalone =
180 BOOST_CHECK( standalone->GetPinNameOffset() > 0 );
182 auto parent = std::make_unique<LIB_SYMBOL>( wxS(
"Parent" ) );
183 parent->GetValueField().SetText( parent->GetName() );
186 parent->AddField( user );
188 props.
name = wxS(
"Child" );
195 std::unique_ptr<LIB_SYMBOL> child =
198 BOOST_CHECK( child->GetParent().lock().get() == parent.get() );
199 BOOST_CHECK( child->GetFootprintField().GetText().IsEmpty() );
200 BOOST_CHECK( child->GetDatasheetField().GetText().IsEmpty() );
202 std::vector<SCH_FIELD*> childFields;
203 child->GetFields( childFields );
212 BOOST_CHECK( field->GetText().IsEmpty() );
216 BOOST_CHECK( found );
void SetContentModified(bool aModified=true)
Store a working copy of a library.
size_t GetDerivedSymbolNames(const wxString &aSymbolName, wxArrayString &aList)
Fetch all of the symbols derived from a aSymbolName into aList.
bool CreateBuffer(std::unique_ptr< LIB_SYMBOL > aCopy, std::unique_ptr< SCH_SCREEN > aScreen)
Create a new buffer to store a symbol. LIB_BUFFER takes ownership of aCopy.
bool DeleteBuffer(const SYMBOL_BUFFER &aSymbolBuf)
Delete the given symbol buffer from the library buffer.
void GetSymbolNames(wxArrayString &aSymbolNames, SYMBOL_NAME_FILTER aFilter=SYMBOL_NAME_FILTER::ALL)
Fetch a list of root symbols names from the library buffer.
const std::deque< std::shared_ptr< SYMBOL_BUFFER > > & GetBuffers() const
Return all buffered symbols.
std::shared_ptr< SYMBOL_BUFFER > GetBuffer(const wxString &aAlias) const
Return a symbol buffer with LIB_SYMBOL holding a symbolic alias.
LIB_SYMBOL * GetSymbol(const wxString &aAlias) const
Return the working copy of a LIB_SYMBOL root object with specified alias.
bool HasDerivedSymbols(const wxString &aParentName) const
Check to see any symbols in the buffer are derived from a parent named aParentName.
bool UpdateBuffer(SYMBOL_BUFFER &aSymbolBuf, const LIB_SYMBOL &aCopy)
Update the buffered symbol with the contents of aCopy.
static std::unique_ptr< LIB_SYMBOL > CreateSymbol(const NEW_SYMBOL_PROPERTIES &aProps, LIB_SYMBOL *aParent)
Define a library symbol object.
SCH_FIELD & GetDescriptionField()
Return reference to the description field.
void SetParent(LIB_SYMBOL *aParent=nullptr)
wxString GetName() const override
void SetText(const wxString &aText) override
LIB_SYMBOL & GetSymbol() const
SCH_SCREEN * GetScreen() const
LIB_SYMBOL & GetOriginal() const
void SetOriginal(std::unique_ptr< LIB_SYMBOL > aSymbol)
SYMBOL_LIBRARY_MANAGER_TEST_FIXTURE()
wxString parentSymbolName
bool keepContentUserFields
bool unitsInterchangeable
@ USER
The field ID hasn't been set yet; field is invalid.
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_CASE(SymbolBuffer)
Test the SYMBOL_BUFFER object.
BOOST_CHECK_EQUAL(result, "25.4")