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