}
};
+/* Test large 1MB buffer with known CRC32 */
+class crc32_large_buf : public ::testing::Test {
+protected:
+ static uint8_t *buffer;
+ static const size_t buffer_size = 1024 * 1024;
+
+ static void SetUpTestSuite() {
+ buffer = (uint8_t*)zng_alloc(buffer_size);
+ memset(buffer, 0x55, buffer_size);
+ }
+
+ static void TearDownTestSuite() {
+ zng_free(buffer);
+ }
+
+public:
+ void hash(crc32_func crc32) {
+ EXPECT_EQ(crc32(0, buffer, buffer_size), 0x0026D5FB);
+ }
+};
+
+uint8_t *crc32_large_buf::buffer = nullptr;
+
INSTANTIATE_TEST_SUITE_P(crc32, crc32_variant, testing::ValuesIn(tests));
#define TEST_CRC32(name, func, support_flag) \
return; \
} \
hash(GetParam(), func); \
+ } \
+ TEST_F(crc32_large_buf, name) { \
+ if (!(support_flag)) { \
+ GTEST_SKIP(); \
+ return; \
+ } \
+ hash(func); \
}
#ifndef WITHOUT_CHORBA