diff options
author | dbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-13 23:37:11 +0000 |
---|---|---|
committer | dbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-01-13 23:37:11 +0000 |
commit | a4f56c3352f97e994844f1ccf7424e5d7cb22193 (patch) | |
tree | 93d08ebb51ae4066972097b0202da342a668f7a0 | |
parent | a6ee67a9ca36301aab6f6aa294a64035f3ee8790 (diff) | |
download | chromium_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.cc | 6 | ||||
-rw-r--r-- | chrome/common/string_ordinal.h | 5 | ||||
-rw-r--r-- | chrome/common/string_ordinal_unittest.cc | 35 |
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 |