blob: baf626e1d9d7d2dfebe062c8895d9ddaf20f2273 [file] [log] [blame]
// Copyright 2017 The Fuchsia 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 <gtest/gtest.h>
#include <wlan/common/moving_average.h>
using namespace wlan::common;
namespace wlan {
namespace {
class MovingAverageTest : public ::testing::Test {};
TEST_F(MovingAverageTest, MovingAverage) {
MovingAverage<uint8_t, uint16_t, 3> avg;
EXPECT_EQ(0u, avg.avg());
avg.add(10);
EXPECT_EQ(10u, avg.avg());
avg.add(20);
EXPECT_EQ(15u, avg.avg());
avg.add(40);
EXPECT_EQ(23u, avg.avg());
avg.add(30);
EXPECT_EQ(30u, avg.avg());
avg.add(5);
EXPECT_EQ(25u, avg.avg());
avg.reset();
EXPECT_EQ(0u, avg.avg());
avg.add(3);
EXPECT_EQ(3u, avg.avg());
}
TEST_F(MovingAverageTest, MovingAverageDbm) {
MovingAverageDbm<3> d;
EXPECT_EQ(0u, d.avg().val);
d.add(dBm(-30));
EXPECT_EQ(-30, to_dBm(d.avg()).val);
d.add(dBm(-30));
EXPECT_EQ(-30, to_dBm(d.avg()).val);
d.add(dBm(-20));
EXPECT_EQ(-24, to_dBm(d.avg()).val);
d.add(dBm(-20));
EXPECT_EQ(-22, to_dBm(d.avg()).val);
d.reset();
EXPECT_EQ(0u, d.avg().val);
d.add(dBm(-30));
EXPECT_EQ(-30, to_dBm(d.avg()).val);
}
} // namespace
} // namespace wlan