1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "sync/util/data_type_histogram.h"
6
7#include "base/time/time.h"
8#include "testing/gtest/include/gtest/gtest.h"
9
10namespace syncer {
11namespace {
12
13class DataTypeHistogramTest : public testing::Test {
14};
15
16// Create a histogram of type LOCAL_HISTOGRAM_COUNTS for each model type.
17// Nothing should break.
18TEST(DataTypeHistogramTest, BasicCount) {
19  for (int i = FIRST_REAL_MODEL_TYPE; i <= LAST_REAL_MODEL_TYPE; ++i) {
20    ModelType type = ModelTypeFromInt(i);
21#define PER_DATA_TYPE_MACRO(type_str) \
22    LOCAL_HISTOGRAM_COUNTS("Prefix" type_str "Suffix", 1);
23    SYNC_DATA_TYPE_HISTOGRAM(type);
24#undef PER_DATA_TYPE_MACRO
25  }
26}
27
28// Create a histogram of type SYNC_FREQ_HISTOGRAM for each model type. Nothing
29// should break.
30TEST(DataTypeHistogramTest, BasicFreq) {
31  for (int i = FIRST_REAL_MODEL_TYPE; i <= LAST_REAL_MODEL_TYPE; ++i) {
32    ModelType type = ModelTypeFromInt(i);
33#define PER_DATA_TYPE_MACRO(type_str) \
34    SYNC_FREQ_HISTOGRAM("Prefix" type_str "Suffix", \
35                        base::TimeDelta::FromSeconds(1));
36    SYNC_DATA_TYPE_HISTOGRAM(type);
37#undef PER_DATA_TYPE_MACRO
38  }
39}
40
41// Create a histogram of type UMA_HISTOGRAM_ENUMERATION for each model type.
42// Nothing should break.
43TEST(DataTypeHistogramTest, BasicEnum) {
44  enum HistTypes {
45    TYPE_1,
46    TYPE_2,
47    TYPE_COUNT,
48  };
49  for (int i = FIRST_REAL_MODEL_TYPE; i <= LAST_REAL_MODEL_TYPE; ++i) {
50    ModelType type = ModelTypeFromInt(i);
51#define PER_DATA_TYPE_MACRO(type_str) \
52    UMA_HISTOGRAM_ENUMERATION("Prefix" type_str "Suffix", \
53                              (i % 2 ? TYPE_1 : TYPE_2), TYPE_COUNT);
54    SYNC_DATA_TYPE_HISTOGRAM(type);
55#undef PER_DATA_TYPE_MACRO
56  }
57}
58
59}  // namespace
60}  // namespace syncer
61