Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(572)

Unified Diff: base/trace_event_value_unittest.cc

Issue 19642005: Make TracedValue lower overhead. Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fixed lint errors. Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/trace_event_value_unittest.cc
diff --git a/base/trace_event_value_unittest.cc b/base/trace_event_value_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..9ae70a93cd8ad5bc7d6d7a18c717819493308468
--- /dev/null
+++ b/base/trace_event_value_unittest.cc
@@ -0,0 +1,143 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/trace_event_value.h"
+#include "base/traced_object.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace base {
+
+ // Sample test class to show how we can use the TracedObject interface to
+ // provide a standard way of defining how to push objects of whatever type
+ // into a TracedValue.
+ class TestTracedObject : public TracedObject {
+ public:
+ TestTracedObject() {}
+ virtual ~TestTracedObject() {}
+
+ virtual void PushInto(TracedValue* traced_value) const OVERRIDE {
+ traced_value->BeginArray();
+ traced_value->Push(STATIC_STR("TestTracedObjectJson"));
+ traced_value->EndArray();
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(TestTracedObject);
+ };
+
+ TEST(TracedValue, AllSupportedTypesTest) {
+ // Testing the simplest kind of array, pushing a TestTracedObject.
+ TracedValue array_of_one;
+ array_of_one.BeginArray();
+ array_of_one.Push(TestTracedObject());
+ array_of_one.EndArray();
+
+ std::string out_str;
+ array_of_one.AppendAsTraceFormat(&out_str);
+ EXPECT_EQ("{{\"TestTracedObjectJson\"}}", out_str);
dsinclair 2013/07/23 14:56:29 This should be [["TestTracedObjectJson"]]
rterrazas 2013/08/01 08:01:26 Done.
+
+ // Testing the simplest kind of dictionary, pushing a TestTracedObject.
+ TestTracedObject traced_object;
+
+ TracedValue dict_of_one;
+ dict_of_one.BeginDictionary();
+ dict_of_one.Push(STATIC_STR("string_key"), traced_object);
+ dict_of_one.EndDictionary();
+
+ std::string dict_of_one_json;
+ dict_of_one.AppendAsTraceFormat(&dict_of_one_json);
+ EXPECT_EQ("{\"string_key\": {\"TestTracedObjectJson\"}}",
+ dict_of_one_json);
+
+ // Testing an array that has all supported primitive types.
+ TracedValue array_of_all_types;
+ array_of_all_types.BeginArray();
+ array_of_all_types.Push(STATIC_STR("One"));
+ array_of_all_types.Push(std::string("Two"));
+ int third = 3;
+ array_of_all_types.Push(third);
+ int64 fourth = 4;
+ array_of_all_types.Push(fourth);
+ uint32 fifth = 5;
+ array_of_all_types.Push(fifth);
+ uint64 sixth = 6;
+ array_of_all_types.Push(sixth);
+ float seventh = 7.0;
+ array_of_all_types.Push(seventh);
+ array_of_all_types.Push(true);
+ array_of_all_types.Push(traced_object);
+ array_of_all_types.EndArray();
+
+ std::string array_of_all_types_json;
+ array_of_all_types.AppendAsTraceFormat(&array_of_all_types_json);
+ EXPECT_EQ("{\"One\", \"Two\", 3, 4, 5, 6, 7.000000, true, "\
+ "{\"TestTracedObjectJson\"}}", array_of_all_types_json);
+
+ TracedValue dict_of_all_types;
+ dict_of_all_types.BeginDictionary();
+ dict_of_all_types.Push(STATIC_STR("StaticStrValue"), STATIC_STR("Value"));
+ dict_of_all_types.Push(STATIC_STR("StdStringValue"), std::string("Value"));
+ dict_of_all_types.Push(STATIC_STR("Int32Value"), third);
+ dict_of_all_types.Push(STATIC_STR("Int64Value"), fourth);
+ dict_of_all_types.Push(STATIC_STR("UInt32Value"), fifth);
+ dict_of_all_types.Push(STATIC_STR("UInt64Value"), sixth);
+ dict_of_all_types.Push(STATIC_STR("FloatValue"), seventh);
+ dict_of_all_types.Push(STATIC_STR("BoolValue"), false);
+ dict_of_all_types.Push(STATIC_STR("TracedObjectValue"), traced_object);
+ dict_of_all_types.EndDictionary();
+
+ std::string dict_of_all_types_json;
+ dict_of_all_types.AppendAsTraceFormat(&dict_of_all_types_json);
+ EXPECT_EQ("{\"StaticStrValue\": \"Value\", "\
nduca 2013/07/23 04:54:04 one thing you could do to simplify your test is us
+ "\"StdStringValue\": \"Value\", "\
+ "\"Int32Value\": 3, "\
+ "\"Int64Value\": 4, "\
+ "\"UInt32Value\": 5, "\
+ "\"UInt64Value\": 6, "\
+ "\"FloatValue\": 7.000000, "\
+ "\"BoolValue\": false, "\
+ "\"TracedObjectValue\": {\"TestTracedObjectJson\"}}",
+ dict_of_all_types_json);
+ }
+
+ TEST(TracedValue, ObjectWithNestedValuesTest) {
rterrazas 2013/07/21 22:23:49 Here I'm basically testing that the support for ne
+ TracedValue composite_value;
+ // Begins main dict.
+ composite_value.BeginDictionary();
+ // Begins inner dictionary.
+ composite_value.BeginDictionary(STATIC_STR("Inner dictionary"));
+ composite_value.Push(STATIC_STR("InnerKey1"), STATIC_STR("InnerVal"));
+ composite_value.Push(STATIC_STR("InnerKey2"), 12345);
+ // Begins array in inner dictionary.
+ composite_value.BeginArray(STATIC_STR("InnerArray"));
+ composite_value.Push(STATIC_STR("I can't believe this is not butter!"));
+ composite_value.Push(STATIC_STR("bar"));
+ // Begin dictionary in the array.
+ composite_value.BeginDictionary();
+ composite_value.Push(STATIC_STR("DictInArrayKey"),
+ STATIC_STR("DictInArrayVal"));
+ // Ends dictionary in the array.
+ composite_value.EndDictionary();
+ composite_value.Push(1);
+ // Ens array in inner dictionary.
+ composite_value.EndArray();
+ // Ends inner dictionary.
+ composite_value.EndDictionary();
+ // Ends main dict.
+ composite_value.EndDictionary();
+
+ std::string composite_value_json;
+ composite_value.AppendAsTraceFormat(&composite_value_json);
+ EXPECT_EQ("{\"Inner dictionary\": {"\
+ "\"InnerKey1\": \"InnerVal\", "\
+ "\"InnerKey2\": 12345, "\
+ "\"InnerArray\": {"\
+ "\"I can't believe this is not butter!\", "\
+ "\"bar\", "\
+ "{\"DictInArrayKey\": \"DictInArrayVal\"}, "\
+ "1}}}",
+ composite_value_json);
+ }
+} // Namespace base.
+

Powered by Google App Engine
This is Rietveld 408576698