62 BOOST_CHECK_EQUAL( m_part_no_data.GetName(),
"part_name" );
65 BOOST_CHECK_EQUAL( m_part_no_data.GetLibraryName(),
"" );
66 BOOST_CHECK_EQUAL( m_part_no_data.GetLib(), nullptr );
69 BOOST_CHECK_EQUAL( m_part_no_data.IsRoot(), true );
70 BOOST_CHECK_EQUAL( m_part_no_data.IsAlias(), false );
71 BOOST_CHECK_EQUAL( m_part_no_data.SharedPtr().use_count(), 2 );
74 BOOST_CHECK_EQUAL( m_part_no_data.GetUnitCount(), 1 );
75 BOOST_CHECK_EQUAL( m_part_no_data.IsMulti(), false );
78 BOOST_CHECK_EQUAL( m_part_no_data.HasConversion(), false );
88 BOOST_CHECK_EQUAL( m_part_no_data.GetDrawItems().size(), 4 );
98 std::vector<LIB_FIELD> fields;
99 m_part_no_data.GetFields( fields );
122 std::vector<LIB_FIELD> fields;
123 m_part_no_data.GetFields( fields );
126 const std::string newFieldName =
"new_field";
127 wxString nonConstNewFieldName = newFieldName;
128 fields.push_back(
LIB_FIELD( 42, nonConstNewFieldName ) );
131 m_part_no_data.SetFields( fields );
144 LIB_FIELD* gotNewField = m_part_no_data.GetFieldById( 42 );
146 BOOST_REQUIRE_NE( gotNewField,
nullptr );
152 gotNewField = m_part_no_data.FindField( newFieldName );
154 BOOST_REQUIRE_NE( gotNewField,
nullptr );
180 const std::vector<TEST_LIB_PART_SUBREF_CASE> cases = {
208 for(
const auto& c : cases )
211 "Subref: " << c.m_index <<
", " << c.m_addSep <<
" -> '" << c.m_expSubRef <<
"'" )
213 const auto subref = m_part_no_data.SubReference( c.m_index, c.m_addSep );
214 BOOST_CHECK_EQUAL( subref, c.m_expSubRef );
229 BOOST_CHECK_EQUAL( m_part_no_data.Compare( m_part_no_data ), 0 );
232 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
235 testPart.
SetName(
"tart_name" );
236 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
237 testPart.
SetName(
"cart_name" );
238 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
239 testPart.
SetName(
"part_name" );
245 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
246 id.SetLibItemName(
"cart_name" );
248 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
249 id.SetLibItemName(
"part_name" );
254 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
256 m_part_no_data.SetUnitCount( 2 );
257 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
258 m_part_no_data.SetUnitCount( 1 );
262 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
264 m_part_no_data.SetPower();
265 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
266 m_part_no_data.SetNormal();
270 m_part_no_data.AddDrawItem(
new LIB_RECTANGLE( &m_part_no_data ) );
271 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
272 m_part_no_data.RemoveDrawItem( m_part_no_data.GetNextDrawItem(
nullptr,
LIB_RECTANGLE_T ) );
273 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
275 m_part_no_data.AddDrawItem(
new LIB_RECTANGLE( &m_part_no_data ) );
276 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
277 m_part_no_data.RemoveDrawItem( m_part_no_data.GetNextDrawItem(
nullptr,
LIB_RECTANGLE_T ) );
281 m_part_no_data.AddDrawItem(
new LIB_ARC( &m_part_no_data ) );
282 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
283 m_part_no_data.RemoveDrawItem( m_part_no_data.GetNextDrawItem(
nullptr,
LIB_ARC_T ) );
284 m_part_no_data.AddDrawItem(
new LIB_PIN( &m_part_no_data ) );
285 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
286 m_part_no_data.RemoveDrawItem( m_part_no_data.GetNextDrawItem(
nullptr,
LIB_PIN_T ) );
290 wxArrayString footPrintFilters;
291 BOOST_CHECK( m_part_no_data.GetFPFilters() == footPrintFilters );
292 footPrintFilters.Add(
"b" );
294 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
295 m_part_no_data.SetFPFilters( footPrintFilters );
296 footPrintFilters.Clear();
298 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
299 footPrintFilters.Clear();
300 m_part_no_data.SetFPFilters( footPrintFilters );
304 m_part_no_data.SetDescription(
"b" );
306 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
307 m_part_no_data.SetDescription(
"a" );
308 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
309 m_part_no_data.SetDescription(
"c" );
310 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
311 m_part_no_data.SetDescription( wxEmptyString );
315 m_part_no_data.SetKeyWords(
"b" );
317 BOOST_CHECK_EQUAL( m_part_no_data.Compare( testPart ), 0 );
318 m_part_no_data.SetKeyWords(
"a" );
319 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
320 m_part_no_data.SetKeyWords(
"c" );
321 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
322 m_part_no_data.SetKeyWords( wxEmptyString );
327 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
329 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
334 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
336 m_part_no_data.LockUnits(
true );
337 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
338 m_part_no_data.LockUnits(
false );
342 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
344 m_part_no_data.SetIncludeInBom(
false );
345 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
346 m_part_no_data.SetIncludeInBom(
true );
350 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
352 m_part_no_data.SetIncludeOnBoard(
false );
353 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
354 m_part_no_data.SetIncludeOnBoard(
true );
357 m_part_no_data.SetShowPinNames(
false );
358 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
359 m_part_no_data.SetShowPinNames(
true );
361 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
365 m_part_no_data.SetShowPinNumbers(
false );
366 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
367 m_part_no_data.SetShowPinNumbers(
true );
369 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
386 BOOST_CHECK( m_part_no_data.GetUnitItems( 1, 1 ).size() == 0 );
390 m_part_no_data.AddDrawItem( pin1 );
391 BOOST_CHECK( m_part_no_data.GetUnitItems( 0, 0 ).size() == 1 );
395 BOOST_CHECK( m_part_no_data.GetUnitItems( 1, 0 ).size() == 1 );
398 pin1->SetConvert( 1 );
399 BOOST_CHECK( m_part_no_data.GetUnitItems( 1, 1 ).size() == 1 );
404 m_part_no_data.SetUnitCount( 2 );
406 pin2->SetConvert( 2 );
407 pin2->SetNumber(
"4" );
408 m_part_no_data.AddDrawItem( pin2 );
409 BOOST_CHECK( m_part_no_data.GetUnitItems( 2, 2 ).size() == 1 );
412 pin1->SetConvert( 0 );
413 BOOST_CHECK( m_part_no_data.GetUnitItems( 1, 1 ).size() == 0 );
414 BOOST_CHECK( m_part_no_data.GetUnitItems( 2, 1 ).size() == 1 );
416 m_part_no_data.RemoveDrawItem( pin2 );
417 m_part_no_data.RemoveDrawItem( pin1 );
418 m_part_no_data.RemoveDrawItem( m_part_no_data.GetNextDrawItem() );
428 BOOST_CHECK( m_part_no_data.GetUnitDrawItems().size() == 0 );
432 pin1->SetNumber(
"1" );
433 m_part_no_data.AddDrawItem( pin1 );
434 std::vector<struct PART_UNITS> units = m_part_no_data.GetUnitDrawItems();
447 std::unique_ptr<LIB_PART> parent = std::make_unique<LIB_PART>(
"parent" );
449 std::unique_ptr<LIB_PART> child1 = std::make_unique<LIB_PART>(
"child1", parent.get() );
451 PART_SPTR parentRef = child1->GetParent().lock();
454 BOOST_CHECK_EQUAL( parent->SharedPtr().use_count(), 3 );
455 BOOST_CHECK_EQUAL( child1->GetUnitCount(), 1 );
456 parent->SetUnitCount( 4 );
457 BOOST_CHECK_EQUAL( child1->GetUnitCount(), 4 );
459 BOOST_CHECK_EQUAL( child1->GetUnitCount(), 1 );
461 BOOST_CHECK_EQUAL( parent->SharedPtr().use_count(), 2 );
470 std::shared_ptr<LIB_PART>
copy = std::make_shared<LIB_PART>( m_part_no_data );
475 BOOST_AUTO_TEST_SUITE_END()
Field Reference of part, i.e. "IC21".
void SetFPFilters(const wxArrayString &aFilters)
LIB_ID GetLibId() const override
bool AreDefaultFieldsCorrect(const std::vector< LIB_FIELD > &aFields)
Predicate to check that the mandatory fields in a LIB_FIELDS object look sensible.
LIB_ITEM * GetNextDrawItem(const LIB_ITEM *aItem=NULL, KICAD_T aType=TYPE_NOT_INIT)
Return the next draw object pointer.
Field object used in symbol libraries.
void SetUnitCount(int aCount, bool aDuplicateDrawItems=true)
Set the units per part count.
int Compare(const LIB_PART &aRhs) const
Comparison test that can be used for operators.
std::shared_ptr< LIB_PART > PART_SPTR
shared pointer to LIB_PART
A logical library item identifier and consists of various portions much like a URI.
void SetIncludeInBom(bool aIncludeInBom)
Set or clear the include in schematic bill of materials flag.
The base class for drawable items used by schematic library components.
BOOST_CHECK(v2.Cross(v1)==1)
Field Value of part, i.e. "3.3K".
void AddDrawItem(LIB_ITEM *aItem, bool aSort=true)
Add a new draw aItem to the draw object list and sort according to aSort.
void SetDescription(const wxString &aDescription)
Define a library symbol object.
#define BOOST_TEST_CONTEXT(A)
int SetLibItemName(const UTF8 &aLibItemName, bool aTestForRev=true)
Override the library item name portion of the LIB_ID to aLibItemName.
int GetPinNameOffset() const
The first 4 are mandatory, and must be instantiated in SCH_COMPONENT and LIB_PART constructors.
void SetShowPinNumbers(bool aShow)
Set or clear the pin number visibility flag.
void SetKeyWords(const wxString &aKeyWords)
LIB_PART m_part_no_data
Part with no extra data set
virtual void SetName(const wxString &aName)
BOOST_AUTO_TEST_CASE(DefaultProperties)
Declare the test suite.
void SetIncludeOnBoard(bool aIncludeOnBoard)
Set or clear include in board netlist flag.
void SetShowPinNames(bool aShow)
Set or clear the pin name visibility flag.
void SetPinNameOffset(int aOffset)
Set the offset in mils of the pin name text from the pin symbol.
void SetLibId(const LIB_ID &aLibId)
bool FieldNameIdMatches(const LIB_FIELD &aField, const std::string &aExpectedName, int aExpectedId)
Predicate to check a field name is as expected.
void LockUnits(bool aLockUnits)
Set interchangeable the property for part units.
void RemoveDrawItem(LIB_ITEM *aItem)
Remove draw aItem from list.
Field Name Module PCB, i.e. "16DIP300".