| Index: test/FileSystemJsObject.cpp |
| =================================================================== |
| --- a/test/FileSystemJsObject.cpp |
| +++ b/test/FileSystemJsObject.cpp |
| @@ -16,17 +16,17 @@ |
| */ |
| #include <sstream> |
| #include "BaseJsTest.h" |
| #include "../src/Thread.h" |
| namespace |
| { |
| - class MockFileSystem : public AdblockPlus::FileSystem |
| + class MockFileSystem : public AdblockPlus::IFileSystem |
| { |
| public: |
| bool success; |
| std::string contentToRead; |
| std::string lastWrittenPath; |
| std::string lastWrittenContent; |
| std::string movedFrom; |
| std::string movedTo; |
| @@ -36,63 +36,84 @@ |
| bool statIsDirectory; |
| bool statIsFile; |
| int statLastModified; |
| MockFileSystem() : success(true) |
| { |
| } |
| - std::shared_ptr<std::istream> Read(const std::string& path) const |
| + void Read(const std::string& path, const ReadCallback& callback) const |
| { |
| if (!success) |
| - throw std::runtime_error("Unable to read " + path); |
| - std::stringstream* const stream = new std::stringstream; |
| - *stream << contentToRead; |
| - return std::shared_ptr<std::istream>(stream); |
| + { |
| + callback(std::move(std::string()), |
|
sergei
2017/06/16 15:05:56
std::move is not necessary here
hub
2017/06/16 21:52:55
Done.
|
| + std::string("Unable to read " + path)); |
|
sergei
2017/06/16 15:05:56
Actually, here and below one can simply pass "some
hub
2017/06/16 21:52:56
Done.
|
| + return; |
| + } |
| + callback(std::move(std::string(contentToRead)), ""); |
|
sergei
2017/06/16 15:05:56
std::move is not necessary here
hub
2017/06/16 21:52:55
Done.
|
| } |
| - void Write(const std::string& path, std::istream& data) |
| + void Write(const std::string& path, std::shared_ptr<std::istream> data, |
| + const Callback& callback) |
| { |
| if (!success) |
| - throw std::runtime_error("Unable to write to " + path); |
| + { |
| + callback(std::string("Unable to write to " + path)); |
| + return; |
| + } |
| lastWrittenPath = path; |
| std::stringstream content; |
| - content << data.rdbuf(); |
| + content << data->rdbuf(); |
| lastWrittenContent = content.str(); |
| + callback(""); |
| } |
| - void Move(const std::string& fromPath, const std::string& toPath) |
| + void Move(const std::string& fromPath, const std::string& toPath, |
| + const Callback& callback) |
| { |
| if (!success) |
| - throw std::runtime_error("Unable to move " + fromPath + " to " |
| - + toPath); |
| + { |
| + callback(std::string("Unable to move " + fromPath + " to " |
| + + toPath)); |
| + return; |
| + } |
| movedFrom = fromPath; |
| movedTo = toPath; |
| + callback(""); |
| } |
| - void Remove(const std::string& path) |
| + void Remove(const std::string& path, const Callback& callback) |
| { |
| if (!success) |
| - throw std::runtime_error("Unable to remove " + path); |
| + { |
| + callback(std::string("Unable to remove " + path)); |
| + return; |
| + } |
| removedPath = path; |
| + callback(""); |
| } |
| - StatResult Stat(const std::string& path) const |
| + void Stat(const std::string& path, |
| + const StatCallback& callback) const |
| { |
| - if (!success) |
| - throw std::runtime_error("Unable to stat " + path); |
| - statPath = path; |
| StatResult result; |
| - result.exists = statExists; |
| - result.isDirectory = statIsDirectory; |
| - result.isFile = statIsFile; |
| - result.lastModified = statLastModified; |
| - return result; |
| + std::string error; |
| + if (!success) |
| + error = std::string("Unable to stat " + path); |
| + else |
| + { |
| + statPath = path; |
| + result.exists = statExists; |
| + result.isDirectory = statIsDirectory; |
| + result.isFile = statIsFile; |
| + result.lastModified = statLastModified; |
| + } |
| + callback(result, error); |
| } |
| std::string Resolve(const std::string& path) const |
| { |
| if (!success) |
| throw std::runtime_error("Unable to stat " + path); |
| return path; |
| } |
| @@ -111,19 +132,20 @@ |
| class FileSystemJsObjectTest : public BaseJsTest |
| { |
| protected: |
| MockFileSystemPtr mockFileSystem; |
| void SetUp() |
| { |
| - BaseJsTest::SetUp(); |
| mockFileSystem = MockFileSystemPtr(new MockFileSystem); |
| - jsEngine->SetFileSystem(mockFileSystem); |
| + JsEngineCreationParameters params; |
| + params.fileSystem = mockFileSystem; |
| + jsEngine = CreateJsEngine(std::move(params)); |
| } |
| }; |
| } |
| TEST_F(FileSystemJsObjectTest, Read) |
| { |
| mockFileSystem->contentToRead = "foo"; |
| std::string content; |