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 );
88 BOOST_CHECK_EQUAL( m_part_no_data.GetAllLibPins().size(), 0 );
97 std::vector<LIB_FIELD> fields;
98 m_part_no_data.GetFields( fields );
125 std::vector<LIB_FIELD> fields;
126 m_part_no_data.GetFields( fields );
129 const std::string newFieldName =
"new_field";
130 wxString nonConstNewFieldName = newFieldName;
131 fields.push_back(
LIB_FIELD( 42, nonConstNewFieldName ) );
134 m_part_no_data.SetFields( fields );
147 LIB_FIELD* gotNewField = m_part_no_data.GetFieldById( 42 );
149 BOOST_REQUIRE_NE( gotNewField,
nullptr );
155 gotNewField = m_part_no_data.FindField( newFieldName );
157 BOOST_REQUIRE_NE( gotNewField,
nullptr );
183 const std::vector<TEST_LIB_SYMBOL_SUBREF_CASE> cases = {
356 for(
const auto& c : cases )
359 "Subref: " << c.m_index <<
", " << c.m_addSep <<
" -> '" << c.m_expSubRef <<
"'" )
361 const auto subref = m_part_no_data.SubReference( c.m_index, c.m_addSep );
362 BOOST_CHECK_EQUAL( subref, c.m_expSubRef );
377 BOOST_CHECK_EQUAL( m_part_no_data.Compare( m_part_no_data ), 0 );
380 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
383 testPart.
SetName(
"tart_name" );
384 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
385 testPart.
SetName(
"cart_name" );
386 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
387 testPart.
SetName(
"part_name" );
393 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
394 id.SetLibItemName(
"cart_name" );
396 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
397 id.SetLibItemName(
"part_name" );
402 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
404 m_part_no_data.SetUnitCount( 2 );
405 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
406 m_part_no_data.SetUnitCount( 1 );
410 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
412 m_part_no_data.SetPower();
413 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
414 m_part_no_data.SetNormal();
419 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
420 m_part_no_data.RemoveDrawItem( &m_part_no_data.GetDrawItems()[
LIB_SHAPE_T].front() );
421 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
424 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
425 m_part_no_data.RemoveDrawItem( &m_part_no_data.GetDrawItems()[
LIB_SHAPE_T].front() );
430 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
431 m_part_no_data.RemoveDrawItem( &m_part_no_data.GetDrawItems()[
LIB_SHAPE_T].front() );
433 m_part_no_data.AddDrawItem(
new LIB_PIN( &m_part_no_data ) );
434 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
435 m_part_no_data.RemoveDrawItem( &m_part_no_data.GetDrawItems()[
LIB_PIN_T].front() );
438 wxArrayString footPrintFilters;
439 BOOST_CHECK( m_part_no_data.GetFPFilters() == footPrintFilters );
440 footPrintFilters.Add(
"b" );
442 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
443 m_part_no_data.SetFPFilters( footPrintFilters );
444 footPrintFilters.Clear();
446 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
447 footPrintFilters.Clear();
448 m_part_no_data.SetFPFilters( footPrintFilters );
452 m_part_no_data.SetDescription(
"b" );
454 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
455 m_part_no_data.SetDescription(
"a" );
456 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
457 m_part_no_data.SetDescription(
"c" );
458 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
459 m_part_no_data.SetDescription( wxEmptyString );
463 m_part_no_data.SetKeyWords(
"b" );
465 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
466 m_part_no_data.SetKeyWords(
"a" );
467 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
468 m_part_no_data.SetKeyWords(
"c" );
469 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
470 m_part_no_data.SetKeyWords( wxEmptyString );
475 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
477 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
482 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
484 m_part_no_data.LockUnits(
true );
485 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
486 m_part_no_data.LockUnits(
false );
490 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
492 m_part_no_data.SetExcludedFromBOM(
true );
493 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
494 m_part_no_data.SetExcludedFromBOM(
false );
498 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
500 m_part_no_data.SetExcludedFromBoard(
true );
501 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
502 m_part_no_data.SetExcludedFromBoard(
false );
505 m_part_no_data.SetShowPinNames(
false );
506 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
507 m_part_no_data.SetShowPinNames(
true );
509 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
513 m_part_no_data.SetShowPinNumbers(
false );
514 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
515 m_part_no_data.SetShowPinNumbers(
true );
517 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
534 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1, 1 ).size() == 0 );
538 m_part_no_data.AddDrawItem( pin1 );
539 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 0, 0 ).size() == 1 );
543 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1, 0 ).size() == 1 );
547 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1, 1 ).size() == 1 );
552 m_part_no_data.SetUnitCount( 2 );
556 m_part_no_data.AddDrawItem( pin2 );
557 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 2, 2 ).size() == 1 );
561 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1, 1 ).size() == 0 );
562 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 2, 1 ).size() == 1 );
564 m_part_no_data.RemoveDrawItem( pin2 );
565 m_part_no_data.RemoveDrawItem( pin1 );
566 m_part_no_data.RemoveDrawItem( &*m_part_no_data.GetDrawItems().begin() );
576 BOOST_CHECK( m_part_no_data.GetUnitDrawItems().size() == 0 );
581 m_part_no_data.AddDrawItem( pin1 );
582 std::vector<struct LIB_SYMBOL_UNIT> units = m_part_no_data.GetUnitDrawItems();
595 std::unique_ptr<LIB_SYMBOL> parent = std::make_unique<LIB_SYMBOL>(
"parent" );
597 BOOST_CHECK_EQUAL( parent->GetInheritanceDepth(), 0 );
599 std::unique_ptr<LIB_SYMBOL> ref = std::make_unique<LIB_SYMBOL>( *parent );
601 std::unique_ptr<LIB_SYMBOL> child = std::make_unique<LIB_SYMBOL>(
"child", parent.get() );
603 BOOST_CHECK_EQUAL( child->GetInheritanceDepth(), 1 );
605 std::unique_ptr<LIB_SYMBOL> grandChild = std::make_unique<LIB_SYMBOL>(
"grandchild",
608 BOOST_CHECK_EQUAL( grandChild->GetInheritanceDepth(), 2 );
610 BOOST_CHECK( parent->GetRootSymbol().lock().get() == parent.get() );
611 BOOST_CHECK( child->GetRootSymbol().lock().get() == parent.get() );
612 BOOST_CHECK( grandChild->GetRootSymbol().lock().get() == parent.get() );
617 BOOST_CHECK_EQUAL( parent->SharedPtr().use_count(), 3 );
622 BOOST_CHECK_EQUAL( child->SharedPtr().use_count(), 3 );
624 BOOST_CHECK_EQUAL( child->GetUnitCount(), 1 );
625 parent->SetUnitCount( 4 );
626 BOOST_CHECK_EQUAL( child->GetUnitCount(), 4 );
627 parent->SetUnitCount( 1 );
629 parent->GetDatasheetField().SetText(
"https://kicad/resistors.pdf" );
630 ref->GetDatasheetField().SetText(
"https://kicad/resistors.pdf" );
634 ref->SetName(
"child" );
637 child->AddField( field );
640 ref->AddField( field );
643 ref->SetName(
"grandchild" );
646 grandChild->AddField( field );
649 ref->AddField( field );
652 BOOST_CHECK_EQUAL( grandChild->Flatten()->GetDatasheetField().GetText(),
653 "https://kicad/resistors.pdf" );
656 BOOST_CHECK_EQUAL( child->GetUnitCount(), 1 );
659 BOOST_CHECK_EQUAL( parent->SharedPtr().use_count(), 2 );
668 std::shared_ptr<LIB_SYMBOL>
copy = std::make_shared<LIB_SYMBOL>( m_part_no_data );
678 std::unique_ptr<LIB_SYMBOL> symbol = std::make_unique<LIB_SYMBOL>(
"power" );
680 pin->SetNumber(
"1" );
682 pin->SetVisible(
false );
683 symbol->AddDrawItem(
pin );
706BOOST_AUTO_TEST_SUITE_END()
virtual void SetText(const wxString &aText)
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 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.
int Compare(const LIB_SYMBOL &aRhs, int aCompareFlags=0, REPORTER *aReporter=nullptr) const
Comparison test that can be used for operators.
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)
Gets the Description field text value */.
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 SetExcludedFromBOM(bool aExcludeFromBOM)
Set or clear the exclude from schematic bill of materials flag.
void SetExcludedFromBoard(bool aExcludeFromBoard)
Set or clear exclude from board netlist flag.
void SetFPFilters(const wxArrayString &aFilters)
void SetLibId(const LIB_ID &aLibId)
virtual void SetName(const wxString &aName)
TEST_LIB_SYMBOL_FIXTURE()
Part with no extra data set.
LIB_SYMBOL m_part_no_data
@ ARC
use RECTANGLE instead of RECT to avoid collision in a Windows header
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.
@ PT_POWER_IN
power input (GND, VCC for ICs). Must be connected to a power output.
@ DATASHEET_FIELD
name of datasheet
@ FOOTPRINT_FIELD
Field Name Module PCB, i.e. "16DIP300".
@ VALUE_FIELD
Field Value of part, i.e. "3.3K".
@ MANDATORY_FIELDS
The first 5 are mandatory, and must be instantiated in SCH_COMPONENT and LIB_PART constructors.
@ REFERENCE_FIELD
Field Reference of part, i.e. "IC21".
@ DESCRIPTION_FIELD
Field Description of part, i.e. "1/4W 1% Metal Film Resistor".
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)