Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: test/BaseJsTest.h

Issue 29449592: Issue 5183 - Provide async interface for FileSystem (Closed) Base URL: https://hg.adblockplus.org/libadblockplus/
Patch Set: Rebased on https://codereview.adblockplus.org/29481704 Created July 6, 2017, 10:40 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test/BaseJsTest.h
===================================================================
--- a/test/BaseJsTest.h
+++ b/test/BaseJsTest.h
@@ -13,16 +13,18 @@
*
* You should have received a copy of the GNU General Public License
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef MOCKS_H
#define MOCKS_H
+#include <thread>
+
#include <AdblockPlus.h>
#include <gtest/gtest.h>
#include "../src/Thread.h"
// Strictly speaking in each test there should be a special implementation of
// an interface, which is merely referenced by a wrapper and the latter should
// be injected into JsEngine or what ever. However the everthing a test often
// actually needs is the access to pending tasks. Therefore instantiation of
@@ -97,96 +99,165 @@
public:
void operator()(LogLevel logLevel, const std::string& message,
const std::string& source)
{
throw std::runtime_error("Unexpected error: " + message);
}
};
-class ThrowingFileSystem : public AdblockPlus::FileSystem
+class ThrowingFileSystem : public AdblockPlus::IFileSystem, public AdblockPlus::FileSystem
{
public:
- FileSystem::IOBuffer Read(const std::string& path) const
+ IOBuffer Read(const std::string& path) const
+ {
+ throw std::runtime_error("Not implemented");
+ }
+ void Read(const std::string& path,
+ const ReadCallback& callback) const
{
throw std::runtime_error("Not implemented");
}
- void Write(const std::string& path, const FileSystem::IOBuffer& content)
+ void Write(const std::string& path, const IOBuffer& content)
+ {
+ throw std::runtime_error("Not implemented");
+ }
+ void Write(const std::string& path, const IOBuffer& data,
+ const Callback& callback)
{
throw std::runtime_error("Not implemented");
}
void Move(const std::string& fromPath, const std::string& toPath)
{
throw std::runtime_error("Not implemented");
}
+ void Move(const std::string& fromPath, const std::string& toPath,
+ const Callback& callback)
+ {
+ throw std::runtime_error("Not implemented");
+ }
void Remove(const std::string& path)
{
throw std::runtime_error("Not implemented");
}
+ void Remove(const std::string& path, const Callback& callback)
+ {
+ throw std::runtime_error("Not implemented");
+ }
StatResult Stat(const std::string& path) const
{
throw std::runtime_error("Not implemented");
}
+ void Stat(const std::string& path,
+ const StatCallback& callback) const
+ {
+ throw std::runtime_error("Not implemented");
+ }
std::string Resolve(const std::string& path) const
{
throw std::runtime_error("Not implemented");
}
-
};
class ThrowingWebRequest : public AdblockPlus::IWebRequest
{
public:
void GET(const std::string& url, const AdblockPlus::HeaderList& requestHeaders, const GetCallback&) override
{
throw std::runtime_error("Unexpected GET: " + url);
}
};
-class LazyFileSystem : public AdblockPlus::FileSystem
+class LazyFileSystem : public AdblockPlus::IFileSystem, public AdblockPlus::FileSystem
{
public:
IOBuffer Read(const std::string& path) const
{
std::string dummyData("");
if (path == "patterns.ini")
dummyData = "# Adblock Plus preferences\n[Subscription]\nurl=~fl~";
else if (path == "prefs.json")
dummyData = "{}";
return IOBuffer(dummyData.cbegin(), dummyData.cend());
}
+ void Read(const std::string& path, const ReadCallback& callback) const
+ {
+ std::thread([this, path, callback]
+ {
+ auto data = Read(path);
+ callback(std::move(data), "");
+ }).detach();
+ }
+
void Write(const std::string& path, const IOBuffer& content)
{
}
+ void Write(const std::string& path, const IOBuffer& data,
+ const Callback& callback)
+ {
+ std::thread([this, path, data, callback]
+ {
+ Write(path, data);
+ callback("");
+ }).detach();
+ }
+
void Move(const std::string& fromPath, const std::string& toPath)
{
}
+ void Move(const std::string& fromPath, const std::string& toPath,
+ const Callback& callback)
+ {
+ std::thread([this, fromPath, toPath, callback]
+ {
+ Move(fromPath, toPath);
+ callback("");
+ }).detach();
+ }
+
void Remove(const std::string& path)
{
}
+ void Remove(const std::string& path, const Callback& callback)
+ {
+ std::thread([this, path, callback]
+ {
+ Remove(path);
+ callback("");
+ }).detach();
+ }
+
StatResult Stat(const std::string& path) const
{
StatResult result;
if (path == "patterns.ini")
{
result.exists = true;
result.isFile = true;
}
return result;
}
+ void Stat(const std::string& path, const StatCallback& callback) const
+ {
+ std::thread([this, path, callback]
+ {
+ callback(Stat(path), "");
+ }).detach();
+ }
+
std::string Resolve(const std::string& path) const
{
return path;
}
};
class NoopWebRequest : public AdblockPlus::IWebRequest
{
« src/DefaultFileSystem.cpp ('K') | « src/Utils.cpp ('k') | test/BaseJsTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld