Commit a3541d1c authored by Karel Král's avatar Karel Král Committed by Commit Bot

trace_conversion_helper: SetTracedValueArg

Implement an overloaded function to trace its argument into a given
TracedValue pointer. Thus enable using type deduction to decide which
way to trace a given argument.

Bug: 1111787
Change-Id: I058c3436f59f3b6d98e34c1f620b467e4d5c41e5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2364872
Commit-Queue: Karel Král <karelkral@google.com>
Reviewed-by: default avatarEric Seckler <eseckler@chromium.org>
Reviewed-by: default avatarŁukasz Anforowicz <lukasza@chromium.org>
Reviewed-by: default avatarAlexander Timin <altimin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#804307}
parent 7ca1bf98
This diff is collapsed.
......@@ -15,13 +15,79 @@
namespace base {
namespace trace_event {
TEST(TraceEventArgumentTest, SetTracedValueArgParameterPack) {
std::unique_ptr<TracedValue> value(new TracedValue());
TracedValue* raw_value = value.get();
SetTracedValueArg(raw_value, "not_traced");
SetTracedValueArg(raw_value, "single_value", 42);
SetTracedValueArg(raw_value, "pack", 42, false, 0.0, "hello");
std::string json;
value->AppendAsTraceFormat(&json);
EXPECT_EQ(
"{"
"\"single_value\":42,"
"\"pack\":42,"
"\"pack\":false,"
"\"pack\":0.0,"
"\"pack\":\"hello\""
"}",
json);
}
TEST(TraceEventArgumentTest, SetTracedValueArgCompatibleTypes) {
std::unique_ptr<TracedValue> value(new TracedValue());
TracedValue* raw_value = value.get();
SetTracedValueArg(raw_value, "float_literal", 0.0f);
float my_float = 0.0f;
SetTracedValueArg(raw_value, "my_float", my_float);
char my_char = 13;
SetTracedValueArg(raw_value, "my_char", my_char);
std::string json;
value->AppendAsTraceFormat(&json);
EXPECT_EQ(
"{"
"\"float_literal\":0.0,"
"\"my_float\":0.0,"
"\"my_char\":13"
"}",
json);
}
class UseFallback {};
TEST(TraceEventArgumentTest, SetTracedValueArgBasicTypes) {
std::unique_ptr<TracedValue> value(new TracedValue());
TracedValue* raw_value = value.get();
SetTracedValueArg(raw_value, "my_int", 1);
SetTracedValueArg(raw_value, "my_double", 0.1);
SetTracedValueArg(raw_value, "my_bool", false);
SetTracedValueArg(raw_value, "my_literal", "hello");
SetTracedValueArg(raw_value, "my_string",
std::string("wonderful_") + std::string("world"));
SetTracedValueArg(raw_value, "my_void_ptr", static_cast<void*>(nullptr));
SetTracedValueArg(raw_value, "use_fallback", UseFallback());
UseFallback usefallback_with_variable;
SetTracedValueArg(raw_value, "use_fallback", usefallback_with_variable);
std::string json;
value->AppendAsTraceFormat(&json);
EXPECT_EQ(
"{\"my_int\":1,"
"\"my_double\":0.1,"
"\"my_bool\":false,"
"\"my_literal\":\"hello\","
"\"my_string\":\"wonderful_world\","
"\"my_void_ptr\":\"0x0\","
"\"use_fallback\":\"\\u003Cvalue>\","
"\"use_fallback\":\"\\u003Cvalue>\""
"}",
json);
}
TEST(TraceEventConversionHelperTest, OstreamValueToString) {
std::string zero = internal::OstreamValueToString(0);
EXPECT_EQ("0", zero);
}
class UseFallback {};
TEST(TraceEventConversionHelperTest, UseFallback) {
std::string answer = ValueToString(UseFallback(), "fallback");
EXPECT_EQ("fallback", answer);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment