summaryrefslogtreecommitdiff
path: root/base/containers/hash_tables_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/containers/hash_tables_unittest.cc')
-rw-r--r--base/containers/hash_tables_unittest.cc67
1 files changed, 67 insertions, 0 deletions
diff --git a/base/containers/hash_tables_unittest.cc b/base/containers/hash_tables_unittest.cc
new file mode 100644
index 0000000000..6072e5dc91
--- /dev/null
+++ b/base/containers/hash_tables_unittest.cc
@@ -0,0 +1,67 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/containers/hash_tables.h"
+
+#include <stdint.h>
+#include <string>
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+class HashPairTest : public testing::Test {
+};
+
+#define INSERT_PAIR_TEST(Type, value1, value2) \
+ { \
+ Type pair(value1, value2); \
+ base::hash_map<Type, int> map; \
+ map[pair] = 1; \
+ }
+
+// Verify that a hash_map can be constructed for pairs of integers of various
+// sizes.
+TEST_F(HashPairTest, IntegerPairs) {
+ typedef std::pair<int16_t, int16_t> Int16Int16Pair;
+ typedef std::pair<int16_t, int32_t> Int16Int32Pair;
+ typedef std::pair<int16_t, int64_t> Int16Int64Pair;
+
+ INSERT_PAIR_TEST(Int16Int16Pair, 4, 6);
+ INSERT_PAIR_TEST(Int16Int32Pair, 9, (1 << 29) + 378128932);
+ INSERT_PAIR_TEST(Int16Int64Pair, 10,
+ (INT64_C(1) << 60) + INT64_C(78931732321));
+
+ typedef std::pair<int32_t, int16_t> Int32Int16Pair;
+ typedef std::pair<int32_t, int32_t> Int32Int32Pair;
+ typedef std::pair<int32_t, int64_t> Int32Int64Pair;
+
+ INSERT_PAIR_TEST(Int32Int16Pair, 4, 6);
+ INSERT_PAIR_TEST(Int32Int32Pair, 9, (1 << 29) + 378128932);
+ INSERT_PAIR_TEST(Int32Int64Pair, 10,
+ (INT64_C(1) << 60) + INT64_C(78931732321));
+
+ typedef std::pair<int64_t, int16_t> Int64Int16Pair;
+ typedef std::pair<int64_t, int32_t> Int64Int32Pair;
+ typedef std::pair<int64_t, int64_t> Int64Int64Pair;
+
+ INSERT_PAIR_TEST(Int64Int16Pair, 4, 6);
+ INSERT_PAIR_TEST(Int64Int32Pair, 9, (1 << 29) + 378128932);
+ INSERT_PAIR_TEST(Int64Int64Pair, 10,
+ (INT64_C(1) << 60) + INT64_C(78931732321));
+}
+
+// Verify that base::hash_set<const char*> compares by pointer value, not as C
+// strings.
+TEST(HashTableTest, CharPointers) {
+ std::string str1("hello");
+ std::string str2("hello");
+ base::hash_set<const char*> set;
+
+ set.insert(str1.c_str());
+ EXPECT_EQ(1u, set.count(str1.c_str()));
+ EXPECT_EQ(0u, set.count(str2.c_str()));
+}
+
+} // namespace