blob: a2632ff86cf182e0cbad2eac11b9521a5841ceba [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/vr/sliding_average.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace vr {
TEST(SlidingAverage, Basics) {
SlidingAverage meter(5);
// No values yet
EXPECT_EQ(42, meter.GetAverageOrDefault(42));
EXPECT_EQ(0, meter.GetAverage());
meter.AddSample(100);
EXPECT_EQ(100, meter.GetAverageOrDefault(42));
EXPECT_EQ(100, meter.GetAverage());
meter.AddSample(200);
EXPECT_EQ(150, meter.GetAverage());
meter.AddSample(10);
EXPECT_EQ(103, meter.GetAverage());
meter.AddSample(10);
EXPECT_EQ(80, meter.GetAverage());
meter.AddSample(10);
EXPECT_EQ(66, meter.GetAverage());
meter.AddSample(10);
EXPECT_EQ(48, meter.GetAverage());
meter.AddSample(10);
EXPECT_EQ(10, meter.GetAverage());
meter.AddSample(110);
EXPECT_EQ(30, meter.GetAverage());
}
TEST(SlidingTimeDeltaAverage, Basics) {
SlidingTimeDeltaAverage meter(5);
EXPECT_EQ(base::TimeDelta::FromSeconds(42),
meter.GetAverageOrDefault(base::TimeDelta::FromSeconds(42)));
EXPECT_EQ(base::TimeDelta(), meter.GetAverage());
meter.AddSample(base::TimeDelta::FromSeconds(100));
EXPECT_EQ(base::TimeDelta::FromSeconds(100),
meter.GetAverageOrDefault(base::TimeDelta::FromSeconds(42)));
EXPECT_EQ(base::TimeDelta::FromSeconds(100), meter.GetAverage());
meter.AddSample(base::TimeDelta::FromMilliseconds(200000));
EXPECT_EQ(base::TimeDelta::FromSeconds(150), meter.GetAverage());
}
} // namespace vr