OLD | NEW |
(Empty) | |
| 1 /* |
| 2 * Copyright (c) 2016 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/modules/audio_processing/echo_detector/sliding_window_minimum.h
" |
| 12 |
| 13 #include <algorithm> |
| 14 |
| 15 #include "webrtc/base/random.h" |
| 16 #include "webrtc/test/gtest.h" |
| 17 |
| 18 namespace webrtc { |
| 19 |
| 20 TEST(SlidingWindowMinimumTests, HandMadeTest) { |
| 21 SlidingWindowMinimum min_calculator(3); |
| 22 min_calculator.AddValue(3); |
| 23 EXPECT_EQ(0ul, min_calculator.GetMinimum()); |
| 24 min_calculator.AddValue(0); |
| 25 EXPECT_EQ(0ul, min_calculator.GetMinimum()); |
| 26 min_calculator.AddValue(7); |
| 27 EXPECT_EQ(0ul, min_calculator.GetMinimum()); |
| 28 min_calculator.AddValue(8); |
| 29 EXPECT_EQ(0ul, min_calculator.GetMinimum()); |
| 30 min_calculator.AddValue(2); |
| 31 EXPECT_EQ(2ul, min_calculator.GetMinimum()); |
| 32 min_calculator.AddValue(11); |
| 33 EXPECT_EQ(2ul, min_calculator.GetMinimum()); |
| 34 min_calculator.AddValue(10); |
| 35 EXPECT_EQ(2ul, min_calculator.GetMinimum()); |
| 36 min_calculator.AddValue(1); |
| 37 EXPECT_EQ(1ul, min_calculator.GetMinimum()); |
| 38 min_calculator.AddValue(2); |
| 39 EXPECT_EQ(1ul, min_calculator.GetMinimum()); |
| 40 min_calculator.AddValue(0); |
| 41 EXPECT_EQ(0ul, min_calculator.GetMinimum()); |
| 42 min_calculator.AddValue(6); |
| 43 EXPECT_EQ(0ul, min_calculator.GetMinimum()); |
| 44 min_calculator.AddValue(1); |
| 45 EXPECT_EQ(0ul, min_calculator.GetMinimum()); |
| 46 min_calculator.AddValue(7); |
| 47 EXPECT_EQ(1ul, min_calculator.GetMinimum()); |
| 48 min_calculator.AddValue(2); |
| 49 EXPECT_EQ(1ul, min_calculator.GetMinimum()); |
| 50 min_calculator.AddValue(8); |
| 51 EXPECT_EQ(2ul, min_calculator.GetMinimum()); |
| 52 } |
| 53 |
| 54 TEST(SlidingWindowMinimumTests, RandomTest) { |
| 55 SlidingWindowMinimum min_calculator(10); |
| 56 Random rng(123); |
| 57 std::vector<size_t> latest_values(10); |
| 58 size_t latest_values_index = 0; |
| 59 for (size_t i = 0; i < 10000; i++) { |
| 60 size_t next_number = static_cast<size_t>(rng.Rand(10000)); |
| 61 min_calculator.AddValue(next_number); |
| 62 latest_values[latest_values_index] = next_number; |
| 63 size_t actual_minimum = |
| 64 *std::min_element(latest_values.begin(), latest_values.end()); |
| 65 EXPECT_EQ(actual_minimum, min_calculator.GetMinimum()); |
| 66 ++latest_values_index; |
| 67 latest_values_index %= 10; |
| 68 } |
| 69 } |
| 70 |
| 71 } // namespace webrtc |
OLD | NEW |