20#include <boost/test/unit_test.hpp>
61 text->SetText( wxT(
"${U1:VALUE}" ) );
63 commit.
Push( wxT(
"add text" ), 0 );
89 text->SetText( wxT(
"${U1:Value}" ) );
92 commit.
Push( wxT(
"seed" ), 0 );
96 std::vector<std::pair<EDA_ITEM*, TEXT_VAR_REF_KEY>> invalidations;
99 { invalidations.emplace_back( dep, key ); } );
106 commit.
Push( wxT(
"edit value" ), 0 );
110 bool sawTextDependent = std::any_of( invalidations.begin(), invalidations.end(),
111 [](
const auto& pair )
112 { return pair.first && pair.first->Type() == PCB_TEXT_T; } );
114 BOOST_CHECK( sawTextDependent );
131 text->SetText( wxT(
"${X}" ) );
133 commit.
Push( wxT(
"add" ), 0 );
142 commit.
Push( wxT(
"remove" ), 0 );
159 text->SetText( wxT(
"${OP:1}" ) );
161 commit.
Push( wxT(
"add op" ), 0 );
185 text->SetText( wxT(
"${U1:Value}" ) );
188 commit.
Push( wxT(
"seed" ), 0 );
193 std::vector<EDA_ITEM*> invalidations;
201 bool sawPcbText = std::any_of( invalidations.begin(), invalidations.end(),
203 { return item && item->Type() == PCB_TEXT_T; } );
204 BOOST_CHECK( sawPcbText );
207 invalidations.clear();
209 BOOST_CHECK( invalidations.empty() );
231 BOOST_CHECK_NO_THROW( board.
RemoveAll() );
245 barcode->
SetText( wxT(
"${SN}" ) );
246 commit.
Add( barcode );
247 commit.
Push( wxT(
"add barcode" ), 0 );
270 barcode->
SetText( wxT(
"${U1:Value}" ) );
271 commit.
Add( barcode );
273 commit.
Push( wxT(
"seed" ), 0 );
276 std::vector<EDA_ITEM*> invalidations;
280 invalidations.push_back( dep );
287 commit.
Push( wxT(
"edit value" ), 0 );
289 bool sawBarcode = std::any_of( invalidations.begin(), invalidations.end(),
292 return item && item->Type() == PCB_BARCODE_T;
294 BOOST_CHECK( sawBarcode );
virtual void Push(const wxString &aMessage=wxEmptyString, int aCommitFlags=0) override
Execute the changes.
TEXT_VAR_TRACKER & Tracker()
Information pertinent to a Pcbnew printed circuit board.
BOARD_TEXT_VAR_ADAPTER * GetTextVarAdapter() const
void SetCurrentVariant(const wxString &aVariant)
void Add(BOARD_ITEM *aItem, ADD_MODE aMode=ADD_MODE::INSERT, bool aSkipConnectivity=false) override
Removes an item from the container.
void AddVariant(const wxString &aVariantName)
const FOOTPRINTS & Footprints() const
void RemoveAll(std::initializer_list< KICAD_T > aTypes={ PCB_NETINFO_T, PCB_MARKER_T, PCB_GROUP_T, PCB_ZONE_T, PCB_GENERATOR_T, PCB_FOOTPRINT_T, PCB_TRACE_T, PCB_SHAPE_T })
An efficient way to remove all items of a certain type from the board.
COMMIT & Remove(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr)
Remove a new item from the model.
COMMIT & Modify(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr, RECURSE_MODE aRecurse=RECURSE_MODE::NO_RECURSE)
Modify a given item in the model.
COMMIT & Add(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr)
Add a new item to the model.
A base class for most all the KiCad significant classes used in schematics and boards.
Handle the data for a net.
void SetText(const wxString &aText)
Set the barcode content text to encode.
Bidirectional index mapping TEXT_VAR_REF_KEY → dependent items and item → keys.
std::size_t ItemCount() const
ListenerHandle AddInvalidateListener(InvalidateCallback aCallback)
Register a listener that fires for every invalidation.
TEXT_VAR_DEPENDENCY_INDEX & Index()
BARCODE class definition.
Identifies a single resolvable source that a text item's ${...} reference depends on.
static TEXT_VAR_REF_KEY FromToken(const wxString &aToken)
Parse a raw token (the text between ${ and }) into a key using lexical classification only — no looku...
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
BOOST_AUTO_TEST_SUITE(CadstarPartParser)
BOOST_REQUIRE(intersection.has_value()==c.ExpectedIntersection.has_value())
BOOST_AUTO_TEST_SUITE_END()
BOOST_CHECK_EQUAL(result, "25.4")
BOOST_AUTO_TEST_CASE(AdapterIsInstalledOnConstruction)
End-to-end reactive pipeline: BOARD commits + TEXT_VAR_TRACKER + BOARD_TEXT_VAR_ADAPTER together.