20#include <magic_enum.hpp>
21#include <magic_enum_iostream.hpp>
22#include <boost/test/unit_test.hpp>
26#include <wx/wfstream.h>
29using magic_enum::iostream_operators::operator<<;
36 file.
name =
"test_file";
37 std::string data =
"Hello, World!";
42 file.
data_hash = hash.digest().ToString();
51 file.
name =
"test_file";
52 std::string data =
"Hello, World!";
67 data.reserve( 13 * 100000 + 1 );
69 for(
int i = 0; i < 100000; ++i )
70 data +=
"Hello, World!";
86 data.reserve( 100000 );
88 for(
int i = 0; i < 100000; ++i )
89 data +=
static_cast<char>( i % 256 );
104 data.reserve( 100000 );
109 for(
int i = 0; i < 100000; ++i )
110 data +=
static_cast<char>(
rng() % 256 );
128 file.
name =
"test_file";
129 std::string data =
"Hello, World!";
146 wxFileName tempFile = wxFileName::CreateTempFileName( wxS(
"kicad_embed_test" ) );
147 std::string data =
"Test file content for hash computation";
150 wxFFileOutputStream out( tempFile.GetFullPath() );
152 out.Write( data.data(), data.size() );
156 std::string computedHash;
159 BOOST_CHECK( !computedHash.empty() );
168 wxRemoveFile( tempFile.GetFullPath() );
175 wxFileName tempFile1 = wxFileName::CreateTempFileName( wxS(
"kicad_embed_test1" ) );
176 wxFileName tempFile2 = wxFileName::CreateTempFileName( wxS(
"kicad_embed_test2" ) );
177 std::string data1 =
"Content version 1";
178 std::string data2 =
"Content version 2";
181 wxFFileOutputStream out1( tempFile1.GetFullPath() );
183 out1.Write( data1.data(), data1.size() );
187 wxFFileOutputStream out2( tempFile2.GetFullPath() );
189 out2.Write( data2.data(), data2.size() );
193 std::string hash1, hash2;
200 BOOST_CHECK_NE( hash1, hash2 );
203 wxRemoveFile( tempFile1.GetFullPath() );
204 wxRemoveFile( tempFile2.GetFullPath() );
210 wxFileName nonExistent( wxS(
"/nonexistent/path/file.txt" ) );
215 BOOST_CHECK( hash.empty() );
@ FILE_NOT_FOUND
File not found on disk.
@ CHECKSUM_ERROR
Checksum in file does not match data.
static RETURN_CODE DecompressAndDecode(EMBEDDED_FILE &aFile)
Takes data from the #compressedEncodedData buffer and Base64 decodes it.
static RETURN_CODE ComputeFileHash(const wxFileName &aFileName, std::string &aHash)
Compute the hash of a file on disk without fully embedding it.
EMBEDDED_FILE * AddFile(const wxFileName &aName, bool aOverwrite)
Load a file from disk and adds it to the collection.
static RETURN_CODE CompressAndEncode(EMBEDDED_FILE &aFile)
Take data from the #decompressedData buffer and compresses it using ZSTD into the #compressedEncodedD...
A streaming C++ equivalent for MurmurHash3_x64_128.
FORCE_INLINE void add(const std::string &input)
FORCE_INLINE HASH_128 digest()
FORCE_INLINE void reset(uint32_t aSeed=0)
static boost::mt19937 rng
std::vector< char > decompressedData
std::string ToString() const
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
BOOST_AUTO_TEST_SUITE(CadstarPartParser)
BOOST_AUTO_TEST_CASE(CompressAndEncode_OK)
BOOST_REQUIRE(intersection.has_value()==c.ExpectedIntersection.has_value())
BOOST_AUTO_TEST_SUITE_END()
wxString result
Test unit parsing edge cases and error handling.
BOOST_CHECK_EQUAL(result, "25.4")