1*3f982cf4SFabien Sanglard // Copyright 2020 The Chromium Authors. All rights reserved. 2*3f982cf4SFabien Sanglard // Use of this source code is governed by a BSD-style license that can be 3*3f982cf4SFabien Sanglard // found in the LICENSE file. 4*3f982cf4SFabien Sanglard 5*3f982cf4SFabien Sanglard #ifndef CAST_STREAMING_MOCK_ENVIRONMENT_H_ 6*3f982cf4SFabien Sanglard #define CAST_STREAMING_MOCK_ENVIRONMENT_H_ 7*3f982cf4SFabien Sanglard 8*3f982cf4SFabien Sanglard #include "cast/streaming/environment.h" 9*3f982cf4SFabien Sanglard #include "gmock/gmock.h" 10*3f982cf4SFabien Sanglard 11*3f982cf4SFabien Sanglard namespace openscreen { 12*3f982cf4SFabien Sanglard namespace cast { 13*3f982cf4SFabien Sanglard 14*3f982cf4SFabien Sanglard // An Environment that can intercept all packet sends, for unit testing. 15*3f982cf4SFabien Sanglard class MockEnvironment : public Environment { 16*3f982cf4SFabien Sanglard public: 17*3f982cf4SFabien Sanglard MockEnvironment(ClockNowFunctionPtr now_function, TaskRunner* task_runner); 18*3f982cf4SFabien Sanglard ~MockEnvironment() override; 19*3f982cf4SFabien Sanglard 20*3f982cf4SFabien Sanglard // Used to return fake values, to simulate a bound socket for testing. 21*3f982cf4SFabien Sanglard MOCK_METHOD(IPEndpoint, GetBoundLocalEndpoint, (), (const, override)); 22*3f982cf4SFabien Sanglard 23*3f982cf4SFabien Sanglard // Used for intercepting packet sends from the implementation under test. 24*3f982cf4SFabien Sanglard MOCK_METHOD(void, SendPacket, (absl::Span<const uint8_t> packet), (override)); 25*3f982cf4SFabien Sanglard }; 26*3f982cf4SFabien Sanglard 27*3f982cf4SFabien Sanglard } // namespace cast 28*3f982cf4SFabien Sanglard } // namespace openscreen 29*3f982cf4SFabien Sanglard 30*3f982cf4SFabien Sanglard #endif // CAST_STREAMING_MOCK_ENVIRONMENT_H_ 31