26#include <boost/test/data/test_case.hpp>
56 { 845466002, 2147483640 },
57 { -845466002, -2147483640 },
59 { 845466003, 2147483640 },
60 { -845466003, -2147483640 },
61 { 1000000000, 2147483640 },
62 { -1000000000, -2147483640 },
107 { -118110, -300000 },
108 { -157480, -400000 },
109 { -196850, -500000 },
110 { -236220, -600000 },
111 { -275591, -700000 },
112 { -314961, -800000 },
113 { -354331, -900000 },
114 { -393701, -1000000 },
144 {
"-0.1mil", -2540 },
146 {
"-0.01mil", -250 },
148 {
"-0.001mil", -30 },
152 {
"-0.00001mil", -0 },
155 {
"-10mil", -254000 },
156 {
"100mil", 2540000 },
157 {
"-100mil", -2540000 },
158 {
"1000mil", 25400000 },
159 {
"-1000mil", -25400000 },
160 {
"10000mil", 254000000 },
161 {
"-10000mil", -254000000 },
163 {
"84546.6002mil", 2147483640 },
164 {
"-84546.6002mil", -2147483640 },
166 {
"84546.6003mil", 2147483640 },
167 {
"-84546.6003mil", -2147483640 },
168 {
"100000mil", 2147483640 },
169 {
"-100000mil", -2147483640 },
170 {
"1000000mil", 2147483640 },
171 {
"-1000000mil", -2147483640 },
172 {
"10000000mil", 2147483640 },
173 {
"-10000000mil", -2147483640 },
190 std::map<wxString, wxString> properties = { {
"TEST", input_value } };
202static const std::vector<std::tuple<std::string, std::map<wxString, wxString>>>
read_properties = {
211 {
"|=", { {
"",
"" } } },
212 {
"|=\0", { {
"",
"" } } },
213 {
"| = ", { {
"",
"" } } },
214 {
"| = \0", { {
"",
"" } } },
216 {
"|A=\0", { {
"A",
"" } } },
217 {
"|A=B", { {
"A",
"B" } } },
218 {
"|A=B\0", { {
"A",
"B" } } },
219 {
"|A=B|", { {
"A",
"B" } } },
220 {
"|A=B|\0", { {
"A",
"B" } } },
221 {
"A=\0", { {
"A",
"" } } },
222 {
"A=B", { {
"A",
"B" } } },
223 {
"A=B\0", { {
"A",
"B" } } },
224 {
"A=B|", { {
"A",
"B" } } },
225 {
"A=B|\0", { {
"A",
"B" } } },
227 {
"|A=B|C=D|\0", { {
"A",
"B" }, {
"C",
"D" } } },
228 {
"A=B|C=D|\0", { {
"A",
"B" }, {
"C",
"D" } } },
230 {
"|A=B|A=C\0", { {
"A",
"B" } } },
231 {
"|A=B|A=C|A=D|A=E|A=F\0", { {
"A",
"B" } } },
233 {
"|a=b\0", { {
"A",
"b" } } },
234 {
"|abc123=b\0", { {
"ABC123",
"b" } } },
236 {
"|A= B\0", { {
"A",
" B" } } },
237 {
"|A=B \0", { {
"A",
"B" } } },
238 {
"| A=B\0", { {
"A",
"B" } } },
239 {
"|A =B\0", { {
"A",
"B" } } },
240 {
"|A=\nB\n\0", { {
"A",
"\nB" } } },
241 {
"A= B\0", { {
"A",
" B" } } },
242 {
"A=B \0", { {
"A",
"B" } } },
243 {
" A=B\0", { {
"A",
"B" } } },
244 {
"A =B\0", { {
"A",
"B" } } },
245 {
"A=\nB\n\0", { {
"A",
"\nB" } } },
248 {
"|A==\0", { {
"A",
"=" } } },
249 {
"|A=a\na\0", { {
"A",
"a\na" } } },
250 {
"|A=a\ta\0", { {
"A",
"a\ta" } } },
252 {
"|%UTF8%A=abc\0", { {
"%UTF8%A",
"abc" } } },
253 {
"|%UTF8%A=\xc2\xa6\0", { {
"%UTF8%A", {
"\xc2\xa6", wxConvUTF8 } } } },
255 {
"|A|B=C\0", { {
"B",
"C" } } },
256 {
"|A=B|C\0", { {
"A",
"B" } } },
267 size_t size = 4 + input_value.size();
268 std::unique_ptr<char[]> content = std::make_unique<char[]>( size );
270 *content.get() = input_value.size();
271 std::memcpy( content.get() + 4, input_value.c_str(), input_value.size() );
280 BOOST_CHECK_EQUAL_COLLECTIONS(
result.begin(),
result.end(),
281 expected_result.begin(), expected_result.end() );
295 const std::string payload = {
'\x01',
'\x02',
'\x03',
'\x00' };
296 uint32_t rawLength =
static_cast<uint32_t
>( payload.size() ) | 0x01000000;
298 size_t totalSize = 4 + payload.size();
299 std::unique_ptr<char[]> content = std::make_unique<char[]>( totalSize );
301 std::memcpy( content.get(), &rawLength, 4 );
302 std::memcpy( content.get() + 4, payload.data(), payload.size() );
305 std::string captured;
307 auto captureBinaryData = [&](
const std::string& aData ) -> std::map<wxString, wxString>
size_t GetRemainingBytes() const
std::map< wxString, wxString > ReadProperties(std::function< std::map< wxString, wxString >(const std::string &)> handleBinaryData=[](const std::string &) { return std::map< wxString, wxString >();})
static int32_t ReadKicadUnit(const std::map< wxString, wxString > &aProps, const wxString &aKey, const wxString &aDefault)
static int32_t ConvertToKicadUnit(const double aValue)
ALTIUM_BINARY_PARSER_FIXTURE()
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.
static const std::vector< std::tuple< int, int > > altium_to_kicad_unit
Declares the struct as the Boost test fixture.
BOOST_AUTO_TEST_CASE(ReadPropertiesBinaryNullBytePreserved)
Verify that ReadProperties does not strip a trailing 0x00 byte from binary records.
static const std::vector< std::tuple< wxString, int > > read_kicad_unit_property
A list of valid test strings and the expected results.
static const std::vector< std::tuple< std::string, std::map< wxString, wxString > > > read_properties
A list of valid test strings and the expected result map.
BOOST_AUTO_TEST_SUITE_END()
wxString result
Test unit parsing edge cases and error handling.
BOOST_CHECK_EQUAL(result, "25.4")