blob: a2291dfdce8503f3edf34c3aeb289fd7cb9213b6 [file] [log] [blame]
Evan Shrubsoleaa6fbc12020-02-25 16:26:01 +01001/*
2 * Copyright 2020 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
Henrik Boströme2e8c172020-06-03 09:24:06 +020011#include "api/adaptation/resource.h"
Evan Shrubsoleaa6fbc12020-02-25 16:26:01 +010012
Henrik Boström381d1092020-05-12 18:49:07 +020013#include <memory>
14
Henrik Boströmc55516d2020-05-11 16:29:22 +020015#include "api/scoped_refptr.h"
Evan Shrubsoleaa6fbc12020-02-25 16:26:01 +010016#include "call/adaptation/test/fake_resource.h"
Henrik Boström29444c62020-07-01 15:48:46 +020017#include "call/adaptation/test/mock_resource_listener.h"
Evan Shrubsoleaa6fbc12020-02-25 16:26:01 +010018#include "test/gmock.h"
19#include "test/gtest.h"
20
21namespace webrtc {
22
23using ::testing::_;
24using ::testing::StrictMock;
25
Henrik Boström381d1092020-05-12 18:49:07 +020026class ResourceTest : public ::testing::Test {
27 public:
Henrik Boström0f0aa9c2020-06-02 13:02:36 +020028 ResourceTest() : fake_resource_(FakeResource::Create("FakeResource")) {}
Henrik Boström381d1092020-05-12 18:49:07 +020029
30 protected:
Henrik Boström381d1092020-05-12 18:49:07 +020031 rtc::scoped_refptr<FakeResource> fake_resource_;
32};
33
34TEST_F(ResourceTest, RegisteringListenerReceivesCallbacks) {
Henrik Boström0f0aa9c2020-06-02 13:02:36 +020035 StrictMock<MockResourceListener> resource_listener;
36 fake_resource_->SetResourceListener(&resource_listener);
Henrik Boström39ab1b52020-06-03 09:21:34 +020037 EXPECT_CALL(resource_listener, OnResourceUsageStateMeasured(_, _))
Henrik Boström0f0aa9c2020-06-02 13:02:36 +020038 .Times(1)
Henrik Boström39ab1b52020-06-03 09:21:34 +020039 .WillOnce([](rtc::scoped_refptr<Resource> resource,
40 ResourceUsageState usage_state) {
41 EXPECT_EQ(ResourceUsageState::kOveruse, usage_state);
Henrik Boström0f0aa9c2020-06-02 13:02:36 +020042 });
43 fake_resource_->SetUsageState(ResourceUsageState::kOveruse);
44 fake_resource_->SetResourceListener(nullptr);
Evan Shrubsoleaa6fbc12020-02-25 16:26:01 +010045}
46
Henrik Boström381d1092020-05-12 18:49:07 +020047TEST_F(ResourceTest, UnregisteringListenerStopsCallbacks) {
Henrik Boström0f0aa9c2020-06-02 13:02:36 +020048 StrictMock<MockResourceListener> resource_listener;
49 fake_resource_->SetResourceListener(&resource_listener);
50 fake_resource_->SetResourceListener(nullptr);
Henrik Boström39ab1b52020-06-03 09:21:34 +020051 EXPECT_CALL(resource_listener, OnResourceUsageStateMeasured(_, _)).Times(0);
Henrik Boström0f0aa9c2020-06-02 13:02:36 +020052 fake_resource_->SetUsageState(ResourceUsageState::kOveruse);
Evan Shrubsoleaa6fbc12020-02-25 16:26:01 +010053}
54
55} // namespace webrtc