1 // Copyright 2010-2018, Google Inc.
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are
6 // met:
7 //
8 //     * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 //     * Redistributions in binary form must reproduce the above
11 // copyright notice, this list of conditions and the following disclaimer
12 // in the documentation and/or other materials provided with the
13 // distribution.
14 //     * Neither the name of Google Inc. nor the names of its
15 // contributors may be used to endorse or promote products derived from
16 // this software without specific prior written permission.
17 //
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 
30 #ifdef OS_NACL
31 
32 #include "base/pepper_file_system_mock.h"
33 
34 #include "testing/base/public/gunit.h"
35 
36 namespace mozc {
37 
TEST(PepperFileSystemMockTest,ReadWriteDeleteBinaryFile)38 TEST(PepperFileSystemMockTest, ReadWriteDeleteBinaryFile) {
39   PepperFileSystemMock file_system;
40   const char *kFilename = "/test.dat";
41   const string kTestData1("1_foo\0bar\nbaz");
42   const string kTestData2("2_foo\0bar\nbaz");
43 
44   EXPECT_TRUE(file_system.DirectoryExists("/"));
45   EXPECT_FALSE(file_system.FileExists(kFilename));
46   EXPECT_FALSE(file_system.DirectoryExists(kFilename));
47 
48   string buffer;
49   EXPECT_FALSE(file_system.ReadBinaryFile(kFilename, &buffer));
50   EXPECT_FALSE(file_system.FileExists(kFilename));
51   EXPECT_FALSE(file_system.DirectoryExists(kFilename));
52 
53   EXPECT_TRUE(file_system.WriteBinaryFile(kFilename, kTestData1));
54   EXPECT_TRUE(file_system.ReadBinaryFile(kFilename, &buffer));
55   EXPECT_EQ(kTestData1, buffer);
56   EXPECT_TRUE(file_system.FileExists(kFilename));
57   EXPECT_FALSE(file_system.DirectoryExists(kFilename));
58 
59   EXPECT_TRUE(file_system.WriteBinaryFile(kFilename, kTestData2));
60   EXPECT_TRUE(file_system.ReadBinaryFile(kFilename, &buffer));
61   EXPECT_EQ(kTestData2, buffer);
62   EXPECT_TRUE(file_system.FileExists(kFilename));
63   EXPECT_FALSE(file_system.DirectoryExists(kFilename));
64 
65   EXPECT_TRUE(file_system.Delete(kFilename));
66   EXPECT_FALSE(file_system.ReadBinaryFile(kFilename, &buffer));
67   EXPECT_FALSE(file_system.FileExists(kFilename));
68   EXPECT_FALSE(file_system.DirectoryExists(kFilename));
69 }
70 
TEST(PepperFileSystemMockTest,DirectoryTest)71 TEST(PepperFileSystemMockTest, DirectoryTest) {
72   PepperFileSystemMock file_system;
73 
74   EXPECT_TRUE(file_system.DirectoryExists("/"));
75   EXPECT_FALSE(file_system.FileExists("/foo"));
76 
77   EXPECT_TRUE(file_system.CreateDirectory("/foo"));
78   EXPECT_TRUE(file_system.FileExists("/foo"));
79   EXPECT_TRUE(file_system.DirectoryExists("/foo"));
80   EXPECT_FALSE(file_system.CreateDirectory("/foo"));
81 
82   EXPECT_TRUE(file_system.WriteBinaryFile("/foo/bar.txt", "abc"));
83   EXPECT_TRUE(file_system.FileExists("/foo/bar.txt"));
84   EXPECT_FALSE(file_system.DirectoryExists("/foo/bar.txt"));
85   string buffer;
86   EXPECT_TRUE(file_system.ReadBinaryFile("/foo/bar.txt", &buffer));
87   EXPECT_EQ("abc", buffer);
88 
89   EXPECT_TRUE(file_system.WriteBinaryFile("/bar", ""));
90   EXPECT_FALSE(file_system.CreateDirectory("/bar"));
91   EXPECT_TRUE(file_system.FileExists("/bar"));
92   EXPECT_FALSE(file_system.DirectoryExists("/bar"));
93 
94   EXPECT_FALSE(file_system.CreateDirectory("/a/b"));
95   EXPECT_FALSE(file_system.FileExists("/a"));
96   EXPECT_FALSE(file_system.FileExists("/a/b"));
97 }
98 
TEST(PepperFileSystemMockTest,RenameTest)99 TEST(PepperFileSystemMockTest, RenameTest) {
100   PepperFileSystemMock file_system;
101 
102   EXPECT_TRUE(file_system.CreateDirectory("/foo"));
103   EXPECT_TRUE(file_system.CreateDirectory("/foo/bar"));
104   EXPECT_TRUE(file_system.CreateDirectory("/foo/baz"));
105   EXPECT_TRUE(file_system.CreateDirectory("/a"));
106 
107   EXPECT_FALSE(file_system.Rename("/aaa", "/bbb"));
108   EXPECT_TRUE(file_system.Rename("/a", "/a"));
109   EXPECT_FALSE(file_system.Rename("/foo", "/a"));
110 
111   EXPECT_TRUE(file_system.Rename("/foo", "/a/b"));
112   EXPECT_FALSE(file_system.DirectoryExists("/foo"));
113   EXPECT_FALSE(file_system.DirectoryExists("/foo/bar"));
114   EXPECT_FALSE(file_system.DirectoryExists("/foo/baz"));
115   EXPECT_TRUE(file_system.DirectoryExists("/a"));
116   EXPECT_TRUE(file_system.DirectoryExists("/a/b"));
117   EXPECT_TRUE(file_system.DirectoryExists("/a/b/bar"));
118   EXPECT_TRUE(file_system.DirectoryExists("/a/b/baz"));
119 }
120 
121 }  // namespace mozc
122 
123 #endif  // OS_NACL
124