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()); |
} |
} |