20#include <boost/test/unit_test.hpp>
29#include <wx/filename.h>
41 std::unique_ptr<BOARD> board = std::make_unique<BOARD>();
79 auto tmpFile = std::filesystem::temp_directory_path() /
"net_chain_terminal_pads_roundtrip.kicad_pcb";
80 plugin.SaveBoard( tmpFile.string(), *board );
82 std::unique_ptr<BOARD> loaded = plugin.LoadBoard( tmpFile.string() );
89 n->ResolveTerminalPads( loaded.get() );
102 BOOST_TEST_MESSAGE( wxString::Format( wxS(
"orig p1a=%s p2a=%s"), orig_p1a, orig_p2a ) );
113 bool foundA =
false, foundB =
false;
114 for(
FOOTPRINT* fp : loaded->Footprints() )
116 for(
PAD*
pad : fp->Pads() )
118 if(
pad == termA1 ) foundA =
true;
119 if(
pad == termB1 ) foundB =
true;
122 BOOST_CHECK( foundA );
123 BOOST_CHECK( foundB );
128 std::unique_ptr<BOARD> board = std::make_unique<BOARD>();
135 auto tmpFile = std::filesystem::temp_directory_path() /
"single_net_chain_roundtrip.kicad_pcb";
136 plugin.SaveBoard( tmpFile.string(), *board );
138 std::unique_ptr<BOARD> loaded = plugin.LoadBoard( tmpFile.string() );
146 std::unique_ptr<BOARD> board = std::make_unique<BOARD>();
155 n->SetNetChain( wxS(
"Signal1" ) );
159 for(
int code : { 1, 2, 3, 4 } )
169 auto tmpFile = std::filesystem::temp_directory_path() /
"net_chains_survive_buildlist.kicad_pcb";
170 plugin.SaveBoard( tmpFile.string(), *board );
172 std::unique_ptr<BOARD> loaded = plugin.LoadBoard( tmpFile.string() );
175 loaded->BuildListOfNets();
178 std::set<wxString> expectedNames = { wxS(
"Net-(R1-Pad1)"), wxS(
"Net-(R1-Pad2)"), wxS(
"Net-(R2-Pad2)"), wxS(
"Net-(R3-Pad2)") };
179 std::set<wxString> seenNames;
182 if( net->GetNetChain() == wxS(
"Signal1" ) )
185 seenNames.insert( net->GetNetname() );
190 for(
const wxString&
name : expectedNames )
191 BOOST_CHECK( seenNames.count(
name ) );
General utilities for PCB file IO for QA programs.
virtual bool SetNetCode(int aNetCode, bool aNoAssert)
Set net using a net code.
virtual void SetNet(NETINFO_ITEM *aNetInfo)
Set a NET_INFO object for the item.
wxString AsString() const
Handle the data for a net.
const wxString & GetNetChain() const
PAD * GetTerminalPad(int aIndex) const
void SetNetChain(const wxString &aNetChain)
void SetTerminalPad(int aIndex, PAD *aPad)
void SetFrontShape(PAD_SHAPE aShape)
VECTOR2I GetPosition() const override
void SetNumber(const wxString &aNumber)
Set the pad number (note that it can be alphanumeric, such as the array reference "AA12").
void SetPosition(const VECTOR2I &aPos) override
void SetSize(PCB_LAYER_ID aLayer, const VECTOR2I &aSize)
A #PLUGIN derivation for saving and loading Pcbnew s-expression formatted files.
void SetEnd(const VECTOR2I &aEnd)
void SetStart(const VECTOR2I &aStart)
PCB_IO_KICAD_SEXPR plugin
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
BOOST_REQUIRE(intersection.has_value()==c.ExpectedIntersection.has_value())
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_CASE(SignalTerminalPadsRoundTrip)
BOOST_TEST_MESSAGE("Polyline has "<< chain.PointCount()<< " points")
BOOST_CHECK_EQUAL(result, "25.4")
VECTOR2< int32_t > VECTOR2I