1// Copyright (c) 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 "gtest/gtest.h"
6
7TEST(TestCase, SimpleTest) {
8  EXPECT_EQ(4, 2*2);
9}
10
11TEST(TestCase, AnotherTest) {
12  EXPECT_EQ(4, sizeof(void*));
13}
14
15#if defined(SEL_LDR)
16
17int main(int argc, char* argv[]) {
18  ::testing::InitGoogleTest(&argc, argv);
19  return RUN_ALL_TESTS();
20}
21
22#else
23
24#include "ppapi/cpp/instance.h"
25#include "ppapi/cpp/var.h"
26#include "ppapi_simple/ps_main.h"
27
28#if defined(WIN32)
29#include <Windows.h>
30#undef PostMessage
31#endif
32
33class GTestEventListener : public ::testing::EmptyTestEventListener {
34 public:
35  // TestEventListener overrides.
36  virtual void OnTestStart(const ::testing::TestInfo& test_info) {
37    std::stringstream msg;
38    msg << "start:" << test_info.test_case_name() << "." << test_info.name();
39    pp::Instance(PSGetInstanceId()).PostMessage(msg.str());
40  }
41
42  virtual void OnTestPartResult(
43      const ::testing::TestPartResult& test_part_result) {
44    if (test_part_result.failed()) {
45      std::stringstream msg;
46      msg << "fail:" << test_part_result.file_name() << ","
47          << test_part_result.line_number() << ","
48          << test_part_result.summary();
49      pp::Instance(PSGetInstanceId()).PostMessage(msg.str());
50    }
51  }
52
53  virtual void OnTestEnd(const ::testing::TestInfo& test_info) {
54    std::stringstream msg;
55    msg << "end:" << test_info.test_case_name() << "." << test_info.name()
56        << "," << (test_info.result()->Failed() ? "failed" : "ok");
57    pp::Instance(PSGetInstanceId()).PostMessage(msg.str());
58  }
59};
60
61int example_main(int argc, char* argv[]) {
62  ::testing::InitGoogleTest(&argc, argv);
63  ::testing::UnitTest::GetInstance()->listeners()
64      .Append(new GTestEventListener());
65  return RUN_ALL_TESTS();
66}
67
68// Register the function to call once the Instance Object is initialized.
69// see: pappi_simple/ps_main.h
70PPAPI_SIMPLE_REGISTER_MAIN(example_main);
71
72#endif
73