blob: 7a6eb6599de1fdb9b7ea609a5f83113baba30e0c [file] [log] [blame]
Åsa Perssonf3d828e2019-05-06 12:22:49 +02001/*
2 * Copyright 2019 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#include "rtc_base/experiments/balanced_degradation_settings.h"
12
13#include <limits>
14
15#include "rtc_base/gunit.h"
16#include "test/field_trial.h"
17#include "test/gmock.h"
18
19namespace webrtc {
20namespace {
21
22void VerifyIsDefault(
23 const std::vector<BalancedDegradationSettings::Config>& config) {
24 EXPECT_THAT(config, ::testing::ElementsAre(
25 BalancedDegradationSettings::Config{320 * 240, 7},
26 BalancedDegradationSettings::Config{480 * 270, 10},
27 BalancedDegradationSettings::Config{640 * 480, 15}));
28}
29} // namespace
30
31TEST(BalancedDegradationSettings, GetsDefaultConfigIfNoList) {
32 webrtc::test::ScopedFieldTrials field_trials("");
33 BalancedDegradationSettings settings;
34 VerifyIsDefault(settings.GetConfigs());
35}
36
37TEST(BalancedDegradationSettings, GetsConfig) {
38 webrtc::test::ScopedFieldTrials field_trials(
39 "WebRTC-Video-BalancedDegradationSettings/"
40 "pixels:1000|2000|3000,fps:5|15|25/");
41 BalancedDegradationSettings settings;
42 EXPECT_THAT(
43 settings.GetConfigs(),
44 ::testing::ElementsAre(BalancedDegradationSettings::Config{1000, 5},
45 BalancedDegradationSettings::Config{2000, 15},
46 BalancedDegradationSettings::Config{3000, 25}));
47}
48
49TEST(BalancedDegradationSettings, GetsDefaultConfigForZeroFpsValue) {
50 webrtc::test::ScopedFieldTrials field_trials(
51 "WebRTC-Video-BalancedDegradationSettings/"
52 "pixels:1000|2000|3000,fps:0|15|25/");
53 BalancedDegradationSettings settings;
54 VerifyIsDefault(settings.GetConfigs());
55}
56
57TEST(BalancedDegradationSettings, GetsDefaultConfigIfPixelsDecreases) {
58 webrtc::test::ScopedFieldTrials field_trials(
59 "WebRTC-Video-BalancedDegradationSettings/"
60 "pixels:1000|999|3000,fps:5|15|25/");
61 BalancedDegradationSettings settings;
62 VerifyIsDefault(settings.GetConfigs());
63}
64
65TEST(BalancedDegradationSettings, GetsDefaultConfigIfFramerateDecreases) {
66 webrtc::test::ScopedFieldTrials field_trials(
67 "WebRTC-Video-BalancedDegradationSettings/"
68 "pixels:1000|2000|3000,fps:5|4|25/");
69 BalancedDegradationSettings settings;
70 VerifyIsDefault(settings.GetConfigs());
71}
72
73TEST(BalancedDegradationSettings, GetsMinFps) {
74 webrtc::test::ScopedFieldTrials field_trials(
75 "WebRTC-Video-BalancedDegradationSettings/"
76 "pixels:1000|2000|3000,fps:5|15|25/");
77 BalancedDegradationSettings settings;
78 EXPECT_EQ(5, settings.MinFps(1));
79 EXPECT_EQ(5, settings.MinFps(1000));
80 EXPECT_EQ(15, settings.MinFps(1000 + 1));
81 EXPECT_EQ(15, settings.MinFps(2000));
82 EXPECT_EQ(25, settings.MinFps(2000 + 1));
83 EXPECT_EQ(25, settings.MinFps(3000));
84 EXPECT_EQ(std::numeric_limits<int>::max(), settings.MinFps(3000 + 1));
85}
86
87TEST(BalancedDegradationSettings, GetsMaxFps) {
88 webrtc::test::ScopedFieldTrials field_trials(
89 "WebRTC-Video-BalancedDegradationSettings/"
90 "pixels:1000|2000|3000,fps:5|15|25/");
91 BalancedDegradationSettings settings;
92 EXPECT_EQ(15, settings.MaxFps(1));
93 EXPECT_EQ(15, settings.MaxFps(1000));
94 EXPECT_EQ(25, settings.MaxFps(1000 + 1));
95 EXPECT_EQ(25, settings.MaxFps(2000));
96 EXPECT_EQ(std::numeric_limits<int>::max(), settings.MaxFps(2000 + 1));
97}
98
99} // namespace webrtc