91 t = m_symbol.GetTransform();
94 t = m_symbol.GetTransform();
97 t = m_symbol.GetTransform();
108 fn.AppendDir( wxS(
"variant_test" ) );
109 fn.SetName( wxS(
"variant_test" ) );
115 BOOST_CHECK( symbol );
118 wxString variantName = wxS(
"Variant1" );
119 std::optional<SCH_SYMBOL_VARIANT> variant = symbol->
GetVariant( m_schematic->Hierarchy()[0], variantName );
120 BOOST_CHECK( !variant );
123 BOOST_CHECK( !symbol->
GetDNP() );
124 symbol->
SetDNP(
true, &m_schematic->Hierarchy()[0], variantName );
125 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], variantName ) );
130 BOOST_CHECK( symbol->
GetExcludedFromBOM( &m_schematic->Hierarchy()[0], variantName ) );
135 BOOST_CHECK( symbol->
GetExcludedFromSim( &m_schematic->Hierarchy()[0], variantName ) );
149 false, 0 ) == wxS(
"1K" ) );
152 false, 0, variantName ) == wxS(
"10K" ) );
166 fn.AppendDir( wxS(
"variant_test" ) );
167 fn.SetName( wxS(
"variant_test" ) );
175 wxString newFieldName = wxS(
"Sim.Library" );
179 BOOST_CHECK( existing ==
nullptr );
183 newField.
SetText( wxS(
"test_model.lib" ) );
191 BOOST_CHECK( addedField->
GetParent() == symbol );
196 BOOST_CHECK( found->
GetText() == wxS(
"test_model.lib" ) );
210 LoadSchematic( SchematicQAPath( wxS(
"component_classes" ) ) );
223 if( candidate->
GetRef( &sheet,
false ) == wxS(
"U1" )
234 [](
const std::vector<SCH_PIN*>& aPins )
236 std::set<wxString> numbers;
239 numbers.insert(
pin->GetNumber() );
244 const std::set<wxString> unitAPins = { wxS(
"1" ), wxS(
"2" ), wxS(
"3" ) };
245 const std::set<wxString> unitBPins = { wxS(
"5" ), wxS(
"6" ), wxS(
"7" ) };
249 BOOST_CHECK( pinNumbers( symbol->
GetLibPins() ) == unitAPins );
251 std::unique_ptr<SCH_SYMBOL> undoImage(
static_cast<SCH_SYMBOL*
>( symbol->
Clone() ) );
258 BOOST_CHECK( pinNumbers( symbol->
GetLibPins() ) == unitBPins );
265 BOOST_CHECK( pinNumbers( symbol->
GetLibPins() ) == unitAPins );
269 BOOST_CHECK( pinNumbers( undoImage->GetLibPins() ) == unitBPins );
289 fn.AppendDir( wxS(
"variant_test" ) );
290 fn.SetName( wxS(
"variant_test" ) );
300 wxString variantName = wxS(
"DialogTest" );
303 BOOST_CHECK( !symbol->
GetDNP() );
315 symbol->
SetDNP(
true, &sheet, variantName );
318 BOOST_CHECK( symbol->
GetDNP( &sheet, variantName ) );
325 BOOST_CHECK( !symbol->
GetDNP() );
339 fn.AppendDir( wxS(
"variant_test" ) );
340 fn.SetName( wxS(
"variant_test" ) );
346 wxString variantName = wxS(
"TestVariant" );
347 wxString description = wxS(
"This is a test variant description" );
350 m_schematic->AddVariant( variantName );
351 BOOST_CHECK( m_schematic->GetVariantNames().contains( variantName ) );
354 m_schematic->SetVariantDescription( variantName, description );
355 BOOST_CHECK_EQUAL( m_schematic->GetVariantDescription( variantName ), description );
358 BOOST_CHECK( m_schematic->GetVariantDescription( wxS(
"NonExistent" ) ).IsEmpty() );
361 m_schematic->SetVariantDescription( variantName, wxEmptyString );
362 BOOST_CHECK( m_schematic->GetVariantDescription( variantName ).IsEmpty() );
373 fn.AppendDir( wxS(
"variant_test" ) );
374 fn.SetName( wxS(
"variant_test" ) );
380 wxString variantName = wxS(
"MilitaryGrade" );
383 m_schematic->AddVariant( variantName );
384 m_schematic->SetCurrentVariant( variantName );
387 wxString token = wxS(
"VARIANT" );
388 bool resolved = m_schematic->ResolveTextVar( &m_schematic->Hierarchy()[0], &token, 0 );
389 BOOST_CHECK( resolved );
393 token = wxS(
"VARIANTNAME" );
394 resolved = m_schematic->ResolveTextVar( &m_schematic->Hierarchy()[0], &token, 0 );
395 BOOST_CHECK( resolved );
399 m_schematic->SetCurrentVariant( wxEmptyString );
400 token = wxS(
"VARIANT" );
401 resolved = m_schematic->ResolveTextVar( &m_schematic->Hierarchy()[0], &token, 0 );
402 BOOST_CHECK( resolved );
403 BOOST_CHECK( token.IsEmpty() );
414 fn.AppendDir( wxS(
"variant_test" ) );
415 fn.SetName( wxS(
"variant_test" ) );
421 wxString variantName = wxS(
"IndustrialVariant" );
422 wxString description = wxS(
"Industrial temperature range components" );
425 m_schematic->AddVariant( variantName );
426 m_schematic->SetVariantDescription( variantName, description );
427 m_schematic->SetCurrentVariant( variantName );
430 wxString token = wxS(
"VARIANT_DESC" );
431 bool resolved = m_schematic->ResolveTextVar( &m_schematic->Hierarchy()[0], &token, 0 );
432 BOOST_CHECK( resolved );
436 m_schematic->SetVariantDescription( variantName, wxEmptyString );
437 token = wxS(
"VARIANT_DESC" );
438 resolved = m_schematic->ResolveTextVar( &m_schematic->Hierarchy()[0], &token, 0 );
439 BOOST_CHECK( resolved );
440 BOOST_CHECK( token.IsEmpty() );
451 fn.AppendDir( wxS(
"variant_test" ) );
452 fn.SetName( wxS(
"variant_test" ) );
461 wxString oldName = wxS(
"OriginalVariant" );
462 wxString newName = wxS(
"RenamedVariant" );
463 wxString description = wxS(
"Original description" );
466 m_schematic->AddVariant( oldName );
467 m_schematic->SetVariantDescription( oldName, description );
468 m_schematic->SetCurrentVariant( oldName );
471 symbol->
SetDNP(
true, &m_schematic->Hierarchy()[0], oldName );
475 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], oldName ) );
477 false, 0, oldName ), wxS(
"100K" ) );
480 m_schematic->RenameVariant( oldName, newName );
483 BOOST_CHECK( !m_schematic->GetVariantNames().contains( oldName ) );
486 BOOST_CHECK( m_schematic->GetVariantNames().contains( newName ) );
495 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], newName ) );
497 false, 0, newName ), wxS(
"100K" ) );
508 fn.AppendDir( wxS(
"variant_test" ) );
509 fn.SetName( wxS(
"variant_test" ) );
518 wxString sourceVariant = wxS(
"SourceVariant" );
519 wxString copyVariant = wxS(
"CopiedVariant" );
520 wxString description = wxS(
"Source description" );
523 m_schematic->AddVariant( sourceVariant );
524 m_schematic->SetVariantDescription( sourceVariant, description );
527 symbol->
SetDNP(
true, &m_schematic->Hierarchy()[0], sourceVariant );
534 m_schematic->CopyVariant( sourceVariant, copyVariant );
537 BOOST_CHECK( m_schematic->GetVariantNames().contains( sourceVariant ) );
538 BOOST_CHECK( m_schematic->GetVariantNames().contains( copyVariant ) );
541 BOOST_CHECK_EQUAL( m_schematic->GetVariantDescription( copyVariant ), description );
544 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], copyVariant ) );
545 BOOST_CHECK( symbol->
GetExcludedFromBOM( &m_schematic->Hierarchy()[0], copyVariant ) );
549 false, 0, copyVariant ), wxS(
"47K" ) );
552 symbol->
SetDNP(
false, &m_schematic->Hierarchy()[0], copyVariant );
556 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], sourceVariant ) );
558 false, 0, sourceVariant ), wxS(
"47K" ) );
561 BOOST_CHECK( !symbol->
GetDNP( &m_schematic->Hierarchy()[0], copyVariant ) );
563 false, 0, copyVariant ), wxS(
"100K" ) );
574 fn.AppendDir( wxS(
"variant_test" ) );
575 fn.SetName( wxS(
"variant_test" ) );
584 wxString variantName1 = wxS(
"DiffTestVariant1" );
585 wxString variantName2 = wxS(
"DiffTestVariant2" );
593 m_schematic->AddVariant( variantName1 );
598 false, 0, variantName1 );
602 BOOST_CHECK( defaultValue != variantValue );
605 m_schematic->AddVariant( variantName2 );
608 false, 0, variantName2 );
622 fn.AppendDir( wxS(
"variant_test" ) );
623 fn.SetName( wxS(
"variant_test" ) );
632 wxString variantName = wxS(
"DNPVariant" );
635 BOOST_CHECK( !symbol->
GetDNP() );
636 BOOST_CHECK( !symbol->
GetDNP( &m_schematic->Hierarchy()[0], wxEmptyString ) );
639 m_schematic->AddVariant( variantName );
640 symbol->
SetDNP(
true, &m_schematic->Hierarchy()[0], variantName );
643 BOOST_CHECK( !symbol->
GetDNP() );
644 BOOST_CHECK( !symbol->
GetDNP( &m_schematic->Hierarchy()[0], wxEmptyString ) );
647 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], variantName ) );
652 BOOST_CHECK( symbol->
GetExcludedFromBOM( &m_schematic->Hierarchy()[0], variantName ) );
653 BOOST_CHECK( !symbol->
GetExcludedFromBOM( &m_schematic->Hierarchy()[0], wxEmptyString ) );
676 fn.AppendDir( wxS(
"variant_test" ) );
677 fn.SetName( wxS(
"variant_test" ) );
684 m_schematic->AddVariant( wxS(
"Zebra" ) );
685 m_schematic->AddVariant( wxS(
"Alpha" ) );
686 m_schematic->AddVariant( wxS(
"Beta" ) );
688 wxArrayString variantNames = m_schematic->GetVariantNamesForUI();
691 BOOST_CHECK( variantNames.GetCount() >= 4 );
695 BOOST_CHECK( !variantNames[0].IsEmpty() );
699 bool foundAlpha =
false;
700 bool foundBeta =
false;
701 bool foundZebra =
false;
703 for(
size_t i = 1; i < variantNames.GetCount(); i++ )
705 if( variantNames[i] == wxS(
"Alpha" ) )
707 else if( variantNames[i] == wxS(
"Beta" ) )
709 else if( variantNames[i] == wxS(
"Zebra" ) )
713 BOOST_CHECK( foundAlpha );
714 BOOST_CHECK( foundBeta );
715 BOOST_CHECK( foundZebra );
728 fn.AppendDir( wxS(
"variant_test" ) );
729 fn.SetName( wxS(
"variant_test" ) );
738 wxString variantName = wxS(
"PersistenceTest" );
739 wxString newValue = wxS(
"4.7K" );
743 m_schematic->AddVariant( variantName );
746 symbol->
SetValueFieldText( newValue, &m_schematic->Hierarchy()[0], variantName );
749 std::optional<SCH_SYMBOL_VARIANT> variant = symbol->
GetVariant( m_schematic->Hierarchy()[0], variantName );
753 BOOST_CHECK( variant->m_Fields.contains( fieldName ) );
757 wxString retrievedValue = symbol->
GetValue(
false, &m_schematic->Hierarchy()[0],
false, variantName );
761 wxString retrievedDefault = symbol->
GetValue(
false, &m_schematic->Hierarchy()[0],
false, wxEmptyString );
773 fn.AppendDir( wxS(
"variant_test" ) );
774 fn.SetName( wxS(
"variant_test" ) );
783 wxString variantName1 = wxS(
"MethodTest1" );
784 wxString variantName2 = wxS(
"MethodTest2" );
785 wxString value1 = wxS(
"10K" );
786 wxString value2 = wxS(
"22K" );
789 m_schematic->AddVariant( variantName1 );
790 m_schematic->AddVariant( variantName2 );
796 symbol->
SetFieldText( fieldName, value2, &m_schematic->Hierarchy()[0], variantName2 );
799 std::optional<SCH_SYMBOL_VARIANT> variant1 = symbol->
GetVariant( m_schematic->Hierarchy()[0], variantName1 );
800 std::optional<SCH_SYMBOL_VARIANT> variant2 = symbol->
GetVariant( m_schematic->Hierarchy()[0], variantName2 );
805 BOOST_CHECK( variant1->m_Fields.contains( fieldName ) );
806 BOOST_CHECK( variant2->m_Fields.contains( fieldName ) );
829 fn.AppendDir( wxS(
"variant_test" ) );
830 fn.SetName( wxS(
"variant_test" ) );
839 wxString variantName = wxS(
"ProductionVariant" );
842 m_schematic->AddVariant( variantName );
845 symbol->
SetDNP(
true, &m_schematic->Hierarchy()[0], variantName );
848 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], wxS(
"ProductionVariant" ) ) );
851 BOOST_CHECK( m_schematic->GetVariantNames().contains( wxS(
"ProductionVariant" ) ) );
854 m_schematic->SetCurrentVariant( variantName );
858 BOOST_CHECK( !symbol->
GetDNP( &m_schematic->Hierarchy()[0], wxS(
"NonExistentVariant" ) ) );
869 fn.AppendDir( wxS(
"variant_test" ) );
870 fn.SetName( wxS(
"variant_test" ) );
879 wxString variantName = wxS(
"DeleteMe" );
882 m_schematic->AddVariant( variantName );
883 symbol->
SetDNP(
true, &m_schematic->Hierarchy()[0], variantName );
887 BOOST_CHECK( symbol->
GetDNP( &m_schematic->Hierarchy()[0], variantName ) );
888 std::optional<SCH_SYMBOL_VARIANT> variant = symbol->
GetVariant( m_schematic->Hierarchy()[0], variantName );
889 BOOST_CHECK( variant.has_value() );
892 m_schematic->DeleteVariant( variantName );
895 BOOST_CHECK( !m_schematic->GetVariantNames().contains( variantName ) );
898 BOOST_CHECK( !symbol->
GetDNP( &m_schematic->Hierarchy()[0], variantName ) );
909 fn.AppendDir( wxS(
"variant_test" ) );
910 fn.SetName( wxS(
"variant_test" ) );
919 wxString variantName = wxS(
"UnicodeTest" );
920 m_schematic->AddVariant( variantName );
923 wxString unicodeValue = wxS(
"1kΩ ±5% 日本語" );
927 false, 0, variantName );
931 wxString specialChars = wxS(
"R<1K>\"test\"'value'" );
935 false, 0, variantName );
941 false, 0, variantName );
942 BOOST_CHECK( retrieved.IsEmpty() );
945 wxString unicodeDesc = wxS(
"Variante für Produktion — 测试" );
946 m_schematic->SetVariantDescription( variantName, unicodeDesc );
947 BOOST_CHECK_EQUAL( m_schematic->GetVariantDescription( variantName ), unicodeDesc );
958 fn.AppendDir( wxS(
"variant_test" ) );
959 fn.SetName( wxS(
"variant_test" ) );
968 wxString variantName = wxS(
"MilitaryGrade" );
969 wxString variantValue = wxS(
"1K-MIL" );
970 wxString defaultValue = wxS(
"1K" );
973 m_schematic->AddVariant( variantName );
981 wxString symbolRef = symbol->
GetRef( &m_schematic->Hierarchy()[0],
false );
984 wxString token = symbolRef + wxS(
":VALUE:" ) + variantName;
985 bool resolved = m_schematic->ResolveCrossReference( &token, 0 );
986 BOOST_CHECK( resolved );
990 token = symbolRef + wxS(
":VALUE" );
991 resolved = m_schematic->ResolveCrossReference( &token, 0 );
992 BOOST_CHECK( resolved );
996 token = symbolRef + wxS(
":VALUE:NonExistentVariant" );
997 resolved = m_schematic->ResolveCrossReference( &token, 0 );
998 BOOST_CHECK( resolved );
1002 token = wxS(
"VALUE" );
1003 resolved = symbol->
ResolveTextVar( &m_schematic->Hierarchy()[0], &token, variantName, 0 );
1004 BOOST_CHECK( resolved );
1008 token = wxS(
"VALUE" );
1009 resolved = symbol->
ResolveTextVar( &m_schematic->Hierarchy()[0], &token, wxEmptyString, 0 );
1010 BOOST_CHECK( resolved );
1024 fn.AppendDir( wxS(
"variant_test" ) );
1025 fn.SetName( wxS(
"variant_test" ) );
1034 wxString variantName = wxS(
"FootprintVariant" );
1035 wxString baseFootprint = wxS(
"Resistor_SMD:R_0805_2012Metric" );
1036 wxString variantFootprint = wxS(
"Resistor_SMD:R_0402_1005Metric" );
1044 m_schematic->AddVariant( variantName );
1047 symbol->
SetFieldText( fieldName, variantFootprint, &m_schematic->Hierarchy()[0], variantName );
1054 wxString retrievedDefault = symbol->
GetFieldText( fieldName, &m_schematic->Hierarchy()[0], wxEmptyString );
1058 wxString retrievedVariant = symbol->
GetFieldText( fieldName, &m_schematic->Hierarchy()[0], variantName );
1062 std::optional<SCH_SYMBOL_VARIANT> variant = symbol->
GetVariant( m_schematic->Hierarchy()[0], variantName );
1064 BOOST_CHECK( variant->m_Fields.contains( fieldName ) );
1077 fn.AppendDir( wxS(
"variant_test" ) );
1078 fn.SetName( wxS(
"variant_test" ) );
1087 wxString variantName = wxS(
"NoOpTest" );
1088 wxString baseFootprint = wxS(
"Resistor_SMD:R_0805_2012Metric" );
1095 m_schematic->AddVariant( variantName );
1098 symbol->
SetFieldText( fieldName, baseFootprint, &m_schematic->Hierarchy()[0], variantName );
1101 std::optional<SCH_SYMBOL_VARIANT> variant = symbol->
GetVariant( m_schematic->Hierarchy()[0], variantName );
1104 if( variant.has_value() )
1106 BOOST_CHECK( !variant->m_Fields.contains( fieldName ) );
1119 fn.AppendDir( wxS(
"variant_test" ) );
1120 fn.SetName( wxS(
"variant_test" ) );
1127 m_schematic->SetCurrentSheet( m_schematic->Hierarchy()[0] );
1135 wxString variantName = wxS(
"BboxVariant" );
1136 wxString shortFp = wxS(
"R_0402" );
1137 wxString longFp = wxS(
"Resistor_SMD:R_2512_6332Metric_Pad1.52x3.35mm_HandSolder" );
1143 m_schematic->AddVariant( variantName );
1144 symbol->
SetFieldText( fpField->
GetName(), longFp, &m_schematic->Hierarchy()[0], variantName );
1147 wxString resolvedDefault = fpField->
GetShownText( &m_schematic->Hierarchy()[0],
false, 0, wxEmptyString );
1148 wxString resolvedVariant = fpField->
GetShownText( &m_schematic->Hierarchy()[0],
false, 0, variantName );
1153 m_schematic->SetCurrentVariant( wxEmptyString );
1154 wxString implicitDefault = fpField->
GetShownText(
false );
1156 m_schematic->SetCurrentVariant( variantName );
1157 wxString implicitVariant = fpField->
GetShownText(
false );
1163 m_schematic->SetCurrentVariant( wxEmptyString );
1169 m_schematic->SetCurrentVariant( variantName );
1177 m_schematic->SetCurrentVariant( wxEmptyString );
1197 fn.AppendDir( wxS(
"variant_test" ) );
1198 fn.SetName( wxS(
"variant_test" ) );
1216 BOOST_CHECK( !defaultVariant.
m_DNP );
1227 "InitializeAttributes should copy DNP from symbol" );
1229 "InitializeAttributes should copy ExcludedFromBOM from symbol" );
1231 "InitializeAttributes should copy ExcludedFromSim from symbol" );
1233 "InitializeAttributes should copy ExcludedFromBoard from symbol" );
1235 "InitializeAttributes should copy ExcludedFromPosFiles from symbol" );
1268 "'+5VA' symbol must not match whole-word search for '+5V'" );
1273 "'+5VA' symbol must match plain search for '+5V'" );
1279 "'+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.