Index: third_party/crazy_linker/crazy_linker/src/crazy_linker_util_unittest.cpp |
diff --git a/third_party/crazy_linker/crazy_linker/src/crazy_linker_util_unittest.cpp b/third_party/crazy_linker/crazy_linker/src/crazy_linker_util_unittest.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..27affb8d11ee4b0bf7a191489020314fc9c83430 |
--- /dev/null |
+++ b/third_party/crazy_linker/crazy_linker/src/crazy_linker_util_unittest.cpp |
@@ -0,0 +1,229 @@ |
+// Copyright (c) 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 "crazy_linker_util.h" |
+ |
+#include <minitest/minitest.h> |
+ |
+namespace crazy { |
+ |
+TEST(GetBaseNamePtr, Test) { |
+ const char kString[] = "/tmp/foo"; |
+ EXPECT_EQ(kString + 5, GetBaseNamePtr(kString)); |
+} |
+ |
+TEST(String, Empty) { |
+ String s; |
+ EXPECT_TRUE(s.IsEmpty()); |
+ EXPECT_EQ(0u, s.size()); |
+ EXPECT_EQ('\0', s.c_str()[0]); |
+} |
+ |
+TEST(String, CStringConstructor) { |
+ String s("Simple"); |
+ EXPECT_STREQ("Simple", s.c_str()); |
+ EXPECT_EQ(6U, s.size()); |
+} |
+ |
+TEST(String, CStringConstructorWithLength) { |
+ String s2("Simple", 3); |
+ EXPECT_STREQ("Sim", s2.c_str()); |
+ EXPECT_EQ(3U, s2.size()); |
+} |
+ |
+TEST(String, CopyConstructor) { |
+ String s1("Simple"); |
+ String s2(s1); |
+ |
+ EXPECT_EQ(6U, s2.size()); |
+ EXPECT_STREQ(s2.c_str(), s1.c_str()); |
+} |
+ |
+TEST(String, CharConstructor) { |
+ String s('H'); |
+ EXPECT_EQ(1U, s.size()); |
+ EXPECT_STREQ("H", s.c_str()); |
+} |
+ |
+TEST(String, AppendCString) { |
+ String s("Foo"); |
+ s += "Bar"; |
+ EXPECT_STREQ("FooBar", s.c_str()); |
+ s += "Zoo"; |
+ EXPECT_STREQ("FooBarZoo", s.c_str()); |
+} |
+ |
+TEST(String, AppendOther) { |
+ String s("Foo"); |
+ String s2("Bar"); |
+ s += s2; |
+ EXPECT_STREQ("FooBar", s.c_str()); |
+} |
+ |
+TEST(String, ArrayAccess) { |
+ String s("FooBar"); |
+ EXPECT_EQ('F', s[0]); |
+ EXPECT_EQ('o', s[1]); |
+ EXPECT_EQ('o', s[2]); |
+ EXPECT_EQ('B', s[3]); |
+ EXPECT_EQ('a', s[4]); |
+ EXPECT_EQ('r', s[5]); |
+ EXPECT_EQ('\0', s[6]); |
+} |
+ |
+TEST(String, Resize) { |
+ String s("A very long string to have fun"); |
+ s.Resize(10); |
+ EXPECT_EQ(10U, s.size()); |
+ EXPECT_STREQ("A very lon", s.c_str()); |
+} |
+ |
+TEST(String, ResizeToZero) { |
+ String s("Long string to force a dynamic allocation"); |
+ s.Resize(0); |
+ EXPECT_EQ(0U, s.size()); |
+ EXPECT_STREQ("", s.c_str()); |
+} |
+ |
+TEST(Vector, IsEmpty) { |
+ Vector<void*> v; |
+ EXPECT_TRUE(v.IsEmpty()); |
+} |
+ |
+TEST(Vector, PushBack) { |
+ Vector<int> v; |
+ v.PushBack(12345); |
+ EXPECT_FALSE(v.IsEmpty()); |
+ EXPECT_EQ(1U, v.GetCount()); |
+ EXPECT_EQ(12345, v[0]); |
+} |
+ |
+TEST(Vector, PushBack2) { |
+ const int kMaxCount = 500; |
+ Vector<int> v; |
+ for (int n = 0; n < kMaxCount; ++n) |
+ v.PushBack(n * 100); |
+ |
+ EXPECT_FALSE(v.IsEmpty()); |
+ EXPECT_EQ(static_cast<size_t>(kMaxCount), v.GetCount()); |
+} |
+ |
+TEST(Vector, At) { |
+ const int kMaxCount = 500; |
+ Vector<int> v; |
+ for (int n = 0; n < kMaxCount; ++n) |
+ v.PushBack(n * 100); |
+ |
+ for (int n = 0; n < kMaxCount; ++n) { |
+ TEST_TEXT << "Checking v[" << n << "]"; |
+ EXPECT_EQ(n * 100, v[n]); |
+ } |
+} |
+ |
+TEST(Vector, IndexOf) { |
+ const int kMaxCount = 500; |
+ Vector<int> v; |
+ for (int n = 0; n < kMaxCount; ++n) |
+ v.PushBack(n * 100); |
+ |
+ for (int n = 0; n < kMaxCount; ++n) { |
+ TEST_TEXT << "Checking v.IndexOf(" << n * 100 << ")"; |
+ EXPECT_EQ(n, v.IndexOf(n * 100)); |
+ } |
+} |
+ |
+TEST(Vector, InsertAt) { |
+ const int kMaxCount = 500; |
+ |
+ for (size_t k = 0; k < kMaxCount; ++k) { |
+ Vector<int> v; |
+ for (int n = 0; n < kMaxCount; ++n) |
+ v.PushBack(n * 100); |
+ |
+ v.InsertAt(k, -1000); |
+ |
+ EXPECT_EQ(kMaxCount + 1, v.GetCount()); |
+ for (int n = 0; n < v.GetCount(); ++n) { |
+ TEST_TEXT << "Checking v[" << n << "]"; |
+ int expected; |
+ if (n < k) |
+ expected = n * 100; |
+ else if (n == k) |
+ expected = -1000; |
+ else |
+ expected = (n - 1) * 100; |
+ EXPECT_EQ(expected, v[n]); |
+ } |
+ } |
+} |
+ |
+TEST(Vector, RemoveAt) { |
+ const int kMaxCount = 500; |
+ |
+ for (size_t k = 0; k < kMaxCount; ++k) { |
+ Vector<int> v; |
+ for (int n = 0; n < kMaxCount; ++n) |
+ v.PushBack(n * 100); |
+ |
+ v.RemoveAt(k); |
+ |
+ EXPECT_EQ(kMaxCount - 1, v.GetCount()); |
+ for (int n = 0; n < kMaxCount - 1; ++n) { |
+ TEST_TEXT << "Checking v[" << n << "]"; |
+ int expected = (n < k) ? (n * 100) : ((n + 1) * 100); |
+ EXPECT_EQ(expected, v[n]); |
+ } |
+ } |
+} |
+ |
+TEST(Vector, PopFirst) { |
+ const int kMaxCount = 500; |
+ Vector<int> v; |
+ for (int n = 0; n < kMaxCount; ++n) |
+ v.PushBack(n * 100); |
+ |
+ for (int n = 0; n < kMaxCount; ++n) { |
+ int first = v.PopFirst(); |
+ TEST_TEXT << "Checking " << n << "-th PopFirst()"; |
+ EXPECT_EQ(n * 100, first); |
+ EXPECT_EQ(kMaxCount - 1 - n, v.GetCount()); |
+ } |
+ EXPECT_EQ(0u, v.GetCount()); |
+ EXPECT_TRUE(v.IsEmpty()); |
+} |
+ |
+TEST(Set, Empty) { |
+ Set<int> s; |
+ EXPECT_TRUE(s.IsEmpty()); |
+ EXPECT_EQ(0U, s.GetCount()); |
+} |
+ |
+TEST(Set, OneItem) { |
+ Set<int> s; |
+ |
+ EXPECT_FALSE(s.Has(0)); |
+ |
+ EXPECT_TRUE(s.Add(0)); |
+ EXPECT_TRUE(s.Has(0)); |
+ EXPECT_FALSE(s.IsEmpty()); |
+ EXPECT_EQ(1U, s.GetCount()); |
+} |
+ |
+TEST(Set, ThreeItems) { |
+ Set<int> s; |
+ |
+ EXPECT_TRUE(s.Add(0)); |
+ EXPECT_TRUE(s.Add(1)); |
+ EXPECT_TRUE(s.Add(2)); |
+ |
+ EXPECT_FALSE(s.Has(-1)); |
+ EXPECT_TRUE(s.Has(0)); |
+ EXPECT_TRUE(s.Has(1)); |
+ EXPECT_TRUE(s.Has(2)); |
+ EXPECT_FALSE(s.Has(3)); |
+ |
+ EXPECT_EQ(3U, s.GetCount()); |
+} |
+ |
+} // namespace crazy |