OLD | NEW |
(Empty) | |
| 1 /* |
| 2 * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. |
| 3 * |
| 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ |
| 10 |
| 11 #include "webrtc/rtc_base/moving_max_counter.h" |
| 12 #include "webrtc/test/gtest.h" |
| 13 |
| 14 TEST(MovingMaxCounter, ReportsMaximumInTheWindow) { |
| 15 rtc::MovingMaxCounter<int> counter(100); |
| 16 counter.Add(1, 1); |
| 17 EXPECT_EQ(counter.Max(1), rtc::Optional<int>(1)); |
| 18 counter.Add(2, 30); |
| 19 EXPECT_EQ(counter.Max(30), rtc::Optional<int>(2)); |
| 20 counter.Add(100, 60); |
| 21 EXPECT_EQ(counter.Max(60), rtc::Optional<int>(100)); |
| 22 counter.Add(4, 70); |
| 23 EXPECT_EQ(counter.Max(70), rtc::Optional<int>(100)); |
| 24 counter.Add(5, 90); |
| 25 EXPECT_EQ(counter.Max(90), rtc::Optional<int>(100)); |
| 26 } |
| 27 |
| 28 TEST(MovingMaxCounter, IgnoresOldElements) { |
| 29 rtc::MovingMaxCounter<int> counter(100); |
| 30 counter.Add(1, 1); |
| 31 counter.Add(2, 30); |
| 32 counter.Add(100, 60); |
| 33 counter.Add(4, 70); |
| 34 counter.Add(5, 90); |
| 35 EXPECT_EQ(counter.Max(160), rtc::Optional<int>(100)); |
| 36 // 100 is now out of the window. Next maximum is 5. |
| 37 EXPECT_EQ(counter.Max(161), rtc::Optional<int>(5)); |
| 38 } |
| 39 |
| 40 TEST(MovingMaxCounter, HandlesEmptyWindow) { |
| 41 rtc::MovingMaxCounter<int> counter(100); |
| 42 counter.Add(123, 1); |
| 43 EXPECT_TRUE(counter.Max(101).has_value()); |
| 44 EXPECT_FALSE(counter.Max(102).has_value()); |
| 45 } |
| 46 |
| 47 TEST(MovingMaxCounter, HandlesSamplesWithEqualTimestamps) { |
| 48 rtc::MovingMaxCounter<int> counter(100); |
| 49 counter.Add(2, 30); |
| 50 EXPECT_EQ(counter.Max(30), rtc::Optional<int>(2)); |
| 51 counter.Add(5, 30); |
| 52 EXPECT_EQ(counter.Max(30), rtc::Optional<int>(5)); |
| 53 counter.Add(4, 30); |
| 54 EXPECT_EQ(counter.Max(30), rtc::Optional<int>(5)); |
| 55 counter.Add(1, 90); |
| 56 EXPECT_EQ(counter.Max(150), rtc::Optional<int>(1)); |
| 57 } |
OLD | NEW |