// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef LIBBRILLO_BRILLO_PROCESS_MOCK_H_
#define LIBBRILLO_BRILLO_PROCESS_MOCK_H_

#include <string>

#include <gmock/gmock.h>

#include "brillo/process.h"

namespace brillo {

class ProcessMock : public Process {
 public:
  ProcessMock() {}
  virtual ~ProcessMock() {}

  MOCK_METHOD1(AddArg, void(const std::string& arg));
  MOCK_METHOD1(RedirectOutput, void(const std::string& output_file));
  MOCK_METHOD2(RedirectUsingPipe, void(int child_fd, bool is_input));
  MOCK_METHOD2(BindFd, void(int parent_fd, int child_fd));
  MOCK_METHOD1(SetUid, void(uid_t));
  MOCK_METHOD1(SetGid, void(gid_t));
  MOCK_METHOD1(SetCapabilities, void(uint64_t capmask));
  MOCK_METHOD1(ApplySyscallFilter, void(const std::string& path));
  MOCK_METHOD0(EnterNewPidNamespace, void());
  MOCK_METHOD1(SetInheritParentSignalMask, void(bool));
  MOCK_METHOD1(SetPreExecCallback, void(const PreExecCallback&));
  MOCK_METHOD1(SetSearchPath, void(bool));
  MOCK_METHOD1(GetPipe, int(int child_fd));
  MOCK_METHOD0(Start, bool());
  MOCK_METHOD0(Wait, int());
  MOCK_METHOD0(Run, int());
  MOCK_METHOD0(pid, pid_t());
  MOCK_METHOD2(Kill, bool(int signal, int timeout));
  MOCK_METHOD1(Reset, void(pid_t));
  MOCK_METHOD1(ResetPidByFile, bool(const std::string& pid_file));
  MOCK_METHOD0(Release, pid_t());
  MOCK_METHOD1(SetCloseUnusedFileDescriptors, void(bool close_unused_fds));
};

}  // namespace brillo

#endif  // LIBBRILLO_BRILLO_PROCESS_MOCK_H_