Revert "Use absl::optional instead or rtc::Optional"
This reverts commit 7ba9e92fa0dfb16579f4f6ecd746397bdfdd174d.
Reason for revert: Breaks Chromium static initialized regression test.
https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android-marshmallow-arm64-rel/5068
Original change's description:
> Use absl::optional instead or rtc::Optional
>
> BUG: webrtc:9078
> Change-Id: I69aedce324d86e8894b81210a2de17c5ef68fd11
> Reviewed-on: https://webrtc-review.googlesource.com/77082
> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#23440}
TBR=danilchap@webrtc.org,mbonadei@webrtc.org,kwiberg@webrtc.org
Change-Id: I09ae74bddc69d0b25c8dfbcacc4ec906b34ca748
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/79980
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23449}
diff --git a/api/optional_unittest.cc b/api/optional_unittest.cc
index f56dc6d..ad700dc 100644
--- a/api/optional_unittest.cc
+++ b/api/optional_unittest.cc
@@ -8,9 +8,6 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-// TODO(bugs.webrtc.org/8821): Delete this file when absl unittests run on
-// webrtc bots.
-
#include <memory>
#include <sstream>
#include <string>
@@ -705,16 +702,31 @@
TEST(OptionalTest, TestDereferenceWithDefault) {
auto log = Logger::Setup();
- const Logger a(17), b(42);
- Optional<Logger> x(a);
- Optional<Logger> y;
- EXPECT_EQ(a, x.value_or(Logger(42)));
- EXPECT_EQ(b, y.value_or(Logger(42)));
- EXPECT_EQ(a, Optional<Logger>(Logger(17)).value_or(b));
- EXPECT_EQ(b, Optional<Logger>().value_or(b));
- // Can't expect exact list of constructors and destructors because it is
- // compiler-dependent. i.e. msvc produce different output than clang. Calls
- // above are subject to copy elision that allow to change behavior.
+ {
+ const Logger a(17), b(42);
+ Optional<Logger> x(a);
+ Optional<Logger> y;
+ log->push_back("-1-");
+ EXPECT_EQ(a, x.value_or(Logger(42)));
+ log->push_back("-2-");
+ EXPECT_EQ(b, y.value_or(Logger(42)));
+ log->push_back("-3-");
+ EXPECT_EQ(a, Optional<Logger>(Logger(17)).value_or(b));
+ log->push_back("-4-");
+ EXPECT_EQ(b, Optional<Logger>().value_or(b));
+ log->push_back("-5-");
+ }
+ EXPECT_EQ(
+ V("0:17. explicit constructor", "1:42. explicit constructor",
+ "2:17. copy constructor (from 0:17)", "-1-",
+ "3:42. explicit constructor", "operator== 0:17, 2:17",
+ "3:42. destructor", "-2-", "4:42. explicit constructor",
+ "operator== 1:42, 4:42", "4:42. destructor", "-3-",
+ "5:17. explicit constructor", "6:17. move constructor (from 5:17)",
+ "operator== 0:17, 6:17", "6:17. destructor", "5:17. destructor", "-4-",
+ "operator== 1:42, 1:42", "-5-", "2:17. destructor", "1:42. destructor",
+ "0:17. destructor"),
+ *log);
}
TEST(OptionalTest, TestEquality) {
@@ -859,16 +871,8 @@
*log);
}
-// Nice printing available only when GTEST aware ABSL is present
-#ifdef GTEST_HAS_ABSL
-#define MaybeTestPrintTo TestPrintTo
-#define MaybeTestUnprintablePrintTo TestUnprintablePrintTo
-#else
-#define MaybeTestPrintTo DISABLED_TestPrintTo
-#define MaybeTestUnprintablePrintTo DISABLED_TestUnprintablePrintTo
-#endif
-TEST(OptionalTest, MaybeTestPrintTo) {
- constexpr char kEmptyOptionalMessage[] = "(nullopt)";
+TEST(OptionalTest, TestPrintTo) {
+ constexpr char kEmptyOptionalMessage[] = "<empty optional>";
const Optional<MyUnprintableType> empty_unprintable;
const Optional<MyPrintableType> empty_printable;
const Optional<MyOstreamPrintableType> empty_ostream_printable;
@@ -876,22 +880,14 @@
EXPECT_EQ(kEmptyOptionalMessage, ::testing::PrintToString(empty_printable));
EXPECT_EQ(kEmptyOptionalMessage,
::testing::PrintToString(empty_ostream_printable));
- EXPECT_NE("(1)", ::testing::PrintToString(Optional<MyUnprintableType>({1})));
- EXPECT_NE("(1)", ::testing::PrintToString(Optional<MyPrintableType>({1})));
- EXPECT_EQ("(The value is 1)",
+ EXPECT_NE("1", ::testing::PrintToString(Optional<MyUnprintableType>({1})));
+ EXPECT_NE("1", ::testing::PrintToString(Optional<MyPrintableType>({1})));
+ EXPECT_EQ("The value is 1",
::testing::PrintToString(Optional<MyPrintableType>({1})));
- EXPECT_EQ("(1)",
+ EXPECT_EQ("1",
::testing::PrintToString(Optional<MyOstreamPrintableType>({1})));
}
-TEST(OptionalTest, MaybeTestUnprintablePrintTo) {
- struct UnprintableType {
- uint8_t value[5];
- };
- Optional<UnprintableType> opt({0xa1, 0xb2, 0xc3, 0xd4, 0xe5});
- EXPECT_EQ("(5-byte object <A1-B2 C3-D4 E5>)", ::testing::PrintToString(opt));
-}
-
void UnusedFunctionWorkaround() {
// These are here to ensure we don't get warnings about ostream and PrintTo
// for MyPrintableType never getting called.