String intern table and support for unordered_map

Change-Id: I22d86d060780552675c5d7f14a98ffde480eac82
diff --git a/src/intern_table_test.cc b/src/intern_table_test.cc
new file mode 100644
index 0000000..daae841
--- /dev/null
+++ b/src/intern_table_test.cc
@@ -0,0 +1,31 @@
+// Copyright 2011 Google Inc. All Rights Reserved.
+
+#include "intern_table.h"
+
+#include "common_test.h"
+#include "object.h"
+
+#include "gtest/gtest.h"
+
+namespace art {
+
+class InternTableTest : public RuntimeTest {};
+
+TEST_F(InternTableTest, Intern) {
+  InternTable intern_table;
+  String* foo_1 = intern_table.Intern(3, "foo");
+  String* foo_2 = intern_table.Intern(3, "foo");
+  String* foo_3 = String::AllocFromAscii("foo");
+  String* bar = intern_table.Intern(3, "bar");
+  EXPECT_TRUE(foo_1->Equals("foo"));
+  EXPECT_TRUE(foo_2->Equals("foo"));
+  EXPECT_TRUE(foo_3->Equals("foo"));
+  EXPECT_TRUE(foo_1 != NULL);
+  EXPECT_TRUE(foo_2 != NULL);
+  EXPECT_EQ(foo_1, foo_2);
+  EXPECT_NE(foo_1, bar);
+  EXPECT_NE(foo_2, bar);
+  EXPECT_NE(foo_3, bar);
+}
+
+}  // namespace art