|  | // Copyright 2013 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "base/test/launcher/test_result.h" | 
|  |  | 
|  | #include <stddef.h> | 
|  |  | 
|  | #include "base/logging.h" | 
|  |  | 
|  | namespace base { | 
|  |  | 
|  | TestResultPart::TestResultPart() = default; | 
|  | TestResultPart::~TestResultPart() = default; | 
|  |  | 
|  | TestResultPart::TestResultPart(const TestResultPart& other) = default; | 
|  | TestResultPart::TestResultPart(TestResultPart&& other) = default; | 
|  | TestResultPart& TestResultPart::operator=(const TestResultPart& other) = | 
|  | default; | 
|  | TestResultPart& TestResultPart::operator=(TestResultPart&& other) = default; | 
|  |  | 
|  | // static | 
|  | bool TestResultPart::TypeFromString(const std::string& str, Type* type) { | 
|  | if (str == "success") | 
|  | *type = kSuccess; | 
|  | else if (str == "failure") | 
|  | *type = kNonFatalFailure; | 
|  | else if (str == "fatal_failure") | 
|  | *type = kFatalFailure; | 
|  | else | 
|  | return false; | 
|  | return true; | 
|  | } | 
|  |  | 
|  | std::string TestResultPart::TypeAsString() const { | 
|  | switch (type) { | 
|  | case kSuccess: | 
|  | return "success"; | 
|  | case kNonFatalFailure: | 
|  | return "failure"; | 
|  | case kFatalFailure: | 
|  | return "fatal_failure"; | 
|  | default: | 
|  | NOTREACHED(); | 
|  | } | 
|  | return "unknown"; | 
|  | } | 
|  |  | 
|  | TestResult::TestResult() : status(TEST_UNKNOWN) { | 
|  | } | 
|  |  | 
|  | TestResult::~TestResult() = default; | 
|  |  | 
|  | TestResult::TestResult(const TestResult& other) = default; | 
|  | TestResult::TestResult(TestResult&& other) = default; | 
|  | TestResult& TestResult::operator=(const TestResult& other) = default; | 
|  | TestResult& TestResult::operator=(TestResult&& other) = default; | 
|  |  | 
|  | std::string TestResult::StatusAsString() const { | 
|  | switch (status) { | 
|  | case TEST_UNKNOWN: | 
|  | return "UNKNOWN"; | 
|  | case TEST_SUCCESS: | 
|  | return "SUCCESS"; | 
|  | case TEST_FAILURE: | 
|  | return "FAILURE"; | 
|  | case TEST_FAILURE_ON_EXIT: | 
|  | return "FAILURE_ON_EXIT"; | 
|  | case TEST_CRASH: | 
|  | return "CRASH"; | 
|  | case TEST_TIMEOUT: | 
|  | return "TIMEOUT"; | 
|  | case TEST_SKIPPED: | 
|  | return "SKIPPED"; | 
|  | case TEST_EXCESSIVE_OUTPUT: | 
|  | return "EXCESSIVE_OUTPUT"; | 
|  | // Rely on compiler warnings to ensure all possible values are handled. | 
|  | } | 
|  |  | 
|  | NOTREACHED(); | 
|  | return std::string(); | 
|  | } | 
|  |  | 
|  | std::string TestResult::GetTestName() const { | 
|  | size_t dot_pos = full_name.find('.'); | 
|  | CHECK_NE(dot_pos, std::string::npos); | 
|  | return full_name.substr(dot_pos + 1); | 
|  | } | 
|  |  | 
|  | std::string TestResult::GetTestCaseName() const { | 
|  | size_t dot_pos = full_name.find('.'); | 
|  | CHECK_NE(dot_pos, std::string::npos); | 
|  | return full_name.substr(0, dot_pos); | 
|  | } | 
|  |  | 
|  | }  // namespace base |