1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <string> 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "gtest/gtest.h" 87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#if defined(SEL_LDR) 107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochint main(int argc, char* argv[]) { 127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ::testing::InitGoogleTest(&argc, argv); 137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return RUN_ALL_TESTS(); 147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#else 177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/cpp/instance.h" 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/cpp/var.h" 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi_simple/ps_main.h" 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(WIN32) 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <Windows.h> 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#undef PostMessage 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass GTestEventListener : public ::testing::EmptyTestEventListener { 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // TestEventListener overrides. 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnTestStart(const ::testing::TestInfo& test_info) { 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::stringstream msg; 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch msg << "start:" << test_info.test_case_name() << "." << test_info.name(); 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch pp::Instance(PSGetInstanceId()).PostMessage(msg.str()); 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnTestPartResult( 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const ::testing::TestPartResult& test_part_result) { 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (test_part_result.failed()) { 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::stringstream msg; 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch msg << "fail:" << test_part_result.file_name() << "," 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch << test_part_result.line_number() << "," 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch << test_part_result.summary(); 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch pp::Instance(PSGetInstanceId()).PostMessage(msg.str()); 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnTestEnd(const ::testing::TestInfo& test_info) { 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::stringstream msg; 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch msg << "end:" << test_info.test_case_name() << "." << test_info.name() 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch << "," << (test_info.result()->Failed() ? "failed" : "ok"); 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch pp::Instance(PSGetInstanceId()).PostMessage(msg.str()); 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochint example_main(int argc, char* argv[]) { 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ::testing::InitGoogleTest(&argc, argv); 57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ::testing::UnitTest::GetInstance()->listeners() 58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch .Append(new GTestEventListener()); 59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return RUN_ALL_TESTS(); 60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Register the function to call once the Instance Object is initialized. 63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// see: pappi_simple/ps_main.h 64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochPPAPI_SIMPLE_REGISTER_MAIN(example_main); 657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif 67