blob: 205cfe93387ce1d229e7ec24531c3e70975da115 [file] [log] [blame]
// Copyright 2019 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/optimization_guide/optimization_guide_session_statistic.h"
#include <cmath>
#include "testing/gtest/include/gtest/gtest.h"
TEST(OptimzationGuideSessionStatisticTest,
CalculateSessionStatisticsForSamples) {
OptimizationGuideSessionStatistic stat;
stat.AddSample(100.0);
EXPECT_EQ(1u, stat.GetNumberOfSamples());
EXPECT_EQ(100.0, stat.GetMean());
EXPECT_EQ(0.0, stat.GetVariance());
EXPECT_EQ(0.0, stat.GetStdDev());
stat.AddSample(200.0);
EXPECT_EQ(2u, stat.GetNumberOfSamples());
EXPECT_EQ(150.0, stat.GetMean());
EXPECT_EQ(5000.0, stat.GetVariance());
stat.AddSample(150.0);
EXPECT_EQ(3u, stat.GetNumberOfSamples());
EXPECT_EQ(150.0, stat.GetMean());
EXPECT_EQ(2500.0, stat.GetVariance());
EXPECT_EQ(std::sqrt(2500.0), stat.GetStdDev());
}
TEST(OptimzationGuideSessionStatisticTest, VarianceWitthLessThanTwoSamples) {
OptimizationGuideSessionStatistic stat;
EXPECT_EQ(0u, stat.GetNumberOfSamples());
EXPECT_EQ(0.0, stat.GetVariance());
EXPECT_EQ(0.0, stat.GetStdDev());
stat.AddSample(10.);
EXPECT_EQ(1u, stat.GetNumberOfSamples());
EXPECT_EQ(0.0, stat.GetVariance());
EXPECT_EQ(0.0, stat.GetStdDev());
}