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
3// found in the LICENSE file.
4
5#include "gin/test/gtest.h"
6
7#include "base/bind.h"
8#include "base/logging.h"
9#include "gin/arguments.h"
10#include "gin/converter.h"
11#include "gin/function_template.h"
12#include "gin/object_template_builder.h"
13#include "gin/per_isolate_data.h"
14#include "gin/public/wrapper_info.h"
15#include "gin/wrappable.h"
16#include "testing/gtest/include/gtest/gtest.h"
17
18namespace gin {
19
20namespace {
21
22void Fail(const std::string& description) {
23  FAIL() << description;
24}
25
26void ExpectTrue(bool condition, const std::string& description) {
27  EXPECT_TRUE(condition) << description;
28}
29
30void ExpectFalse(bool condition, const std::string& description) {
31  EXPECT_FALSE(condition) << description;
32}
33
34void ExpectEqual(const v8::Handle<v8::Value> expected,
35                 const v8::Handle<v8::Value> actual,
36                 const std::string& description) {
37  EXPECT_TRUE(expected->StrictEquals(actual)) << description;
38}
39
40WrapperInfo g_wrapper_info = { kEmbedderNativeGin };
41
42}  // namespace
43
44const char GTest::kModuleName[] = "gtest";
45
46v8::Local<v8::Value> GTest::GetModule(v8::Isolate* isolate) {
47  PerIsolateData* data = PerIsolateData::From(isolate);
48  v8::Local<v8::ObjectTemplate> templ =
49      data->GetObjectTemplate(&g_wrapper_info);
50  if (templ.IsEmpty()) {
51    templ = ObjectTemplateBuilder(isolate)
52        .SetMethod("fail", Fail)
53        .SetMethod("expectTrue", ExpectTrue)
54        .SetMethod("expectFalse", ExpectFalse)
55        .SetMethod("expectEqual", ExpectEqual)
56        .Build();
57    data->SetObjectTemplate(&g_wrapper_info, templ);
58  }
59  return templ->NewInstance();
60}
61
62}  // namespace gin
63