15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright (c) 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/debug/trace_event_argument.h" 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace base { 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace debug { 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TEST(TraceEventArgumentTest, FlatDictionary) { 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_refptr<TracedValue> value = new TracedValue(); 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->SetInteger("int", 2014); 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->SetDouble("double", 0.0); 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->SetBoolean("bool", true); 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->SetString("string", "string"); 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::string json; 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->AppendAsTraceFormat(&json); 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ("{\"bool\":true,\"double\":0.0,\"int\":2014,\"string\":\"string\"}", 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) json); 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TEST(TraceEventArgumentTest, Hierarchy) { 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_refptr<TracedValue> value = new TracedValue(); 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->SetInteger("i0", 2014); 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->BeginDictionary("dict1"); 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->SetInteger("i1", 2014); 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->BeginDictionary("dict2"); 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->SetBoolean("b2", false); 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->EndDictionary(); 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->SetString("s1", "foo"); 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->EndDictionary(); 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->SetDouble("d0", 0.0); 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->SetBoolean("b0", true); 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->BeginArray("a1"); 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->AppendInteger(1); 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->AppendBoolean(true); 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->BeginDictionary(); 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->SetInteger("i2", 3); 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->EndDictionary(); 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->EndArray(); 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->SetString("s0", "foo"); 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::string json; 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) value->AppendAsTraceFormat(&json); 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXPECT_EQ( 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "{\"a1\":[1,true,{\"i2\":3}],\"b0\":true,\"d0\":0.0,\"dict1\":{\"dict2\":" 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "{\"b2\":false},\"i1\":2014,\"s1\":\"foo\"},\"i0\":2014,\"s0\":" 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "\"foo\"}", 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) json); 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace debug 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace base 54