Index: base/trace_event/trace_event_argument_unittest.cc |
diff --git a/base/trace_event/trace_event_argument_unittest.cc b/base/trace_event/trace_event_argument_unittest.cc |
index c59910e44653537b8d5d27288ac0aa4c5083e610..cb1cf2ef1d57cac30abdb073799eab29f28a9270 100644 |
--- a/base/trace_event/trace_event_argument_unittest.cc |
+++ b/base/trace_event/trace_event_argument_unittest.cc |
@@ -3,6 +3,7 @@ |
// found in the LICENSE file. |
#include "base/trace_event/trace_event_argument.h" |
+#include "base/values.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace base { |
@@ -14,10 +15,11 @@ TEST(TraceEventArgumentTest, FlatDictionary) { |
value->SetDouble("double", 0.0); |
value->SetBoolean("bool", true); |
value->SetString("string", "string"); |
- std::string json; |
+ std::string json = "PREFIX"; |
value->AppendAsTraceFormat(&json); |
- EXPECT_EQ("{\"bool\":true,\"double\":0.0,\"int\":2014,\"string\":\"string\"}", |
- json); |
+ EXPECT_EQ( |
+ "PREFIX{\"bool\":true,\"double\":0.0,\"int\":2014,\"string\":\"string\"}", |
+ json); |
} |
TEST(TraceEventArgumentTest, Hierarchy) { |
@@ -49,5 +51,96 @@ TEST(TraceEventArgumentTest, Hierarchy) { |
json); |
} |
+TEST(TraceEventArgumentTest, LongStrings) { |
+ std::string kLongString = "supercalifragilisticexpialidocious"; |
+ std::string kLongString2 = "0123456789012345678901234567890123456789"; |
+ char kLongString3[4096]; |
+ for (size_t i = 0; i < sizeof(kLongString3); ++i) |
+ kLongString3[i] = 'a' + (i % 25); |
+ kLongString3[sizeof(kLongString3) - 1] = '\0'; |
+ |
+ scoped_refptr<TracedValue> value = new TracedValue(); |
+ value->SetString("a", "short"); |
+ value->SetString("b", kLongString); |
+ value->BeginArray("c"); |
+ value->AppendString(kLongString2); |
+ value->AppendString(""); |
+ value->BeginDictionary(); |
+ value->SetString("a", kLongString3); |
+ value->EndDictionary(); |
+ value->EndArray(); |
+ |
+ std::string json; |
+ value->AppendAsTraceFormat(&json); |
+ EXPECT_EQ("{\"a\":\"short\",\"b\":\"" + kLongString + "\",\"c\":[\"" + |
+ kLongString2 + "\",\"\",{\"a\":\"" + kLongString3 + "\"}]}", |
+ json); |
+} |
+ |
+TEST(TraceEventArgumentTest, PassBaseValue) { |
+ FundamentalValue int_value(42); |
+ FundamentalValue bool_value(true); |
+ FundamentalValue double_value(42.0f); |
+ |
+ auto dict_value = make_scoped_ptr(new DictionaryValue); |
+ dict_value->SetBoolean("bool", true); |
+ dict_value->SetInteger("int", 42); |
+ dict_value->SetDouble("double", 42.0f); |
+ dict_value->SetString("string", std::string("a") + "b"); |
+ dict_value->SetString("string", std::string("a") + "b"); |
+ |
+ auto list_value = make_scoped_ptr(new ListValue); |
+ list_value->AppendBoolean(false); |
+ list_value->AppendInteger(1); |
+ list_value->AppendString("in_list"); |
+ list_value->Append(dict_value.Pass()); |
+ |
+ scoped_refptr<TracedValue> value = new TracedValue(); |
+ value->BeginDictionary("outer_dict"); |
+ value->SetValue("inner_list", list_value.Pass()); |
+ value->EndDictionary(); |
+ |
+ dict_value.reset(); |
+ list_value.reset(); |
+ |
+ std::string json; |
+ value->AppendAsTraceFormat(&json); |
+ EXPECT_EQ( |
+ "{\"outer_dict\":{\"inner_list\":[false,1,\"in_list\",{\"bool\":true," |
+ "\"double\":42.0,\"int\":42,\"string\":\"ab\"}]}}", |
+ json); |
+} |
+ |
+TEST(TraceEventArgumentTest, PassTracedValue) { |
+ auto dict_value = make_scoped_refptr(new TracedValue); |
+ dict_value->SetInteger("a", 1); |
+ |
+ auto nested_dict_value = make_scoped_refptr(new TracedValue); |
+ nested_dict_value->SetInteger("b", 2); |
+ nested_dict_value->BeginArray("c"); |
+ nested_dict_value->AppendString("foo"); |
+ nested_dict_value->EndArray(); |
+ |
+ dict_value->SetValue("e", *nested_dict_value); |
+ |
+ // Check the merged result. |
+ std::string json; |
+ dict_value->AppendAsTraceFormat(&json); |
+ EXPECT_EQ("{\"a\":1,\"e\":{\"b\":2,\"c\":[\"foo\"]}}", json); |
+ |
+ // Check that the passed nestd dict was left unouthced. |
+ json = ""; |
+ nested_dict_value->AppendAsTraceFormat(&json); |
+ EXPECT_EQ("{\"b\":2,\"c\":[\"foo\"]}", json); |
+ |
+ // And that it is still usable. |
+ nested_dict_value->SetInteger("f", 3); |
+ nested_dict_value->BeginDictionary("g"); |
+ nested_dict_value->EndDictionary(); |
+ json = ""; |
+ nested_dict_value->AppendAsTraceFormat(&json); |
+ EXPECT_EQ("{\"b\":2,\"c\":[\"foo\"],\"f\":3,\"g\":{}}", json); |
+} |
+ |
} // namespace trace_event |
} // namespace base |