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" 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/cpp/instance.h" 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/cpp/var.h" 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi_simple/ps_main.h" 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(WIN32) 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <Windows.h> 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#undef PostMessage 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass GTestEventListener : public ::testing::EmptyTestEventListener { 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // TestEventListener overrides. 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnTestStart(const ::testing::TestInfo& test_info) { 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::stringstream msg; 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch msg << "start:" << test_info.test_case_name() << "." << test_info.name(); 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch pp::Instance(PSGetInstanceId()).PostMessage(msg.str()); 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnTestPartResult( 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const ::testing::TestPartResult& test_part_result) { 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (test_part_result.failed()) { 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::stringstream msg; 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch msg << "fail:" << test_part_result.file_name() << "," 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch << test_part_result.line_number() << "," 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch << test_part_result.summary(); 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch pp::Instance(PSGetInstanceId()).PostMessage(msg.str()); 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnTestEnd(const ::testing::TestInfo& test_info) { 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::stringstream msg; 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch msg << "end:" << test_info.test_case_name() << "." << test_info.name() 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch << "," << (test_info.result()->Failed() ? "failed" : "ok"); 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch pp::Instance(PSGetInstanceId()).PostMessage(msg.str()); 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochint example_main(int argc, char* argv[]) { 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci setenv("TERM", "xterm-256color", 0); 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ::testing::InitGoogleTest(&argc, argv); 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (PSGetInstanceId() != 0) { 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ::testing::UnitTest::GetInstance()->listeners() 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci .Append(new GTestEventListener()); 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return RUN_ALL_TESTS(); 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Register the function to call once the Instance Object is initialized. 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// see: pappi_simple/ps_main.h 57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochPPAPI_SIMPLE_REGISTER_MAIN(example_main); 58