Hashing.h - utilities for hashing various data types.
[oota-llvm.git] / unittests / ADT / HashingTest.cpp
1 //===- llvm/unittest/ADT/HashingTest.cpp ----------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // Hashing.h unit tests.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #include "gtest/gtest.h"
15 #include "llvm/ADT/Hashing.h"
16
17 using namespace llvm;
18
19 namespace {
20
21 TEST(HashingTest, EmptyHashTest) {
22   GeneralHash Hash;
23   ASSERT_EQ(0u, Hash.finish());
24 }
25
26 TEST(HashingTest, IntegerHashTest) {
27   ASSERT_TRUE(GeneralHash().add(1).finish() == GeneralHash().add(1).finish());
28   ASSERT_TRUE(GeneralHash().add(1).finish() != GeneralHash().add(2).finish());
29 }
30
31 TEST(HashingTest, StringHashTest) {
32   ASSERT_TRUE(
33     GeneralHash().add("abc").finish() == GeneralHash().add("abc").finish());
34   ASSERT_TRUE(
35     GeneralHash().add("abc").finish() != GeneralHash().add("abcd").finish());
36 }
37
38 TEST(HashingTest, FloatHashTest) {
39   ASSERT_TRUE(
40     GeneralHash().add(1.0f).finish() == GeneralHash().add(1.0f).finish());
41   ASSERT_TRUE(
42     GeneralHash().add(1.0f).finish() != GeneralHash().add(2.0f).finish());
43 }
44
45 TEST(HashingTest, DoubleHashTest) {
46   ASSERT_TRUE(GeneralHash().add(1.).finish() == GeneralHash().add(1.).finish());
47   ASSERT_TRUE(GeneralHash().add(1.).finish() != GeneralHash().add(2.).finish());
48 }
49
50 TEST(HashingTest, IntegerArrayHashTest) {
51   int a[] = { 1, 2 };
52   int b[] = { 1, 3 };
53   ASSERT_TRUE(GeneralHash().add(a).finish() == GeneralHash().add(a).finish());
54   ASSERT_TRUE(GeneralHash().add(a).finish() != GeneralHash().add(b).finish());
55 }
56
57 }