Chromium Code Reviews

Unified Diff: webrtc/base/analytics/percentile_filter_unittest.cc

Issue 2529063002: Templatize percentile_filter.h and move it to base/analytics. (Closed)
Patch Set: Only allow removing the oldest element from PercentileFilter. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Index: webrtc/base/analytics/percentile_filter_unittest.cc
diff --git a/webrtc/modules/video_coding/percentile_filter_unittest.cc b/webrtc/base/analytics/percentile_filter_unittest.cc
similarity index 64%
rename from webrtc/modules/video_coding/percentile_filter_unittest.cc
rename to webrtc/base/analytics/percentile_filter_unittest.cc
index 56cd99b39d2b644306f96bb300134d8f70ee422f..76e2657891c24130f92b4cd12aa96ef27054ca24 100644
--- a/webrtc/modules/video_coding/percentile_filter_unittest.cc
+++ b/webrtc/base/analytics/percentile_filter_unittest.cc
@@ -9,9 +9,10 @@
*/
#include <algorithm>
+#include <climits>
+#include "webrtc/base/analytics/percentile_filter.h"
#include "webrtc/base/constructormagic.h"
-#include "webrtc/modules/video_coding/percentile_filter.h"
#include "webrtc/test/gtest.h"
namespace webrtc {
@@ -24,7 +25,7 @@ class PercentileFilterTest : public ::testing::TestWithParam<float> {
}
protected:
- PercentileFilter filter_;
+ PercentileFilter<int64_t> filter_;
private:
RTC_DISALLOW_COPY_AND_ASSIGN(PercentileFilterTest);
@@ -35,41 +36,66 @@ INSTANTIATE_TEST_CASE_P(PercentileFilterTests,
::testing::Values(0.0f, 0.1f, 0.5f, 0.9f, 1.0f));
TEST(PercentileFilterTest, MinFilter) {
- PercentileFilter filter(0.0f);
- filter.Insert(4);
+ PercentileFilter<int64_t> filter(0.0f);
+ filter.Push(4);
EXPECT_EQ(4, filter.GetPercentileValue());
- filter.Insert(3);
+ filter.Push(3);
EXPECT_EQ(3, filter.GetPercentileValue());
}
TEST(PercentileFilterTest, MaxFilter) {
- PercentileFilter filter(1.0f);
- filter.Insert(3);
+ PercentileFilter<int64_t> filter(1.0f);
+ filter.Push(3);
EXPECT_EQ(3, filter.GetPercentileValue());
- filter.Insert(4);
+ filter.Push(4);
EXPECT_EQ(4, filter.GetPercentileValue());
}
-TEST_P(PercentileFilterTest, EmptyFilter) {
- EXPECT_EQ(0, filter_.GetPercentileValue());
- filter_.Insert(3);
- filter_.Erase(3);
- EXPECT_EQ(0, filter_.GetPercentileValue());
+TEST(PercentileFilterTest, MedianFilterDouble) {
+ PercentileFilter<double> filter(0.5f);
+ filter.Push(2.71828);
+ filter.Push(3.14159);
+ filter.Push(1.41421);
+ EXPECT_EQ(2.71828, filter.GetPercentileValue());
}
-TEST_P(PercentileFilterTest, EraseNonExistingElement) {
- filter_.Erase(3);
+TEST(PercentileFilterTest, MedianFilterInt) {
+ PercentileFilter<int> filter(0.5f);
+ filter.Push(INT_MIN);
+ filter.Push(1);
+ filter.Push(2);
+ EXPECT_EQ(1, filter.GetPercentileValue());
+ filter.Push(INT_MAX);
+ filter.Pop();
+ EXPECT_EQ(2, filter.GetPercentileValue());
+}
+
+TEST(PercentileFilterTest, MedianFilterUnsigned) {
+ PercentileFilter<unsigned> filter(0.5f);
+ filter.Push(UINT_MAX);
+ filter.Push(2u);
+ filter.Push(1u);
+ EXPECT_EQ(2u, filter.GetPercentileValue());
+ filter.Push(0u);
+ filter.Pop();
+ EXPECT_EQ(1u, filter.GetPercentileValue());
+}
+
+TEST_P(PercentileFilterTest, EmptyFilter) {
+ EXPECT_EQ(0, filter_.GetPercentileValue());
+ EXPECT_EQ(0, filter_.Size());
+ filter_.Push(3);
+ filter_.Pop();
EXPECT_EQ(0, filter_.GetPercentileValue());
- filter_.Insert(4);
- filter_.Erase(3);
- EXPECT_EQ(4, filter_.GetPercentileValue());
+ EXPECT_EQ(0, filter_.Size());
}
TEST_P(PercentileFilterTest, DuplicateElements) {
- filter_.Insert(3);
- filter_.Insert(3);
- filter_.Erase(3);
+ filter_.Push(3);
+ filter_.Push(3);
+ filter_.Pop();
EXPECT_EQ(3, filter_.GetPercentileValue());
+ EXPECT_EQ(1, filter_.Size());
}
TEST_P(PercentileFilterTest, InsertAndEraseTenValuesInRandomOrder) {
@@ -81,7 +107,7 @@ TEST_P(PercentileFilterTest, InsertAndEraseTenValuesInRandomOrder) {
for (int i = 0; i < 2; ++i) {
std::random_shuffle(zero_to_nine, zero_to_nine + 10);
for (int64_t value : zero_to_nine)
- filter_.Insert(value);
+ filter_.Push(value);
// After inserting a full set of |zero_to_nine|, the percentile should
// stay constant.
EXPECT_EQ(expected_value, filter_.GetPercentileValue());
@@ -89,14 +115,13 @@ TEST_P(PercentileFilterTest, InsertAndEraseTenValuesInRandomOrder) {
// Insert and erase sets of |zero_to_nine| in random order a few times.
for (int i = 0; i < 3; ++i) {
- std::random_shuffle(zero_to_nine, zero_to_nine + 10);
- for (int64_t value : zero_to_nine)
- filter_.Erase(value);
+ for (int j = 0; j < 10; ++j)
+ filter_.Pop();
EXPECT_EQ(expected_value, filter_.GetPercentileValue());
std::random_shuffle(zero_to_nine, zero_to_nine + 10);
for (int64_t value : zero_to_nine)
- filter_.Insert(value);
+ filter_.Push(value);
EXPECT_EQ(expected_value, filter_.GetPercentileValue());
}
}

Powered by Google App Engine