5 #include "sw/device/lib/base/crc32.h"
10 #include "gtest/gtest.h"
12 namespace crc32_unittest {
20 class CrcTest :
public testing::TestWithParam<TestParams> {};
27 INSTANTIATE_TEST_SUITE_P(AllCases,
CrcTest,
34 "The quick brown fox jumps over the lazy dog",
38 "\xfe\xca\xfe\xca\x02\xb0\xad\x1b",
42 TEST_P(CrcTest, Crc32) {
43 EXPECT_EQ(crc32(GetParam().input.data(), GetParam().input.length()),
47 TEST_P(CrcTest, Crc32Add) {
50 crc32_add(&ctx, GetParam().input.data(), GetParam().input.length());
52 EXPECT_EQ(crc32_finish(&ctx), GetParam().exp_crc);
55 TEST_F(CrcTest, Misaligned) {
56 constexpr uint32_t kExpCrc = 0x414fa339;
57 alignas(uint32_t)
char input[] =
58 ">The quick brown fox jumps over the lazy dog";
60 EXPECT_EQ(crc32(&input[1], std::strlen(input) - 1), kExpCrc);
64 crc32_add(&ctx, &input[1], std::strlen(input) - 1);
66 EXPECT_EQ(crc32_finish(&ctx), kExpCrc);
69 TEST_P(CrcTest, Crc32Add8) {
72 for (
auto val : GetParam().input) {
73 crc32_add8(&ctx, val);
75 EXPECT_EQ(crc32_finish(&ctx), GetParam().exp_crc);
78 TEST_F(CrcTest, Crc32Add32) {
81 constexpr uint32_t kExpCrc = 0x9508ac14;
83 crc32_add32(&ctx, 0xcafecafe);
85 crc32_add32(&ctx, 0x1badb002);
87 EXPECT_EQ(crc32_finish(&ctx), kExpCrc);