1 /*
2  *  Created by Phil on 05/06/2012.
3  *  Copyright 2012 Two Blue Cubes Ltd. All rights reserved.
4  *
5  *  Distributed under the Boost Software License, Version 1.0. (See accompanying
6  *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7  */
8 #ifndef TWOBLUECUBES_CATCH_INTERFACES_CONFIG_H_INCLUDED
9 #define TWOBLUECUBES_CATCH_INTERFACES_CONFIG_H_INCLUDED
10 
11 #include "catch_common.h"
12 #include "catch_option.hpp"
13 
14 #include <chrono>
15 #include <iosfwd>
16 #include <string>
17 #include <vector>
18 #include <memory>
19 
20 namespace Catch {
21 
22     enum class Verbosity {
23         Quiet = 0,
24         Normal,
25         High
26     };
27 
28     struct WarnAbout { enum What {
29         Nothing = 0x00,
30         NoAssertions = 0x01,
31         NoTests = 0x02
32     }; };
33 
34     struct ShowDurations { enum OrNot {
35         DefaultForReporter,
36         Always,
37         Never
38     }; };
39     struct RunTests { enum InWhatOrder {
40         InDeclarationOrder,
41         InLexicographicalOrder,
42         InRandomOrder
43     }; };
44     struct UseColour { enum YesOrNo {
45         Auto,
46         Yes,
47         No
48     }; };
49     struct WaitForKeypress { enum When {
50         Never,
51         BeforeStart = 1,
52         BeforeExit = 2,
53         BeforeStartAndExit = BeforeStart | BeforeExit
54     }; };
55 
56     class TestSpec;
57 
58     struct IConfig : NonCopyable {
59 
60         virtual ~IConfig();
61 
62         virtual bool allowThrows() const = 0;
63         virtual std::ostream& stream() const = 0;
64         virtual std::string name() const = 0;
65         virtual bool includeSuccessfulResults() const = 0;
66         virtual bool shouldDebugBreak() const = 0;
67         virtual bool warnAboutMissingAssertions() const = 0;
68         virtual bool warnAboutNoTests() const = 0;
69         virtual int abortAfter() const = 0;
70         virtual bool showInvisibles() const = 0;
71         virtual ShowDurations::OrNot showDurations() const = 0;
72         virtual double minDuration() const = 0;
73         virtual TestSpec const& testSpec() const = 0;
74         virtual bool hasTestFilters() const = 0;
75         virtual std::vector<std::string> const& getTestsOrTags() const = 0;
76         virtual RunTests::InWhatOrder runOrder() const = 0;
77         virtual unsigned int rngSeed() const = 0;
78         virtual UseColour::YesOrNo useColour() const = 0;
79         virtual std::vector<std::string> const& getSectionsToRun() const = 0;
80         virtual Verbosity verbosity() const = 0;
81 
82         virtual bool benchmarkNoAnalysis() const = 0;
83         virtual int benchmarkSamples() const = 0;
84         virtual double benchmarkConfidenceInterval() const = 0;
85         virtual unsigned int benchmarkResamples() const = 0;
86         virtual std::chrono::milliseconds benchmarkWarmupTime() const = 0;
87     };
88 
89     using IConfigPtr = std::shared_ptr<IConfig const>;
90 }
91 
92 #endif // TWOBLUECUBES_CATCH_INTERFACES_CONFIG_H_INCLUDED
93