Index: test/JsValue.cpp |
=================================================================== |
--- a/test/JsValue.cpp |
+++ b/test/JsValue.cpp |
@@ -1,24 +1,14 @@ |
#include <AdblockPlus.h> |
#include <gtest/gtest.h> |
-class ThrowingErrorCallback : public AdblockPlus::ErrorCallback |
-{ |
-public: |
- void operator()(const std::string& message) |
- { |
- throw std::runtime_error("Unexpected error: " + message); |
- } |
-}; |
- |
TEST(JsValueTest, UndefinedValue) |
{ |
- ThrowingErrorCallback errorCallback; |
- AdblockPlus::JsEngine jsEngine(AdblockPlus::AppInfo(), 0, 0, &errorCallback); |
+ AdblockPlus::JsEngine jsEngine; |
AdblockPlus::JsValuePtr value = jsEngine.Evaluate("undefined"); |
ASSERT_TRUE(value->IsUndefined()); |
ASSERT_FALSE(value->IsNull()); |
ASSERT_FALSE(value->IsString()); |
ASSERT_FALSE(value->IsBool()); |
ASSERT_FALSE(value->IsNumber()); |
ASSERT_FALSE(value->IsObject()); |
ASSERT_FALSE(value->IsArray()); |
@@ -30,18 +20,17 @@ TEST(JsValueTest, UndefinedValue) |
ASSERT_ANY_THROW(value->SetProperty("foo", false)); |
ASSERT_ANY_THROW(value->GetClassName()); |
ASSERT_ANY_THROW(value->GetOwnPropertyNames()); |
ASSERT_ANY_THROW(value->Call()); |
} |
TEST(JsValueTest, NullValue) |
{ |
- ThrowingErrorCallback errorCallback; |
- AdblockPlus::JsEngine jsEngine(AdblockPlus::AppInfo(), 0, 0, &errorCallback); |
+ AdblockPlus::JsEngine jsEngine; |
AdblockPlus::JsValuePtr value = jsEngine.Evaluate("null"); |
ASSERT_FALSE(value->IsUndefined()); |
ASSERT_TRUE(value->IsNull()); |
ASSERT_FALSE(value->IsString()); |
ASSERT_FALSE(value->IsBool()); |
ASSERT_FALSE(value->IsNumber()); |
ASSERT_FALSE(value->IsObject()); |
ASSERT_FALSE(value->IsArray()); |
@@ -53,18 +42,17 @@ TEST(JsValueTest, NullValue) |
ASSERT_ANY_THROW(value->SetProperty("foo", false)); |
ASSERT_ANY_THROW(value->GetClassName()); |
ASSERT_ANY_THROW(value->GetOwnPropertyNames()); |
ASSERT_ANY_THROW(value->Call()); |
} |
TEST(JsValueTest, StringValue) |
{ |
- ThrowingErrorCallback errorCallback; |
- AdblockPlus::JsEngine jsEngine(AdblockPlus::AppInfo(), 0, 0, &errorCallback); |
+ AdblockPlus::JsEngine jsEngine; |
AdblockPlus::JsValuePtr value = jsEngine.Evaluate("'123'"); |
ASSERT_FALSE(value->IsUndefined()); |
ASSERT_FALSE(value->IsNull()); |
ASSERT_TRUE(value->IsString()); |
ASSERT_FALSE(value->IsBool()); |
ASSERT_FALSE(value->IsNumber()); |
ASSERT_FALSE(value->IsObject()); |
ASSERT_FALSE(value->IsArray()); |
@@ -77,18 +65,17 @@ TEST(JsValueTest, StringValue) |
ASSERT_ANY_THROW(value->SetProperty("foo", false)); |
ASSERT_ANY_THROW(value->GetClassName()); |
ASSERT_ANY_THROW(value->GetOwnPropertyNames()); |
ASSERT_ANY_THROW(value->Call()); |
} |
TEST(JsValueTest, IntValue) |
{ |
- ThrowingErrorCallback errorCallback; |
- AdblockPlus::JsEngine jsEngine(AdblockPlus::AppInfo(), 0, 0, &errorCallback); |
+ AdblockPlus::JsEngine jsEngine; |
AdblockPlus::JsValuePtr value = jsEngine.Evaluate("123"); |
ASSERT_FALSE(value->IsUndefined()); |
ASSERT_FALSE(value->IsNull()); |
ASSERT_FALSE(value->IsString()); |
ASSERT_FALSE(value->IsBool()); |
ASSERT_TRUE(value->IsNumber()); |
ASSERT_FALSE(value->IsObject()); |
ASSERT_FALSE(value->IsArray()); |
@@ -101,18 +88,17 @@ TEST(JsValueTest, IntValue) |
ASSERT_ANY_THROW(value->SetProperty("foo", false)); |
ASSERT_ANY_THROW(value->GetClassName()); |
ASSERT_ANY_THROW(value->GetOwnPropertyNames()); |
ASSERT_ANY_THROW(value->Call()); |
} |
TEST(JsValueTest, BoolValue) |
{ |
- ThrowingErrorCallback errorCallback; |
- AdblockPlus::JsEngine jsEngine(AdblockPlus::AppInfo(), 0, 0, &errorCallback); |
+ AdblockPlus::JsEngine jsEngine; |
AdblockPlus::JsValuePtr value = jsEngine.Evaluate("true"); |
ASSERT_FALSE(value->IsUndefined()); |
ASSERT_FALSE(value->IsNull()); |
ASSERT_FALSE(value->IsString()); |
ASSERT_TRUE(value->IsBool()); |
ASSERT_FALSE(value->IsNumber()); |
ASSERT_FALSE(value->IsObject()); |
ASSERT_FALSE(value->IsArray()); |
@@ -124,18 +110,17 @@ TEST(JsValueTest, BoolValue) |
ASSERT_ANY_THROW(value->SetProperty("foo", false)); |
ASSERT_ANY_THROW(value->GetClassName()); |
ASSERT_ANY_THROW(value->GetOwnPropertyNames()); |
ASSERT_ANY_THROW(value->Call()); |
} |
TEST(JsValueTest, ObjectValue) |
{ |
- ThrowingErrorCallback errorCallback; |
- AdblockPlus::JsEngine jsEngine(AdblockPlus::AppInfo(), 0, 0, &errorCallback); |
+ AdblockPlus::JsEngine jsEngine; |
const std::string source("\ |
function Foo() {\ |
this.x = 2;\ |
this.toString = function() {return 'foo';};\ |
this.valueOf = function() {return 123;};\ |
};\ |
new Foo()"); |
AdblockPlus::JsValuePtr value = jsEngine.Evaluate(source); |
@@ -158,18 +143,17 @@ TEST(JsValueTest, ObjectValue) |
ASSERT_EQ(15, value->GetProperty("x")->AsInt()); |
ASSERT_EQ("Foo", value->GetClassName()); |
ASSERT_EQ(3u, value->GetOwnPropertyNames().size()); |
ASSERT_ANY_THROW(value->Call()); |
} |
TEST(JsValueTest, ArrayValue) |
{ |
- ThrowingErrorCallback errorCallback; |
- AdblockPlus::JsEngine jsEngine(AdblockPlus::AppInfo(), 0, 0, &errorCallback); |
+ AdblockPlus::JsEngine jsEngine; |
AdblockPlus::JsValuePtr value = jsEngine.Evaluate("[5,8,12]"); |
ASSERT_FALSE(value->IsUndefined()); |
ASSERT_FALSE(value->IsNull()); |
ASSERT_FALSE(value->IsString()); |
ASSERT_FALSE(value->IsBool()); |
ASSERT_FALSE(value->IsNumber()); |
ASSERT_TRUE(value->IsObject()); |
ASSERT_TRUE(value->IsArray()); |
@@ -180,18 +164,17 @@ TEST(JsValueTest, ArrayValue) |
ASSERT_EQ(8, value->AsList()[1]->AsInt()); |
ASSERT_EQ(3, value->GetProperty("length")->AsInt()); |
ASSERT_EQ("Array", value->GetClassName()); |
ASSERT_ANY_THROW(value->Call()); |
} |
TEST(JsValueTest, FunctionValue) |
{ |
- ThrowingErrorCallback errorCallback; |
- AdblockPlus::JsEngine jsEngine(AdblockPlus::AppInfo(), 0, 0, &errorCallback); |
+ AdblockPlus::JsEngine jsEngine; |
AdblockPlus::JsValuePtr value = jsEngine.Evaluate("(function(foo, bar) {return this.x + '/' + foo + '/' + bar;})"); |
ASSERT_FALSE(value->IsUndefined()); |
ASSERT_FALSE(value->IsNull()); |
ASSERT_FALSE(value->IsString()); |
ASSERT_FALSE(value->IsBool()); |
ASSERT_FALSE(value->IsNumber()); |
ASSERT_TRUE(value->IsObject()); |
ASSERT_FALSE(value->IsArray()); |
@@ -204,18 +187,17 @@ TEST(JsValueTest, FunctionValue) |
AdblockPlus::JsValueList params; |
params.push_back(jsEngine.NewValue(5)); |
params.push_back(jsEngine.NewValue("xyz")); |
ASSERT_EQ("2/5/xyz", value->Call(params, thisPtr)->AsString()); |
} |
TEST(JsValueTest, ThrowingCoversion) |
{ |
- ThrowingErrorCallback errorCallback; |
- AdblockPlus::JsEngine jsEngine(AdblockPlus::AppInfo(), 0, 0, &errorCallback); |
+ AdblockPlus::JsEngine jsEngine; |
const std::string source("\ |
function Foo() {\ |
this.toString = function() {throw 'test1';};\ |
this.valueOf = function() {throw 'test2';};\ |
};\ |
new Foo()"); |
AdblockPlus::JsValuePtr value = jsEngine.Evaluate(source); |
ASSERT_EQ("", value->AsString()); |