15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// found in the LICENSE file.
4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef TESTS_NACL_IO_TEST_MOCK_NODE_H_
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define TESTS_NACL_IO_TEST_MOCK_NODE_H_
7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "gmock/gmock.h"
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "nacl_io/filesystem.h"
114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "nacl_io/kernel_handle.h"
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class MockNode : public nacl_io::Node {
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public:
15ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  typedef nacl_io::Error Error;
164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  typedef nacl_io::HandleAttr HandleAttr;
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  typedef nacl_io::ScopedNode ScopedNode;
18ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  explicit MockNode(nacl_io::Filesystem*);
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual ~MockNode();
21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD1(Init, Error(int));
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD0(Destroy, void());
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD0(FSync, Error());
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD1(FTruncate, Error(off_t));
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD4(GetDents, Error(size_t, struct dirent*, size_t, int*));
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD1(GetStat, Error(struct stat*));
284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD2(Ioctl, Error(int, va_list));
294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD4(Read, Error(const HandleAttr&, void*, size_t, int*));
304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD4(Write, Error(const HandleAttr&, const void*, size_t, int*));
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD6(MMap, Error(void*, size_t, int, int, size_t, void**));
32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD0(GetLinks, int());
33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD0(GetMode, int());
34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD0(GetType, int());
35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  MOCK_METHOD1(GetSize, Error(off_t*));
36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD0(IsaDir, bool());
37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD0(IsaFile, bool());
38effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  MOCK_METHOD0(Isatty, Error());
39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD0(ChildCount, int());
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  MOCK_METHOD2(AddChild, Error(const std::string&, const ScopedNode&));
41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD1(RemoveChild, Error(const std::string&));
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  MOCK_METHOD2(FindChild, Error(const std::string&, ScopedNode*));
43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD0(Link, void());
44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  MOCK_METHOD0(Unlink, void());
45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch};
46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif  // TESTS_NACL_IO_TEST_MOCK_NODE_H_
48