Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(707)

Side by Side Diff: gin/test/gtest.cc

Issue 76923003: First cut at gin::Bind() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix return Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« gin/function_template_util.cc ('K') | « gin/gin.gyp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "gin/test/gtest.h" 5 #include "gin/test/gtest.h"
6 6
7 #include "base/bind.h"
8 #include "base/logging.h"
7 #include "gin/arguments.h" 9 #include "gin/arguments.h"
8 #include "gin/converter.h" 10 #include "gin/converter.h"
11 #include "gin/function_template_util.h"
9 #include "gin/per_isolate_data.h" 12 #include "gin/per_isolate_data.h"
10 #include "gin/public/wrapper_info.h" 13 #include "gin/public/wrapper_info.h"
14 #include "gin/wrappable.h"
11 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
12 16
13 using v8::ObjectTemplate;
14
15 namespace gin { 17 namespace gin {
16 18
17 namespace { 19 namespace {
18 20
19 void ExpectTrue(const v8::FunctionCallbackInfo<v8::Value>& info) { 21 void ExpectTrue(bool condition, const std::string& description) {
20 Arguments args(info); 22 EXPECT_TRUE(condition) << description;
21
22 bool value = false;
23 std::string description;
24
25 if (!args.GetNext(&value) ||
26 !args.GetNext(&description)) {
27 return args.ThrowError();
28 }
29
30 EXPECT_TRUE(value) << description;
31 } 23 }
32 24
33 void ExpectFalse(const v8::FunctionCallbackInfo<v8::Value>& info) { 25 void ExpectFalse(bool condition, const std::string& description) {
34 Arguments args(info); 26 EXPECT_FALSE(condition) << description;
35
36 bool value = false;
37 std::string description;
38
39 if (!args.GetNext(&value) ||
40 !args.GetNext(&description)) {
41 return args.ThrowError();
42 }
43
44 EXPECT_FALSE(value) << description;
45 } 27 }
46 28
47 void ExpectEqual(const v8::FunctionCallbackInfo<v8::Value>& info) { 29 void ExpectEqual(const v8::FunctionCallbackInfo<v8::Value>& info) {
48 Arguments args(info); 30 Arguments args(info);
49 31
50 std::string description; 32 std::string description;
51 if (!ConvertFromV8(info[2], &description)) 33 if (!ConvertFromV8(info[2], &description))
52 return args.ThrowTypeError("Expected description."); 34 return args.ThrowTypeError("Expected description.");
53 35
54 EXPECT_TRUE(info[0]->StrictEquals(info[1])) << description; 36 EXPECT_TRUE(info[0]->StrictEquals(info[1])) << description;
55 } 37 }
56 38
57 WrapperInfo g_wrapper_info = { kEmbedderNativeGin }; 39 WrapperInfo g_wrapper_info = { kEmbedderNativeGin };
58 40
59 } // namespace 41 } // namespace
60 42
61 const char GTest::kModuleName[] = "gtest"; 43 const char GTest::kModuleName[] = "gtest";
62 44
63 v8::Local<ObjectTemplate> GTest::GetTemplate(v8::Isolate* isolate) { 45 v8::Local<v8::ObjectTemplate> GTest::GetTemplate(v8::Isolate* isolate) {
46 CallbackHolderBase::Register(isolate);
64 PerIsolateData* data = PerIsolateData::From(isolate); 47 PerIsolateData* data = PerIsolateData::From(isolate);
65 v8::Local<ObjectTemplate> templ = data->GetObjectTemplate(&g_wrapper_info); 48 v8::Local<v8::ObjectTemplate> templ =
49 data->GetObjectTemplate(&g_wrapper_info);
66 if (templ.IsEmpty()) { 50 if (templ.IsEmpty()) {
67 templ = ObjectTemplate::New(); 51 templ = v8::ObjectTemplate::New();
68 templ->Set(StringToSymbol(isolate, "expectTrue"), 52 templ->Set(StringToSymbol(isolate, "expectTrue"),
69 v8::FunctionTemplate::New(ExpectTrue)); 53 CreateFunctionTempate(isolate, base::Bind(ExpectTrue)));
70 templ->Set(StringToSymbol(isolate, "expectFalse"), 54 templ->Set(StringToSymbol(isolate, "expectFalse"),
71 v8::FunctionTemplate::New(ExpectFalse)); 55 CreateFunctionTempate(isolate, base::Bind(ExpectFalse)));
abarth-chromium 2013/11/22 09:17:13 This looks really nice.
72 templ->Set(StringToSymbol(isolate, "expectEqual"), 56 templ->Set(StringToSymbol(isolate, "expectEqual"),
73 v8::FunctionTemplate::New(ExpectEqual)); 57 v8::FunctionTemplate::New(ExpectEqual));
74 data->SetObjectTemplate(&g_wrapper_info, templ); 58 data->SetObjectTemplate(&g_wrapper_info, templ);
75 } 59 }
76 return templ; 60 return templ;
77 } 61 }
78 62
79 } // namespace gin 63 } // namespace gin
OLDNEW
« gin/function_template_util.cc ('K') | « gin/gin.gyp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698