// Copyright (c) 2011 The Chromium 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 PAPPI_TESTS_TEST_FILE_IO_H_
#define PAPPI_TESTS_TEST_FILE_IO_H_
#include <string>
#include "ppapi/tests/test_case.h"
namespace pp {
class FileIO;
class FileSystem;
} // namespace pp
class TestFileIO : public TestCase {
public:
explicit TestFileIO(TestingInstance* instance) : TestCase(instance) {}
// TestCase implementation.
virtual bool Init();
virtual void RunTests(const std::string& filter);
private:
enum OpenExpectation {
CREATE_IF_DOESNT_EXIST = 1 << 0,
DONT_CREATE_IF_DOESNT_EXIST = 1 << 1,
OPEN_IF_EXISTS = 1 << 2,
DONT_OPEN_IF_EXISTS = 1 << 3,
TRUNCATE_IF_EXISTS = 1 << 4,
DONT_TRUNCATE_IF_EXISTS = 1 << 5,
// All values above are defined in pairs: <some_expectation> and
// DONT_<some_expectation>.
END_OF_OPEN_EXPECATION_PAIRS = DONT_TRUNCATE_IF_EXISTS,
INVALID_FLAG_COMBINATION = 1 << 6,
};
std::string TestOpen();
std::string TestOpenDirectory();
std::string TestReadWriteSetLength();
std::string TestReadToArrayWriteSetLength();
std::string TestTouchQuery();
std::string TestAbortCalls();
std::string TestParallelReads();
std::string TestParallelWrites();
std::string TestNotAllowMixedReadWrite();
std::string TestRequestOSFileHandle();
std::string TestRequestOSFileHandleWithOpenExclusive();
std::string TestMmap();
// Helper method used by TestOpen().
// |expectations| is a combination of OpenExpectation values. The followings
// are considered as valid input:
// 1) INVALID_FLAG_COMBINATION
// 2) (DONT_)?CREATE_IF_DOESNT_EXIST | (DONT_)?OPEN_IF_EXISTS |
// (DONT_)?TRUNCATE_IF_EXISTS
std::string MatchOpenExpectations(pp::FileSystem* file_system,
size_t open_flags,
size_t expectations);
};
#endif // PAPPI_TESTS_TEST_FILE_IO_H_