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

Side by Side Diff: test/JsEngine.cpp

Issue 10260028: Refactor tests, use fixtures and avoid duplication (Closed)
Patch Set: Created April 19, 2013, 4:11 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/GlobalJsObject.cpp ('k') | test/JsValue.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #include <AdblockPlus.h> 1 #include "BaseJsTest.h"
2 #include <gtest/gtest.h>
3 2
4 class ThrowingErrorCallback : public AdblockPlus::ErrorCallback 3 namespace
5 { 4 {
6 public: 5 class JsEngineTest : public BaseJsTest
7 void operator()(const std::string& message)
8 { 6 {
9 throw std::runtime_error("Unexpected error: " + message); 7 };
10 } 8 }
11 };
12 9
13 TEST(JsEngineTest, Evaluate) 10 TEST_F(JsEngineTest, Evaluate)
14 { 11 {
15 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New());
16 jsEngine->SetErrorCallback(AdblockPlus::ErrorCallbackPtr(new ThrowingErrorCall back()));
17 jsEngine->Evaluate("function hello() { return 'Hello'; }"); 12 jsEngine->Evaluate("function hello() { return 'Hello'; }");
18 AdblockPlus::JsValuePtr result = jsEngine->Evaluate("hello()"); 13 AdblockPlus::JsValuePtr result = jsEngine->Evaluate("hello()");
19 ASSERT_TRUE(result->IsString()); 14 ASSERT_TRUE(result->IsString());
20 ASSERT_EQ("Hello", result->AsString()); 15 ASSERT_EQ("Hello", result->AsString());
21 } 16 }
22 17
23 TEST(JsEngineTest, RuntimeExceptionIsThrown) 18 TEST_F(JsEngineTest, RuntimeExceptionIsThrown)
24 { 19 {
25 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New());
26 jsEngine->SetErrorCallback(AdblockPlus::ErrorCallbackPtr(new ThrowingErrorCall back()));
27 ASSERT_THROW(jsEngine->Evaluate("doesnotexist()"), AdblockPlus::JsError); 20 ASSERT_THROW(jsEngine->Evaluate("doesnotexist()"), AdblockPlus::JsError);
28 } 21 }
29 22
30 TEST(JsEngineTest, CompileTimeExceptionIsThrown) 23 TEST_F(JsEngineTest, CompileTimeExceptionIsThrown)
31 { 24 {
32 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New());
33 jsEngine->SetErrorCallback(AdblockPlus::ErrorCallbackPtr(new ThrowingErrorCall back()));
34 ASSERT_THROW(jsEngine->Evaluate("'foo'bar'"), AdblockPlus::JsError); 25 ASSERT_THROW(jsEngine->Evaluate("'foo'bar'"), AdblockPlus::JsError);
35 } 26 }
36 27
37 TEST(JsEngineTest, ValueCreation) 28 TEST_F(JsEngineTest, ValueCreation)
38 { 29 {
39 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New());
40 jsEngine->SetErrorCallback(AdblockPlus::ErrorCallbackPtr(new ThrowingErrorCall back()));
41 AdblockPlus::JsValuePtr value; 30 AdblockPlus::JsValuePtr value;
42 31
43 value = jsEngine->NewValue("foo"); 32 value = jsEngine->NewValue("foo");
44 ASSERT_TRUE(value->IsString()); 33 ASSERT_TRUE(value->IsString());
45 ASSERT_EQ("foo", value->AsString()); 34 ASSERT_EQ("foo", value->AsString());
46 35
47 value = jsEngine->NewValue(12345678901234); 36 value = jsEngine->NewValue(12345678901234);
48 ASSERT_TRUE(value->IsNumber()); 37 ASSERT_TRUE(value->IsNumber());
49 ASSERT_EQ(12345678901234, value->AsInt()); 38 ASSERT_EQ(12345678901234, value->AsInt());
50 39
51 value = jsEngine->NewValue(true); 40 value = jsEngine->NewValue(true);
52 ASSERT_TRUE(value->IsBool()); 41 ASSERT_TRUE(value->IsBool());
53 ASSERT_TRUE(value->AsBool()); 42 ASSERT_TRUE(value->AsBool());
54 43
55 value = jsEngine->NewObject(); 44 value = jsEngine->NewObject();
56 ASSERT_TRUE(value->IsObject()); 45 ASSERT_TRUE(value->IsObject());
57 ASSERT_EQ(0u, value->GetOwnPropertyNames().size()); 46 ASSERT_EQ(0u, value->GetOwnPropertyNames().size());
58 } 47 }
59 48
60 TEST(JsEngineTest, CallbackGetSet) 49 TEST(NewJsEngineTest, CallbackGetSet)
61 { 50 {
62 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New()); 51 AdblockPlus::JsEnginePtr jsEngine(AdblockPlus::JsEngine::New());
63 52
64 ASSERT_TRUE(jsEngine->GetErrorCallback()); 53 ASSERT_TRUE(jsEngine->GetErrorCallback());
65 ASSERT_ANY_THROW(jsEngine->SetErrorCallback(AdblockPlus::ErrorCallbackPtr())); 54 ASSERT_ANY_THROW(jsEngine->SetErrorCallback(AdblockPlus::ErrorCallbackPtr()));
66 AdblockPlus::ErrorCallbackPtr errorCallback(new AdblockPlus::DefaultErrorCallb ack()); 55 AdblockPlus::ErrorCallbackPtr errorCallback(new AdblockPlus::DefaultErrorCallb ack());
67 jsEngine->SetErrorCallback(errorCallback); 56 jsEngine->SetErrorCallback(errorCallback);
68 ASSERT_EQ(errorCallback, jsEngine->GetErrorCallback()); 57 ASSERT_EQ(errorCallback, jsEngine->GetErrorCallback());
69 58
70 ASSERT_TRUE(jsEngine->GetFileSystem()); 59 ASSERT_TRUE(jsEngine->GetFileSystem());
71 ASSERT_ANY_THROW(jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr())); 60 ASSERT_ANY_THROW(jsEngine->SetFileSystem(AdblockPlus::FileSystemPtr()));
72 AdblockPlus::FileSystemPtr fileSystem(new AdblockPlus::DefaultFileSystem()); 61 AdblockPlus::FileSystemPtr fileSystem(new AdblockPlus::DefaultFileSystem());
73 jsEngine->SetFileSystem(fileSystem); 62 jsEngine->SetFileSystem(fileSystem);
74 ASSERT_EQ(fileSystem, jsEngine->GetFileSystem()); 63 ASSERT_EQ(fileSystem, jsEngine->GetFileSystem());
75 64
76 ASSERT_TRUE(jsEngine->GetWebRequest()); 65 ASSERT_TRUE(jsEngine->GetWebRequest());
77 ASSERT_ANY_THROW(jsEngine->SetWebRequest(AdblockPlus::WebRequestPtr())); 66 ASSERT_ANY_THROW(jsEngine->SetWebRequest(AdblockPlus::WebRequestPtr()));
78 AdblockPlus::WebRequestPtr webRequest(new AdblockPlus::DefaultWebRequest()); 67 AdblockPlus::WebRequestPtr webRequest(new AdblockPlus::DefaultWebRequest());
79 jsEngine->SetWebRequest(webRequest); 68 jsEngine->SetWebRequest(webRequest);
80 ASSERT_EQ(webRequest, jsEngine->GetWebRequest()); 69 ASSERT_EQ(webRequest, jsEngine->GetWebRequest());
81 } 70 }
OLDNEW
« no previous file with comments | « test/GlobalJsObject.cpp ('k') | test/JsValue.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld