summaryrefslogtreecommitdiff
path: root/libs/ftl/hash_test.cpp
blob: 9c7b8c225e4e077119a3fec8cac61ea5aca540b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/*
 * Copyright 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <ftl/hash.h>
#include <gtest/gtest.h>

#include <numeric>
#include <string>

namespace android::test {

TEST(Hash, StableHash) {
  EXPECT_EQ(11160318154034397263ull, (ftl::stable_hash({})));

  std::string string(64, '?');
  std::iota(string.begin(), string.end(), 'A');

  // Maximum length is 64 characters.
  EXPECT_FALSE(ftl::stable_hash(string + '\n'));

  EXPECT_EQ(6278090252846864564ull, ftl::stable_hash(std::string_view(string).substr(0, 8)));
  EXPECT_EQ(1883356980931444616ull, ftl::stable_hash(std::string_view(string).substr(0, 16)));
  EXPECT_EQ(8073093283835059304ull, ftl::stable_hash(std::string_view(string).substr(0, 32)));
  EXPECT_EQ(18197365392429149980ull, ftl::stable_hash(string));
}

}  // namespace android::test