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

Side by Side Diff: chrome/test/v8_unit_test.cc

Issue 7541001: Move more files from chrome/test to chrome/test/base, part #3 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 4 months 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
« no previous file with comments | « chrome/test/v8_unit_test.h ('k') | chrome/test/values_test_util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/stringprintf.h"
6 #include "base/string_piece.h"
7 #include "chrome/test/v8_unit_test.h"
8
9 V8UnitTest::V8UnitTest() {}
10
11 V8UnitTest::~V8UnitTest() {}
12
13 void V8UnitTest::SetUp() {
14 v8::Handle<v8::ObjectTemplate> global = v8::ObjectTemplate::New();
15 global->Set(v8::String::New("log"),
16 v8::FunctionTemplate::New(&V8UnitTest::Log));
17 context_ = v8::Context::New(NULL, global);
18 }
19
20 void V8UnitTest::SetGlobalStringVar(const std::string& var_name,
21 const std::string& value) {
22 v8::Context::Scope context_scope(context_);
23 context_->Global()->Set(v8::String::New(var_name.c_str(), var_name.length()),
24 v8::String::New(value.c_str(), value.length()));
25 }
26
27 void V8UnitTest::ExecuteScriptInContext(const base::StringPiece& script_source,
28 const base::StringPiece& script_name) {
29 v8::Context::Scope context_scope(context_);
30 v8::HandleScope handle_scope;
31 v8::Handle<v8::String> source = v8::String::New(script_source.data(),
32 script_source.size());
33 v8::Handle<v8::String> name = v8::String::New(script_name.data(),
34 script_source.size());
35
36 v8::TryCatch try_catch;
37 v8::Handle<v8::Script> script = v8::Script::Compile(source, name);
38 // Ensure the script compiled without errors.
39 if (script.IsEmpty()) {
40 FAIL() << ExceptionToString(&try_catch);
41 }
42 v8::Handle<v8::Value> result = script->Run();
43 // Ensure the script ran without errors.
44 if (result.IsEmpty()) {
45 FAIL() << ExceptionToString(&try_catch);
46 }
47 }
48
49 std::string V8UnitTest::ExceptionToString(v8::TryCatch* try_catch) {
50 std::string str;
51 v8::HandleScope handle_scope;
52 v8::String::Utf8Value exception(try_catch->Exception());
53 v8::Handle<v8::Message> message = try_catch->Message();
54 if (message.IsEmpty()) {
55 str.append(base::StringPrintf("%s\n", *exception));
56 } else {
57 v8::String::Utf8Value filename(message->GetScriptResourceName());
58 int linenum = message->GetLineNumber();
59 int colnum = message->GetStartColumn();
60 str.append(base::StringPrintf(
61 "%s:%i:%i %s\n", *filename, linenum, colnum, *exception));
62 v8::String::Utf8Value sourceline(message->GetSourceLine());
63 str.append(base::StringPrintf("%s\n", *sourceline));
64 }
65 return str;
66 }
67
68 void V8UnitTest::TestFunction(const std::string& function_name) {
69 v8::Context::Scope context_scope(context_);
70 v8::HandleScope handle_scope;
71
72 v8::Handle<v8::Value> functionProperty =
73 context_->Global()->Get(v8::String::New(function_name.c_str()));
74 ASSERT_FALSE(functionProperty.IsEmpty());
75 ASSERT_TRUE(functionProperty->IsFunction());
76 v8::Handle<v8::Function> function =
77 v8::Handle<v8::Function>::Cast(functionProperty);
78
79 v8::TryCatch try_catch;
80 v8::Handle<v8::Value> result = function->Call(context_->Global(), 0, NULL);
81 // The test fails if an exception was thrown.
82 if (result.IsEmpty()) {
83 FAIL() << ExceptionToString(&try_catch);
84 }
85 }
86
87 // static
88 v8::Handle<v8::Value> V8UnitTest::Log(const v8::Arguments& args) {
89 std::string message;
90 bool first = true;
91 for (int i = 0; i < args.Length(); i++) {
92 v8::HandleScope handle_scope;
93 if (first) {
94 first = false;
95 } else {
96 message += " ";
97 }
98 v8::String::Utf8Value str(args[i]);
99 message += *str;
100 }
101 std::cout << message << "\n";
102 return v8::Undefined();
103 }
OLDNEW
« no previous file with comments | « chrome/test/v8_unit_test.h ('k') | chrome/test/values_test_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698