• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
15 namespace test_expectations {
16 
17 // A Result is the expectation of a test's behavior.
18 enum 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.
37 bool ResultFromString(const base::StringPiece& result,
38                       Result* out_result) WARN_UNUSED_RESULT;
39 
40 // A Platform stores information about the OS environment.
41 struct 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.
52 bool PlatformFromString(const base::StringPiece& modifier,
53                         Platform* out_platform) WARN_UNUSED_RESULT;
54 
55 // Returns the Platform for the currently running binary.
56 Platform GetCurrentPlatform();
57 
58 // The build configuration.
59 enum 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.
67 bool ConfigurationFromString(const base::StringPiece& modifier,
68     Configuration* out_configuration) WARN_UNUSED_RESULT;
69 
70 // Returns the Configuration for the currently running binary.
71 Configuration GetCurrentConfiguration();
72 
73 // An Expectation is records what the result for a given test name should be on
74 // the specified platforms and configuration.
75 struct 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