61 BOOST_CHECK_EQUAL( m_part_no_data.GetName(),
"part_name" );
64 BOOST_CHECK_EQUAL( m_part_no_data.GetLibraryName(),
"" );
65 BOOST_CHECK_EQUAL( m_part_no_data.GetLib(),
nullptr );
68 BOOST_CHECK_EQUAL( m_part_no_data.IsRoot(),
true );
69 BOOST_CHECK_EQUAL( m_part_no_data.IsAlias(),
false );
70 BOOST_CHECK_EQUAL( m_part_no_data.SharedPtr().use_count(), 2 );
73 BOOST_CHECK_EQUAL( m_part_no_data.GetUnitCount(), 1 );
74 BOOST_CHECK_EQUAL( m_part_no_data.IsMulti(),
false );
77 BOOST_CHECK_EQUAL( m_part_no_data.HasConversion(),
false );
87 BOOST_CHECK_EQUAL( m_part_no_data.GetDrawItems().size(), 4 );
88 BOOST_CHECK_EQUAL( m_part_no_data.GetAllLibPins().size(), 0 );
97 std::vector<LIB_FIELD> fields;
98 m_part_no_data.GetFields( fields );
121 std::vector<LIB_FIELD> fields;
122 m_part_no_data.GetFields( fields );
125 const std::string newFieldName =
"new_field";
126 wxString nonConstNewFieldName = newFieldName;
127 fields.push_back(
LIB_FIELD( 42, nonConstNewFieldName ) );
130 m_part_no_data.SetFields( fields );
143 LIB_FIELD* gotNewField = m_part_no_data.GetFieldById( 42 );
145 BOOST_REQUIRE_NE( gotNewField,
nullptr );
151 gotNewField = m_part_no_data.FindField( newFieldName );
153 BOOST_REQUIRE_NE( gotNewField,
nullptr );
179 const std::vector<TEST_LIB_SYMBOL_SUBREF_CASE> cases = {
352 for(
const auto& c : cases )
355 "Subref: " << c.m_index <<
", " << c.m_addSep <<
" -> '" << c.m_expSubRef <<
"'" )
357 const auto subref = m_part_no_data.SubReference( c.m_index, c.m_addSep );
358 BOOST_CHECK_EQUAL( subref, c.m_expSubRef );
373 BOOST_CHECK_EQUAL( m_part_no_data.Compare( m_part_no_data ), 0 );
376 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
379 testPart.
SetName(
"tart_name" );
380 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
381 testPart.
SetName(
"cart_name" );
382 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
383 testPart.
SetName(
"part_name" );
389 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
390 id.SetLibItemName(
"cart_name" );
392 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
393 id.SetLibItemName(
"part_name" );
398 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
400 m_part_no_data.SetUnitCount( 2 );
401 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
402 m_part_no_data.SetUnitCount( 1 );
406 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
408 m_part_no_data.SetPower();
409 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
410 m_part_no_data.SetNormal();
415 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
416 m_part_no_data.RemoveDrawItem( &m_part_no_data.GetDrawItems()[
LIB_SHAPE_T].front() );
417 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
420 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
421 m_part_no_data.RemoveDrawItem( &m_part_no_data.GetDrawItems()[
LIB_SHAPE_T].front() );
426 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
427 m_part_no_data.RemoveDrawItem( &m_part_no_data.GetDrawItems()[
LIB_SHAPE_T].front() );
428 m_part_no_data.AddDrawItem(
new LIB_PIN( &m_part_no_data ) );
429 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
430 m_part_no_data.RemoveDrawItem( &m_part_no_data.GetDrawItems()[
LIB_PIN_T].front() );
434 wxArrayString footPrintFilters;
435 BOOST_CHECK( m_part_no_data.GetFPFilters() == footPrintFilters );
436 footPrintFilters.Add(
"b" );
438 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
439 m_part_no_data.SetFPFilters( footPrintFilters );
440 footPrintFilters.Clear();
442 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
443 footPrintFilters.Clear();
444 m_part_no_data.SetFPFilters( footPrintFilters );
448 m_part_no_data.SetDescription(
"b" );
450 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
451 m_part_no_data.SetDescription(
"a" );
452 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
453 m_part_no_data.SetDescription(
"c" );
454 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
455 m_part_no_data.SetDescription( wxEmptyString );
459 m_part_no_data.SetKeyWords(
"b" );
461 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
462 m_part_no_data.SetKeyWords(
"a" );
463 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
464 m_part_no_data.SetKeyWords(
"c" );
465 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
466 m_part_no_data.SetKeyWords( wxEmptyString );
471 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
473 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
478 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
480 m_part_no_data.LockUnits(
true );
481 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
482 m_part_no_data.LockUnits(
false );
486 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
488 m_part_no_data.SetIncludeInBom(
false );
489 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
490 m_part_no_data.SetIncludeInBom(
true );
494 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
496 m_part_no_data.SetIncludeOnBoard(
false );
497 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
498 m_part_no_data.SetIncludeOnBoard(
true );
501 m_part_no_data.SetShowPinNames(
false );
502 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
503 m_part_no_data.SetShowPinNames(
true );
505 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
509 m_part_no_data.SetShowPinNumbers(
false );
510 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
511 m_part_no_data.SetShowPinNumbers(
true );
513 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
530 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1, 1 ).size() == 0 );
534 m_part_no_data.AddDrawItem( pin1 );
535 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 0, 0 ).size() == 1 );
539 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1, 0 ).size() == 1 );
543 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1, 1 ).size() == 1 );
548 m_part_no_data.SetUnitCount( 2 );
552 m_part_no_data.AddDrawItem( pin2 );
553 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 2, 2 ).size() == 1 );
557 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1, 1 ).size() == 0 );
558 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 2, 1 ).size() == 1 );
560 m_part_no_data.RemoveDrawItem( pin2 );
561 m_part_no_data.RemoveDrawItem( pin1 );
562 m_part_no_data.RemoveDrawItem( &*m_part_no_data.GetDrawItems().begin() );
572 BOOST_CHECK( m_part_no_data.GetUnitDrawItems().size() == 0 );
577 m_part_no_data.AddDrawItem( pin1 );
578 std::vector<struct LIB_SYMBOL_UNIT> units = m_part_no_data.GetUnitDrawItems();
591 std::unique_ptr<LIB_SYMBOL> parent = std::make_unique<LIB_SYMBOL>(
"parent" );
593 std::unique_ptr<LIB_SYMBOL> child1 = std::make_unique<LIB_SYMBOL>(
"child1", parent.get() );
598 BOOST_CHECK_EQUAL( parent->SharedPtr().use_count(), 3 );
599 BOOST_CHECK_EQUAL( child1->GetUnitCount(), 1 );
600 parent->SetUnitCount( 4 );
601 BOOST_CHECK_EQUAL( child1->GetUnitCount(), 4 );
603 BOOST_CHECK_EQUAL( child1->GetUnitCount(), 1 );
605 BOOST_CHECK_EQUAL( parent->SharedPtr().use_count(), 2 );
614 std::shared_ptr<LIB_SYMBOL>
copy = std::make_shared<LIB_SYMBOL>( m_part_no_data );
619BOOST_AUTO_TEST_SUITE_END()
Field object used in symbol libraries.
A logical library item identifier and consists of various portions much like a URI.
int SetLibItemName(const UTF8 &aLibItemName)
Override the library item name portion of the LIB_ID to aLibItemName.
void SetConvert(int aConvert)
void SetNumber(const wxString &aNumber)
Define a library symbol object.
void SetIncludeOnBoard(bool aIncludeOnBoard)
Set or clear include in board netlist flag.
void RemoveDrawItem(LIB_ITEM *aItem)
Remove draw aItem from list.
void SetShowPinNames(bool aShow)
Set or clear the pin name visibility flag.
int GetPinNameOffset() const
void SetUnitCount(int aCount, bool aDuplicateDrawItems=true)
Set the units per symbol count.
void SetPinNameOffset(int aOffset)
Set the offset in mils of the pin name text from the pin symbol.
void LockUnits(bool aLockUnits)
Set interchangeable the property for symbol units.
void SetShowPinNumbers(bool aShow)
Set or clear the pin number visibility flag.
LIB_ITEMS_CONTAINER & GetDrawItems()
Return a reference to the draw item list.
LIB_ID GetLibId() const override
void SetDescription(const wxString &aDescription)
void SetKeyWords(const wxString &aKeyWords)
void AddDrawItem(LIB_ITEM *aItem, bool aSort=true)
Add a new draw aItem to the draw object list and sort according to aSort.
void SetFPFilters(const wxArrayString &aFilters)
int Compare(const LIB_SYMBOL &aRhs, int aCompareFlags=0) const
Comparison test that can be used for operators.
void SetIncludeInBom(bool aIncludeInBom)
Set or clear the include in schematic bill of materials flag.
void SetLibId(const LIB_ID &aLibId)
virtual void SetName(const wxString &aName)
TEST_LIB_SYMBOL_FIXTURE()
LIB_SYMBOL m_part_no_data
Part with no extra data set
std::shared_ptr< LIB_SYMBOL > LIB_SYMBOL_SPTR
shared pointer to LIB_SYMBOL
bool AreDefaultFieldsCorrect(const std::vector< LIB_FIELD > &aFields)
Predicate to check that the mandatory fields in a LIB_FIELDS object look sensible.
bool FieldNameIdMatches(const LIB_FIELD &aField, const std::string &aExpectedName, int aExpectedId)
Predicate to check a field name is as expected.
@ FOOTPRINT_FIELD
Field Name Module PCB, i.e. "16DIP300".
@ VALUE_FIELD
Field Value of part, i.e. "3.3K".
@ MANDATORY_FIELDS
The first 4 are mandatory, and must be instantiated in SCH_COMPONENT and LIB_PART constructors.
@ REFERENCE_FIELD
Field Reference of part, i.e. "IC21".
BOOST_CHECK(box.ClosestPointTo(VECTOR2D(0, 0))==VECTOR2D(1, 2))
Test suite for KiCad math code.
BOOST_AUTO_TEST_CASE(DefaultProperties)
Declare the test suite.
#define BOOST_TEST_CONTEXT(A)