1// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef BASE_TEST_EXPECTATIONS_EXPECTATION_H_ 6#define BASE_TEST_EXPECTATIONS_EXPECTATION_H_ 7 8#include <string> 9#include <vector> 10 11#include "base/base_export.h" 12#include "base/compiler_specific.h" 13#include "base/strings/string_piece.h" 14 15namespace test_expectations { 16 17// A Result is the expectation of a test's behavior. 18enum Result { 19 // The test has a failing assertion. 20 RESULT_FAILURE, 21 22 // The test does not complete within the test runner's alloted duration. 23 RESULT_TIMEOUT, 24 25 // The test crashes during the course of its execution. 26 RESULT_CRASH, 27 28 // The test should not be run ever. 29 RESULT_SKIP, 30 31 // The test passes, used to override a more general expectation. 32 RESULT_PASS, 33}; 34 35// Converts a text string form of a |result| to its enum value, written to 36// |out_result|. Returns true on success and false on error. 37bool ResultFromString(const base::StringPiece& result, 38 Result* out_result) WARN_UNUSED_RESULT; 39 40// A Platform stores information about the OS environment. 41struct Platform { 42 // The name of the platform. E.g., "Win", or "Mac". 43 std::string name; 44 45 // The variant of the platform, either an OS version like "XP" or "10.8", or 46 // "Device" or "Simulator" in the case of mobile. 47 std::string variant; 48}; 49 50// Converts a text string |modifier| to a Platform struct, written to 51// |out_platform|. Returns true on success and false on failure. 52bool PlatformFromString(const base::StringPiece& modifier, 53 Platform* out_platform) WARN_UNUSED_RESULT; 54 55// Returns the Platform for the currently running binary. 56Platform GetCurrentPlatform(); 57 58// The build configuration. 59enum Configuration { 60 CONFIGURATION_UNSPECIFIED, 61 CONFIGURATION_DEBUG, 62 CONFIGURATION_RELEASE, 63}; 64 65// Converts the |modifier| to a Configuration constant, writing the value to 66// |out_configuration|. Returns true on success or false on failure. 67bool ConfigurationFromString(const base::StringPiece& modifier, 68 Configuration* out_configuration) WARN_UNUSED_RESULT; 69 70// Returns the Configuration for the currently running binary. 71Configuration GetCurrentConfiguration(); 72 73// An Expectation is records what the result for a given test name should be on 74// the specified platforms and configuration. 75struct Expectation { 76 Expectation(); 77 ~Expectation(); 78 79 // The name of the test, like FooBarTest.BarIsBaz. 80 std::string test_name; 81 82 // The set of platforms for which this expectation is applicable. 83 std::vector<Platform> platforms; 84 85 // The build configuration. 86 Configuration configuration; 87 88 // The expected result of this test. 89 Result result; 90}; 91 92} // namespace test_expectations 93 94#endif // BASE_TEST_EXPECTATIONS_EXPECTATION_H_ 95