87 t = m_symbol.GetTransform();
90 t = m_symbol.GetTransform();
93 t = m_symbol.GetTransform();
104 fn.AppendDir( wxS(
"variant_test" ) );
105 fn.SetName( wxS(
"variant_test" ) );
111 BOOST_CHECK( symbol );
114 wxString variantName = wxS(
"Variant1" );
115 std::optional<SCH_SYMBOL_VARIANT> variant = symbol->
GetVariant( m_schematic->Hierarchy()[0], variantName );
116 BOOST_CHECK( !variant );
119 BOOST_CHECK( !symbol->
GetDNP() );
120 symbol->
SetDNP(
true, &m_schematic->Hierarchy()[0], variantName );
121 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], variantName ) );
126 BOOST_CHECK( symbol->
GetExcludedFromBOM( &m_schematic->Hierarchy()[0], variantName ) );
131 BOOST_CHECK( symbol->
GetExcludedFromSim( &m_schematic->Hierarchy()[0], variantName ) );
145 false, 0 ) == wxS(
"1K" ) );
148 false, 0, variantName ) == wxS(
"10K" ) );
162 fn.AppendDir( wxS(
"variant_test" ) );
163 fn.SetName( wxS(
"variant_test" ) );
171 wxString newFieldName = wxS(
"Sim.Library" );
175 BOOST_CHECK( existing ==
nullptr );
179 newField.
SetText( wxS(
"test_model.lib" ) );
187 BOOST_CHECK( addedField->
GetParent() == symbol );
192 BOOST_CHECK( found->
GetText() == wxS(
"test_model.lib" ) );
206 LoadSchematic( SchematicQAPath( wxS(
"component_classes" ) ) );
219 if( candidate->
GetRef( &sheet,
false ) == wxS(
"U1" )
230 [](
const std::vector<SCH_PIN*>& aPins )
232 std::set<wxString> numbers;
235 numbers.insert(
pin->GetNumber() );
240 const std::set<wxString> unitAPins = { wxS(
"1" ), wxS(
"2" ), wxS(
"3" ) };
241 const std::set<wxString> unitBPins = { wxS(
"5" ), wxS(
"6" ), wxS(
"7" ) };
245 BOOST_CHECK( pinNumbers( symbol->
GetLibPins() ) == unitAPins );
247 std::unique_ptr<SCH_SYMBOL> undoImage(
static_cast<SCH_SYMBOL*
>( symbol->
Clone() ) );
254 BOOST_CHECK( pinNumbers( symbol->
GetLibPins() ) == unitBPins );
261 BOOST_CHECK( pinNumbers( symbol->
GetLibPins() ) == unitAPins );
265 BOOST_CHECK( pinNumbers( undoImage->GetLibPins() ) == unitBPins );
285 fn.AppendDir( wxS(
"variant_test" ) );
286 fn.SetName( wxS(
"variant_test" ) );
296 wxString variantName = wxS(
"DialogTest" );
299 BOOST_CHECK( !symbol->
GetDNP() );
311 symbol->
SetDNP(
true, &sheet, variantName );
314 BOOST_CHECK( symbol->
GetDNP( &sheet, variantName ) );
321 BOOST_CHECK( !symbol->
GetDNP() );
335 fn.AppendDir( wxS(
"variant_test" ) );
336 fn.SetName( wxS(
"variant_test" ) );
342 wxString variantName = wxS(
"TestVariant" );
343 wxString description = wxS(
"This is a test variant description" );
346 m_schematic->AddVariant( variantName );
347 BOOST_CHECK( m_schematic->GetVariantNames().contains( variantName ) );
350 m_schematic->SetVariantDescription( variantName, description );
351 BOOST_CHECK_EQUAL( m_schematic->GetVariantDescription( variantName ), description );
354 BOOST_CHECK( m_schematic->GetVariantDescription( wxS(
"NonExistent" ) ).IsEmpty() );
357 m_schematic->SetVariantDescription( variantName, wxEmptyString );
358 BOOST_CHECK( m_schematic->GetVariantDescription( variantName ).IsEmpty() );
369 fn.AppendDir( wxS(
"variant_test" ) );
370 fn.SetName( wxS(
"variant_test" ) );
376 wxString variantName = wxS(
"MilitaryGrade" );
379 m_schematic->AddVariant( variantName );
380 m_schematic->SetCurrentVariant( variantName );
383 wxString token = wxS(
"VARIANT" );
384 bool resolved = m_schematic->ResolveTextVar( &m_schematic->Hierarchy()[0], &token, 0 );
385 BOOST_CHECK( resolved );
389 token = wxS(
"VARIANTNAME" );
390 resolved = m_schematic->ResolveTextVar( &m_schematic->Hierarchy()[0], &token, 0 );
391 BOOST_CHECK( resolved );
395 m_schematic->SetCurrentVariant( wxEmptyString );
396 token = wxS(
"VARIANT" );
397 resolved = m_schematic->ResolveTextVar( &m_schematic->Hierarchy()[0], &token, 0 );
398 BOOST_CHECK( resolved );
399 BOOST_CHECK( token.IsEmpty() );
410 fn.AppendDir( wxS(
"variant_test" ) );
411 fn.SetName( wxS(
"variant_test" ) );
417 wxString variantName = wxS(
"IndustrialVariant" );
418 wxString description = wxS(
"Industrial temperature range components" );
421 m_schematic->AddVariant( variantName );
422 m_schematic->SetVariantDescription( variantName, description );
423 m_schematic->SetCurrentVariant( variantName );
426 wxString token = wxS(
"VARIANT_DESC" );
427 bool resolved = m_schematic->ResolveTextVar( &m_schematic->Hierarchy()[0], &token, 0 );
428 BOOST_CHECK( resolved );
432 m_schematic->SetVariantDescription( variantName, wxEmptyString );
433 token = wxS(
"VARIANT_DESC" );
434 resolved = m_schematic->ResolveTextVar( &m_schematic->Hierarchy()[0], &token, 0 );
435 BOOST_CHECK( resolved );
436 BOOST_CHECK( token.IsEmpty() );
447 fn.AppendDir( wxS(
"variant_test" ) );
448 fn.SetName( wxS(
"variant_test" ) );
457 wxString oldName = wxS(
"OriginalVariant" );
458 wxString newName = wxS(
"RenamedVariant" );
459 wxString description = wxS(
"Original description" );
462 m_schematic->AddVariant( oldName );
463 m_schematic->SetVariantDescription( oldName, description );
464 m_schematic->SetCurrentVariant( oldName );
467 symbol->
SetDNP(
true, &m_schematic->Hierarchy()[0], oldName );
471 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], oldName ) );
473 false, 0, oldName ), wxS(
"100K" ) );
476 m_schematic->RenameVariant( oldName, newName );
479 BOOST_CHECK( !m_schematic->GetVariantNames().contains( oldName ) );
482 BOOST_CHECK( m_schematic->GetVariantNames().contains( newName ) );
491 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], newName ) );
493 false, 0, newName ), wxS(
"100K" ) );
504 fn.AppendDir( wxS(
"variant_test" ) );
505 fn.SetName( wxS(
"variant_test" ) );
514 wxString sourceVariant = wxS(
"SourceVariant" );
515 wxString copyVariant = wxS(
"CopiedVariant" );
516 wxString description = wxS(
"Source description" );
519 m_schematic->AddVariant( sourceVariant );
520 m_schematic->SetVariantDescription( sourceVariant, description );
523 symbol->
SetDNP(
true, &m_schematic->Hierarchy()[0], sourceVariant );
530 m_schematic->CopyVariant( sourceVariant, copyVariant );
533 BOOST_CHECK( m_schematic->GetVariantNames().contains( sourceVariant ) );
534 BOOST_CHECK( m_schematic->GetVariantNames().contains( copyVariant ) );
537 BOOST_CHECK_EQUAL( m_schematic->GetVariantDescription( copyVariant ), description );
540 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], copyVariant ) );
541 BOOST_CHECK( symbol->
GetExcludedFromBOM( &m_schematic->Hierarchy()[0], copyVariant ) );
545 false, 0, copyVariant ), wxS(
"47K" ) );
548 symbol->
SetDNP(
false, &m_schematic->Hierarchy()[0], copyVariant );
552 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], sourceVariant ) );
554 false, 0, sourceVariant ), wxS(
"47K" ) );
557 BOOST_CHECK( !symbol->
GetDNP( &m_schematic->Hierarchy()[0], copyVariant ) );
559 false, 0, copyVariant ), wxS(
"100K" ) );
570 fn.AppendDir( wxS(
"variant_test" ) );
571 fn.SetName( wxS(
"variant_test" ) );
580 wxString variantName1 = wxS(
"DiffTestVariant1" );
581 wxString variantName2 = wxS(
"DiffTestVariant2" );
589 m_schematic->AddVariant( variantName1 );
594 false, 0, variantName1 );
598 BOOST_CHECK( defaultValue != variantValue );
601 m_schematic->AddVariant( variantName2 );
604 false, 0, variantName2 );
618 fn.AppendDir( wxS(
"variant_test" ) );
619 fn.SetName( wxS(
"variant_test" ) );
628 wxString variantName = wxS(
"DNPVariant" );
631 BOOST_CHECK( !symbol->
GetDNP() );
632 BOOST_CHECK( !symbol->
GetDNP( &m_schematic->Hierarchy()[0], wxEmptyString ) );
635 m_schematic->AddVariant( variantName );
636 symbol->
SetDNP(
true, &m_schematic->Hierarchy()[0], variantName );
639 BOOST_CHECK( !symbol->
GetDNP() );
640 BOOST_CHECK( !symbol->
GetDNP( &m_schematic->Hierarchy()[0], wxEmptyString ) );
643 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], variantName ) );
648 BOOST_CHECK( symbol->
GetExcludedFromBOM( &m_schematic->Hierarchy()[0], variantName ) );
649 BOOST_CHECK( !symbol->
GetExcludedFromBOM( &m_schematic->Hierarchy()[0], wxEmptyString ) );
672 fn.AppendDir( wxS(
"variant_test" ) );
673 fn.SetName( wxS(
"variant_test" ) );
680 m_schematic->AddVariant( wxS(
"Zebra" ) );
681 m_schematic->AddVariant( wxS(
"Alpha" ) );
682 m_schematic->AddVariant( wxS(
"Beta" ) );
684 wxArrayString variantNames = m_schematic->GetVariantNamesForUI();
687 BOOST_CHECK( variantNames.GetCount() >= 4 );
691 BOOST_CHECK( !variantNames[0].IsEmpty() );
695 bool foundAlpha =
false;
696 bool foundBeta =
false;
697 bool foundZebra =
false;
699 for(
size_t i = 1; i < variantNames.GetCount(); i++ )
701 if( variantNames[i] == wxS(
"Alpha" ) )
703 else if( variantNames[i] == wxS(
"Beta" ) )
705 else if( variantNames[i] == wxS(
"Zebra" ) )
709 BOOST_CHECK( foundAlpha );
710 BOOST_CHECK( foundBeta );
711 BOOST_CHECK( foundZebra );
724 fn.AppendDir( wxS(
"variant_test" ) );
725 fn.SetName( wxS(
"variant_test" ) );
734 wxString variantName = wxS(
"PersistenceTest" );
735 wxString newValue = wxS(
"4.7K" );
739 m_schematic->AddVariant( variantName );
742 symbol->
SetValueFieldText( newValue, &m_schematic->Hierarchy()[0], variantName );
745 std::optional<SCH_SYMBOL_VARIANT> variant = symbol->
GetVariant( m_schematic->Hierarchy()[0], variantName );
749 BOOST_CHECK( variant->m_Fields.contains( fieldName ) );
753 wxString retrievedValue = symbol->
GetValue(
false, &m_schematic->Hierarchy()[0],
false, variantName );
757 wxString retrievedDefault = symbol->
GetValue(
false, &m_schematic->Hierarchy()[0],
false, wxEmptyString );
769 fn.AppendDir( wxS(
"variant_test" ) );
770 fn.SetName( wxS(
"variant_test" ) );
779 wxString variantName1 = wxS(
"MethodTest1" );
780 wxString variantName2 = wxS(
"MethodTest2" );
781 wxString value1 = wxS(
"10K" );
782 wxString value2 = wxS(
"22K" );
785 m_schematic->AddVariant( variantName1 );
786 m_schematic->AddVariant( variantName2 );
792 symbol->
SetFieldText( fieldName, value2, &m_schematic->Hierarchy()[0], variantName2 );
795 std::optional<SCH_SYMBOL_VARIANT> variant1 = symbol->
GetVariant( m_schematic->Hierarchy()[0], variantName1 );
796 std::optional<SCH_SYMBOL_VARIANT> variant2 = symbol->
GetVariant( m_schematic->Hierarchy()[0], variantName2 );
801 BOOST_CHECK( variant1->m_Fields.contains( fieldName ) );
802 BOOST_CHECK( variant2->m_Fields.contains( fieldName ) );
825 fn.AppendDir( wxS(
"variant_test" ) );
826 fn.SetName( wxS(
"variant_test" ) );
835 wxString variantName = wxS(
"ProductionVariant" );
838 m_schematic->AddVariant( variantName );
841 symbol->
SetDNP(
true, &m_schematic->Hierarchy()[0], variantName );
844 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], wxS(
"ProductionVariant" ) ) );
847 BOOST_CHECK( m_schematic->GetVariantNames().contains( wxS(
"ProductionVariant" ) ) );
850 m_schematic->SetCurrentVariant( variantName );
854 BOOST_CHECK( !symbol->
GetDNP( &m_schematic->Hierarchy()[0], wxS(
"NonExistentVariant" ) ) );
865 fn.AppendDir( wxS(
"variant_test" ) );
866 fn.SetName( wxS(
"variant_test" ) );
875 wxString variantName = wxS(
"DeleteMe" );
878 m_schematic->AddVariant( variantName );
879 symbol->
SetDNP(
true, &m_schematic->Hierarchy()[0], variantName );
883 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], variantName ) );
884 std::optional<SCH_SYMBOL_VARIANT> variant = symbol->
GetVariant( m_schematic->Hierarchy()[0], variantName );
885 BOOST_CHECK( variant.has_value() );
888 m_schematic->DeleteVariant( variantName );
891 BOOST_CHECK( !m_schematic->GetVariantNames().contains( variantName ) );
894 BOOST_CHECK( !symbol->
GetDNP( &m_schematic->Hierarchy()[0], variantName ) );
905 fn.AppendDir( wxS(
"variant_test" ) );
906 fn.SetName( wxS(
"variant_test" ) );
915 wxString variantName = wxS(
"UnicodeTest" );
916 m_schematic->AddVariant( variantName );
919 wxString unicodeValue = wxS(
"1kΩ ±5% 日本語" );
923 false, 0, variantName );
927 wxString specialChars = wxS(
"R<1K>\"test\"'value'" );
931 false, 0, variantName );
937 false, 0, variantName );
938 BOOST_CHECK( retrieved.IsEmpty() );
941 wxString unicodeDesc = wxS(
"Variante für Produktion — 测试" );
942 m_schematic->SetVariantDescription( variantName, unicodeDesc );
943 BOOST_CHECK_EQUAL( m_schematic->GetVariantDescription( variantName ), unicodeDesc );
954 fn.AppendDir( wxS(
"variant_test" ) );
955 fn.SetName( wxS(
"variant_test" ) );
964 wxString variantName = wxS(
"MilitaryGrade" );
965 wxString variantValue = wxS(
"1K-MIL" );
966 wxString defaultValue = wxS(
"1K" );
969 m_schematic->AddVariant( variantName );
977 wxString symbolRef = symbol->
GetRef( &m_schematic->Hierarchy()[0],
false );
980 wxString token = symbolRef + wxS(
":VALUE:" ) + variantName;
981 bool resolved = m_schematic->ResolveCrossReference( &token, 0 );
982 BOOST_CHECK( resolved );
986 token = symbolRef + wxS(
":VALUE" );
987 resolved = m_schematic->ResolveCrossReference( &token, 0 );
988 BOOST_CHECK( resolved );
992 token = symbolRef + wxS(
":VALUE:NonExistentVariant" );
993 resolved = m_schematic->ResolveCrossReference( &token, 0 );
994 BOOST_CHECK( resolved );
998 token = wxS(
"VALUE" );
999 resolved = symbol->
ResolveTextVar( &m_schematic->Hierarchy()[0], &token, variantName, 0 );
1000 BOOST_CHECK( resolved );
1004 token = wxS(
"VALUE" );
1005 resolved = symbol->
ResolveTextVar( &m_schematic->Hierarchy()[0], &token, wxEmptyString, 0 );
1006 BOOST_CHECK( resolved );
1020 fn.AppendDir( wxS(
"variant_test" ) );
1021 fn.SetName( wxS(
"variant_test" ) );
1030 wxString variantName = wxS(
"FootprintVariant" );
1031 wxString baseFootprint = wxS(
"Resistor_SMD:R_0805_2012Metric" );
1032 wxString variantFootprint = wxS(
"Resistor_SMD:R_0402_1005Metric" );
1040 m_schematic->AddVariant( variantName );
1043 symbol->
SetFieldText( fieldName, variantFootprint, &m_schematic->Hierarchy()[0], variantName );
1050 wxString retrievedDefault = symbol->
GetFieldText( fieldName, &m_schematic->Hierarchy()[0], wxEmptyString );
1054 wxString retrievedVariant = symbol->
GetFieldText( fieldName, &m_schematic->Hierarchy()[0], variantName );
1058 std::optional<SCH_SYMBOL_VARIANT> variant = symbol->
GetVariant( m_schematic->Hierarchy()[0], variantName );
1060 BOOST_CHECK( variant->m_Fields.contains( fieldName ) );
1073 fn.AppendDir( wxS(
"variant_test" ) );
1074 fn.SetName( wxS(
"variant_test" ) );
1083 wxString variantName = wxS(
"NoOpTest" );
1084 wxString baseFootprint = wxS(
"Resistor_SMD:R_0805_2012Metric" );
1091 m_schematic->AddVariant( variantName );
1094 symbol->
SetFieldText( fieldName, baseFootprint, &m_schematic->Hierarchy()[0], variantName );
1097 std::optional<SCH_SYMBOL_VARIANT> variant = symbol->
GetVariant( m_schematic->Hierarchy()[0], variantName );
1100 if( variant.has_value() )
1102 BOOST_CHECK( !variant->m_Fields.contains( fieldName ) );
1115 fn.AppendDir( wxS(
"variant_test" ) );
1116 fn.SetName( wxS(
"variant_test" ) );
1123 m_schematic->SetCurrentSheet( m_schematic->Hierarchy()[0] );
1131 wxString variantName = wxS(
"BboxVariant" );
1132 wxString shortFp = wxS(
"R_0402" );
1133 wxString longFp = wxS(
"Resistor_SMD:R_2512_6332Metric_Pad1.52x3.35mm_HandSolder" );
1139 m_schematic->AddVariant( variantName );
1140 symbol->
SetFieldText( fpField->
GetName(), longFp, &m_schematic->Hierarchy()[0], variantName );
1143 wxString resolvedDefault = fpField->
GetShownText( &m_schematic->Hierarchy()[0],
false, 0, wxEmptyString );
1144 wxString resolvedVariant = fpField->
GetShownText( &m_schematic->Hierarchy()[0],
false, 0, variantName );
1149 m_schematic->SetCurrentVariant( wxEmptyString );
1150 wxString implicitDefault = fpField->
GetShownText(
false );
1152 m_schematic->SetCurrentVariant( variantName );
1153 wxString implicitVariant = fpField->
GetShownText(
false );
1159 m_schematic->SetCurrentVariant( wxEmptyString );
1165 m_schematic->SetCurrentVariant( variantName );
1173 m_schematic->SetCurrentVariant( wxEmptyString );
1193 fn.AppendDir( wxS(
"variant_test" ) );
1194 fn.SetName( wxS(
"variant_test" ) );
1212 BOOST_CHECK( !defaultVariant.
m_DNP );
1223 "InitializeAttributes should copy DNP from symbol" );
1225 "InitializeAttributes should copy ExcludedFromBOM from symbol" );
1227 "InitializeAttributes should copy ExcludedFromSim from symbol" );
1229 "InitializeAttributes should copy ExcludedFromBoard from symbol" );
1231 "InitializeAttributes should copy ExcludedFromPosFiles from symbol" );
1264 "'+5VA' symbol must not match whole-word search for '+5V'" );
1269 "'+5VA' symbol must match plain search for '+5V'" );
1275 "'+5VA' symbol must match whole-word search for '+5VA'" );
constexpr size_type GetWidth() const
EDA_ITEM * GetParent() const
virtual void SetParent(EDA_ITEM *aParent)
BOX2I GetTextBox(const RENDER_SETTINGS *aSettings, int aLine=-1) const
Useful in multiline texts to calculate the full text or a line area (for zones filling,...
virtual void SetVisible(bool aVisible)
virtual void ClearBoundingBoxCache()
EE_TYPE OfType(KICAD_T aType) const
A generic fixture for loading schematics and associated settings for qa tests.
std::unique_ptr< SCHEMATIC > m_schematic
Define a library symbol object.
const LIB_ID & GetLibId() const override
SCH_FIELD & GetValueField()
Return reference to the value field.
virtual const wxString & GetText() const override
Return the string associated with the text object.
wxString GetShownText(const SCH_SHEET_PATH *aPath, bool aAllowExtraText, int aDepth=0, const wxString &aVariantName=wxEmptyString) const
wxString GetName(bool aUseDefaultName=true) const
Return the field name (not translated).
void SetText(const wxString &aText) override
Base class for any item which can be embedded within the SCHEMATIC container class,...
virtual void SetUnit(int aUnit)
void SwapItemData(SCH_ITEM *aImage)
Swap data between aItem and aImage.
EE_RTREE & Items()
Get the full RTree, usually for iterating.
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
Variant information for a schematic symbol.
void InitializeAttributes(const SCH_SYMBOL &aSymbol)
bool GetExcludedFromSim(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
virtual void SetDNP(bool aEnable, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
void SetFieldText(const wxString &aFieldName, const wxString &aFieldText, const SCH_SHEET_PATH *aPath=nullptr, const wxString &aVariantName=wxEmptyString)
wxString GetFieldText(const wxString &aFieldName, const SCH_SHEET_PATH *aPath=nullptr, const wxString &aVariantName=wxEmptyString) const
void SetExcludedFromSim(bool aEnable, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
Set or clear the exclude from simulation flag.
std::optional< SCH_SYMBOL_VARIANT > GetVariant(const SCH_SHEET_PATH &aInstance, const wxString &aVariantName) const
EDA_ITEM * Clone() const override
Create a duplicate of this item with linked list members set to NULL.
bool GetExcludedFromBOM(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
bool Matches(const EDA_SEARCH_DATA &aSearchData, void *aAuxData) const override
Compare the item against the search criteria in aSearchData.
void UpdatePins()
Updates the cache of SCH_PIN objects for each pin.
const wxString GetValue(bool aResolve, const SCH_SHEET_PATH *aPath, bool aAllowExtraText, const wxString &aVariantName=wxEmptyString) const override
const wxString GetFootprintFieldText(bool aResolve, const SCH_SHEET_PATH *aPath, bool aAllowExtraText, const wxString &aVariantName=wxEmptyString) const
void SetFootprintFieldText(const wxString &aFootprint)
void SetExcludedFromPosFiles(bool aEnable, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
bool ResolveTextVar(const SCH_SHEET_PATH *aPath, wxString *token, int aDepth=0) const
Resolve any references to system tokens supported by the symbol.
void SetValueFieldText(const wxString &aValue, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString)
std::vector< SCH_PIN * > GetLibPins() const
Populate a vector with all the pins from the library object that match the current unit and bodyStyle...
bool GetExcludedFromPosFiles(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
SCH_FIELD * AddField(const SCH_FIELD &aField)
Add a field to the symbol.
bool GetExcludedFromBoard(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
int GetUnitSelection(const SCH_SHEET_PATH *aSheet) const
Return the instance-specific unit selection for the given sheet path.
void SetUnitSelection(const SCH_SHEET_PATH *aSheet, int aUnitSelection)
Set the selected unit of this symbol on one sheet.
void SetExcludedFromBOM(bool aEnable, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
Set or clear the exclude from schematic bill of materials flag.
virtual bool GetDNP(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
Set or clear the 'Do Not Populate' flag.
const wxString GetRef(const SCH_SHEET_PATH *aSheet, bool aIncludeUnit=false) const override
void SetExcludedFromBoard(bool aEnable, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
SCH_FIELD * GetField(FIELD_T aFieldType)
Return a mandatory field in this symbol.
SCH_SYMBOL * GetFirstSymbol()
SCH_SYMBOL object with no extra data set.
bool m_ExcludedFromPosFiles
static const std::string KiCadSchematicFileExtension
std::string GetEeschemaTestDataDir()
Get the configured location of Eeschema test data.
static void LoadSchematic(SCHEMATIC *aSchematic, SCH_SHEET *aRootSheet, const wxString &aFileName)
EDA_SEARCH_MATCH_MODE matchMode
@ USER
The field ID hasn't been set yet; field is invalid.
@ FOOTPRINT
Field Name Module PCB, i.e. "16DIP300".
@ 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()
BOOST_CHECK_MESSAGE(totalMismatches==0, std::to_string(totalMismatches)+" board(s) with strategy disagreements")
BOOST_AUTO_TEST_CASE(DefaultProperties)
Declare the test suite.
BOOST_CHECK_EQUAL(result, "25.4")
VECTOR2< int32_t > VECTOR2I
Definition of file extensions used in Kicad.