OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/time/time.h" | 5 #include "base/time/time.h" |
6 #include "media/base/moving_average.h" | 6 #include "media/base/moving_average.h" |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 | 8 |
9 namespace media { | 9 namespace media { |
10 | 10 |
11 TEST(MovingAverageTest, Average) { | 11 TEST(MovingAverageTest, AverageAndDeviation) { |
12 const int kSamples = 5; | 12 const int kSamples = 5; |
13 MovingAverage moving_average(kSamples); | 13 MovingAverage moving_average(kSamples); |
14 moving_average.AddSample(base::TimeDelta::FromSeconds(1)); | 14 moving_average.AddSample(base::TimeDelta::FromSeconds(1)); |
15 EXPECT_EQ(base::TimeDelta::FromSeconds(1), moving_average.Average()); | 15 EXPECT_EQ(base::TimeDelta::FromSeconds(1), moving_average.Average()); |
| 16 EXPECT_EQ(base::TimeDelta(), moving_average.Deviation()); |
| 17 |
16 for (int i = 0; i < kSamples - 1; ++i) | 18 for (int i = 0; i < kSamples - 1; ++i) |
17 moving_average.AddSample(base::TimeDelta::FromSeconds(1)); | 19 moving_average.AddSample(base::TimeDelta::FromSeconds(1)); |
18 EXPECT_EQ(base::TimeDelta::FromSeconds(1), moving_average.Average()); | 20 EXPECT_EQ(base::TimeDelta::FromSeconds(1), moving_average.Average()); |
| 21 EXPECT_EQ(base::TimeDelta(), moving_average.Deviation()); |
19 | 22 |
| 23 base::TimeDelta expect_deviation[] = { |
| 24 base::TimeDelta::FromMicroseconds(200000), |
| 25 base::TimeDelta::FromMicroseconds(244948), |
| 26 base::TimeDelta::FromMicroseconds(244948), |
| 27 base::TimeDelta::FromMicroseconds(200000), |
| 28 base::TimeDelta::FromMilliseconds(0), |
| 29 }; |
20 for (int i = 0; i < kSamples; ++i) { | 30 for (int i = 0; i < kSamples; ++i) { |
21 moving_average.AddSample(base::TimeDelta::FromMilliseconds(500)); | 31 moving_average.AddSample(base::TimeDelta::FromMilliseconds(500)); |
22 EXPECT_EQ(base::TimeDelta::FromMilliseconds(1000 - (i + 1) * 100), | 32 EXPECT_EQ(base::TimeDelta::FromMilliseconds(1000 - (i + 1) * 100), |
23 moving_average.Average()); | 33 moving_average.Average()); |
| 34 EXPECT_EQ(expect_deviation[i], moving_average.Deviation()); |
24 } | 35 } |
25 } | 36 } |
26 | 37 |
27 TEST(MovingAverageTest, Reset) { | 38 TEST(MovingAverageTest, Reset) { |
28 MovingAverage moving_average(2); | 39 MovingAverage moving_average(2); |
29 moving_average.AddSample(base::TimeDelta::FromSeconds(1)); | 40 moving_average.AddSample(base::TimeDelta::FromSeconds(1)); |
30 EXPECT_EQ(base::TimeDelta::FromSeconds(1), moving_average.Average()); | 41 EXPECT_EQ(base::TimeDelta::FromSeconds(1), moving_average.Average()); |
31 moving_average.Reset(); | 42 moving_average.Reset(); |
32 moving_average.AddSample(base::TimeDelta()); | 43 moving_average.AddSample(base::TimeDelta()); |
33 EXPECT_EQ(base::TimeDelta(), moving_average.Average()); | 44 EXPECT_EQ(base::TimeDelta(), moving_average.Average()); |
| 45 EXPECT_EQ(base::TimeDelta(), moving_average.Deviation()); |
34 } | 46 } |
35 | 47 |
36 } // namespace media | 48 } // namespace media |
OLD | NEW |