1 // Copyright (c) 2011 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 "base/message_pump_libevent.h"
9 #include "base/message_loop.h"
10 #include "base/threading/thread.h"
11 #include "testing/gtest/include/gtest/gtest.h"
15 class MessagePumpLibeventTest
: public testing::Test
{
17 MessagePumpLibeventTest()
18 : ui_loop_(MessageLoop::TYPE_UI
),
19 io_thread_("MessagePumpLibeventTestIOThread") {}
20 virtual ~MessagePumpLibeventTest() {}
22 virtual void SetUp() {
23 base::Thread::Options
options(MessageLoop::TYPE_IO
, 0);
24 ASSERT_TRUE(io_thread_
.StartWithOptions(options
));
25 ASSERT_EQ(MessageLoop::TYPE_IO
, io_thread_
.message_loop()->type());
28 MessageLoop
* ui_loop() { return &ui_loop_
; }
29 MessageLoopForIO
* io_loop() const {
30 return static_cast<MessageLoopForIO
*>(io_thread_
.message_loop());
35 base::Thread io_thread_
;
36 DISALLOW_COPY_AND_ASSIGN(MessagePumpLibeventTest
);
39 // Concrete implementation of base::MessagePumpLibevent::Watcher that does
41 class StupidWatcher
: public base::MessagePumpLibevent::Watcher
{
43 virtual ~StupidWatcher() {}
45 // base:MessagePumpLibevent::Watcher interface
46 virtual void OnFileCanReadWithoutBlocking(int fd
) {}
47 virtual void OnFileCanWriteWithoutBlocking(int fd
) {}
52 #if GTEST_HAS_DEATH_TEST
54 // Test to make sure that we catch calling WatchFileDescriptor off of the
56 TEST_F(MessagePumpLibeventTest
, TestWatchingFromBadThread
) {
57 base::MessagePumpLibevent::FileDescriptorWatcher watcher
;
58 StupidWatcher delegate
;
60 ASSERT_DEBUG_DEATH(io_loop()->WatchFileDescriptor(
61 STDOUT_FILENO
, false, MessageLoopForIO::WATCH_READ
, &watcher
, &delegate
),
63 "watch_file_descriptor_caller_checker_.CalledOnValidThread()");
66 #endif // GTEST_HAS_DEATH_TEST