OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/metrics/sample_map.h" | 5 #include "base/metrics/sample_map.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 | 9 |
10 namespace base { | 10 namespace base { |
11 namespace { | 11 namespace { |
12 | 12 |
13 TEST(SampleMapTest, AccumulateTest) { | 13 TEST(SampleMapTest, AccumulateTest) { |
14 SampleMap samples(1); | 14 SampleMap samples(1); |
15 | 15 |
16 samples.Accumulate(1, 100); | 16 samples.Accumulate(1, 100); |
17 samples.Accumulate(2, 200); | 17 samples.Accumulate(2, 200); |
18 samples.Accumulate(1, -200); | 18 samples.Accumulate(1, -200); |
19 EXPECT_EQ(-100, samples.GetCount(1)); | 19 EXPECT_EQ(-100, samples.GetCount(1)); |
20 EXPECT_EQ(200, samples.GetCount(2)); | 20 EXPECT_EQ(200, samples.GetCount(2)); |
21 | 21 |
22 EXPECT_EQ(300, samples.sum()); | 22 EXPECT_EQ(300, samples.sum()); |
23 EXPECT_EQ(100, samples.TotalCount()); | 23 EXPECT_EQ(100, samples.TotalCount()); |
24 EXPECT_EQ(samples.redundant_count(), samples.TotalCount()); | 24 EXPECT_EQ(samples.redundant_count(), samples.TotalCount()); |
25 } | 25 } |
26 | 26 |
| 27 TEST(SampleMapTest, Accumulate_LargeValuesDontOverflow) { |
| 28 SampleMap samples(1); |
| 29 |
| 30 samples.Accumulate(250000000, 100); |
| 31 samples.Accumulate(500000000, 200); |
| 32 samples.Accumulate(250000000, -200); |
| 33 EXPECT_EQ(-100, samples.GetCount(250000000)); |
| 34 EXPECT_EQ(200, samples.GetCount(500000000)); |
| 35 |
| 36 EXPECT_EQ(75000000000LL, samples.sum()); |
| 37 EXPECT_EQ(100, samples.TotalCount()); |
| 38 EXPECT_EQ(samples.redundant_count(), samples.TotalCount()); |
| 39 } |
| 40 |
27 TEST(SampleMapTest, AddSubtractTest) { | 41 TEST(SampleMapTest, AddSubtractTest) { |
28 SampleMap samples1(1); | 42 SampleMap samples1(1); |
29 SampleMap samples2(2); | 43 SampleMap samples2(2); |
30 | 44 |
31 samples1.Accumulate(1, 100); | 45 samples1.Accumulate(1, 100); |
32 samples1.Accumulate(2, 100); | 46 samples1.Accumulate(2, 100); |
33 samples1.Accumulate(3, 100); | 47 samples1.Accumulate(3, 100); |
34 | 48 |
35 samples2.Accumulate(1, 200); | 49 samples2.Accumulate(1, 200); |
36 samples2.Accumulate(2, 200); | 50 samples2.Accumulate(2, 200); |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 samples.Accumulate(1, 100); | 162 samples.Accumulate(1, 100); |
149 it = samples.Iterator(); | 163 it = samples.Iterator(); |
150 EXPECT_FALSE(it->Done()); | 164 EXPECT_FALSE(it->Done()); |
151 } | 165 } |
152 | 166 |
153 #endif | 167 #endif |
154 // (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)) && GTEST_HAS_DEATH_TEST | 168 // (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)) && GTEST_HAS_DEATH_TEST |
155 | 169 |
156 } // namespace | 170 } // namespace |
157 } // namespace base | 171 } // namespace base |
OLD | NEW |