- add sources.
[platform/framework/web/crosswalk.git] / src / sync / util / data_type_histogram_unittest.cc
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
10 namespace syncer {
11 namespace {
12
13 class DataTypeHistogramTest : public testing::Test {
14 };
15
16 // Create a histogram of type HISTOGRAM_COUNTS for each model type. Nothing
17 // should break.
18 TEST(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     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.
30 TEST(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.
43 TEST(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