webrtc/rtc_base/numerics/histogram_percentile_counter_unittest.cc
Karl Wiberg 65c392265f Move some more numeric utility code from rtc_base/ to rtc_base/numerics/
Specifically, I'm moving

  histogram_percentile_counter.h
  mathutils.h
  mod_ops.h
  moving_max_counter.h

They shouldn't be part of the API, and moving them to an appropriate
subdirectory of rtc_base/ is a good way to keep track of that.

BUG=webrtc:8445

Change-Id: I78a999984a27ef935be2d7c3136475d5f209adda
Reviewed-on: https://webrtc-review.googlesource.com/20870
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20832}
2017-11-22 12:39:39 +00:00

43 lines
1.5 KiB
C++

/*
* Copyright 2017 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "rtc_base/numerics/histogram_percentile_counter.h"
#include <utility>
#include <vector>
#include "test/gtest.h"
TEST(HistogramPercentileCounterTest, ReturnsCorrectPercentiles) {
rtc::HistogramPercentileCounter counter(10);
const std::vector<int> kTestValues = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
EXPECT_FALSE(counter.GetPercentile(0.5f));
// Pairs of {fraction, percentile value} computed by hand
// for |kTestValues|.
const std::vector<std::pair<float, uint32_t>> kTestPercentiles = {
{0.0f, 1}, {0.01f, 1}, {0.5f, 10}, {0.9f, 18},
{0.95f, 19}, {0.99f, 20}, {1.0f, 20}};
for (int value : kTestValues) {
counter.Add(value);
}
for (const auto& test_percentile : kTestPercentiles) {
EXPECT_EQ(test_percentile.second,
counter.GetPercentile(test_percentile.first).value_or(0));
}
}
TEST(HistogramPercentileCounterTest, HandlesEmptySequence) {
rtc::HistogramPercentileCounter counter(10);
EXPECT_FALSE(counter.GetPercentile(0.5f));
counter.Add(1u);
EXPECT_TRUE(counter.GetPercentile(0.5f));
}