1 | //===- llvm/unittest/Support/xxhashTest.cpp -------------------------------===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #include "llvm/Support/xxhash.h" |
10 | #include "gtest/gtest.h" |
11 | |
12 | using namespace llvm; |
13 | |
14 | TEST(xxhashTest, Basic) { |
15 | EXPECT_EQ(0xef46db3751d8e999U, xxHash64(StringRef())); |
16 | EXPECT_EQ(0x33bf00a859c4ba3fU, xxHash64("foo" )); |
17 | EXPECT_EQ(0x48a37c90ad27a659U, xxHash64("bar" )); |
18 | EXPECT_EQ(0x69196c1b3af0bff9U, |
19 | xxHash64("0123456789abcdefghijklmnopqrstuvwxyz" )); |
20 | } |
21 | |
22 | TEST(xxhashTest, xxh3) { |
23 | constexpr size_t size = 2243; |
24 | uint8_t a[size]; |
25 | uint64_t x = 1; |
26 | for (size_t i = 0; i < size; ++i) { |
27 | x ^= x << 13; |
28 | x ^= x >> 7; |
29 | x ^= x << 17; |
30 | a[i] = uint8_t(x); |
31 | } |
32 | |
33 | #define F(len, expected) \ |
34 | EXPECT_EQ(uint64_t(expected), xxh3_64bits(ArrayRef(a, size_t(len)))) |
35 | F(0, 0x2d06800538d394c2); |
36 | F(1, 0xd0d496e05c553485); |
37 | F(2, 0x84d625edb7055eac); |
38 | F(3, 0x6ea2d59aca5c3778); |
39 | F(4, 0xbf65290914e80242); |
40 | F(5, 0xc01fd099ad4fc8e4); |
41 | F(6, 0x9e3ea8187399caa5); |
42 | F(7, 0x9da8b60540644f5a); |
43 | F(8, 0xabc1413da6cd0209); |
44 | F(9, 0x8bc89400bfed51f6); |
45 | F(16, 0x7e46916754d7c9b8); |
46 | F(17, 0xed4be912ba5f836d); |
47 | F(32, 0xf59b59b58c304fd1); |
48 | F(33, 0x9013fb74ca603e0c); |
49 | F(64, 0xfa5271fcce0db1c3); |
50 | F(65, 0x79c42431727f1012); |
51 | F(96, 0x591ee0ddf9c9ccd1); |
52 | F(97, 0x8ffc6a3111fe19da); |
53 | F(128, 0x06a146ee9a2da378); |
54 | F(129, 0xbc7138129bf065da); |
55 | F(403, 0xcefeb3ffa532ad8c); |
56 | F(512, 0xcdfa6b6268e3650f); |
57 | F(513, 0x4bb5d42742f9765f); |
58 | F(2048, 0x330ce110cbb79eae); |
59 | F(2049, 0x3ba6afa0249fef9a); |
60 | F(2240, 0xd61d4d2a94e926a8); |
61 | F(2243, 0x0979f786a24edde7); |
62 | #undef F |
63 | } |
64 | |