OLD | NEW |
1 #include <AdblockPlus.h> | 1 #include <AdblockPlus.h> |
2 #include <gtest/gtest.h> | 2 #include <gtest/gtest.h> |
3 | 3 |
4 #include "../src/Thread.h" | 4 #include "../src/Thread.h" |
5 #include "../src/Utils.h" | 5 #include "../src/Utils.h" |
6 | 6 |
7 namespace | 7 namespace |
8 { | 8 { |
9 class MockFileSystem : public AdblockPlus::FileSystem | 9 class MockFileSystem : public AdblockPlus::FileSystem |
10 { | 10 { |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 statPath = path; | 66 statPath = path; |
67 StatResult result; | 67 StatResult result; |
68 result.exists = statExists; | 68 result.exists = statExists; |
69 result.isDirectory = statIsDirectory; | 69 result.isDirectory = statIsDirectory; |
70 result.isFile = statIsFile; | 70 result.isFile = statIsFile; |
71 result.lastModified = statLastModified; | 71 result.lastModified = statLastModified; |
72 return result; | 72 return result; |
73 } | 73 } |
74 }; | 74 }; |
75 | 75 |
76 void ReadFile(AdblockPlus::JsEngine& jsEngine, std::string& content, | 76 void ReadFile(AdblockPlus::JsEnginePtr jsEngine, std::string& content, |
77 std::string& error) | 77 std::string& error) |
78 { | 78 { |
79 jsEngine.Evaluate("_fileSystem.read('', function(r) {result = r})"); | 79 jsEngine->Evaluate("_fileSystem.read('', function(r) {result = r})"); |
80 AdblockPlus::Sleep(50); | 80 AdblockPlus::Sleep(50); |
81 content = jsEngine.Evaluate("result.content")->AsString(); | 81 content = jsEngine->Evaluate("result.content")->AsString(); |
82 error = jsEngine.Evaluate("result.error")->AsString(); | 82 error = jsEngine->Evaluate("result.error")->AsString(); |
83 } | 83 } |
84 } | 84 } |
85 | 85 |
86 TEST(FileSystemJsObjectTest, Read) | 86 TEST(FileSystemJsObjectTest, Read) |
87 { | 87 { |
88 AdblockPlus::JsEngine jsEngine; | 88 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
89 MockFileSystem* fileSystem = new MockFileSystem(); | 89 MockFileSystem* fileSystem = new MockFileSystem(); |
90 fileSystem->contentToRead = "foo"; | 90 fileSystem->contentToRead = "foo"; |
91 jsEngine.SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; | 91 jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; |
92 std::string content; | 92 std::string content; |
93 std::string error; | 93 std::string error; |
94 ReadFile(jsEngine, content, error); | 94 ReadFile(jsEngine, content, error); |
95 ASSERT_EQ("foo", content); | 95 ASSERT_EQ("foo", content); |
96 ASSERT_EQ("", error); | 96 ASSERT_EQ("", error); |
97 } | 97 } |
98 | 98 |
99 TEST(FileSystemJsObjectTest, ReadIllegalArguments) | 99 TEST(FileSystemJsObjectTest, ReadIllegalArguments) |
100 { | 100 { |
101 AdblockPlus::JsEngine jsEngine; | 101 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
102 ASSERT_ANY_THROW(jsEngine.Evaluate("_fileSystem.read()")); | 102 ASSERT_ANY_THROW(jsEngine->Evaluate("_fileSystem.read()")); |
103 ASSERT_ANY_THROW(jsEngine.Evaluate("_fileSystem.read('', '')")); | 103 ASSERT_ANY_THROW(jsEngine->Evaluate("_fileSystem.read('', '')")); |
104 } | 104 } |
105 | 105 |
106 TEST(FileSystemJsObjectTest, ReadError) | 106 TEST(FileSystemJsObjectTest, ReadError) |
107 { | 107 { |
108 AdblockPlus::JsEngine jsEngine; | 108 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
109 MockFileSystem* fileSystem = new MockFileSystem(); | 109 MockFileSystem* fileSystem = new MockFileSystem(); |
110 fileSystem->success = false; | 110 fileSystem->success = false; |
111 jsEngine.SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; | 111 jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; |
112 std::string content; | 112 std::string content; |
113 std::string error; | 113 std::string error; |
114 ReadFile(jsEngine, content, error); | 114 ReadFile(jsEngine, content, error); |
115 ASSERT_NE("", error); | 115 ASSERT_NE("", error); |
116 ASSERT_EQ("", content); | 116 ASSERT_EQ("", content); |
117 } | 117 } |
118 | 118 |
119 TEST(FileSystemJsObjectTest, Write) | 119 TEST(FileSystemJsObjectTest, Write) |
120 { | 120 { |
121 AdblockPlus::JsEngine jsEngine; | 121 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
122 MockFileSystem* fileSystem = new MockFileSystem(); | 122 MockFileSystem* fileSystem = new MockFileSystem(); |
123 jsEngine.SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; | 123 jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; |
124 jsEngine.Evaluate("_fileSystem.write('foo', 'bar', function(e) {error = e})"); | 124 jsEngine->Evaluate("_fileSystem.write('foo', 'bar', function(e) {error = e})")
; |
125 AdblockPlus::Sleep(50); | 125 AdblockPlus::Sleep(50); |
126 ASSERT_EQ("foo", fileSystem->lastWrittenPath); | 126 ASSERT_EQ("foo", fileSystem->lastWrittenPath); |
127 ASSERT_EQ("bar", fileSystem->lastWrittenContent); | 127 ASSERT_EQ("bar", fileSystem->lastWrittenContent); |
128 ASSERT_EQ("", jsEngine.Evaluate("error")->AsString()); | 128 ASSERT_EQ("", jsEngine->Evaluate("error")->AsString()); |
129 } | 129 } |
130 | 130 |
131 TEST(FileSystemJsObjectTest, WriteIllegalArguments) | 131 TEST(FileSystemJsObjectTest, WriteIllegalArguments) |
132 { | 132 { |
133 AdblockPlus::JsEngine jsEngine; | 133 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
134 ASSERT_ANY_THROW(jsEngine.Evaluate("_fileSystem.write()")); | 134 ASSERT_ANY_THROW(jsEngine->Evaluate("_fileSystem.write()")); |
135 ASSERT_ANY_THROW(jsEngine.Evaluate("_fileSystem.write('', '', '')")); | 135 ASSERT_ANY_THROW(jsEngine->Evaluate("_fileSystem.write('', '', '')")); |
136 } | 136 } |
137 | 137 |
138 TEST(FileSystemJsObjectTest, WriteError) | 138 TEST(FileSystemJsObjectTest, WriteError) |
139 { | 139 { |
140 AdblockPlus::JsEngine jsEngine; | 140 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
141 MockFileSystem* fileSystem = new MockFileSystem(); | 141 MockFileSystem* fileSystem = new MockFileSystem(); |
142 fileSystem->success = false; | 142 fileSystem->success = false; |
143 jsEngine.SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; | 143 jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; |
144 jsEngine.Evaluate("_fileSystem.write('foo', 'bar', function(e) {error = e})"); | 144 jsEngine->Evaluate("_fileSystem.write('foo', 'bar', function(e) {error = e})")
; |
145 AdblockPlus::Sleep(50); | 145 AdblockPlus::Sleep(50); |
146 ASSERT_NE("", jsEngine.Evaluate("error")->AsString()); | 146 ASSERT_NE("", jsEngine->Evaluate("error")->AsString()); |
147 } | 147 } |
148 | 148 |
149 TEST(FileSystemJsObjectTest, Move) | 149 TEST(FileSystemJsObjectTest, Move) |
150 { | 150 { |
151 AdblockPlus::JsEngine jsEngine; | 151 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
152 MockFileSystem* fileSystem = new MockFileSystem(); | 152 MockFileSystem* fileSystem = new MockFileSystem(); |
153 jsEngine.SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; | 153 jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; |
154 jsEngine.Evaluate("_fileSystem.move('foo', 'bar', function(e) {error = e})"); | 154 jsEngine->Evaluate("_fileSystem.move('foo', 'bar', function(e) {error = e})"); |
155 AdblockPlus::Sleep(50); | 155 AdblockPlus::Sleep(50); |
156 ASSERT_EQ("foo", fileSystem->movedFrom); | 156 ASSERT_EQ("foo", fileSystem->movedFrom); |
157 ASSERT_EQ("bar", fileSystem->movedTo); | 157 ASSERT_EQ("bar", fileSystem->movedTo); |
158 ASSERT_EQ("", jsEngine.Evaluate("error")->AsString()); | 158 ASSERT_EQ("", jsEngine->Evaluate("error")->AsString()); |
159 } | 159 } |
160 | 160 |
161 TEST(FileSystemJsObjectTest, MoveIllegalArguments) | 161 TEST(FileSystemJsObjectTest, MoveIllegalArguments) |
162 { | 162 { |
163 AdblockPlus::JsEngine jsEngine; | 163 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
164 ASSERT_ANY_THROW(jsEngine.Evaluate("_fileSystem.move()")); | 164 ASSERT_ANY_THROW(jsEngine->Evaluate("_fileSystem.move()")); |
165 ASSERT_ANY_THROW(jsEngine.Evaluate("_fileSystem.move('', '', '')")); | 165 ASSERT_ANY_THROW(jsEngine->Evaluate("_fileSystem.move('', '', '')")); |
166 } | 166 } |
167 | 167 |
168 TEST(FileSystemJsObjectTest, MoveError) | 168 TEST(FileSystemJsObjectTest, MoveError) |
169 { | 169 { |
170 AdblockPlus::JsEngine jsEngine; | 170 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
171 MockFileSystem* fileSystem = new MockFileSystem(); | 171 MockFileSystem* fileSystem = new MockFileSystem(); |
172 fileSystem->success = false; | 172 fileSystem->success = false; |
173 jsEngine.SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; | 173 jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; |
174 jsEngine.Evaluate("_fileSystem.move('foo', 'bar', function(e) {error = e})"); | 174 jsEngine->Evaluate("_fileSystem.move('foo', 'bar', function(e) {error = e})"); |
175 AdblockPlus::Sleep(50); | 175 AdblockPlus::Sleep(50); |
176 ASSERT_NE("", jsEngine.Evaluate("error")->AsString()); | 176 ASSERT_NE("", jsEngine->Evaluate("error")->AsString()); |
177 } | 177 } |
178 | 178 |
179 TEST(FileSystemJsObjectTest, Remove) | 179 TEST(FileSystemJsObjectTest, Remove) |
180 { | 180 { |
181 AdblockPlus::JsEngine jsEngine; | 181 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
182 MockFileSystem* fileSystem = new MockFileSystem(); | 182 MockFileSystem* fileSystem = new MockFileSystem(); |
183 jsEngine.SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; | 183 jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; |
184 jsEngine.Evaluate("_fileSystem.remove('foo', function(e) {error = e})"); | 184 jsEngine->Evaluate("_fileSystem.remove('foo', function(e) {error = e})"); |
185 AdblockPlus::Sleep(50); | 185 AdblockPlus::Sleep(50); |
186 ASSERT_EQ("foo", fileSystem->removedPath); | 186 ASSERT_EQ("foo", fileSystem->removedPath); |
187 ASSERT_EQ("", jsEngine.Evaluate("error")->AsString()); | 187 ASSERT_EQ("", jsEngine->Evaluate("error")->AsString()); |
188 } | 188 } |
189 | 189 |
190 TEST(FileSystemJsObjectTest, RemoveIllegalArguments) | 190 TEST(FileSystemJsObjectTest, RemoveIllegalArguments) |
191 { | 191 { |
192 AdblockPlus::JsEngine jsEngine; | 192 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
193 ASSERT_ANY_THROW(jsEngine.Evaluate("_fileSystem.remove()")); | 193 ASSERT_ANY_THROW(jsEngine->Evaluate("_fileSystem.remove()")); |
194 ASSERT_ANY_THROW(jsEngine.Evaluate("_fileSystem.remove('', '')")); | 194 ASSERT_ANY_THROW(jsEngine->Evaluate("_fileSystem.remove('', '')")); |
195 } | 195 } |
196 | 196 |
197 TEST(FileSystemJsObjectTest, RemoveError) | 197 TEST(FileSystemJsObjectTest, RemoveError) |
198 { | 198 { |
199 AdblockPlus::JsEngine jsEngine; | 199 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
200 MockFileSystem* fileSystem = new MockFileSystem(); | 200 MockFileSystem* fileSystem = new MockFileSystem(); |
201 fileSystem->success = false; | 201 fileSystem->success = false; |
202 jsEngine.SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; | 202 jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; |
203 jsEngine.Evaluate("_fileSystem.remove('foo', function(e) {error = e})"); | 203 jsEngine->Evaluate("_fileSystem.remove('foo', function(e) {error = e})"); |
204 AdblockPlus::Sleep(50); | 204 AdblockPlus::Sleep(50); |
205 ASSERT_NE("", jsEngine.Evaluate("error")->AsString()); | 205 ASSERT_NE("", jsEngine->Evaluate("error")->AsString()); |
206 } | 206 } |
207 | 207 |
208 TEST(FileSystemJsObjectTest, Stat) | 208 TEST(FileSystemJsObjectTest, Stat) |
209 { | 209 { |
210 AdblockPlus::JsEngine jsEngine; | 210 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
211 MockFileSystem* fileSystem = new MockFileSystem(); | 211 MockFileSystem* fileSystem = new MockFileSystem(); |
212 fileSystem->statExists = true; | 212 fileSystem->statExists = true; |
213 fileSystem->statIsDirectory= false; | 213 fileSystem->statIsDirectory= false; |
214 fileSystem->statIsFile = true; | 214 fileSystem->statIsFile = true; |
215 fileSystem->statLastModified = 1337; | 215 fileSystem->statLastModified = 1337; |
216 jsEngine.SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; | 216 jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; |
217 jsEngine.Evaluate("_fileSystem.stat('foo', function(r) {result = r})"); | 217 jsEngine->Evaluate("_fileSystem.stat('foo', function(r) {result = r})"); |
218 AdblockPlus::Sleep(50); | 218 AdblockPlus::Sleep(50); |
219 ASSERT_EQ("foo", fileSystem->statPath); | 219 ASSERT_EQ("foo", fileSystem->statPath); |
220 ASSERT_EQ("", jsEngine.Evaluate("result.error")->AsString()); | 220 ASSERT_EQ("", jsEngine->Evaluate("result.error")->AsString()); |
221 ASSERT_TRUE(jsEngine.Evaluate("result.exists")->AsBool()); | 221 ASSERT_TRUE(jsEngine->Evaluate("result.exists")->AsBool()); |
222 ASSERT_FALSE(jsEngine.Evaluate("result.isDirectory")->AsBool()); | 222 ASSERT_FALSE(jsEngine->Evaluate("result.isDirectory")->AsBool()); |
223 ASSERT_TRUE(jsEngine.Evaluate("result.isFile")->AsBool()); | 223 ASSERT_TRUE(jsEngine->Evaluate("result.isFile")->AsBool()); |
224 ASSERT_EQ(1337, jsEngine.Evaluate("result.lastModified")->AsInt()); | 224 ASSERT_EQ(1337, jsEngine->Evaluate("result.lastModified")->AsInt()); |
225 } | 225 } |
226 | 226 |
227 TEST(FileSystemJsObjectTest, StatIllegalArguments) | 227 TEST(FileSystemJsObjectTest, StatIllegalArguments) |
228 { | 228 { |
229 AdblockPlus::JsEngine jsEngine; | 229 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
230 ASSERT_ANY_THROW(jsEngine.Evaluate("_fileSystem.stat()")); | 230 ASSERT_ANY_THROW(jsEngine->Evaluate("_fileSystem.stat()")); |
231 ASSERT_ANY_THROW(jsEngine.Evaluate("_fileSystem.stat('', '')")); | 231 ASSERT_ANY_THROW(jsEngine->Evaluate("_fileSystem.stat('', '')")); |
232 } | 232 } |
233 | 233 |
234 TEST(FileSystemJsObjectTest, StatError) | 234 TEST(FileSystemJsObjectTest, StatError) |
235 { | 235 { |
236 AdblockPlus::JsEngine jsEngine; | 236 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
237 MockFileSystem* fileSystem = new MockFileSystem(); | 237 MockFileSystem* fileSystem = new MockFileSystem(); |
238 fileSystem->success = false; | 238 fileSystem->success = false; |
239 jsEngine.SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; | 239 jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr(fileSystem));; |
240 jsEngine.Evaluate("_fileSystem.stat('foo', function(r) {result = r})"); | 240 jsEngine->Evaluate("_fileSystem.stat('foo', function(r) {result = r})"); |
241 AdblockPlus::Sleep(50); | 241 AdblockPlus::Sleep(50); |
242 ASSERT_NE("", jsEngine.Evaluate("result.error")->AsString()); | 242 ASSERT_NE("", jsEngine->Evaluate("result.error")->AsString()); |
243 } | 243 } |
OLD | NEW |