Export of internal Abseil changes
-- 91ca367a7548270155721bdda74611aeea2a2153 by Abseil Team <absl-team@google.com>: Replace the only usage of btree_node::swap with simpler logic using transfers and delete btree_node::swap. Add a benchmark for constructing small containers. PiperOrigin-RevId: 301169874 -- ff9d73a7125b7f8ab5733cda877204dfbfac138e by Derek Mauro <dmauro@google.com>: Ensure ABSL_CXX_STANDARD is set. Fixes #640 PiperOrigin-RevId: 301160106 -- 14ca0beee8c109e532134e7e9da7b072da1bf911 by Abseil Team <absl-team@google.com>: Rollback the change to make Cord iterators a fixed size. That change increased the iterator size, which can cause a deep recursion call to hit the stack memory limit, in turn causing a signal 11 failure. PiperOrigin-RevId: 301084915 -- 619e3cd9e56408bdb8b3b5a1e08dda1e95242264 by Matthew Brown <matthewbr@google.com>: Internal Change PiperOrigin-RevId: 300832828 -- 64f8d62ab4c4c78077dbe85a9595a8eeb6d16608 by Gennadiy Rozental <rogeeff@google.com>: Fix for empty braces support. We will call proper aggregate construction in case when {} is used as default value. In other words instead of "new T", we'll call "new T{}". PiperOrigin-RevId: 300715686 -- db3f65594d6db8b104b01262f884dff465b696ef by Abseil Team <absl-team@google.com>: Emscripten supports thread-local storage nowadays. PiperOrigin-RevId: 300675185 GitOrigin-RevId: 91ca367a7548270155721bdda74611aeea2a2153 Change-Id: I3344f745f9c3fc78775532b1808442fabd98e34a
This commit is contained in:
parent
c6954897f7
commit
7853a7586c
12 changed files with 254 additions and 283 deletions
|
|
@ -293,6 +293,18 @@ TEST_F(FlagTest, TestFlagDefinition) {
|
|||
// --------------------------------------------------------------------
|
||||
|
||||
TEST_F(FlagTest, TestDefault) {
|
||||
EXPECT_EQ(FLAGS_test_flag_01.DefaultValue(), "true");
|
||||
EXPECT_EQ(FLAGS_test_flag_02.DefaultValue(), "1234");
|
||||
EXPECT_EQ(FLAGS_test_flag_03.DefaultValue(), "-34");
|
||||
EXPECT_EQ(FLAGS_test_flag_04.DefaultValue(), "189");
|
||||
EXPECT_EQ(FLAGS_test_flag_05.DefaultValue(), "10765");
|
||||
EXPECT_EQ(FLAGS_test_flag_06.DefaultValue(), "40000");
|
||||
EXPECT_EQ(FLAGS_test_flag_07.DefaultValue(), "-1234567");
|
||||
EXPECT_EQ(FLAGS_test_flag_08.DefaultValue(), "9876543");
|
||||
EXPECT_EQ(FLAGS_test_flag_09.DefaultValue(), "-9.876e-50");
|
||||
EXPECT_EQ(FLAGS_test_flag_10.DefaultValue(), "1.234e+12");
|
||||
EXPECT_EQ(FLAGS_test_flag_11.DefaultValue(), "");
|
||||
|
||||
EXPECT_EQ(absl::GetFlag(FLAGS_test_flag_01), true);
|
||||
EXPECT_EQ(absl::GetFlag(FLAGS_test_flag_02), 1234);
|
||||
EXPECT_EQ(absl::GetFlag(FLAGS_test_flag_03), -34);
|
||||
|
|
@ -308,6 +320,61 @@ TEST_F(FlagTest, TestDefault) {
|
|||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
struct NonTriviallyCopyableAggregate {
|
||||
NonTriviallyCopyableAggregate() = default;
|
||||
NonTriviallyCopyableAggregate(const NonTriviallyCopyableAggregate& rhs)
|
||||
: value(rhs.value) {}
|
||||
NonTriviallyCopyableAggregate& operator=(
|
||||
const NonTriviallyCopyableAggregate& rhs) {
|
||||
value = rhs.value;
|
||||
return *this;
|
||||
}
|
||||
|
||||
int value;
|
||||
};
|
||||
bool AbslParseFlag(absl::string_view src, NonTriviallyCopyableAggregate* f,
|
||||
std::string* e) {
|
||||
return absl::ParseFlag(src, &f->value, e);
|
||||
}
|
||||
std::string AbslUnparseFlag(const NonTriviallyCopyableAggregate& ntc) {
|
||||
return absl::StrCat(ntc.value);
|
||||
}
|
||||
|
||||
bool operator==(const NonTriviallyCopyableAggregate& ntc1,
|
||||
const NonTriviallyCopyableAggregate& ntc2) {
|
||||
return ntc1.value == ntc2.value;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
ABSL_FLAG(bool, test_flag_eb_01, {}, "");
|
||||
ABSL_FLAG(int32_t, test_flag_eb_02, {}, "");
|
||||
ABSL_FLAG(int64_t, test_flag_eb_03, {}, "");
|
||||
ABSL_FLAG(double, test_flag_eb_04, {}, "");
|
||||
ABSL_FLAG(std::string, test_flag_eb_05, {}, "");
|
||||
ABSL_FLAG(NonTriviallyCopyableAggregate, test_flag_eb_06, {}, "");
|
||||
|
||||
namespace {
|
||||
|
||||
TEST_F(FlagTest, TestEmptyBracesDefault) {
|
||||
EXPECT_EQ(FLAGS_test_flag_eb_01.DefaultValue(), "false");
|
||||
EXPECT_EQ(FLAGS_test_flag_eb_02.DefaultValue(), "0");
|
||||
EXPECT_EQ(FLAGS_test_flag_eb_03.DefaultValue(), "0");
|
||||
EXPECT_EQ(FLAGS_test_flag_eb_04.DefaultValue(), "0");
|
||||
EXPECT_EQ(FLAGS_test_flag_eb_05.DefaultValue(), "");
|
||||
EXPECT_EQ(FLAGS_test_flag_eb_06.DefaultValue(), "0");
|
||||
|
||||
EXPECT_EQ(absl::GetFlag(FLAGS_test_flag_eb_01), false);
|
||||
EXPECT_EQ(absl::GetFlag(FLAGS_test_flag_eb_02), 0);
|
||||
EXPECT_EQ(absl::GetFlag(FLAGS_test_flag_eb_03), 0);
|
||||
EXPECT_EQ(absl::GetFlag(FLAGS_test_flag_eb_04), 0.0);
|
||||
EXPECT_EQ(absl::GetFlag(FLAGS_test_flag_eb_05), "");
|
||||
EXPECT_EQ(absl::GetFlag(FLAGS_test_flag_eb_06),
|
||||
NonTriviallyCopyableAggregate{});
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
TEST_F(FlagTest, TestGetSet) {
|
||||
absl::SetFlag(&FLAGS_test_flag_01, false);
|
||||
EXPECT_EQ(absl::GetFlag(FLAGS_test_flag_01), false);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue