34using kiapi::common::commands::SelectionSpec;
35using kiapi::common::commands::SyncSelection;
40static const wxString
c_verticalSheet = wxS(
"00000000-0000-0000-0000-00004b3a1333" );
58 path.push_back( aRoot );
66 return static_cast<std::size_t
>(
67 std::ranges::count_if(
m_board->Footprints(),
70 return aFootprint->IsWithinSchematicSheet( aSheetPath );
74 std::vector<BOARD_ITEM*>
Resolve(
const SyncSelection& aRequest )
const
102 std::size_t matched = 0;
104 for(
FOOTPRINT* footprint : m_board->Footprints() )
106 bool onVertical = footprint->IsWithinSchematicSheet( vertical );
107 bool onHorizontal = footprint->IsWithinSchematicSheet( horizontal );
109 BOOST_CHECK( !( onVertical && onHorizontal ) );
111 if( onVertical || onHorizontal )
126 BOOST_REQUIRE( firstSession.front() != secondSession.front() );
127 BOOST_CHECK_EQUAL( CountOnSheet( firstSession ), CountOnSheet( secondSession ) );
135 rootOnly.push_back(
KIID() );
144 SyncSelection request;
145 SelectionSpec* spec = request.add_items();
146 spec->mutable_pad()->set_reference(
"C4" );
147 spec->mutable_pad()->set_number(
"2" );
149 std::vector<BOARD_ITEM*> items = Resolve( request );
151 BOOST_REQUIRE_EQUAL( items.size(), 1 );
152 BOOST_REQUIRE_EQUAL( items[0]->Type(),
PCB_PAD_T );
154 PAD*
pad =
static_cast<PAD*
>( items[0] );
163 SyncSelection request;
173 SyncSelection request;
174 request.add_items()->mutable_footprint()->set_reference(
"C5" );
175 request.add_items()->mutable_footprint()->set_reference(
"C3" );
177 std::vector<BOARD_ITEM*> items = Resolve( request );
179 BOOST_REQUIRE_EQUAL( items.size(), 2 );
void LoadBoard(SETTINGS_MANAGER &aSettingsManager, const wxString &aRelPath, std::unique_ptr< BOARD > &aBoard)
std::vector< BOARD_ITEM * > FindItemsFromSyncSelection(const BOARD *aBoard, const google::protobuf::RepeatedPtrField< kiapi::common::commands::SelectionSpec > &aItems)
Resolve a cross-probe selection request against a board.
KICOMMON_API void PackSheetPath(types::SheetPath &aOutput, const KIID_PATH &aInput)
std::size_t CountOnSheet(const KIID_PATH &aSheetPath) const
SETTINGS_MANAGER m_settingsManager
CROSS_PROBE_SELECTION_FIXTURE()
std::unique_ptr< BOARD > m_board
std::vector< BOARD_ITEM * > Resolve(const SyncSelection &aRequest) const
KIID_PATH SchematicPath(const KIID &aRoot, const wxString &aSheet) const
Build the sheet path the schematic editor cross-probes with when a sheet is clicked.
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
static const wxString c_verticalSheet
static const wxString c_horizontalSheet
BOOST_AUTO_TEST_CASE(SheetSelectionFindsItsFootprints)
static const std::size_t c_footprintsOnBoard
static const std::size_t c_footprintsPerSheet
BOOST_REQUIRE(intersection.has_value()==c.ExpectedIntersection.has_value())
BOOST_AUTO_TEST_SUITE_END()
BOOST_CHECK_EQUAL(result, "25.4")
@ PCB_PAD_T
class PAD, a pad in a footprint