summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authordarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-17 21:36:41 +0000
committerdarin@chromium.org <darin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-17 21:36:41 +0000
commite5e4dde61bb994e4d4dcf5807d6ac56dc9ebef89 (patch)
tree31e2834f8efb7670ab160663f44863eab9cfaf50 /base
parent6b4ebe8001fbf4175ef26c834834c76ebb005ab8 (diff)
downloadchromium_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.gyp1
-rw-r--r--base/base.gypi2
-rw-r--r--base/strings/nullable_string16.cc17
-rw-r--r--base/strings/nullable_string16.h16
-rw-r--r--base/strings/nullable_string16_unittest.cc35
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