]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
Add large 1mb buffer test for crc32 hashing.
authorNathan Moinvaziri <nathan@nathanm.com>
Mon, 12 May 2025 17:16:27 +0000 (13:16 -0400)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Tue, 27 May 2025 12:45:11 +0000 (14:45 +0200)
test/test_crc32.cc

index 2f768d0c4e31d274fd381d1176c9a2866409d1e1..3e3bc8ea5d6216b9eecc8bdee96de69ae72a28e1 100644 (file)
@@ -228,6 +228,29 @@ public:
     }
 };
 
+/* 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) \
@@ -237,6 +260,13 @@ INSTANTIATE_TEST_SUITE_P(crc32, crc32_variant, testing::ValuesIn(tests));
             return; \
         } \
         hash(GetParam(), func); \
+    } \
+    TEST_F(crc32_large_buf, name) { \
+        if (!(support_flag)) { \
+            GTEST_SKIP(); \
+            return; \
+        } \
+        hash(func); \
     }
 
 #ifndef WITHOUT_CHORBA