xref: /aosp_15_r20/external/webrtc/third_party/crc32c/src/src/crc32c_read_le_unittest.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1 // Copyright 2017 The CRC32C Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. See the AUTHORS file for names of contributors.
4 
5 #include "./crc32c_read_le.h"
6 
7 #include <cstddef>
8 #include <cstdint>
9 
10 #include "gtest/gtest.h"
11 
12 #include "./crc32c_round_up.h"
13 
14 namespace crc32c {
15 
TEST(Crc32CReadLETest,ReadUint32LE)16 TEST(Crc32CReadLETest, ReadUint32LE) {
17   // little-endian 0x12345678
18   alignas(4) uint8_t bytes[] = {0x78, 0x56, 0x34, 0x12};
19 
20   ASSERT_EQ(RoundUp<4>(bytes), bytes) << "Stack array is not aligned";
21   EXPECT_EQ(static_cast<uint32_t>(0x12345678), ReadUint32LE(bytes));
22 }
23 
TEST(Crc32CReadLETest,ReadUint64LE)24 TEST(Crc32CReadLETest, ReadUint64LE) {
25   // little-endian 0x123456789ABCDEF0
26   alignas(8) uint8_t bytes[] = {0xF0, 0xDE, 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12};
27 
28   ASSERT_EQ(RoundUp<8>(bytes), bytes) << "Stack array is not aligned";
29   EXPECT_EQ(static_cast<uint64_t>(0x123456789ABCDEF0), ReadUint64LE(bytes));
30 }
31 
32 }  // namespace crc32c
33