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

Unified Diff: test/JsEngine.cpp

Issue 29417605: Issue 5034 - Part 3: Create plain JsValue instead of JsValuePtr (Closed) Base URL: https://hg.adblockplus.org/libadblockplus/
Patch Set: Created April 19, 2017, 5:54 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/JsEngine.cpp
===================================================================
--- a/test/JsEngine.cpp
+++ b/test/JsEngine.cpp
@@ -40,60 +40,98 @@
TEST_F(JsEngineTest, CompileTimeExceptionIsThrown)
{
ASSERT_THROW(jsEngine->Evaluate("'foo'bar'"), std::runtime_error);
}
TEST_F(JsEngineTest, ValueCreation)
{
- AdblockPlus::JsValuePtr value;
-
- value = jsEngine->NewValue("foo");
- ASSERT_TRUE(value->IsString());
- ASSERT_EQ("foo", value->AsString());
+ auto value = jsEngine->NewValue("foo");
+ ASSERT_TRUE(value.IsString());
+ ASSERT_EQ("foo", value.AsString());
value = jsEngine->NewValue(12345678901234);
- ASSERT_TRUE(value->IsNumber());
- ASSERT_EQ(12345678901234, value->AsInt());
+ ASSERT_TRUE(value.IsNumber());
+ ASSERT_EQ(12345678901234, value.AsInt());
value = jsEngine->NewValue(true);
- ASSERT_TRUE(value->IsBool());
- ASSERT_TRUE(value->AsBool());
+ ASSERT_TRUE(value.IsBool());
+ ASSERT_TRUE(value.AsBool());
value = jsEngine->NewObject();
- ASSERT_TRUE(value->IsObject());
- ASSERT_EQ(0u, value->GetOwnPropertyNames().size());
+ ASSERT_TRUE(value.IsObject());
+ ASSERT_EQ(0u, value.GetOwnPropertyNames().size());
+}
+
+TEST_F(JsEngineTest, ValueCopy)
+{
+ {
+ auto value = jsEngine->NewValue("foo");
+ ASSERT_TRUE(value.IsString());
+ ASSERT_EQ("foo", value.AsString());
+
+ AdblockPlus::JsValue value2(value);
+ ASSERT_TRUE(value2.IsString());
+ ASSERT_EQ("foo", value2.AsString());
+ }
+ {
+ auto value = jsEngine->NewValue(12345678901234);
+ ASSERT_TRUE(value.IsNumber());
+ ASSERT_EQ(12345678901234, value.AsInt());
+
+ AdblockPlus::JsValue value2(value);
+ ASSERT_TRUE(value2.IsNumber());
+ ASSERT_EQ(12345678901234, value2.AsInt());
+ }
+ {
+ auto value = jsEngine->NewValue(true);
+ ASSERT_TRUE(value.IsBool());
+ ASSERT_TRUE(value.AsBool());
+
+ AdblockPlus::JsValue value2(value);
+ ASSERT_TRUE(value2.IsBool());
+ ASSERT_TRUE(value2.AsBool());
+ }
+ {
+ auto value = jsEngine->NewObject();
+ ASSERT_TRUE(value.IsObject());
+ ASSERT_EQ(0u, value.GetOwnPropertyNames().size());
+
+ AdblockPlus::JsValue value2(value);
+ ASSERT_TRUE(value2.IsObject());
+ ASSERT_EQ(0u, value2.GetOwnPropertyNames().size());
+ }
sergei 2017/04/19 18:56:52 Actually, it would be good to test in addition tha
hub 2017/04/19 21:56:49 Not sure how to do that. This is neither v8::Value
sergei 2017/04/20 07:42:52 I thought about something like auto obj = jsEngin
hub 2017/04/20 12:41:01 ok. this works. and I tested the failure too :-)
}
TEST_F(JsEngineTest, EventCallbacks)
{
bool callbackCalled = false;
- AdblockPlus::JsConstValueList callbackParams;
+ AdblockPlus::JsValueList callbackParams;
auto Callback = [&callbackCalled, & callbackParams](
- const AdblockPlus::JsConstValueList& params)
+ const AdblockPlus::JsValueList& params)
{
callbackCalled = true;
callbackParams = params;
};
// 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', 1, 'x', true)");
ASSERT_TRUE(callbackCalled);
ASSERT_EQ(callbackParams.size(), 3u);
- ASSERT_EQ(callbackParams[0]->AsInt(), 1);
- ASSERT_EQ(callbackParams[1]->AsString(), "x");
- ASSERT_TRUE(callbackParams[2]->AsBool());
+ ASSERT_EQ(callbackParams[0].AsInt(), 1);
+ ASSERT_EQ(callbackParams[1].AsString(), "x");
+ ASSERT_TRUE(callbackParams[2].AsBool());
// Trigger a different event
callbackCalled = false;
jsEngine->Evaluate("_triggerEvent('barfoo')");
ASSERT_FALSE(callbackCalled);
// Remove callback
jsEngine->RemoveEventCallback("foobar");
@@ -123,14 +161,14 @@
AdblockPlus::WebRequestPtr webRequest(new AdblockPlus::DefaultWebRequest());
jsEngine->SetWebRequest(webRequest);
ASSERT_EQ(webRequest, jsEngine->GetWebRequest());
}
TEST(NewJsEngineTest, GlobalPropertyTest)
{
AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New());
- jsEngine->SetGlobalProperty("foo", *jsEngine->NewValue("bar"));
+ jsEngine->SetGlobalProperty("foo", jsEngine->NewValue("bar"));
AdblockPlus::JsValuePtr foo = jsEngine->Evaluate("foo");
ASSERT_TRUE(foo->IsString());
ASSERT_EQ(foo->AsString(), "bar");
}

Powered by Google App Engine
This is Rietveld