15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 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 <string>
65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/time/time.h"
85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/values.h"
95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "cc/debug/rendering_stats.h"
105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace cc {
135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace {
145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static std::string ToString(const RenderingStats::TimeDeltaList& list) {
165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  scoped_refptr<base::debug::TracedValue> value =
175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      new base::debug::TracedValue();
185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  value->BeginArray("list_value");
195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  list.AddToTracedValue(value.get());
205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  value->EndArray();
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  return value->ToString();
225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TEST(RenderingStatsTest, TimeDeltaListEmpty) {
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  RenderingStats::TimeDeltaList time_delta_list;
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  EXPECT_EQ("{\"list_value\":[]}", ToString(time_delta_list));
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TEST(RenderingStatsTest, TimeDeltaListNonEmpty) {
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  RenderingStats::TimeDeltaList time_delta_list;
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  time_delta_list.Append(base::TimeDelta::FromMilliseconds(234));
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  time_delta_list.Append(base::TimeDelta::FromMilliseconds(827));
335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  EXPECT_EQ("{\"list_value\":[234.0,827.0]}", ToString(time_delta_list));
355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TEST(RenderingStatsTest, TimeDeltaListAdd) {
385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  RenderingStats::TimeDeltaList time_delta_list_a;
395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  time_delta_list_a.Append(base::TimeDelta::FromMilliseconds(810));
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  time_delta_list_a.Append(base::TimeDelta::FromMilliseconds(32));
415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  RenderingStats::TimeDeltaList time_delta_list_b;
435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  time_delta_list_b.Append(base::TimeDelta::FromMilliseconds(43));
445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  time_delta_list_b.Append(base::TimeDelta::FromMilliseconds(938));
455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  time_delta_list_b.Append(base::TimeDelta::FromMilliseconds(2));
465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  time_delta_list_a.Add(time_delta_list_b);
485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  EXPECT_EQ("{\"list_value\":[810.0,32.0,43.0,938.0,2.0]}",
495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)            ToString(time_delta_list_a));
505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}  // namespace
535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}  // namespace cc
54