diff options
author | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-17 21:36:41 +0000 |
---|---|---|
committer | darin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-17 21:36:41 +0000 |
commit | e5e4dde61bb994e4d4dcf5807d6ac56dc9ebef89 (patch) | |
tree | 31e2834f8efb7670ab160663f44863eab9cfaf50 /base | |
parent | 6b4ebe8001fbf4175ef26c834834c76ebb005ab8 (diff) | |
download | chromium_src-e5e4dde61bb994e4d4dcf5807d6ac56dc9ebef89.zip chromium_src-e5e4dde61bb994e4d4dcf5807d6ac56dc9ebef89.tar.gz chromium_src-e5e4dde61bb994e4d4dcf5807d6ac56dc9ebef89.tar.bz2 |
Add support using EXPECT_EQ with NullableString16 objects.
Change the default constructor to set is_null_ to true. This makes NullableString16 act more like a WebKit::WebString, which is really the reason NullableString16 exists at all.
R=brettw@chromium.org
Review URL: https://codereview.chromium.org/17289005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@206805 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/base.gyp | 1 | ||||
-rw-r--r-- | base/base.gypi | 2 | ||||
-rw-r--r-- | base/strings/nullable_string16.cc | 17 | ||||
-rw-r--r-- | base/strings/nullable_string16.h | 16 | ||||
-rw-r--r-- | base/strings/nullable_string16_unittest.cc | 35 |
5 files changed, 70 insertions, 1 deletions
diff --git a/base/base.gyp b/base/base.gyp index fa4b00e..3f59bb3 100644 --- a/base/base.gyp +++ b/base/base.gyp @@ -573,6 +573,7 @@ 'sequence_checker_impl_unittest.cc', 'sha1_unittest.cc', 'stl_util_unittest.cc', + 'strings/nullable_string16_unittest.cc', 'strings/string16_unittest.cc', 'strings/stringprintf_unittest.cc', 'strings/string_number_conversions_unittest.cc', diff --git a/base/base.gypi b/base/base.gypi index 0a580fd..047ea70 100644 --- a/base/base.gypi +++ b/base/base.gypi @@ -434,6 +434,8 @@ 'stl_util.h', 'strings/latin1_string_conversions.cc', 'strings/latin1_string_conversions.h', + 'strings/nullable_string16.cc', + 'strings/nullable_string16.h', 'strings/string16.cc', 'strings/string16.h', 'strings/string_number_conversions.cc', diff --git a/base/strings/nullable_string16.cc b/base/strings/nullable_string16.cc new file mode 100644 index 0000000..740147b --- /dev/null +++ b/base/strings/nullable_string16.cc @@ -0,0 +1,17 @@ +// 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 "base/nullable_string16.h" + +#include <ostream> + +#include "base/strings/utf_string_conversions.h" + +namespace base { + +std::ostream& operator<<(std::ostream& out, const NullableString16& value) { + return value.is_null() ? out << "(null)" : out << UTF16ToUTF8(value.string()); +} + +} // namespace base diff --git a/base/strings/nullable_string16.h b/base/strings/nullable_string16.h index 73fe81e..16dcfe2 100644 --- a/base/strings/nullable_string16.h +++ b/base/strings/nullable_string16.h @@ -5,6 +5,9 @@ #ifndef BASE_STRINGS_NULLABLE_STRING16_H_ #define BASE_STRINGS_NULLABLE_STRING16_H_ +#include <iosfwd> + +#include "base/base_export.h" #include "base/strings/string16.h" namespace base { @@ -14,7 +17,7 @@ namespace base { // empty is meaningful. class NullableString16 { public: - NullableString16() : is_null_(false) { } + NullableString16() : is_null_(true) { } explicit NullableString16(bool is_null) : is_null_(is_null) { } NullableString16(const string16& string, bool is_null) : string_(string), is_null_(is_null) { @@ -28,6 +31,17 @@ class NullableString16 { bool is_null_; }; +inline bool operator==(const NullableString16& a, const NullableString16& b) { + return a.is_null() == b.is_null() && a.string() == b.string(); +} + +inline bool operator!=(const NullableString16& a, const NullableString16& b) { + return !(a == b); +} + +BASE_EXPORT std::ostream& operator<<(std::ostream& out, + const NullableString16& value); + } // namespace // TODO(avi) update users of NullableString16 to use the namespace and remove diff --git a/base/strings/nullable_string16_unittest.cc b/base/strings/nullable_string16_unittest.cc new file mode 100644 index 0000000..f02fdce --- /dev/null +++ b/base/strings/nullable_string16_unittest.cc @@ -0,0 +1,35 @@ +// 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/strings/nullable_string16.h" +#include "base/strings/utf_string_conversions.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace base { + +TEST(NullableString16Test, DefaultConstructor) { + NullableString16 s; + EXPECT_TRUE(s.is_null()); + EXPECT_EQ(string16(), s.string()); +} + +TEST(NullableString16Test, Equals) { + NullableString16 a(ASCIIToUTF16("hello"), false); + NullableString16 b(ASCIIToUTF16("hello"), false); + EXPECT_EQ(a, b); +} + +TEST(NullableString16Test, NotEquals) { + NullableString16 a(ASCIIToUTF16("hello"), false); + NullableString16 b(ASCIIToUTF16("world"), false); + EXPECT_NE(a, b); +} + +TEST(NullableString16Test, NotEqualsNull) { + NullableString16 a(ASCIIToUTF16("hello"), false); + NullableString16 b; + EXPECT_NE(a, b); +} + +} // namespace base |