42#include <wx/filename.h>
70 m_dir = wxFileName::CreateTempFileName( wxS(
"kicad_lib_part_" ) );
71 wxRemoveFile(
m_dir );
72 wxFileName::Mkdir(
m_dir );
74 m_path = wxFileName(
m_dir, wxS(
"test_lib.kicad_sym" ) ).GetFullPath();
79 if( wxFileName::DirExists(
m_dir ) )
80 wxFileName::Rmdir(
m_dir, wxPATH_RMDIR_RECURSIVE );
114 libPath.AppendDir(
"libs" );
115 libPath.SetFullName(
"4xxx.kicad_sym" );
120 LIB_SYMBOL* cached = pi->LoadSymbol( libPath.GetFullPath(), wxS(
"4001" ) );
122 return cached ? std::make_unique<LIB_SYMBOL>( *cached ) :
nullptr;
133 pi->CreateLibrary( aLibPath );
134 pi->SaveSymbol( aLibPath, std::make_unique<LIB_SYMBOL>( aSymbol ) );
135 pi->SaveLibrary( aLibPath );
186 std::vector<SCH_FIELD> fields;
187 m_part_no_data.CopyFields( fields );
199 ( m_part_no_data.GetValueField() )(
"Value" )( (
int)
FIELD_T::VALUE ) );
214 std::vector<SCH_FIELD> fields;
215 m_part_no_data.CopyFields( fields );
218 const std::string newFieldName =
"new_field";
219 wxString nonConstNewFieldName = newFieldName;
223 m_part_no_data.SetFields( fields );
229 BOOST_REQUIRE_EQUAL( fields.size(), 6 );
233 SCH_FIELD* gotNewField = m_part_no_data.GetField( newFieldName );
235 BOOST_REQUIRE_NE( gotNewField,
nullptr );
245 const size_t defaultCount = m_part_no_data.GetDrawItems().size();
248 pin->SetNumber(
"1" );
249 m_part_no_data.AddDrawItem(
pin );
252 BOOST_CHECK(
pin->GetParentSymbol() == &m_part_no_data );
255 m_part_no_data.RemoveDrawItem(
pin );
261 m_part_no_data.RemoveDrawItem( &m_part_no_data.GetReferenceField() );
274 pin->SetNumber(
"[A1,A12,B1,B12]" );
275 m_part_no_data.AddDrawItem(
pin );
277 BOOST_CHECK( m_part_no_data.HasPinNumber(
"[A1,A12,B1,B12]" ) );
279 BOOST_CHECK( m_part_no_data.HasPinNumber(
"A1" ) );
280 BOOST_CHECK( m_part_no_data.HasPinNumber(
"A12" ) );
281 BOOST_CHECK( m_part_no_data.HasPinNumber(
"B1" ) );
282 BOOST_CHECK( m_part_no_data.HasPinNumber(
"B12" ) );
284 BOOST_CHECK( !m_part_no_data.HasPinNumber(
"A2" ) );
285 BOOST_CHECK( !m_part_no_data.HasPinNumber(
"[A1" ) );
296 pin->SetNumber(
"[1-4]" );
297 m_part_no_data.AddDrawItem(
pin );
299 BOOST_CHECK( m_part_no_data.HasPinNumber(
"[1-4]" ) );
301 BOOST_CHECK( m_part_no_data.HasPinNumber(
"1" ) );
302 BOOST_CHECK( m_part_no_data.HasPinNumber(
"3" ) );
304 BOOST_CHECK( !m_part_no_data.HasPinNumber(
"5" ) );
321 const std::vector<TEST_LIB_SYMBOL_SUBREF_CASE> cases = {
489 for(
const auto& c : cases )
492 "Subref: " << c.m_index <<
", " << c.m_addSep <<
" -> '" << c.m_expSubRef <<
"'" )
510 shape =
static_cast<SCH_SHAPE*
>( &item );
525 const auto& populated =
static_cast<const EDA_SHAPE&
>( rebuilt );
526 BOOST_REQUIRE_NE(
empty.Compare( &populated ), 0 );
527 BOOST_CHECK_LT(
empty.Compare( &populated ), 0 );
528 BOOST_CHECK_GT( populated.Compare( &
empty ), 0 );
538 std::vector<wxString> messages;
542 for(
int change = 0; change < 7; ++change )
546 auto changed = std::make_unique<LIB_SYMBOL>( *original );
547 const auto pins = changed->GetGraphicalPins( 0, 0 );
549 auto* extra =
static_cast<SCH_PIN*
>( pins.front()->Clone() );
550 changed->AddDrawItem( extra );
555 case 1: extra->SetBodyStyle( 99 );
break;
556 case 2: extra->SetBodyStyle( 0 );
break;
557 case 3: extra->SetUnit( 0 );
break;
558 case 4: extra->SetNumber( wxS(
"[" ) + pins.front()->GetNumber() + wxS(
",98765]" ) );
break;
559 case 5: extra->SetNumber( wxS(
"[98765,98765]" ) );
break;
560 case 6: extra->SetNumber( wxS(
"[malformed" ) );
break;
565 const bool expected = change == 0 || change == 2 || change == 3 || change == 4;
566 BOOST_REQUIRE_EQUAL( !messages.empty(),
expected );
581 const int baseFlags = ~( FLAGS::UUID | FLAGS::UNIT | FLAGS::IDENTITY );
582 const std::vector<int> masks{ 0, FLAGS::PIN_VISIBILITIES, FLAGS::PIN_ALT_DEFS, FLAGS::FIELD_TEXT,
583 FLAGS::FIELD_POSITIONS, FLAGS::FIELD_SIZE_AND_STYLE, FLAGS::FIELD_VISIBILITY,
584 FLAGS::MISSING_FIELDS, FLAGS::EXTRA_FIELDS };
586 for(
int change = 0; change < 13; ++change )
600 case 1:
pin->SetName(
pin->GetName() +
"_Changed" );
break;
601 case 2:
pin->SetVisible( !
pin->IsVisible() );
break;
603 pin->GetAlternates().emplace( wxS(
"CapturedAlt" ),
609 auto* extra =
static_cast<SCH_PIN*
>(
pin->Clone() );
610 extra->
SetNumber( wxS(
"CapturedExtra" ) );
629 for(
int mask : masks )
631 const int flags = baseFlags & ~mask;
632 BOOST_CHECK_EQUAL( captured.Matches( values, flags ), original->Compare( changed, flags ) == 0 );
644 SCH_PIN* parentPin = original->GetGraphicalPins( 0, 0 ).front();
647 BOOST_CHECK( !captured.Matches( editedParent, baseFlags ) );
648 BOOST_CHECK_NE( baseline.
Compare( derived, baseFlags ), 0 );
657 const auto captured = original->ComparisonAttributes();
659 const int flags = ~( FLAGS::UUID | FLAGS::UNIT | FLAGS::IDENTITY );
660 const std::vector<std::pair<int, std::function<void(
LIB_SYMBOL& )>>> changes{
661 { 0, [](
auto& symbol ) { symbol.SetLocalPower(); } },
662 { 0, [](
auto& symbol ) { symbol.SetUnitCount( symbol.GetUnitCount() + 1,
false ); } },
663 { 0, [](
auto& symbol ) { symbol.SetKeyWords( symbol.GetKeyWords() +
" CapturedKeyword" ); } },
664 { 0, [](
auto& symbol ) { symbol.SetPinNameOffset( symbol.GetPinNameOffset() + 1 ); } },
665 { 0, [](
auto& symbol ) { symbol.LockUnits( !symbol.UnitsLocked() ); } },
666 { 0, [](
auto& symbol ) { symbol.GetUnitDisplayNames()[1] = wxS(
"CapturedUnit" ); } },
667 { 0, [](
auto& symbol ) { symbol.SetBodyStyleNames( { wxS(
"CapturedBody" ) } ); } },
668 { 0, [](
auto& symbol )
670 auto filters = symbol.GetFPFilters();
671 filters.Add( wxS(
"CapturedFilter*" ) );
672 symbol.SetFPFilters(
filters );
674 { FLAGS::PIN_VISIBILITIES, [](
auto& symbol ) { symbol.SetShowPinNames( !symbol.GetShowPinNames() ); } },
675 { FLAGS::PIN_VISIBILITIES, [](
auto& symbol ) { symbol.SetShowPinNumbers( !symbol.GetShowPinNumbers() ); } },
676 { FLAGS::EXCLUDE_FROM_SIM,
677 [](
auto& symbol ) { symbol.SetExcludedFromSim( !symbol.GetExcludedFromSim() ); } },
678 { FLAGS::EXCLUDE_FROM_BOM,
679 [](
auto& symbol ) { symbol.SetExcludedFromBOM( !symbol.GetExcludedFromBOM() ); } },
680 { FLAGS::EXCLUDE_FROM_BOARD,
681 [](
auto& symbol ) { symbol.SetExcludedFromBoard( !symbol.GetExcludedFromBoard() ); } },
682 { FLAGS::EXCLUDE_FROM_POS_FILES,
683 [](
auto& symbol ) { symbol.SetExcludedFromPosFiles( !symbol.GetExcludedFromPosFiles() ); } },
684 { FLAGS::DNP, [](
auto& symbol ) { symbol.SetDNP( !symbol.GetDNP() ); } }
687 for(
size_t i = 0; i < changes.size(); ++i )
693 BOOST_REQUIRE_EQUAL( original->Compare( changed, flags ), 0 );
694 const auto& [optionalFlag, mutate] = changes[i];
697 BOOST_CHECK( captured != values );
698 BOOST_CHECK( !captured.Matches( values, flags ) );
699 BOOST_CHECK_NE( original->Compare( changed, flags ), 0 );
703 BOOST_CHECK( captured.Matches( values, flags & ~optionalFlag ) );
709 original->SetDuplicatePinNumbersAreJumpers( !captured.duplicatePinNumbersAreJumpers );
710 const auto jumpers = original->ComparisonAttributes();
711 BOOST_CHECK( captured != jumpers );
712 BOOST_CHECK( captured.Matches( jumpers, flags ) );
714 const auto pins = original->GetGraphicalPins( 0, 0 );
716 PIN_MAP map( wxS(
"CapturedAttributes" ) );
717 map.
SetEntry( pins.front()->GetNumber(), wxS(
"CapturedPad" ) );
718 original->PinMaps().AddOrReplace( map );
719 const auto mapped = original->ComparisonAttributes();
720 BOOST_CHECK( !captured.Matches( mapped, flags ) );
721 original->PinMaps().FindByName( map.
GetName() )->SetEntry( pins.front()->GetNumber(), wxS(
"LaterPad" ) );
722 BOOST_CHECK( !mapped.Matches( original->ComparisonAttributes(), flags ) );
724 wxString(
"CapturedPad" ) );
729 original->SetAssociatedFootprints( { { footprint, map.
GetName() } } );
730 const auto associated = original->ComparisonAttributes();
731 original->SetAssociatedFootprints( {} );
732 BOOST_CHECK( !associated.Matches( original->ComparisonAttributes(), flags ) );
751 testPart.
SetName(
"tart_name" );
752 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
753 testPart.
SetName(
"cart_name" );
754 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
755 testPart.
SetName(
"part_name" );
761 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
762 id.SetLibItemName(
"cart_name" );
764 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
765 id.SetLibItemName(
"part_name" );
770 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
772 m_part_no_data.SetUnitCount( 2,
true );
773 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
774 m_part_no_data.SetUnitCount( 1,
true );
778 BOOST_CHECK( m_part_no_data.Compare( testPart ) < 0 );
780 m_part_no_data.SetGlobalPower();
781 BOOST_CHECK( m_part_no_data.Compare( testPart ) > 0 );
782 m_part_no_data.SetNormal();
788 m_part_no_data.RemoveDrawItem( &m_part_no_data.GetDrawItems()[
SCH_SHAPE_T].front() );
793 m_part_no_data.RemoveDrawItem( &m_part_no_data.GetDrawItems()[
SCH_SHAPE_T].front() );
799 m_part_no_data.RemoveDrawItem( &m_part_no_data.GetDrawItems()[
SCH_SHAPE_T].front() );
801 m_part_no_data.AddDrawItem(
new SCH_PIN( &m_part_no_data ) );
803 m_part_no_data.RemoveDrawItem( &m_part_no_data.GetDrawItems()[
SCH_PIN_T].front() );
806 wxArrayString footPrintFilters;
807 BOOST_CHECK( m_part_no_data.GetFPFilters() == footPrintFilters );
808 footPrintFilters.Add(
"b" );
811 m_part_no_data.SetFPFilters( footPrintFilters );
812 footPrintFilters.Clear();
815 footPrintFilters.Clear();
816 m_part_no_data.SetFPFilters( footPrintFilters );
820 m_part_no_data.SetDescription(
"b" );
823 m_part_no_data.SetDescription(
"a" );
825 m_part_no_data.SetDescription(
"c" );
827 m_part_no_data.SetDescription( wxEmptyString );
831 m_part_no_data.SetKeyWords(
"b" );
834 m_part_no_data.SetKeyWords(
"a" );
836 m_part_no_data.SetKeyWords(
"c" );
838 m_part_no_data.SetKeyWords( wxEmptyString );
852 m_part_no_data.LockUnits(
true );
854 m_part_no_data.LockUnits(
false );
860 m_part_no_data.SetExcludedFromBOM(
true );
862 m_part_no_data.SetExcludedFromBOM(
false );
868 m_part_no_data.SetExcludedFromBoard(
true );
870 m_part_no_data.SetExcludedFromBoard(
false );
876 m_part_no_data.SetExcludedFromPosFiles(
true );
878 m_part_no_data.SetExcludedFromPosFiles(
false );
881 m_part_no_data.SetShowPinNames(
false );
883 m_part_no_data.SetShowPinNames(
true );
889 m_part_no_data.SetShowPinNumbers(
false );
891 m_part_no_data.SetShowPinNumbers(
true );
910 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1, 1 ).size() == 0 );
914 m_part_no_data.AddDrawItem(
pin1 );
919 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1,
ALL_BODY_STYLES ).size() == 1 );
922 pin1->SetBodyStyle( 1 );
923 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1, 1 ).size() == 1 );
928 m_part_no_data.SetUnitCount( 2,
true );
932 m_part_no_data.AddDrawItem( pin2 );
933 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 2, 2 ).size() == 1 );
937 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 1, 1 ).size() == 1 );
938 BOOST_CHECK( m_part_no_data.GetUnitDrawItems( 2, 1 ).size() == 1 );
940 m_part_no_data.RemoveDrawItem( pin2 );
941 m_part_no_data.RemoveDrawItem(
pin1 );
942 m_part_no_data.RemoveDrawItem( &*m_part_no_data.GetDrawItems().begin() );
952 std::vector<struct LIB_SYMBOL_UNIT> units = m_part_no_data.GetUnitDrawItems();
954 BOOST_REQUIRE_EQUAL( units.size(), 1u );
957 BOOST_CHECK( units[0].m_items.empty() );
962 pin1->SetNumber(
"1" );
963 m_part_no_data.AddDrawItem(
pin1 );
965 units = m_part_no_data.GetUnitDrawItems();
967 BOOST_REQUIRE_EQUAL( units.size(), 2u );
970 BOOST_REQUIRE_EQUAL( units[0].m_items.size(), 1u );
974 BOOST_CHECK( units[1].m_items.empty() );
977 m_part_no_data.SetUnitCount( 3,
true );
979 units = m_part_no_data.GetUnitDrawItems();
981 BOOST_REQUIRE_EQUAL( units.size(), 4u );
986 BOOST_CHECK( units[1].m_items.empty() );
987 BOOST_CHECK( units[2].m_items.empty() );
988 BOOST_CHECK( units[3].m_items.empty() );
991 m_part_no_data.SetHasDeMorganBodyStyles(
true );
993 units = m_part_no_data.GetUnitDrawItems();
995 BOOST_REQUIRE_EQUAL( units.size(), 7u );
1006 std::unique_ptr<LIB_SYMBOL> parent = std::make_unique<LIB_SYMBOL>(
"parent" );
1007 BOOST_CHECK( parent->IsRoot() );
1010 std::unique_ptr<LIB_SYMBOL> ref = std::make_unique<LIB_SYMBOL>( *parent );
1012 std::unique_ptr<LIB_SYMBOL> child = std::make_unique<LIB_SYMBOL>(
"child", parent.get() );
1013 BOOST_CHECK( child->IsDerived() );
1016 std::unique_ptr<LIB_SYMBOL> grandChild = std::make_unique<LIB_SYMBOL>(
"grandchild", child.get() );
1017 BOOST_CHECK( grandChild->IsDerived() );
1020 BOOST_CHECK( parent->GetRootSymbol().get() == parent.get() );
1021 BOOST_CHECK( child->GetRootSymbol().get() == parent.get() );
1022 BOOST_CHECK( grandChild->GetRootSymbol().get() == parent.get() );
1024 std::shared_ptr<LIB_SYMBOL> parentRef = child->GetParent().lock();
1025 BOOST_CHECK( parentRef );
1026 BOOST_CHECK( parentRef == parent->SharedPtr() );
1029 std::shared_ptr<LIB_SYMBOL> childRef = grandChild->GetParent().lock();
1030 BOOST_CHECK( childRef );
1031 BOOST_CHECK( childRef == child->SharedPtr() );
1035 parent->SetUnitCount( 4,
true );
1037 parent->SetUnitCount( 1,
true );
1042 BOOST_CHECK( *parent == *ref );
1044 ref->SetName(
"child" );
1047 child->AddField( field );
1052 ref->AddField( field );
1055 BOOST_CHECK( *ref == *child->Flatten() );
1057 ref->SetName(
"grandchild" );
1060 grandChild->AddField( field );
1065 ref->AddField( field );
1068 BOOST_CHECK( *ref == *grandChild->Flatten() );
1071 "https://kicad/resistors.pdf" );
1086 std::shared_ptr<LIB_SYMBOL>
copy = std::make_shared<LIB_SYMBOL>( m_part_no_data );
1087 BOOST_CHECK( m_part_no_data == *
copy.get() );
1096 std::unique_ptr<LIB_SYMBOL> symbol = std::make_unique<LIB_SYMBOL>(
"power" );
1098 pin->SetNumber(
"1" );
1100 pin->SetVisible(
false );
1101 symbol->AddDrawItem(
pin );
1103 BOOST_CHECK( !symbol->IsPower() );
1104 BOOST_CHECK( symbol->IsNormal() );
1106 symbol->SetGlobalPower();
1107 BOOST_CHECK( symbol->IsPower() );
1108 BOOST_CHECK( !symbol->IsNormal() );
1135 auto checkMandatoryFields = [](
LIB_SYMBOL& aSymbol )
1146 BOOST_CHECK_NO_THROW( (
void) aSymbol.GetReferenceField().GetText() );
1151 checkMandatoryFields( baseline );
1159#if wxDEBUG_LEVEL == 0
1162 checkMandatoryFields( zeroCount );
1164 LIB_SYMBOL negativeCount( wxS(
"test_part" ) );
1166#if wxDEBUG_LEVEL == 0
1169 checkMandatoryFields( negativeCount );
1184 for(
bool clearFlagFirst : {
false,
true } )
1191 if( clearFlagFirst )
1193 symbol->SetHasDeMorganBodyStyles(
false );
1194 symbol->SetBodyStyleCount( 1,
false,
false );
1198 symbol->SetBodyStyleCount( 1,
false,
false );
1199 symbol->SetHasDeMorganBodyStyles(
false );
1202 symbol->SetBodyStyleNames( {} );
1220 symbol->SetHasDeMorganBodyStyles(
false );
1247 BOOST_REQUIRE_EQUAL( original->Compare( changed, flags ), 0 );
1248 BOOST_REQUIRE_EQUAL( changed.
Compare( *original, flags ), 0 );
1251 const auto previous =
pin->GetType();
1255 BOOST_CHECK_NE( original->Compare( changed, flags ), 0 );
1256 BOOST_CHECK_NE( changed.
Compare( *original, flags ), 0 );
1268 BOOST_REQUIRE_EQUAL( original->Compare( changed, flags ), 0 );
1269 BOOST_REQUIRE_EQUAL( changed.
Compare( *original, flags ), 0 );
1270 const auto pins = original->GetGraphicalPins( 0, 0 );
1272 auto* extra =
static_cast<SCH_PIN*
>( pins.front()->Clone() );
1275 BOOST_REQUIRE_EQUAL( changed.
GetGraphicalPins( 0, 0 ).size(), pins.size() + 1 );
1276 BOOST_CHECK_NE( original->Compare( changed, flags ), 0 );
1277 BOOST_CHECK_NE( changed.
Compare( *original, flags ), 0 );
1289 BOOST_REQUIRE_EQUAL( original->Compare( changed, flags ), 0 );
1290 BOOST_REQUIRE_EQUAL( changed.
Compare( *original, flags ), 0 );
1291 const wxString
name(
"Native comparison field" );
1297 BOOST_CHECK_NE( original->Compare( changed, flags ), 0 );
1298 BOOST_CHECK_NE( changed.
Compare( *original, flags ), 0 );
1310 BOOST_REQUIRE_EQUAL( original->Compare( changed, flags ), 0 );
1311 BOOST_REQUIRE_EQUAL( changed.
Compare( *original, flags ), 0 );
1315 pin->SetVisible( !
pin->IsVisible() );
1318 BOOST_CHECK_NE( original->Compare( changed, flags ), 0 );
1319 BOOST_CHECK_NE( changed.
Compare( *original, flags ), 0 );
1331 BOOST_REQUIRE_EQUAL( original->Compare( changed, flags ), 0 );
1332 BOOST_REQUIRE_EQUAL( changed.
Compare( *original, flags ), 0 );
1336 const wxString
name(
"Native alternate" );
1342 BOOST_CHECK_NE( original->Compare( changed, flags ), 0 );
1343 BOOST_CHECK_NE( changed.
Compare( *original, flags ), 0 );
constexpr EDA_IU_SCALE schIUScale
virtual void SetParent(EDA_ITEM *aParent)
virtual void SetEnd(const VECTOR2I &aEnd)
virtual void SetBezierC2(const VECTOR2I &aPt)
virtual void SetBezierC1(const VECTOR2I &aPt)
void RebuildBezierToSegmentsPointsList(int aMaxError)
Rebuild the m_bezierPoints vertex list that approximate the Bezier curve by a list of segments.
virtual void SetShape(SHAPE_T aShape)
const std::vector< VECTOR2I > & GetBezierPoints() const
virtual void SetStart(const VECTOR2I &aStart)
virtual bool IsVisible() const
KIFONT::FONT * GetFont() const
virtual void SetVisible(bool aVisible)
void SetFont(KIFONT::FONT *aFont)
static FONT * GetFont(const wxString &aFontName=wxEmptyString, bool aBold=false, bool aItalic=false, const std::vector< wxString > *aEmbeddedFiles=nullptr, bool aForDrawingSheet=false)
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.
int SetLibNickname(const UTF8 &aLibNickname)
Override the logical library name portion of the LIB_ID to aLibNickname.
Define a library symbol object.
const LIB_ID & GetLibId() const override
wxString GetKeyWords() const override
std::vector< struct LIB_SYMBOL_UNIT > GetUnitDrawItems()
Return a list of SCH_ITEM objects separated by unit and convert number.
SCH_FIELD * GetField(const wxString &aFieldName)
Find a field within this symbol matching aFieldName; return nullptr if not found.
static wxString LetterSubReference(int aUnit, wxChar aInitialLetter)
void LockUnits(bool aLockUnits)
Set interchangeable the property for symbol units.
LIB_ITEMS_CONTAINER & GetDrawItems()
Return a reference to the draw item list.
void SetParent(LIB_SYMBOL *aParent=nullptr)
void SetUnitCount(int aCount, bool aDuplicateDrawItems)
Set the units per symbol count.
void SetDescription(const wxString &aDescription)
Set the Description field text value.
void SetKeyWords(const wxString &aKeyWords)
void RemoveDrawItem(SCH_ITEM *aItem)
Remove draw aItem from list.
void SetFPFilters(const wxArrayString &aFilters)
int GetBodyStyleCount() const override
The body styles are a property of the drawings, which a derived symbol inherits from its root symbol ...
LIB_SYMBOL_ATTRIBUTES ComparisonAttributes() const
int GetUnitCount() const override
void SetLibId(const LIB_ID &aLibId)
void AddField(SCH_FIELD *aField)
Add a field.
std::vector< SCH_PIN * > GetGraphicalPins(int aUnit=0, int aBodyStyle=0) const override
Graphical pins: Return schematic pin objects as drawn (unexpanded), filtered by unit/body.
int Compare(const LIB_SYMBOL &aRhs, int aCompareFlags=~COMPARE_FLAGS::UNIT, REPORTER *aReporter=nullptr) const
Comparison test that can be used for operators.
void AddDrawItem(SCH_ITEM *aItem, bool aSort=true)
Add a new draw aItem to the draw object list and sort according to aSort.
virtual void SetName(const wxString &aName)
Instantiate the current locale within a scope in which you are expecting exceptions to be thrown.
bool empty(int aType=UNDEFINED_TYPE) const
const wxString & GetName() const
void SetEntry(const wxString &aPinNumber, const wxString &aPadNumber)
Set the pad number for a symbol pin.
VECTOR2I GetPosition() const override
virtual const wxString & GetText() const override
Return the string associated with the text object.
void SetPosition(const VECTOR2I &aPosition) override
void SetText(const wxString &aText) override
Base class for any item which can be embedded within the SCHEMATIC container class,...
virtual void SetBodyStyle(int aBodyStyle)
COMPARE_FLAGS
The list of flags used by various compare functions.
virtual void SetUnit(int aUnit)
void SetNumber(const wxString &aNumber)
void SetLength(int aLength)
void Move(const VECTOR2I &aOffset) override
Move the item by aMoveVector to a new position.
A temporary symbol library that is removed when it goes out of scope.
const wxString & GetPath() const
void SetExcludedFromBoard(bool aExclude, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
Set or clear exclude from board netlist flag.
virtual void SetShowPinNumbers(bool aShow)
Set or clear the pin number visibility flag.
int GetPinNameOffset() const
virtual 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 SetExcludedFromPosFiles(bool aExclude, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
Set or clear exclude from position files flag.
virtual void SetExcludedFromBOM(bool aExcludeFromBOM, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
Set or clear the exclude from schematic bill of materials flag.
TEST_LIB_SYMBOL_FIXTURE()
LIB_SYMBOL m_part_no_data
Part with no extra data set.
static bool empty(const wxTextEntryBase *aCtrl)
@ RECTANGLE
Use RECTANGLE instead of RECT to avoid collision in a Windows header.
std::unique_ptr< T > IO_RELEASER
Helper to hold and release an IO_BASE object when exceptions are thrown.
std::string GetEeschemaTestDataDir()
Get the configured location of Eeschema test data.
bool AreDefaultFieldsCorrect(const std::vector< SCH_FIELD > &aFields)
Predicate to check that the mandatory fields look sensible.
bool FieldNameIdMatches(const SCH_FIELD &aField, const std::string &aExpectedName, int aExpectedId)
Predicate to check a field name is as expected.
LIBRARY_SYMBOL_FACT ExtractLibrarySymbolFact(const LIB_SYMBOL &aSymbol)
@ PT_INPUT
usual pin input: must be connected
@ PT_POWER_IN
power input (GND, VCC for ICs). Must be connected to a power output.
static const std::vector< std::string > filters
@ USER
The field ID hasn't been set yet; field is invalid.
@ DESCRIPTION
Field Description of part, i.e. "1/4W 1% Metal Film Resistor".
@ FOOTPRINT
Field Name Module PCB, i.e. "16DIP300".
@ DATASHEET
name of datasheet
@ REFERENCE
Field Reference of part, i.e. "IC21".
@ VALUE
Field Value of part, i.e. "3.3K".
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
BOOST_REQUIRE(intersection.has_value()==c.ExpectedIntersection.has_value())
BOOST_AUTO_TEST_SUITE_END()
void CheckDuplicatePins(LIB_SYMBOL *aSymbol, std::vector< wxString > &aMessages, UNITS_PROVIDER *aUnitsProvider)
static void saveToLib(const wxString &aLibPath, const LIB_SYMBOL &aSymbol)
Write a symbol to its own library file.
static int alternateBodyStyleItemCount(LIB_SYMBOL &aSymbol)
Return the number of draw items belonging to a body style beyond the standard one.
static std::unique_ptr< LIB_SYMBOL > loadDeMorganSymbol()
Load 4001, a four unit NOR gate carrying a De Morgan alternate body style.
BOOST_AUTO_TEST_CASE(DefaultProperties)
Declare the test suite.
VECTOR3I expected(15, 30, 45)
BOOST_CHECK_PREDICATE(ArePolylineEndPointsNearCircle,(chain)(c.m_geom.m_center_point)(radius)(accuracy+epsilon))
BOOST_TEST_CONTEXT("Test Clearance")
BOOST_CHECK_EQUAL(result, "25.4")
#define CHECK_WX_ASSERT(STATEMENT)
A test macro to check a wxASSERT is thrown.
VECTOR2< int32_t > VECTOR2I