pw_checksum: CRC classes; Update CRC-16-CCITT name
- Rename CcittCrc16 and related functions to Crc16Ccitt, which matches
the algorithm's full standard name (CRC-16-CCITT).
- Create classes for calculating the CRC-16-CCITT and CRC-32. Use the
function names, which were nouns, as the class names (Crc16Ccitt and
Crc32) and provide the functions as class static functions
(Crc16Ccitt::Calculate and Crc32::Calculate).
Change-Id: I625ed715935de3f1000d3119c21a2f6d01245173
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/17403
Reviewed-by: Keir Mierle <keir@google.com>
diff --git a/pw_checksum/ccitt_crc16_test.cc b/pw_checksum/ccitt_crc16_test.cc
index e78f0e9..49a4d3f 100644
--- a/pw_checksum/ccitt_crc16_test.cc
+++ b/pw_checksum/ccitt_crc16_test.cc
@@ -35,33 +35,48 @@
constexpr uint16_t kStringCrc = 0xC184;
TEST(Crc16, Empty) {
- EXPECT_EQ(CcittCrc16(std::span<std::byte>()), kCcittCrc16DefaultInitialValue);
+ EXPECT_EQ(Crc16Ccitt::Calculate(std::span<std::byte>()),
+ Crc16Ccitt::kInitialValue);
}
TEST(Crc16, ByteByByte) {
- uint16_t crc = kCcittCrc16DefaultInitialValue;
+ uint16_t crc = Crc16Ccitt::kInitialValue;
for (size_t i = 0; i < sizeof(kBytes); i++) {
- crc = CcittCrc16(std::byte{kBytes[i]}, crc);
+ crc = Crc16Ccitt::Calculate(std::byte{kBytes[i]}, crc);
}
EXPECT_EQ(crc, kBufferCrc);
}
TEST(Crc16, Buffer) {
- EXPECT_EQ(CcittCrc16(std::as_bytes(std::span(kBytes))), kBufferCrc);
+ EXPECT_EQ(Crc16Ccitt::Calculate(std::as_bytes(std::span(kBytes))),
+ kBufferCrc);
}
TEST(Crc16, String) {
- EXPECT_EQ(CcittCrc16(std::as_bytes(std::span(kString))), kStringCrc);
+ EXPECT_EQ(Crc16Ccitt::Calculate(std::as_bytes(std::span(kString))),
+ kStringCrc);
}
-extern "C" uint16_t CallChecksumCcittCrc16(const void* data, size_t size_bytes);
+TEST(Crc16Class, Buffer) {
+ Crc16Ccitt crc16;
+ crc16.Update(std::as_bytes(std::span(kBytes)));
+ EXPECT_EQ(crc16.value(), kBufferCrc);
+}
+
+TEST(Crc16Class, String) {
+ Crc16Ccitt crc16;
+ crc16.Update(std::as_bytes(std::span(kString)));
+ EXPECT_EQ(crc16.value(), kStringCrc);
+}
+
+extern "C" uint16_t CallChecksumCrc16Ccitt(const void* data, size_t size_bytes);
TEST(Crc16FromC, Buffer) {
- EXPECT_EQ(CallChecksumCcittCrc16(kBytes, sizeof(kBytes)), kBufferCrc);
+ EXPECT_EQ(CallChecksumCrc16Ccitt(kBytes, sizeof(kBytes)), kBufferCrc);
}
TEST(Crc16FromC, String) {
- EXPECT_EQ(CallChecksumCcittCrc16(kString.data(), kString.size()), kStringCrc);
+ EXPECT_EQ(CallChecksumCrc16Ccitt(kString.data(), kString.size()), kStringCrc);
}
} // namespace