summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2021-09-30 14:34:43 (GMT)
committerCJ Johnson <johnsoncj@google.com>2021-09-30 23:07:32 (GMT)
commit3b49be074d5c1340eeb447e6a8e78427051e675a (patch)
treeeb95355ba469dc98e973ef0a4eed01ff49b0d602
parentab36804e42d4cb85b7e7fe9946928597840684db (diff)
downloadgoogletest-3b49be074d5c1340eeb447e6a8e78427051e675a.zip
googletest-3b49be074d5c1340eeb447e6a8e78427051e675a.tar.gz
googletest-3b49be074d5c1340eeb447e6a8e78427051e675a.tar.bz2
Googletest export
googletest: Add printer for {std,absl}::nullopt. PiperOrigin-RevId: 399928554
-rw-r--r--googletest/include/gtest/gtest-printers.h8
-rw-r--r--googletest/include/gtest/internal/gtest-port.h2
-rw-r--r--googletest/test/googletest-printers-test.cc1
3 files changed, 11 insertions, 0 deletions
diff --git a/googletest/include/gtest/gtest-printers.h b/googletest/include/gtest/gtest-printers.h
index 2e33df4..98d0494 100644
--- a/googletest/include/gtest/gtest-printers.h
+++ b/googletest/include/gtest/gtest-printers.h
@@ -742,6 +742,14 @@ class UniversalPrinter<Optional<T>> {
}
};
+template <>
+class UniversalPrinter<decltype(Nullopt())> {
+ public:
+ static void Print(decltype(Nullopt()), ::std::ostream* os) {
+ *os << "(nullopt)";
+ }
+};
+
#endif // GTEST_INTERNAL_HAS_OPTIONAL
#if GTEST_INTERNAL_HAS_VARIANT
diff --git a/googletest/include/gtest/internal/gtest-port.h b/googletest/include/gtest/internal/gtest-port.h
index 0b42dde..790fdd8 100644
--- a/googletest/include/gtest/internal/gtest-port.h
+++ b/googletest/include/gtest/internal/gtest-port.h
@@ -2325,6 +2325,7 @@ namespace testing {
namespace internal {
template <typename T>
using Optional = ::absl::optional<T>;
+inline ::absl::nullopt_t Nullopt() { return ::absl::nullopt; }
} // namespace internal
} // namespace testing
#else
@@ -2338,6 +2339,7 @@ namespace testing {
namespace internal {
template <typename T>
using Optional = ::std::optional<T>;
+inline ::std::nullopt_t Nullopt() { return ::std::nullopt; }
} // namespace internal
} // namespace testing
// The case where absl is configured NOT to alias std::optional is not
diff --git a/googletest/test/googletest-printers-test.cc b/googletest/test/googletest-printers-test.cc
index e1e8e1c..9c9a223 100644
--- a/googletest/test/googletest-printers-test.cc
+++ b/googletest/test/googletest-printers-test.cc
@@ -1873,6 +1873,7 @@ TEST_F(PrintAnyTest, NonEmpty) {
#if GTEST_INTERNAL_HAS_OPTIONAL
TEST(PrintOptionalTest, Basic) {
+ EXPECT_EQ("(nullopt)", PrintToString(internal::Nullopt()));
internal::Optional<int> value;
EXPECT_EQ("(nullopt)", PrintToString(value));
value = {7};