aboutsummaryrefslogtreecommitdiff
path: root/unittests/ADT/HashingTest.cpp
blob: 18bfb722f4a74fe4bfb8d3298ecca6be514097a9 (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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//===- llvm/unittest/ADT/HashingTest.cpp ----------------------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// Hashing.h unit tests.
//
//===----------------------------------------------------------------------===//

#include "gtest/gtest.h"
#include "llvm/ADT/Hashing.h"

using namespace llvm;

namespace {

TEST(HashingTest, EmptyHashTest) {
  GeneralHash Hash;
  ASSERT_EQ(0u, Hash.finish());
}

TEST(HashingTest, IntegerHashTest) {
  ASSERT_TRUE(GeneralHash().add(1).finish() == GeneralHash().add(1).finish());
  ASSERT_TRUE(GeneralHash().add(1).finish() != GeneralHash().add(2).finish());
}

TEST(HashingTest, StringHashTest) {
  ASSERT_TRUE(
    GeneralHash().add("abc").finish() == GeneralHash().add("abc").finish());
  ASSERT_TRUE(
    GeneralHash().add("abc").finish() != GeneralHash().add("abcd").finish());
}

TEST(HashingTest, FloatHashTest) {
  ASSERT_TRUE(
    GeneralHash().add(1.0f).finish() == GeneralHash().add(1.0f).finish());
  ASSERT_TRUE(
    GeneralHash().add(1.0f).finish() != GeneralHash().add(2.0f).finish());
}

TEST(HashingTest, DoubleHashTest) {
  ASSERT_TRUE(GeneralHash().add(1.).finish() == GeneralHash().add(1.).finish());
  ASSERT_TRUE(GeneralHash().add(1.).finish() != GeneralHash().add(2.).finish());
}

TEST(HashingTest, IntegerArrayHashTest) {
  int a[] = { 1, 2 };
  int b[] = { 1, 3 };
  ASSERT_TRUE(GeneralHash().add(a).finish() == GeneralHash().add(a).finish());
  ASSERT_TRUE(GeneralHash().add(a).finish() != GeneralHash().add(b).finish());
}

}