1 | // Copyright (c) 2011 The LevelDB 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 "util/hash.h" |
6 | |
7 | #include "gtest/gtest.h" |
8 | |
9 | namespace leveldb { |
10 | |
11 | TEST(HASH, SignedUnsignedIssue) { |
12 | const uint8_t data1[1] = {0x62}; |
13 | const uint8_t data2[2] = {0xc3, 0x97}; |
14 | const uint8_t data3[3] = {0xe2, 0x99, 0xa5}; |
15 | const uint8_t data4[4] = {0xe1, 0x80, 0xb9, 0x32}; |
16 | const uint8_t data5[48] = { |
17 | 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
18 | 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, |
19 | 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x18, 0x28, 0x00, 0x00, 0x00, |
20 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
21 | }; |
22 | |
23 | ASSERT_EQ(Hash(0, 0, 0xbc9f1d34), 0xbc9f1d34); |
24 | ASSERT_EQ( |
25 | Hash(reinterpret_cast<const char*>(data1), sizeof(data1), 0xbc9f1d34), |
26 | 0xef1345c4); |
27 | ASSERT_EQ( |
28 | Hash(reinterpret_cast<const char*>(data2), sizeof(data2), 0xbc9f1d34), |
29 | 0x5b663814); |
30 | ASSERT_EQ( |
31 | Hash(reinterpret_cast<const char*>(data3), sizeof(data3), 0xbc9f1d34), |
32 | 0x323c078f); |
33 | ASSERT_EQ( |
34 | Hash(reinterpret_cast<const char*>(data4), sizeof(data4), 0xbc9f1d34), |
35 | 0xed21633a); |
36 | ASSERT_EQ( |
37 | Hash(reinterpret_cast<const char*>(data5), sizeof(data5), 0x12345678), |
38 | 0xf333dabb); |
39 | } |
40 | |
41 | } // namespace leveldb |
42 | |