Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3331)

Unified Diff: base/metrics/histogram_unittest.cc

Issue 10834011: Refactor of Histogram related code (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/metrics/histogram_unittest.cc
===================================================================
--- base/metrics/histogram_unittest.cc (revision 148055)
+++ base/metrics/histogram_unittest.cc (working copy)
@@ -15,43 +15,27 @@
#include "base/time.h"
#include "testing/gtest/include/gtest/gtest.h"
+using std::vector;
+
namespace base {
-class HistogramTest : public testing::Test {
-};
-
// Check for basic syntax and use.
-TEST(HistogramTest, StartupShutdownTest) {
+TEST(HistogramTest, BasicTest) {
// Try basic construction
Histogram* histogram(Histogram::FactoryGet(
"TestHistogram", 1, 1000, 10, Histogram::kNoFlags));
EXPECT_NE(reinterpret_cast<Histogram*>(NULL), histogram);
- Histogram* histogram1(Histogram::FactoryGet(
- "Test1Histogram", 1, 1000, 10, Histogram::kNoFlags));
- EXPECT_NE(reinterpret_cast<Histogram*>(NULL), histogram1);
- EXPECT_NE(histogram, histogram1);
-
Histogram* linear_histogram(LinearHistogram::FactoryGet(
"TestLinearHistogram", 1, 1000, 10, Histogram::kNoFlags));
EXPECT_NE(reinterpret_cast<Histogram*>(NULL), linear_histogram);
- Histogram* linear_histogram1(LinearHistogram::FactoryGet(
- "Test1LinearHistogram", 1, 1000, 10, Histogram::kNoFlags));
- EXPECT_NE(reinterpret_cast<Histogram*>(NULL), linear_histogram1);
- EXPECT_NE(linear_histogram, linear_histogram1);
- std::vector<int> custom_ranges;
+ vector<int> custom_ranges;
custom_ranges.push_back(1);
custom_ranges.push_back(5);
- custom_ranges.push_back(10);
- custom_ranges.push_back(20);
- custom_ranges.push_back(30);
Histogram* custom_histogram(CustomHistogram::FactoryGet(
"TestCustomHistogram", custom_ranges, Histogram::kNoFlags));
EXPECT_NE(reinterpret_cast<Histogram*>(NULL), custom_histogram);
- Histogram* custom_histogram1(CustomHistogram::FactoryGet(
- "Test1CustomHistogram", custom_ranges, Histogram::kNoFlags));
- EXPECT_NE(reinterpret_cast<Histogram*>(NULL), custom_histogram1);
// Use standard macros (but with fixed samples)
HISTOGRAM_TIMES("Test2Histogram", TimeDelta::FromDays(1));
@@ -61,216 +45,153 @@
DHISTOGRAM_COUNTS("Test5Histogram", 30);
HISTOGRAM_ENUMERATION("Test6Histogram", 129, 130);
-
- // Try to construct samples.
- Histogram::SampleSet sample1;
- Histogram::SampleSet sample2;
-
- // Use copy constructor of SampleSet
- sample1 = sample2;
- Histogram::SampleSet sample3(sample1);
-
- // Finally test a statistics recorder, without really using it.
- StatisticsRecorder recorder;
}
-// Repeat with a recorder present to register with.
-TEST(HistogramTest, RecordedStartupTest) {
- // Test a statistics recorder, by letting histograms register.
- StatisticsRecorder recorder; // This initializes the global state.
-
- StatisticsRecorder::Histograms histograms;
- EXPECT_EQ(0U, histograms.size());
- StatisticsRecorder::GetHistograms(&histograms); // Load up lists
- EXPECT_EQ(0U, histograms.size());
-
- // Try basic construction
- Histogram* histogram(Histogram::FactoryGet(
- "TestHistogram", 1, 1000, 10, Histogram::kNoFlags));
- EXPECT_NE(reinterpret_cast<Histogram*>(NULL), histogram);
- histograms.clear();
- StatisticsRecorder::GetHistograms(&histograms); // Load up lists
- EXPECT_EQ(1U, histograms.size());
- Histogram* histogram1(Histogram::FactoryGet(
- "Test1Histogram", 1, 1000, 10, Histogram::kNoFlags));
- EXPECT_NE(reinterpret_cast<Histogram*>(NULL), histogram1);
- histograms.clear();
- StatisticsRecorder::GetHistograms(&histograms); // Load up lists
- EXPECT_EQ(2U, histograms.size());
-
- Histogram* linear_histogram(LinearHistogram::FactoryGet(
- "TestLinearHistogram", 1, 1000, 10, Histogram::kNoFlags));
- EXPECT_NE(reinterpret_cast<Histogram*>(NULL), linear_histogram);
- histograms.clear();
- StatisticsRecorder::GetHistograms(&histograms); // Load up lists
- EXPECT_EQ(3U, histograms.size());
-
- Histogram* linear_histogram1(LinearHistogram::FactoryGet(
- "Test1LinearHistogram", 1, 1000, 10, Histogram::kNoFlags));
- EXPECT_NE(reinterpret_cast<Histogram*>(NULL), linear_histogram1);
- histograms.clear();
- StatisticsRecorder::GetHistograms(&histograms); // Load up lists
- EXPECT_EQ(4U, histograms.size());
-
- std::vector<int> custom_ranges;
- custom_ranges.push_back(1);
- custom_ranges.push_back(5);
- custom_ranges.push_back(10);
- custom_ranges.push_back(20);
- custom_ranges.push_back(30);
- Histogram* custom_histogram(CustomHistogram::FactoryGet(
- "TestCustomHistogram", custom_ranges, Histogram::kNoFlags));
- EXPECT_NE(reinterpret_cast<Histogram*>(NULL), custom_histogram);
- Histogram* custom_histogram1(CustomHistogram::FactoryGet(
- "TestCustomHistogram", custom_ranges, Histogram::kNoFlags));
- EXPECT_NE(reinterpret_cast<Histogram*>(NULL), custom_histogram1);
-
- histograms.clear();
- StatisticsRecorder::GetHistograms(&histograms); // Load up lists
- EXPECT_EQ(5U, histograms.size());
-
- // Use standard macros (but with fixed samples)
- HISTOGRAM_TIMES("Test2Histogram", TimeDelta::FromDays(1));
- HISTOGRAM_COUNTS("Test3Histogram", 30);
- histograms.clear();
- StatisticsRecorder::GetHistograms(&histograms); // Load up lists
- EXPECT_EQ(7U, histograms.size());
-
- HISTOGRAM_ENUMERATION("TestEnumerationHistogram", 20, 200);
- histograms.clear();
- StatisticsRecorder::GetHistograms(&histograms); // Load up lists
- EXPECT_EQ(8U, histograms.size());
-
- DHISTOGRAM_TIMES("Test4Histogram", TimeDelta::FromDays(1));
- DHISTOGRAM_COUNTS("Test5Histogram", 30);
- histograms.clear();
- StatisticsRecorder::GetHistograms(&histograms); // Load up lists
-#ifndef NDEBUG
- EXPECT_EQ(10U, histograms.size());
-#else
- EXPECT_EQ(8U, histograms.size());
-#endif
-}
-
-TEST(HistogramTest, RangeTest) {
- StatisticsRecorder recorder;
- StatisticsRecorder::Histograms histograms;
-
- recorder.GetHistograms(&histograms);
- EXPECT_EQ(0U, histograms.size());
-
- Histogram* histogram(Histogram::FactoryGet(
- "Histogram", 1, 64, 8, Histogram::kNoFlags)); // As per header file.
+TEST(HistogramTest, ExponentialRangesTest) {
// Check that we got a nice exponential when there was enough rooom.
- EXPECT_EQ(0, histogram->ranges(0));
+ BucketRanges ranges(9);
+ Histogram::InitializeBucketRanges(1, 64, 8, &ranges);
+ EXPECT_EQ(0, ranges.range(0));
int power_of_2 = 1;
for (int i = 1; i < 8; i++) {
- EXPECT_EQ(power_of_2, histogram->ranges(i));
+ EXPECT_EQ(power_of_2, ranges.range(i));
power_of_2 *= 2;
}
- EXPECT_EQ(INT_MAX, histogram->ranges(8));
+ EXPECT_EQ(HistogramBase::kSampleType_MAX, ranges.range(8));
- Histogram* short_histogram(Histogram::FactoryGet(
- "Histogram Shortened", 1, 7, 8, Histogram::kNoFlags));
- // Check that when the number of buckets is short, we get a linear histogram
- // for lack of space to do otherwise.
- for (int i = 0; i < 8; i++)
- EXPECT_EQ(i, short_histogram->ranges(i));
- EXPECT_EQ(INT_MAX, short_histogram->ranges(8));
+ // Check the corresponding Histogram will use the correct ranges.
+ Histogram* histogram(Histogram::FactoryGet(
+ "Histogram", 1, 64, 8, Histogram::kNoFlags));
+ EXPECT_TRUE(ranges.Equals(histogram->bucket_ranges()));
- Histogram* linear_histogram(LinearHistogram::FactoryGet(
- "Linear", 1, 7, 8, Histogram::kNoFlags));
- // We also get a nice linear set of bucket ranges when we ask for it
- for (int i = 0; i < 8; i++)
- EXPECT_EQ(i, linear_histogram->ranges(i));
- EXPECT_EQ(INT_MAX, linear_histogram->ranges(8));
+ // When bucket count is limited, exponential ranges will partially look like
+ // linear.
+ BucketRanges ranges2(16);
+ Histogram::InitializeBucketRanges(1, 32, 15, &ranges2);
- Histogram* linear_broad_histogram(LinearHistogram::FactoryGet(
- "Linear widened", 2, 14, 8, Histogram::kNoFlags));
- // ...but when the list has more space, then the ranges naturally spread out.
- for (int i = 0; i < 8; i++)
- EXPECT_EQ(2 * i, linear_broad_histogram->ranges(i));
- EXPECT_EQ(INT_MAX, linear_broad_histogram->ranges(8));
+ EXPECT_EQ(0, ranges2.range(0));
+ EXPECT_EQ(1, ranges2.range(1));
+ EXPECT_EQ(2, ranges2.range(2));
+ EXPECT_EQ(3, ranges2.range(3));
+ EXPECT_EQ(4, ranges2.range(4));
+ EXPECT_EQ(5, ranges2.range(5));
+ EXPECT_EQ(6, ranges2.range(6));
+ EXPECT_EQ(7, ranges2.range(7));
+ EXPECT_EQ(9, ranges2.range(8));
+ EXPECT_EQ(11, ranges2.range(9));
+ EXPECT_EQ(14, ranges2.range(10));
+ EXPECT_EQ(17, ranges2.range(11));
+ EXPECT_EQ(21, ranges2.range(12));
+ EXPECT_EQ(26, ranges2.range(13));
+ EXPECT_EQ(32, ranges2.range(14));
+ EXPECT_EQ(HistogramBase::kSampleType_MAX, ranges2.range(15));
- Histogram* transitioning_histogram(Histogram::FactoryGet(
- "LinearAndExponential", 1, 32, 15, Histogram::kNoFlags));
- // When space is a little tight, we transition from linear to exponential.
- EXPECT_EQ(0, transitioning_histogram->ranges(0));
- EXPECT_EQ(1, transitioning_histogram->ranges(1));
- EXPECT_EQ(2, transitioning_histogram->ranges(2));
- EXPECT_EQ(3, transitioning_histogram->ranges(3));
- EXPECT_EQ(4, transitioning_histogram->ranges(4));
- EXPECT_EQ(5, transitioning_histogram->ranges(5));
- EXPECT_EQ(6, transitioning_histogram->ranges(6));
- EXPECT_EQ(7, transitioning_histogram->ranges(7));
- EXPECT_EQ(9, transitioning_histogram->ranges(8));
- EXPECT_EQ(11, transitioning_histogram->ranges(9));
- EXPECT_EQ(14, transitioning_histogram->ranges(10));
- EXPECT_EQ(17, transitioning_histogram->ranges(11));
- EXPECT_EQ(21, transitioning_histogram->ranges(12));
- EXPECT_EQ(26, transitioning_histogram->ranges(13));
- EXPECT_EQ(32, transitioning_histogram->ranges(14));
- EXPECT_EQ(INT_MAX, transitioning_histogram->ranges(15));
+ // Check the corresponding Histogram will use the correct ranges.
+ Histogram* histogram2(Histogram::FactoryGet(
+ "Histogram2", 1, 32, 15, Histogram::kNoFlags));
+ EXPECT_TRUE(ranges2.Equals(histogram2->bucket_ranges()));
+}
- std::vector<int> custom_ranges;
- custom_ranges.push_back(0);
- custom_ranges.push_back(9);
- custom_ranges.push_back(10);
- custom_ranges.push_back(11);
- custom_ranges.push_back(300);
- Histogram* test_custom_histogram(CustomHistogram::FactoryGet(
- "TestCustomRangeHistogram", custom_ranges, Histogram::kNoFlags));
+TEST(HistogramTest, LinearRangesTest) {
+ BucketRanges ranges(9);
+ LinearHistogram::InitializeBucketRanges(1, 7, 8, &ranges);
+ // Gets a nice linear set of bucket ranges.
+ for (int i = 0; i < 8; i++)
+ EXPECT_EQ(i, ranges.range(i));
+ EXPECT_EQ(HistogramBase::kSampleType_MAX, ranges.range(8));
+ // The correspoding LinearHistogram should use the correct ranges.
+ Histogram* histogram(
+ LinearHistogram::FactoryGet("Linear", 1, 7, 8, Histogram::kNoFlags));
+ EXPECT_TRUE(ranges.Equals(histogram->bucket_ranges()));
- EXPECT_EQ(custom_ranges[0], test_custom_histogram->ranges(0));
- EXPECT_EQ(custom_ranges[1], test_custom_histogram->ranges(1));
- EXPECT_EQ(custom_ranges[2], test_custom_histogram->ranges(2));
- EXPECT_EQ(custom_ranges[3], test_custom_histogram->ranges(3));
- EXPECT_EQ(custom_ranges[4], test_custom_histogram->ranges(4));
+ // Linear ranges are not divisible.
+ BucketRanges ranges2(6);
+ LinearHistogram::InitializeBucketRanges(1, 6, 5, &ranges2);
+ EXPECT_EQ(0, ranges2.range(0));
+ EXPECT_EQ(1, ranges2.range(1));
+ EXPECT_EQ(3, ranges2.range(2));
+ EXPECT_EQ(4, ranges2.range(3));
+ EXPECT_EQ(6, ranges2.range(4));
+ EXPECT_EQ(HistogramBase::kSampleType_MAX, ranges2.range(5));
+ // The correspoding LinearHistogram should use the correct ranges.
+ Histogram* histogram2(
+ LinearHistogram::FactoryGet("Linear2", 1, 6, 5, Histogram::kNoFlags));
+ EXPECT_TRUE(ranges2.Equals(histogram2->bucket_ranges()));
+}
- recorder.GetHistograms(&histograms);
- EXPECT_EQ(6U, histograms.size());
+TEST(HistogramTest, ArrayToCustomRangesTest) {
+ const HistogramBase::Sample ranges[3] = {5, 10 ,20};
+ vector<HistogramBase::Sample> ranges_vec =
+ CustomHistogram::ArrayToCustomRanges(ranges, 3);
+ ASSERT_EQ(6u, ranges_vec.size());
+ EXPECT_EQ(5, ranges_vec[0]);
+ EXPECT_EQ(6, ranges_vec[1]);
+ EXPECT_EQ(10, ranges_vec[2]);
+ EXPECT_EQ(11, ranges_vec[3]);
+ EXPECT_EQ(20, ranges_vec[4]);
+ EXPECT_EQ(21, ranges_vec[5]);
}
-TEST(HistogramTest, CustomRangeTest) {
- StatisticsRecorder recorder;
- StatisticsRecorder::Histograms histograms;
+TEST(HistogramTest, CustomHistogramTest) {
+ // A well prepared custom ranges.
+ vector<HistogramBase::Sample> custom_ranges;
+ custom_ranges.push_back(1);
+ custom_ranges.push_back(2);
+ Histogram* histogram = CustomHistogram::FactoryGet(
+ "TestCustomHistogram1", custom_ranges, Histogram::kNoFlags);
+ const BucketRanges* ranges = histogram->bucket_ranges();
+ ASSERT_EQ(4u, ranges->size());
+ EXPECT_EQ(0, ranges->range(0)); // Auto added.
+ EXPECT_EQ(1, ranges->range(1));
+ EXPECT_EQ(2, ranges->range(2));
+ EXPECT_EQ(HistogramBase::kSampleType_MAX, ranges->range(3)); // Auto added.
- // Check that missing leading zero is handled by an auto-insertion.
- std::vector<int> custom_ranges;
- // Don't include a zero.
- custom_ranges.push_back(9);
- custom_ranges.push_back(10);
- custom_ranges.push_back(11);
- Histogram* test_custom_histogram(CustomHistogram::FactoryGet(
- "TestCustomRangeHistogram", custom_ranges, Histogram::kNoFlags));
-
- EXPECT_EQ(0, test_custom_histogram->ranges(0)); // Auto added
- EXPECT_EQ(custom_ranges[0], test_custom_histogram->ranges(1));
- EXPECT_EQ(custom_ranges[1], test_custom_histogram->ranges(2));
- EXPECT_EQ(custom_ranges[2], test_custom_histogram->ranges(3));
-
- // Check that unsorted data with dups is handled gracefully.
- const int kSmall = 7;
- const int kMid = 8;
- const int kBig = 9;
+ // A unordered custom ranges.
custom_ranges.clear();
- custom_ranges.push_back(kBig);
- custom_ranges.push_back(kMid);
- custom_ranges.push_back(kSmall);
- custom_ranges.push_back(kSmall);
- custom_ranges.push_back(kMid);
- custom_ranges.push_back(0); // Push an explicit zero.
- custom_ranges.push_back(kBig);
+ custom_ranges.push_back(2);
+ custom_ranges.push_back(1);
+ histogram = CustomHistogram::FactoryGet(
+ "TestCustomHistogram2", custom_ranges, Histogram::kNoFlags);
+ ranges = histogram->bucket_ranges();
+ ASSERT_EQ(4u, ranges->size());
+ EXPECT_EQ(0, ranges->range(0));
+ EXPECT_EQ(1, ranges->range(1));
+ EXPECT_EQ(2, ranges->range(2));
+ EXPECT_EQ(HistogramBase::kSampleType_MAX, ranges->range(3));
- Histogram* unsorted_histogram(CustomHistogram::FactoryGet(
- "TestCustomUnsortedDupedHistogram", custom_ranges, Histogram::kNoFlags));
- EXPECT_EQ(0, unsorted_histogram->ranges(0));
- EXPECT_EQ(kSmall, unsorted_histogram->ranges(1));
- EXPECT_EQ(kMid, unsorted_histogram->ranges(2));
- EXPECT_EQ(kBig, unsorted_histogram->ranges(3));
+ // A custom ranges with duplicated values.
+ custom_ranges.clear();
+ custom_ranges.push_back(4);
+ custom_ranges.push_back(1);
+ custom_ranges.push_back(4);
+ histogram = CustomHistogram::FactoryGet(
+ "TestCustomHistogram3", custom_ranges, Histogram::kNoFlags);
+ ranges = histogram->bucket_ranges();
+ ASSERT_EQ(4u, ranges->size());
+ EXPECT_EQ(0, ranges->range(0));
+ EXPECT_EQ(1, ranges->range(1));
+ EXPECT_EQ(4, ranges->range(2));
+ EXPECT_EQ(HistogramBase::kSampleType_MAX, ranges->range(3));
}
+TEST(HistogramTest, CustomHistogramWithOnly2Buckets) {
+ // This test exploits the fact that the CustomHistogram can have 2 buckets,
+ // while the base class Histogram is *supposed* to have at least 3 buckets.
+ // We should probably change the restriction on the base class (or not inherit
+ // the base class!).
+ vector<HistogramBase::Sample> custom_ranges;
+ custom_ranges.push_back(4);
+
+ Histogram* histogram = CustomHistogram::FactoryGet(
+ "2BucketsCustomHistogram", custom_ranges, Histogram::kNoFlags);
+ const BucketRanges* ranges = histogram->bucket_ranges();
+ ASSERT_EQ(3u, ranges->size());
+ EXPECT_EQ(0, ranges->range(0));
+ EXPECT_EQ(4, ranges->range(1));
+ EXPECT_EQ(HistogramBase::kSampleType_MAX, ranges->range(2));
+}
+
// Make sure histogram handles out-of-bounds data gracefully.
TEST(HistogramTest, BoundsTest) {
const size_t kBucketCount = 50;
@@ -294,7 +215,7 @@
EXPECT_EQ(0, sample.counts(array_size - 2));
EXPECT_EQ(2, sample.counts(array_size - 1));
- std::vector<int> custom_ranges;
+ vector<int> custom_ranges;
custom_ranges.push_back(10);
custom_ranges.push_back(50);
custom_ranges.push_back(100);
@@ -320,31 +241,20 @@
// Check to be sure samples land as expected is "correct" buckets.
TEST(HistogramTest, BucketPlacementTest) {
Histogram* histogram(Histogram::FactoryGet(
- "Histogram", 1, 64, 8, Histogram::kNoFlags)); // As per header file.
+ "Histogram", 1, 64, 8, Histogram::kNoFlags));
- // Check that we got a nice exponential since there was enough rooom.
- EXPECT_EQ(0, histogram->ranges(0));
- int power_of_2 = 1;
- for (int i = 1; i < 8; i++) {
- EXPECT_EQ(power_of_2, histogram->ranges(i));
- power_of_2 *= 2;
- }
- EXPECT_EQ(INT_MAX, histogram->ranges(8));
-
// Add i+1 samples to the i'th bucket.
histogram->Add(0);
- power_of_2 = 1;
+ int power_of_2 = 1;
for (int i = 1; i < 8; i++) {
for (int j = 0; j <= i; j++)
histogram->Add(power_of_2);
power_of_2 *= 2;
}
- // Leave overflow bucket empty.
// Check to see that the bucket counts reflect our additions.
Histogram::SampleSet sample;
histogram->SnapshotSample(&sample);
- EXPECT_EQ(INT_MAX, histogram->ranges(8));
for (int i = 0; i < 8; i++)
EXPECT_EQ(i + 1, sample.counts(i));
}
@@ -383,7 +293,8 @@
EXPECT_EQ(Histogram::NO_INCONSISTENCIES, 0);
EXPECT_EQ(0, histogram->FindCorruption(snapshot)); // No default corruption.
- BucketRanges* bucket_ranges = histogram->bucket_ranges();
+ BucketRanges* bucket_ranges =
+ const_cast<BucketRanges*>(histogram->bucket_ranges());
HistogramBase::Sample tmp = bucket_ranges->range(1);
bucket_ranges->set_range(1, bucket_ranges->range(2));
bucket_ranges->set_range(2, tmp);
@@ -408,45 +319,4 @@
bucket_ranges->set_range(4, bucket_ranges->range(4) + 1);
}
-// Table was generated similarly to sample code for CRC-32 given on:
-// http://www.w3.org/TR/PNG/#D-CRCAppendix.
-TEST(HistogramTest, Crc32TableTest) {
- for (int i = 0; i < 256; ++i) {
- uint32 checksum = i;
- for (int j = 0; j < 8; ++j) {
- const uint32 kReversedPolynomial = 0xedb88320L;
- if (checksum & 1)
- checksum = kReversedPolynomial ^ (checksum >> 1);
- else
- checksum >>= 1;
- }
- EXPECT_EQ(Histogram::kCrcTable[i], checksum);
- }
-}
-
-// RangeTest, CustomRangeTest and CorruptBucketBounds test BucketRanges class.
-// The following tests sharing of BucketRanges object.
-TEST(HistogramTest, BucketRangesTest) {
- StatisticsRecorder recorder;
- StatisticsRecorder::Histograms histograms;
-
- recorder.GetHistograms(&histograms);
- EXPECT_EQ(0U, histograms.size());
-
- Histogram* histogram1(Histogram::FactoryGet(
- "Histogram", 1, 64, 8, Histogram::kNoFlags));
-
- Histogram* histogram2(Histogram::FactoryGet(
- "Histogram2", 1, 64, 8, Histogram::kNoFlags));
-
- Histogram* histogram3(Histogram::FactoryGet(
- "Histogram3", 1, 64, 16, Histogram::kNoFlags));
-
- BucketRanges* bucket_ranges1 = histogram1->bucket_ranges();
- BucketRanges* bucket_ranges2 = histogram2->bucket_ranges();
- BucketRanges* bucket_ranges3 = histogram3->bucket_ranges();
- EXPECT_TRUE(bucket_ranges1->Equals(bucket_ranges2));
- EXPECT_FALSE(bucket_ranges1->Equals(bucket_ranges3));
-}
-
} // namespace base

Powered by Google App Engine
This is Rietveld 408576698