| Index: test/JsEngine.cpp |
| =================================================================== |
| --- a/test/JsEngine.cpp |
| +++ b/test/JsEngine.cpp |
| @@ -17,16 +17,22 @@ |
| #include "BaseJsTest.h" |
| namespace |
| { |
| class JsEngineTest : public BaseJsTest |
| { |
| }; |
| + |
| + bool callbackCalled = false; |
| + void Callback() |
| + { |
| + callbackCalled = true; |
| + } |
| } |
| TEST_F(JsEngineTest, Evaluate) |
| { |
| jsEngine->Evaluate("function hello() { return 'Hello'; }"); |
| AdblockPlus::JsValuePtr result = jsEngine->Evaluate("hello()"); |
| ASSERT_TRUE(result->IsString()); |
| ASSERT_EQ("Hello", result->AsString()); |
| @@ -58,16 +64,41 @@ TEST_F(JsEngineTest, ValueCreation) |
| ASSERT_TRUE(value->IsBool()); |
| ASSERT_TRUE(value->AsBool()); |
| value = jsEngine->NewObject(); |
| ASSERT_TRUE(value->IsObject()); |
| ASSERT_EQ(0u, value->GetOwnPropertyNames().size()); |
| } |
| +TEST_F(JsEngineTest, EventCallbacks) |
| +{ |
| + // Trigger event without a callback |
| + callbackCalled = false; |
| + jsEngine->Evaluate("_triggerEvent('foobar')"); |
| + ASSERT_FALSE(callbackCalled); |
| + |
| + // Set callback |
| + jsEngine->SetEventCallback("foobar", Callback); |
| + callbackCalled = false; |
| + jsEngine->Evaluate("_triggerEvent('foobar')"); |
| + ASSERT_TRUE(callbackCalled); |
| + |
| + // Trigger a different event |
| + callbackCalled = false; |
| + jsEngine->Evaluate("_triggerEvent('barfoo')"); |
| + ASSERT_FALSE(callbackCalled); |
| + |
| + // Remove callback |
| + jsEngine->RemoveEventCallback("foobar"); |
| + callbackCalled = false; |
| + jsEngine->Evaluate("_triggerEvent('foobar')"); |
| + ASSERT_FALSE(callbackCalled); |
| +} |
| + |
| TEST(NewJsEngineTest, CallbackGetSet) |
| { |
| AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); |
| ASSERT_TRUE(jsEngine->GetLogSystem()); |
| ASSERT_ANY_THROW(jsEngine->SetLogSystem(AdblockPlus::LogSystemPtr())); |
| AdblockPlus::LogSystemPtr logSystem(new AdblockPlus::DefaultLogSystem()); |
| jsEngine->SetLogSystem(logSystem); |