Export of internal Abseil changes
-- d857e6e1f9b09a3eb5abd890677a98b23346f07a by Abseil Team <absl-team@google.com>: Simplify internal TryAcquireWithSpinning. No point declaring the `result` variable: we can just return the results directly. PiperOrigin-RevId: 307045800 -- 421952252bc23be51f47f7d23f3422bad1ed382c by Derek Mauro <dmauro@google.com>: Add custom sink support for `absl::Format()` through an ADL extension mechanism. Users can now define `void AbslFormatFlush(MySink* dest, absl::string_view part)` to allow `absl::Format()` to append to a custom sink. PiperOrigin-RevId: 306929052 -- c73d5cdb62cd58ea421ed1aeeab78a0ffcfeeefb by Matt Calabrese <calabrese@google.com>: Internal-only conformance-testing macro ABSL_INTERNAL_ASSERT_CONFORMANCE_OF for compile-time and runtime checks of a specified type, expected properties of that type, and a logically-ordered series of equivalence classes of that type. PiperOrigin-RevId: 306885512 -- a8c2495a07f37d68907855e3f0535bd5c27a3b52 by Abseil Team <absl-team@google.com>: Internal change PiperOrigin-RevId: 306766753 GitOrigin-RevId: d857e6e1f9b09a3eb5abd890677a98b23346f07a Change-Id: Ic23c92ac74f9ffcbb2471ff8c6691f4b7b20354b
This commit is contained in:
parent
db5773a721
commit
b35973e3e3
16 changed files with 3096 additions and 44 deletions
|
|
@ -19,9 +19,27 @@
|
|||
#include <random>
|
||||
#include <string>
|
||||
|
||||
#include "absl/strings/str_format.h"
|
||||
|
||||
#include "absl/strings/cord.h"
|
||||
#include "gtest/gtest.h"
|
||||
#include "absl/strings/str_format.h"
|
||||
#include "absl/strings/string_view.h"
|
||||
|
||||
namespace my_namespace {
|
||||
class UserDefinedType {
|
||||
public:
|
||||
UserDefinedType() = default;
|
||||
|
||||
void Append(absl::string_view str) { value_.append(str.data(), str.size()); }
|
||||
const std::string& Value() const { return value_; }
|
||||
|
||||
friend void AbslFormatFlush(UserDefinedType* x, absl::string_view str) {
|
||||
x->Append(str);
|
||||
}
|
||||
|
||||
private:
|
||||
std::string value_;
|
||||
};
|
||||
} // namespace my_namespace
|
||||
|
||||
namespace {
|
||||
|
||||
|
|
@ -63,4 +81,21 @@ TEST(FormatExtensionTest, SinkAppendChars) {
|
|||
EXPECT_EQ(actual, expected);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(FormatExtensionTest, CordSink) {
|
||||
absl::Cord c;
|
||||
absl::Format(&c, "There were %04d little %s.", 3, "pigs");
|
||||
EXPECT_EQ(c, "There were 0003 little pigs.");
|
||||
absl::Format(&c, "And %-3llx bad wolf!", 1);
|
||||
EXPECT_EQ(c, "There were 0003 little pigs.And 1 bad wolf!");
|
||||
}
|
||||
|
||||
TEST(FormatExtensionTest, CustomSink) {
|
||||
my_namespace::UserDefinedType sink;
|
||||
absl::Format(&sink, "There were %04d little %s.", 3, "pigs");
|
||||
EXPECT_EQ("There were 0003 little pigs.", sink.Value());
|
||||
absl::Format(&sink, "And %-3llx bad wolf!", 1);
|
||||
EXPECT_EQ("There were 0003 little pigs.And 1 bad wolf!", sink.Value());
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue