Home | History | Annotate | Download | only in tests
      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.
      4 
      5 #ifndef PAPPI_TESTS_TEST_FILE_IO_H_
      6 #define PAPPI_TESTS_TEST_FILE_IO_H_
      7 
      8 #include <string>
      9 
     10 #include "ppapi/tests/test_case.h"
     11 
     12 namespace pp {
     13 class FileIO;
     14 class FileSystem;
     15 }  // namespace pp
     16 
     17 class TestFileIO : public TestCase {
     18  public:
     19   explicit TestFileIO(TestingInstance* instance) : TestCase(instance) {}
     20 
     21   // TestCase implementation.
     22   virtual bool Init();
     23   virtual void RunTests(const std::string& filter);
     24 
     25  private:
     26   enum OpenExpectation {
     27     CREATE_IF_DOESNT_EXIST = 1 << 0,
     28     DONT_CREATE_IF_DOESNT_EXIST = 1 << 1,
     29     OPEN_IF_EXISTS = 1 << 2,
     30     DONT_OPEN_IF_EXISTS = 1 << 3,
     31     TRUNCATE_IF_EXISTS = 1 << 4,
     32     DONT_TRUNCATE_IF_EXISTS = 1 << 5,
     33     // All values above are defined in pairs: <some_expectation> and
     34     // DONT_<some_expectation>.
     35     END_OF_OPEN_EXPECATION_PAIRS = DONT_TRUNCATE_IF_EXISTS,
     36 
     37     INVALID_FLAG_COMBINATION = 1 << 6,
     38   };
     39 
     40   std::string TestOpen();
     41   std::string TestOpenDirectory();
     42   std::string TestReadWriteSetLength();
     43   std::string TestReadToArrayWriteSetLength();
     44   std::string TestTouchQuery();
     45   std::string TestAbortCalls();
     46   std::string TestParallelReads();
     47   std::string TestParallelWrites();
     48   std::string TestNotAllowMixedReadWrite();
     49   std::string TestRequestOSFileHandle();
     50   std::string TestRequestOSFileHandleWithOpenExclusive();
     51   std::string TestMmap();
     52 
     53   // Helper method used by TestOpen().
     54   // |expectations| is a combination of OpenExpectation values. The followings
     55   // are considered as valid input:
     56   // 1) INVALID_FLAG_COMBINATION
     57   // 2) (DONT_)?CREATE_IF_DOESNT_EXIST | (DONT_)?OPEN_IF_EXISTS |
     58   //    (DONT_)?TRUNCATE_IF_EXISTS
     59   std::string MatchOpenExpectations(pp::FileSystem* file_system,
     60                                     size_t open_flags,
     61                                     size_t expectations);
     62 };
     63 
     64 #endif  // PAPPI_TESTS_TEST_FILE_IO_H_
     65