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.GetNextDrawItem(
nullptr,
LIB_PIN_T ),
nullptr );
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 = {
207 for(
const auto& c : cases )
210 "Subref: " << c.m_index <<
", " << c.m_addSep <<
" -> '" << c.m_expSubRef <<
"'" )
212 const auto subref = m_part_no_data.SubReference( c.m_index, c.m_addSep );
213 BOOST_CHECK_EQUAL( subref, c.m_expSubRef );
228 BOOST_CHECK_EQUAL( m_part_no_data.Compare( m_part_no_data ), 0 );
231 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
234 testPart.
SetName(
"tart_name" );
235 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
236 testPart.
SetName(
"cart_name" );
237 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
238 testPart.
SetName(
"part_name" );
244 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
245 id.SetLibItemName(
"cart_name" );
247 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
248 id.SetLibItemName(
"part_name" );
253 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
255 m_part_no_data.SetUnitCount( 2 );
256 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
257 m_part_no_data.SetUnitCount( 1 );
261 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
263 m_part_no_data.SetPower();
264 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
265 m_part_no_data.SetNormal();
270 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
271 m_part_no_data.RemoveDrawItem( m_part_no_data.GetNextDrawItem(
nullptr,
LIB_SHAPE_T ) );
272 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
275 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
276 m_part_no_data.RemoveDrawItem( m_part_no_data.GetNextDrawItem(
nullptr,
LIB_SHAPE_T ) );
281 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
282 m_part_no_data.RemoveDrawItem( m_part_no_data.GetNextDrawItem(
nullptr,
LIB_SHAPE_T ) );
283 m_part_no_data.AddDrawItem(
new LIB_PIN( &m_part_no_data ) );
284 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
285 m_part_no_data.RemoveDrawItem( m_part_no_data.GetNextDrawItem(
nullptr,
LIB_PIN_T ) );
289 wxArrayString footPrintFilters;
290 BOOST_CHECK( m_part_no_data.GetFPFilters() == footPrintFilters );
291 footPrintFilters.Add(
"b" );
293 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
294 m_part_no_data.SetFPFilters( footPrintFilters );
295 footPrintFilters.Clear();
297 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
298 footPrintFilters.Clear();
299 m_part_no_data.SetFPFilters( footPrintFilters );
303 m_part_no_data.SetDescription(
"b" );
305 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
306 m_part_no_data.SetDescription(
"a" );
307 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
308 m_part_no_data.SetDescription(
"c" );
309 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
310 m_part_no_data.SetDescription( wxEmptyString );
314 m_part_no_data.SetKeyWords(
"b" );
316 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
317 m_part_no_data.SetKeyWords(
"a" );
318 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
319 m_part_no_data.SetKeyWords(
"c" );
320 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
321 m_part_no_data.SetKeyWords( wxEmptyString );
326 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
328 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
333 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
335 m_part_no_data.LockUnits(
true );
336 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
337 m_part_no_data.LockUnits(
false );
341 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
343 m_part_no_data.SetIncludeInBom(
false );
344 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
345 m_part_no_data.SetIncludeInBom(
true );
349 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
351 m_part_no_data.SetIncludeOnBoard(
false );
352 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
353 m_part_no_data.SetIncludeOnBoard(
true );
356 m_part_no_data.SetShowPinNames(
false );
357 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
358 m_part_no_data.SetShowPinNames(
true );
360 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
364 m_part_no_data.SetShowPinNumbers(
false );
365 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
366 m_part_no_data.SetShowPinNumbers(
true );
368 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
385 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1, 1 ).size() == 0 );
389 m_part_no_data.AddDrawItem( pin1 );
390 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 0, 0 ).size() == 1 );
394 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1, 0 ).size() == 1 );
398 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1, 1 ).size() == 1 );
403 m_part_no_data.SetUnitCount( 2 );
407 m_part_no_data.AddDrawItem( pin2 );
408 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 2, 2 ).size() == 1 );
412 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1, 1 ).size() == 0 );
413 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 2, 1 ).size() == 1 );
415 m_part_no_data.RemoveDrawItem( pin2 );
416 m_part_no_data.RemoveDrawItem( pin1 );
417 m_part_no_data.RemoveDrawItem( m_part_no_data.GetNextDrawItem() );
427 BOOST_CHECK( m_part_no_data.GetUnitDrawItems().size() == 0 );
432 m_part_no_data.AddDrawItem( pin1 );
433 std::vector<struct LIB_SYMBOL_UNIT> units = m_part_no_data.GetUnitDrawItems();
446 std::unique_ptr<LIB_SYMBOL> parent = std::make_unique<LIB_SYMBOL>(
"parent" );
448 std::unique_ptr<LIB_SYMBOL> child1 = std::make_unique<LIB_SYMBOL>(
"child1", parent.get() );
453 BOOST_CHECK_EQUAL( parent->SharedPtr().use_count(), 3 );
454 BOOST_CHECK_EQUAL( child1->GetUnitCount(), 1 );
455 parent->SetUnitCount( 4 );
456 BOOST_CHECK_EQUAL( child1->GetUnitCount(), 4 );
458 BOOST_CHECK_EQUAL( child1->GetUnitCount(), 1 );
460 BOOST_CHECK_EQUAL( parent->SharedPtr().use_count(), 2 );
469 std::shared_ptr<LIB_SYMBOL>
copy = std::make_shared<LIB_SYMBOL>( m_part_no_data );
474BOOST_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.
LIB_ITEM * GetNextDrawItem(const LIB_ITEM *aItem=nullptr, KICAD_T aType=TYPE_NOT_INIT)
Return the next draw object pointer.
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_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_AUTO_TEST_CASE(DefaultProperties)
Declare the test suite.
BOOST_CHECK(v2.Cross(v1)==1)
#define BOOST_TEST_CONTEXT(A)