resource_unittest.cc (1843B)
1 /* 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 11 #include "api/adaptation/resource.h" 12 13 14 #include "api/scoped_refptr.h" 15 #include "call/adaptation/test/fake_resource.h" 16 #include "call/adaptation/test/mock_resource_listener.h" 17 #include "test/gmock.h" 18 #include "test/gtest.h" 19 20 namespace webrtc { 21 22 using ::testing::_; 23 using ::testing::StrictMock; 24 25 class ResourceTest : public ::testing::Test { 26 public: 27 ResourceTest() : fake_resource_(FakeResource::Create("FakeResource")) {} 28 29 protected: 30 scoped_refptr<FakeResource> fake_resource_; 31 }; 32 33 TEST_F(ResourceTest, RegisteringListenerReceivesCallbacks) { 34 StrictMock<MockResourceListener> resource_listener; 35 fake_resource_->SetResourceListener(&resource_listener); 36 EXPECT_CALL(resource_listener, OnResourceUsageStateMeasured(_, _)) 37 .Times(1) 38 .WillOnce([](scoped_refptr<Resource> /* resource */, 39 ResourceUsageState usage_state) { 40 EXPECT_EQ(ResourceUsageState::kOveruse, usage_state); 41 }); 42 fake_resource_->SetUsageState(ResourceUsageState::kOveruse); 43 fake_resource_->SetResourceListener(nullptr); 44 } 45 46 TEST_F(ResourceTest, UnregisteringListenerStopsCallbacks) { 47 StrictMock<MockResourceListener> resource_listener; 48 fake_resource_->SetResourceListener(&resource_listener); 49 fake_resource_->SetResourceListener(nullptr); 50 EXPECT_CALL(resource_listener, OnResourceUsageStateMeasured(_, _)).Times(0); 51 fake_resource_->SetUsageState(ResourceUsageState::kOveruse); 52 } 53 54 } // namespace webrtc