1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include <gtest/gtest.h>
9 #include "base/bind_helpers.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "base/test/simple_test_tick_clock.h"
12 #include "media/cast/cast_config.h"
13 #include "media/cast/net/cast_transport_config.h"
14 #include "media/cast/net/cast_transport_sender_impl.h"
15 #include "media/cast/net/rtcp/rtcp.h"
16 #include "media/cast/test/fake_single_thread_task_runner.h"
17 #include "testing/gtest/include/gtest/gtest.h"
22 static const int64 kStartMillisecond = INT64_C(12345678900000);
24 class FakePacketSender : public PacketSender {
28 virtual bool SendPacket(PacketRef packet, const base::Closure& cb) OVERRIDE {
33 class CastTransportSenderImplTest : public ::testing::Test {
35 CastTransportSenderImplTest()
36 : num_times_callback_called_(0) {
37 testing_clock_.Advance(
38 base::TimeDelta::FromMilliseconds(kStartMillisecond));
39 task_runner_ = new test::FakeSingleThreadTaskRunner(&testing_clock_);
42 virtual ~CastTransportSenderImplTest() {}
44 void InitWithoutLogging() {
45 transport_sender_.reset(
46 new CastTransportSenderImpl(NULL,
49 base::Bind(&UpdateCastTransportStatus),
50 BulkRawEventsCallback(),
54 task_runner_->RunTasks();
57 void InitWithLogging() {
58 transport_sender_.reset(new CastTransportSenderImpl(
62 base::Bind(&UpdateCastTransportStatus),
63 base::Bind(&CastTransportSenderImplTest::LogRawEvents,
64 base::Unretained(this)),
65 base::TimeDelta::FromMilliseconds(10),
68 task_runner_->RunTasks();
71 void LogRawEvents(const std::vector<PacketEvent>& packet_events,
72 const std::vector<FrameEvent>& frame_events) {
73 num_times_callback_called_++;
76 static void UpdateCastTransportStatus(CastTransportStatus status) {
79 base::SimpleTestTickClock testing_clock_;
80 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_;
81 scoped_ptr<CastTransportSenderImpl> transport_sender_;
82 FakePacketSender transport_;
83 int num_times_callback_called_;
86 TEST_F(CastTransportSenderImplTest, InitWithoutLogging) {
88 task_runner_->Sleep(base::TimeDelta::FromMilliseconds(50));
89 EXPECT_EQ(0, num_times_callback_called_);
92 TEST_F(CastTransportSenderImplTest, InitWithLogging) {
94 task_runner_->Sleep(base::TimeDelta::FromMilliseconds(50));
95 EXPECT_EQ(5, num_times_callback_called_);