17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright (c) 2013 The Chromium Authors. All rights reserved.
27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file.
47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "gtest/gtest.h"
67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
77dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST(TestCase, SimpleTest) {
87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(4, 2*2);
97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
117dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochTEST(TestCase, AnotherTest) {
127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  EXPECT_EQ(4, sizeof(void*));
137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#if defined(SEL_LDR)
167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochint main(int argc, char* argv[]) {
187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  ::testing::InitGoogleTest(&argc, argv);
197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return RUN_ALL_TESTS();
207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#else
237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "ppapi/cpp/instance.h"
257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "ppapi/cpp/var.h"
267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "ppapi_simple/ps_main.h"
277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#if defined(WIN32)
297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include <Windows.h>
307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#undef PostMessage
317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif
327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass GTestEventListener : public ::testing::EmptyTestEventListener {
347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public:
357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  // TestEventListener overrides.
367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void OnTestStart(const ::testing::TestInfo& test_info) {
377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    std::stringstream msg;
387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    msg << "start:" << test_info.test_case_name() << "." << test_info.name();
397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    pp::Instance(PSGetInstanceId()).PostMessage(msg.str());
407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void OnTestPartResult(
437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      const ::testing::TestPartResult& test_part_result) {
447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    if (test_part_result.failed()) {
457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      std::stringstream msg;
467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      msg << "fail:" << test_part_result.file_name() << ","
477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch          << test_part_result.line_number() << ","
487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch          << test_part_result.summary();
497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      pp::Instance(PSGetInstanceId()).PostMessage(msg.str());
507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    }
517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  virtual void OnTestEnd(const ::testing::TestInfo& test_info) {
547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    std::stringstream msg;
557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    msg << "end:" << test_info.test_case_name() << "." << test_info.name()
567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch        << "," << (test_info.result()->Failed() ? "failed" : "ok");
577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    pp::Instance(PSGetInstanceId()).PostMessage(msg.str());
587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch};
607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochint example_main(int argc, char* argv[]) {
627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  ::testing::InitGoogleTest(&argc, argv);
637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  ::testing::UnitTest::GetInstance()->listeners()
647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      .Append(new GTestEventListener());
657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return RUN_ALL_TESTS();
667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Register the function to call once the Instance Object is initialized.
697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// see: pappi_simple/ps_main.h
707dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochPPAPI_SIMPLE_REGISTER_MAIN(example_main);
717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
727dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif
73