summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-13 23:37:11 +0000
committerdbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-13 23:37:11 +0000
commita4f56c3352f97e994844f1ccf7424e5d7cb22193 (patch)
tree93d08ebb51ae4066972097b0202da342a668f7a0
parenta6ee67a9ca36301aab6f6aa294a64035f3ee8790 (diff)
downloadchromium_src-a4f56c3352f97e994844f1ccf7424e5d7cb22193.zip
chromium_src-a4f56c3352f97e994844f1ccf7424e5d7cb22193.tar.gz
chromium_src-a4f56c3352f97e994844f1ccf7424e5d7cb22193.tar.bz2
[NTP4] Add the ability to std::sort and std::find StringOrdinals.
R=csharp@chromium.org,estade@chromium.org BUG=97762 TEST=StringOrdinalTests.Std{Find,Sort} pass and this doesn't break anything. Review URL: http://codereview.chromium.org/9189002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@117725 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/common/string_ordinal.cc6
-rw-r--r--chrome/common/string_ordinal.h5
-rw-r--r--chrome/common/string_ordinal_unittest.cc35
3 files changed, 43 insertions, 3 deletions
diff --git a/chrome/common/string_ordinal.cc b/chrome/common/string_ordinal.cc
index 069afd2..0d9ffd6 100644
--- a/chrome/common/string_ordinal.cc
+++ b/chrome/common/string_ordinal.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -253,3 +253,7 @@ bool StringOrdinalLessThan::operator() (const StringOrdinal& lhs,
const StringOrdinal& rhs) const {
return lhs.LessThan(rhs);
}
+
+bool StringOrdinal::operator==(const StringOrdinal& rhs) const {
+ return Equal(rhs);
+}
diff --git a/chrome/common/string_ordinal.h b/chrome/common/string_ordinal.h
index f97bdf8..0208dc1 100644
--- a/chrome/common/string_ordinal.h
+++ b/chrome/common/string_ordinal.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -66,6 +66,9 @@ class StringOrdinal {
// string will be valid.
std::string ToString() const;
+ // Do this so we can use std::find on a std::vector of StringOrdinals.
+ bool operator==(const StringOrdinal& rhs) const;
+
// Use of copy constructor and default assignment for this class is allowed.
private:
diff --git a/chrome/common/string_ordinal_unittest.cc b/chrome/common/string_ordinal_unittest.cc
index f3bc922..6c81d0f 100644
--- a/chrome/common/string_ordinal_unittest.cc
+++ b/chrome/common/string_ordinal_unittest.cc
@@ -1,10 +1,12 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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 "chrome/common/string_ordinal.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include <algorithm>
+
namespace {
TEST(StringOrdinalTest, IsValid) {
@@ -128,4 +130,35 @@ TEST(StringOrdinalTest, ToString) {
index = StringOrdinal("zzz");
EXPECT_EQ(index.ToString(), "zzz");
}
+
+TEST(StringOrdinalTest, StdSort) {
+ std::vector<StringOrdinal> ordinals;
+
+ ordinals.push_back(StringOrdinal("z"));
+ ordinals.push_back(StringOrdinal("n"));
+ ordinals.push_back(StringOrdinal("j"));
+ ordinals.push_back(StringOrdinal("b"));
+
+ std::sort(ordinals.begin(), ordinals.end(), StringOrdinalLessThan());
+
+ EXPECT_EQ(ordinals[0].ToString(), "b");
+ EXPECT_EQ(ordinals[1].ToString(), "j");
+ EXPECT_EQ(ordinals[2].ToString(), "n");
+ EXPECT_EQ(ordinals[3].ToString(), "z");
+}
+
+TEST(StringOrdinalTest, StdFind) {
+ std::vector<StringOrdinal> ordinals;
+
+ StringOrdinal b("b");
+ ordinals.push_back(b);
+ ordinals.push_back(StringOrdinal("z"));
+
+ EXPECT_EQ(std::find(ordinals.begin(), ordinals.end(), b), ordinals.begin());
+ EXPECT_EQ(std::find(ordinals.begin(), ordinals.end(), StringOrdinal("z")),
+ ordinals.begin() + 1);
+ EXPECT_EQ(std::find(ordinals.begin(), ordinals.end(), StringOrdinal("n")),
+ ordinals.end());
+}
+
} // namespace