Index: counter_test.cc |
diff --git a/counter_test.cc b/counter_test.cc |
index eb68b2acb79114666ef108ab80d46195ec8d0075..35805166872b6958be79d42a1f09d3f6218cb6e7 100644 |
--- a/counter_test.cc |
+++ b/counter_test.cc |
@@ -13,6 +13,7 @@ |
#include "counter.h" |
#include "counter_mock.h" // For TaggedCounterMock. |
+#include "metrics_library_mock.h" |
using ::testing::_; |
using ::testing::MockFunction; |
@@ -37,7 +38,7 @@ class RecordTest : public testing::Test { |
class TaggedCounterTest : public testing::Test { |
protected: |
virtual void SetUp() { |
- EXPECT_EQ(NULL, counter_.filename_); |
+ EXPECT_TRUE(counter_.filename_.empty()); |
EXPECT_TRUE(NULL == counter_.reporter_); |
EXPECT_EQ(NULL, counter_.reporter_handle_); |
EXPECT_EQ(TaggedCounter::kRecordInvalid, counter_.record_state_); |
@@ -256,14 +257,85 @@ TEST_F(TaggedCounterTest, Update) { |
EXPECT_EQ(TaggedCounter::kRecordValid, counter_.record_state_); |
} |
-class FrequencyCounterTest : public testing::Test { |
+static const char kTestFilename[] = "test_filename"; |
+static const char kTestHistogram[] = "test_histogram"; |
+const int kHistogramMin = 15; |
+const int kHistogramMax = 1024; |
+const int kHistogramBuckets = 23; |
+ |
+class TaggedCounterReporterTest : public testing::Test { |
protected: |
virtual void SetUp() { |
- tagged_counter_ = new StrictMock<TaggedCounterMock>; |
- frequency_counter_.tagged_counter_.reset(tagged_counter_); |
+ tagged_counter_ = new StrictMock<TaggedCounterMock>(); |
+ reporter_.tagged_counter_.reset(tagged_counter_); |
+ metrics_lib_.reset(new StrictMock<MetricsLibraryMock>); |
+ reporter_.SetMetricsLibraryInterface(metrics_lib_.get()); |
+ ASSERT_TRUE(metrics_lib_.get() == reporter_.metrics_lib_); |
+ } |
+ virtual void TearDown() { |
+ reporter_.SetMetricsLibraryInterface(NULL); |
} |
- static void FakeReporter(void *, int32, int32) { |
+ void DoInit(); |
+ StrictMock<TaggedCounterMock>* tagged_counter_; |
+ TaggedCounterReporter reporter_; |
+ scoped_ptr<MetricsLibraryMock> metrics_lib_; |
+}; |
+ |
+void TaggedCounterReporterTest::DoInit() { |
+ EXPECT_CALL(*tagged_counter_, |
+ Init(kTestFilename, |
+ TaggedCounterReporter::Report, |
+ &reporter_)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ reporter_.Init(kTestFilename, |
+ kTestHistogram, |
+ kHistogramMin, |
+ kHistogramMax, |
+ kHistogramBuckets); |
+ EXPECT_EQ(kTestHistogram, reporter_.histogram_name_); |
+ EXPECT_EQ(kHistogramBuckets, reporter_.buckets_); |
+ EXPECT_EQ(kHistogramMax, reporter_.max_); |
+ EXPECT_EQ(kHistogramMin, reporter_.min_); |
+} |
+ |
+TEST_F(TaggedCounterReporterTest, Init) { |
+ DoInit(); |
+} |
+ |
+TEST_F(TaggedCounterReporterTest, Update) { |
+ DoInit(); |
+ EXPECT_CALL(*tagged_counter_, Update(1, 2)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ reporter_.Update(1, 2); |
+} |
+ |
+TEST_F(TaggedCounterReporterTest, Flush) { |
+ DoInit(); |
+ EXPECT_CALL(*tagged_counter_, Flush()) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ reporter_.Flush(); |
+} |
+ |
+TEST_F(TaggedCounterReporterTest, Report) { |
+ DoInit(); |
+ EXPECT_CALL(*metrics_lib_, SendToUMA(kTestHistogram, |
+ 301, |
+ kHistogramMin, |
+ kHistogramMax, |
+ kHistogramBuckets)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ reporter_.Report(&reporter_, 127, 301); |
+} |
+ |
+class FrequencyCounterTest : public testing::Test { |
+ protected: |
+ virtual void SetUp() { |
+ tagged_counter_ = NULL; |
} |
void CheckInit(int32 cycle_duration); |
@@ -276,14 +348,10 @@ class FrequencyCounterTest : public testing::Test { |
}; |
void FrequencyCounterTest::CheckInit(int32 cycle_duration) { |
- EXPECT_CALL(*tagged_counter_, Init(kTestRecordFile, FakeReporter, this)) |
- .Times(1) |
- .RetiresOnSaturation(); |
- frequency_counter_.Init(kTestRecordFile, |
- FakeReporter, |
- this, |
- cycle_duration); |
+ tagged_counter_ = new StrictMock<TaggedCounterMock>; |
+ frequency_counter_.Init(tagged_counter_, cycle_duration); |
EXPECT_EQ(cycle_duration, frequency_counter_.cycle_duration_); |
+ EXPECT_EQ(tagged_counter_, frequency_counter_.tagged_counter_.get()); |
} |
TEST_F(FrequencyCounterTest, Init) { |
@@ -292,10 +360,12 @@ TEST_F(FrequencyCounterTest, Init) { |
void FrequencyCounterTest::CheckCycleNumber(int32 cycle_duration) { |
CheckInit(cycle_duration); |
- EXPECT_EQ(150, frequency_counter_.GetCycleNumber(cycle_duration * 150)); |
- EXPECT_EQ(150, frequency_counter_.GetCycleNumber(cycle_duration * 150 + |
- cycle_duration - 1)); |
- EXPECT_EQ(151, frequency_counter_.GetCycleNumber(cycle_duration * 151 + 1)); |
+ EXPECT_EQ(150, frequency_counter_.GetCycleNumber( |
+ cycle_duration * 150)); |
+ EXPECT_EQ(150, frequency_counter_.GetCycleNumber( |
+ cycle_duration * 150 + cycle_duration - 1)); |
+ EXPECT_EQ(151, frequency_counter_.GetCycleNumber( |
+ cycle_duration * 151 + 1)); |
EXPECT_EQ(0, frequency_counter_.GetCycleNumber(0)); |
} |
@@ -310,7 +380,9 @@ TEST_F(FrequencyCounterTest, GetCycleNumberForDay) { |
TEST_F(FrequencyCounterTest, UpdateInternal) { |
CheckInit(kSecondsPerWeek); |
- EXPECT_CALL(*tagged_counter_, Update(150, 2)); |
+ EXPECT_CALL(*tagged_counter_, Update(150, 2)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
frequency_counter_.UpdateInternal(2, kSecondsPerWeek * 150); |
} |