22#include <boost/test/data/test_case.hpp>
26#include <wx/filename.h>
27#include <wx/wfstream.h>
61 "Fake Board file (KiCad *Legacy* / EAGLE file ext)",
62 "plugins/fakeboard.brd",
66 "Fake Board file (KiCad file ext)",
67 "plugins/fakeboard.kicad_pcb",
71 "Fake Board file (PCAD file ext)",
72 "plugins/fakeboard.pcb",
76 "Fake Board file (CADSTAR file ext)",
77 "plugins/fakeboard.cpa",
81 "Fake Board file (Altium Circuit Studio file ext)",
82 "plugins/fakeboard.CSPcbDoc",
86 "Fake Board file (Altium Circuit Maker file ext)",
87 "plugins/fakeboard.CMPcbDoc",
91 "Fake Board file (Altium Designer file ext)",
92 "plugins/fakeboard.PcbDoc",
97 "Fake Board file (Solid Works PCB file ext)",
98 "plugins/fakeboard.SWPcbDoc",
107 "Basic KiCad *Legacy* board file",
108 "plugins/legacy_demos/flat_hierarchy/flat_hierarchy.brd",
112 "Basic KiCad board file",
113 "complex_hierarchy.kicad_pcb",
117 "Basic Eagle board file",
118 "plugins/eagle/Adafruit-AHT20-PCB/Adafruit AHT20 Temperature & Humidity.brd",
122 "Basic PCAD board file",
123 "plugins/pcad/pcad_4layer_glyph_test_ascii.PCB",
127 "Basic CADSTAR board file",
128 "plugins/cadstar/route_offset/minimal_route_offset_curved_track.cpa",
132 "Basic EasyEDA Std board json file",
133 "plugins/easyeda/PCB_USBMETER-PD QC修改版_2023-09-02.json",
137 "Basic EasyEDA Std backup file",
138 "plugins/easyeda/BackupProjects_ESP32-PICO-D4_smart_watch.zip",
142 "Basic EasyEDA Pro zip board project",
143 "plugins/easyedapro/Scanning Tunneling Microscope OpenSTM ControlBoard.zip",
147 "Basic EasyEDA Pro epro project",
148 "plugins/easyedapro/ProProject_Yuzuki Chameleon_2023-09-02.epro",
152 "Basic Altium Designer board file",
153 "plugins/altium/eDP_adapter_dvt1_source/eDP_adapter_dvt1.PcbDoc",
166 "Non-Library file (KiCad *Legacy* / EAGLE file ext)",
167 "plugins/fakeboard.brd",
171 "Non-Library file (KiCad file ext)",
172 "plugins/fakeboard.kicad_pcb",
176 "Non-Library file (PCAD file ext)",
177 "plugins/fakeboard.pcb",
181 "Non-Library file (CADSTAR file ext)",
182 "plugins/fakeboard.cpa",
186 "Non-Library file (Altium Circuit Studio file ext)",
187 "plugins/fakeboard.CSPcbDoc",
191 "Non-Library file (Altium Circuit Maker file ext)",
192 "plugins/fakeboard.CMPcbDoc",
196 "Non-Library file (Altium Designer file ext)",
197 "plugins/fakeboard.PcbDoc",
202 "Non-Library file (Solid Works PCB file ext)",
203 "plugins/fakeboard.SWPcbDoc",
212 "Basic KiCad footprint .pretty library",
213 "plugins/eagle/lbr/SparkFun-GPS.pretty",
217 "Basic Eagle library file",
218 "plugins/eagle/lbr/SparkFun-GPS.lbr",
222 "Basic CADSTAR PCB Archive library file",
223 "plugins/cadstar/lib/footprint-with-thermal-pad.cpa",
227 "Basic EasyEDA Std board json file",
228 "plugins/easyeda/PCB_USBMETER-PD QC修改版_2023-09-02.json",
232 "Basic EasyEDA Std backup file",
233 "plugins/easyeda/BackupProjects_ESP32-PICO-D4_smart_watch.zip",
237 "Basic EasyEDA Pro zip board project",
238 "plugins/easyedapro/Scanning Tunneling Microscope OpenSTM ControlBoard.zip",
242 "Basic EasyEDA Pro epro project",
243 "plugins/easyedapro/ProProject_Yuzuki Chameleon_2023-09-02.epro",
247 "Altium Designer 'Espressif ESP32-WROOM-32.PcbLib' library file",
248 "plugins/altium/pcblib/Espressif ESP32-WROOM-32.PcbLib",
252 "Altium Designer 'Tracks.v6.PcbLib' library file",
253 "plugins/altium/pcblib/Tracks.v6.PcbLib",
298 bool expectValidHeader = c.m_expected_type == entry.m_type;
317 wxFileName
table( wxFileName::CreateTempFileName(
"kicad_qa_issue23291_" ) );
320 wxFFileOutputStream out(
table.GetFullPath() );
322 const char* contents =
325 " (lib (name \"Battery\") (type \"KiCad\")"
326 " (uri \"${KICAD9_FOOTPRINT_DIR}/Battery.pretty\") (options \"\") (descr \"\"))\n"
328 out.WriteAll( contents, std::strlen( contents ) );
336 wxFileName outLib(
table );
339 std::map<std::string, UTF8> props;
345 BOOST_CHECK( !wxFileName::DirExists( outLib.GetFullPath() ) );
347 wxRemoveFile(
table.GetFullPath() );
General utilities for PCB file IO for QA programs.
const std::vector< ENTRY > & AllPlugins() const
static PLUGIN_REGISTRY * Instance()
static bool ConvertLibrary(const std::map< std::string, UTF8 > &aOldFileProps, const wxString &aOldFilePath, const wxString &aNewFilePath, REPORTER *aReporter)
Convert a schematic symbol library to the latest KiCad format.
PCB_FILE_T
The set of file types that the PCB_IO_MGR knows about, and for which there has been a plugin written,...
@ KICAD_SEXP
S-expression Pcbnew file format.
@ LEGACY
Legacy Pcbnew file formats prior to s-expression.
static PCB_IO * FindPlugin(PCB_FILE_T aFileType)
Return a #PLUGIN which the caller can use to import, export, save, or load design documents.
static PCB_FILE_T FindPluginTypeFromBoardPath(const wxString &aFileName, int aCtl=0)
Return a plugin type given a path for a board file.
static PCB_FILE_T GuessPluginTypeFromLibPath(const wxString &aLibPath, int aCtl=0)
Return a plugin type given a footprint library's libPath.
static const std::string KiCadFootprintLibPathExtension
std::unique_ptr< T > IO_RELEASER
Helper to hold and release an IO_BASE object when exceptions are thrown.
std::string GetPcbnewTestDataDir()
Utility which returns a path to the data directory where the test board files are stored.
std::string m_file_rel_path
PCB_IO_MGR::PCB_FILE_T m_expected_type
friend std::ostream & operator<<(std::ostream &os, const PCB_IO_PLUGIN_CASE &aCase)
BOOST_DATA_TEST_CASE(ConvertToKicadUnit, boost::unit_test::data::make(altium_to_kicad_unit), input_value, expected_result)
Test conversation from Altium internal units into KiCad internal units.
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
BOOST_AUTO_TEST_SUITE(CadstarPartParser)
BOOST_REQUIRE(intersection.has_value()==c.ExpectedIntersection.has_value())
BOOST_AUTO_TEST_SUITE_END()
static const std::vector< PCB_IO_PLUGIN_CASE > BoardPluginCases
BOOST_CHECK_EQUAL(PCB_IO_MGR::FindPluginTypeFromBoardPath(dataPath), c.m_expected_type)
static const std::vector< PCB_IO_PLUGIN_CASE > LibraryPluginCases
std::vector< std::vector< std::string > > table
BOOST_TEST_CONTEXT("Test Clearance")
Definition of file extensions used in Kicad.