blob: 477d9a427f3746770d99c0c3b0e6a5a71fcf156f [file] [log] [blame]
Darin Petkov5a850472012-06-06 15:44:24 +02001// Copyright (c) 2012 The Chromium OS 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.
4
5#include "shill/process_killer.h"
6
7#include <base/bind.h>
8#include <gmock/gmock.h>
9#include <gtest/gtest.h>
10
11using base::Bind;
12using base::Closure;
13using base::Unretained;
14
15namespace shill {
16
17class ProcessKillerTest : public testing::Test {
18 public:
19 ProcessKillerTest() : process_killer_(ProcessKiller::GetInstance()) {}
20
21 protected:
22 class Target {
23 public:
24 virtual ~Target() {}
25
26 MOCK_METHOD0(Call, void());
27 };
28
29 ProcessKiller *process_killer_;
30};
31
32TEST_F(ProcessKillerTest, OnProcessDied) {
33 const int kPID = 123;
34 EXPECT_TRUE(process_killer_->callbacks_.empty());
35 // Expect no crash.
36 ProcessKiller::OnProcessDied(kPID, 0, process_killer_);
37 process_killer_->callbacks_[kPID] = Closure();
38 // Expect no crash.
39 ProcessKiller::OnProcessDied(kPID, 0, process_killer_);
40 EXPECT_TRUE(process_killer_->callbacks_.empty());
41 Target target;
42 EXPECT_CALL(target, Call());
43 process_killer_->callbacks_[kPID] = Bind(&Target::Call, Unretained(&target));
44 ProcessKiller::OnProcessDied(kPID, 0, process_killer_);
45 EXPECT_TRUE(process_killer_->callbacks_.empty());
46}
47
48} // namespace shill