Index: test/JsEngine.cpp |
=================================================================== |
--- a/test/JsEngine.cpp |
+++ b/test/JsEngine.cpp |
@@ -3,13 +3,28 @@ |
#include <gtest/gtest.h> |
#include <sstream> |
-class ThrowingFileReader : public AdblockPlus::FileReader |
+class BaseFileSystem : public AdblockPlus::FileSystem |
{ |
-public: |
- std::auto_ptr<std::istream> Read(const std::string& path) const |
- { |
- throw std::runtime_error("Unexpected read of file: " + path); |
- } |
+ void Write(const std::string& path, |
+ std::tr1::shared_ptr<std::ostream> content) |
+ { |
+ throw std::runtime_error("Write is not implemented"); |
+ } |
+ |
+ void Move(const std::string& fromPath, const std::string& toPath) |
+ { |
+ throw std::runtime_error("Move is not implemented"); |
+ } |
+ |
+ void Remove(const std::string& path) |
+ { |
+ throw std::runtime_error("Remove is not implemented"); |
+ } |
+ |
+ StatResult Stat(const std::string& path) const |
+ { |
+ throw std::runtime_error("Stat is not implemented"); |
+ } |
}; |
class ThrowingErrorCallback : public AdblockPlus::ErrorCallback |
@@ -21,33 +36,38 @@ |
} |
}; |
-class StubFileReader : public AdblockPlus::FileReader |
+class StubFileSystem : public BaseFileSystem |
{ |
public: |
- std::auto_ptr<std::istream> Read(const std::string& path) const |
+ std::tr1::shared_ptr<std::istream> Read(const std::string& path) const |
{ |
std::stringstream* const source = new std::stringstream; |
*source << "function hello() { return 'Hello'; }"; |
- return std::auto_ptr<std::istream>(source); |
+ return std::tr1::shared_ptr<std::istream>(source); |
} |
}; |
-class BadFileReader : public AdblockPlus::FileReader |
+class BadFileSystem : public BaseFileSystem |
{ |
public: |
- std::auto_ptr<std::istream> Read(const std::string& path) const |
+ std::tr1::shared_ptr<std::istream> Read(const std::string& path) const |
{ |
std::ifstream* const file = new std::ifstream; |
file->open(""); |
- return std::auto_ptr<std::istream>(file); |
+ return std::tr1::shared_ptr<std::istream>(file); |
+ } |
+ |
+ void Write(const std::string& path, |
+ std::tr1::shared_ptr<std::ostream> content) |
+ { |
+ throw std::runtime_error("No writing"); |
} |
}; |
TEST(JsEngineTest, EvaluateAndCall) |
{ |
- ThrowingFileReader fileReader; |
ThrowingErrorCallback errorCallback; |
- AdblockPlus::JsEngine jsEngine(&fileReader, 0, &errorCallback); |
+ AdblockPlus::JsEngine jsEngine(0, 0, &errorCallback); |
const std::string source = "function hello() { return 'Hello'; }"; |
jsEngine.Evaluate(source); |
const std::string result = jsEngine.Evaluate("hello()"); |
@@ -56,9 +76,9 @@ |
TEST(JsEngineTest, LoadAndCall) |
{ |
- StubFileReader fileReader; |
+ StubFileSystem fileSystem; |
ThrowingErrorCallback errorCallback; |
- AdblockPlus::JsEngine jsEngine(&fileReader, 0, &errorCallback); |
+ AdblockPlus::JsEngine jsEngine(&fileSystem, 0, &errorCallback); |
jsEngine.Load("hello.js"); |
const std::string result = jsEngine.Evaluate("hello()"); |
ASSERT_EQ("Hello", result); |
@@ -66,24 +86,22 @@ |
TEST(JsEngineTest, LoadBadStreamFails) |
{ |
- BadFileReader fileReader; |
+ BadFileSystem fileSystem; |
ThrowingErrorCallback errorCallback; |
- AdblockPlus::JsEngine jsEngine(&fileReader, 0, &errorCallback); |
+ AdblockPlus::JsEngine jsEngine(&fileSystem, 0, &errorCallback); |
ASSERT_ANY_THROW(jsEngine.Load("hello.js")); |
} |
TEST(JsEngineTest, RuntimeExceptionIsThrown) |
{ |
- ThrowingFileReader fileReader; |
ThrowingErrorCallback errorCallback; |
- AdblockPlus::JsEngine jsEngine(&fileReader, 0, &errorCallback); |
+ AdblockPlus::JsEngine jsEngine(0, 0, &errorCallback); |
ASSERT_THROW(jsEngine.Evaluate("doesnotexist()"), AdblockPlus::JsError); |
} |
TEST(JsEngineTest, CompileTimeExceptionIsThrown) |
{ |
- ThrowingFileReader fileReader; |
ThrowingErrorCallback errorCallback; |
- AdblockPlus::JsEngine jsEngine(&fileReader, 0, &errorCallback); |
+ AdblockPlus::JsEngine jsEngine(0, 0, &errorCallback); |
ASSERT_THROW(jsEngine.Evaluate("'foo'bar'"), AdblockPlus::JsError); |
} |