"Fossies" - the Fresh Open Source Software Archive

Member "CSSC-1.4.1/unit-tests/googletest/src/gtest-test-part.cc" (28 Feb 2016, 4163 Bytes) of package /linux/privat/CSSC-1.4.1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "gtest-test-part.cc" see the Fossies "Dox" file reference documentation.

    1 // Copyright 2008, Google Inc.
    2 // All rights reserved.
    3 //
    4 // Redistribution and use in source and binary forms, with or without
    5 // modification, are permitted provided that the following conditions are
    6 // met:
    7 //
    8 //     * Redistributions of source code must retain the above copyright
    9 // notice, this list of conditions and the following disclaimer.
   10 //     * Redistributions in binary form must reproduce the above
   11 // copyright notice, this list of conditions and the following disclaimer
   12 // in the documentation and/or other materials provided with the
   13 // distribution.
   14 //     * Neither the name of Google Inc. nor the names of its
   15 // contributors may be used to endorse or promote products derived from
   16 // this software without specific prior written permission.
   17 //
   18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   19 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   20 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   21 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
   22 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   23 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   24 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   25 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   29 //
   30 // Author: mheule@google.com (Markus Heule)
   31 //
   32 // The Google C++ Testing Framework (Google Test)
   33 
   34 #include "gtest/gtest-test-part.h"
   35 
   36 // Indicates that this translation unit is part of Google Test's
   37 // implementation.  It must come before gtest-internal-inl.h is
   38 // included, or there will be a compiler error.  This trick exists to
   39 // prevent the accidental inclusion of gtest-internal-inl.h in the
   40 // user's code.
   41 #define GTEST_IMPLEMENTATION_ 1
   42 #include "src/gtest-internal-inl.h"
   43 #undef GTEST_IMPLEMENTATION_
   44 
   45 namespace testing {
   46 
   47 using internal::GetUnitTestImpl;
   48 
   49 // Gets the summary of the failure message by omitting the stack trace
   50 // in it.
   51 std::string TestPartResult::ExtractSummary(const char* message) {
   52   const char* const stack_trace = strstr(message, internal::kStackTraceMarker);
   53   return stack_trace == NULL ? message :
   54       std::string(message, stack_trace);
   55 }
   56 
   57 // Prints a TestPartResult object.
   58 std::ostream& operator<<(std::ostream& os, const TestPartResult& result) {
   59   return os
   60       << result.file_name() << ":" << result.line_number() << ": "
   61       << (result.type() == TestPartResult::kSuccess ? "Success" :
   62           result.type() == TestPartResult::kFatalFailure ? "Fatal failure" :
   63           "Non-fatal failure") << ":\n"
   64       << result.message() << std::endl;
   65 }
   66 
   67 // Appends a TestPartResult to the array.
   68 void TestPartResultArray::Append(const TestPartResult& result) {
   69   array_.push_back(result);
   70 }
   71 
   72 // Returns the TestPartResult at the given index (0-based).
   73 const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const {
   74   if (index < 0 || index >= size()) {
   75     printf("\nInvalid index (%d) into TestPartResultArray.\n", index);
   76     internal::posix::Abort();
   77   }
   78 
   79   return array_[index];
   80 }
   81 
   82 // Returns the number of TestPartResult objects in the array.
   83 int TestPartResultArray::size() const {
   84   return static_cast<int>(array_.size());
   85 }
   86 
   87 namespace internal {
   88 
   89 HasNewFatalFailureHelper::HasNewFatalFailureHelper()
   90     : has_new_fatal_failure_(false),
   91       original_reporter_(GetUnitTestImpl()->
   92                          GetTestPartResultReporterForCurrentThread()) {
   93   GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(this);
   94 }
   95 
   96 HasNewFatalFailureHelper::~HasNewFatalFailureHelper() {
   97   GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(
   98       original_reporter_);
   99 }
  100 
  101 void HasNewFatalFailureHelper::ReportTestPartResult(
  102     const TestPartResult& result) {
  103   if (result.fatally_failed())
  104     has_new_fatal_failure_ = true;
  105   original_reporter_->ReportTestPartResult(result);
  106 }
  107 
  108 }  // namespace internal
  109 
  110 }  // namespace testing