Hegel 0.3.5
Property-based testing for C++
Loading...
Searching...
No Matches
settings.h
1#pragma once
2
3#include <cstdint>
4#include <optional>
5#include <string>
6#include <vector>
7
8namespace hegel {
18
24 inline const char* verbosity_to_string(Verbosity v) {
25 switch (v) {
27 return "quiet";
29 return "verbose";
31 return "debug";
33 default:
34 return "normal";
35 }
36 }
37
47
49 inline const char* health_check_to_string(HealthCheck c) {
50 switch (c) {
52 return "filter_too_much";
54 return "too_slow";
56 return "test_cases_too_large";
58 return "large_initial_test_case";
59 }
60 return "";
61 }
63
73
77 class Database {
78 public:
80 enum class Kind {
85 };
86
89 static Database unset() { return {Kind::Unset, {}}; }
90
93 static Database disabled() { return {Kind::Disabled, {}}; }
94
98 static Database from_path(std::string path) {
99 return {Kind::Path, std::move(path)};
100 }
101
103 Kind kind() const { return kind_; }
104 const std::string& path() const { return path_; }
106
107 private:
108 Database(Kind k, std::string p) : kind_(k), path_(std::move(p)) {}
109 Kind kind_;
110 std::string path_;
111 };
112
116 struct Settings {
118 std::optional<uint64_t> test_cases;
119
122
124 std::optional<uint64_t> seed;
125
128 bool derandomize = false;
129
133
135 std::vector<HealthCheck> suppress_health_check;
136 };
137} // namespace hegel
Configure the Hegel database.
Definition settings.h:77
static Database disabled()
Definition settings.h:93
static Database from_path(std::string path)
Definition settings.h:98
Kind
The configuration of the database. See the methods below.
Definition settings.h:80
@ Path
Use the given directory as the database.
Definition settings.h:84
@ Disabled
Disable the database.
Definition settings.h:83
@ Unset
Definition settings.h:81
static Database unset()
Definition settings.h:89
Main namespace.
Definition core.h:16
const char * verbosity_to_string(Verbosity v)
Convert Verbosity enum to command-line string.
Definition settings.h:24
HealthCheck
Health checks.
Definition settings.h:41
@ TestCasesTooLarge
Generated test cases are too large.
Definition settings.h:44
@ TooSlow
Test cases are running too slowly.
Definition settings.h:43
@ FilterTooMuch
Test filters out too many generated examples.
Definition settings.h:42
@ LargeInitialTestCase
First generated test case is unusually large.
Definition settings.h:45
std::vector< HealthCheck > all_health_checks()
All health checks, suitable for full suppression.
Definition settings.h:68
Verbosity
Verbosity levels.
Definition settings.h:12
@ Quiet
Minimal output (used by TUI).
Definition settings.h:13
@ Normal
Default - standard test output.
Definition settings.h:14
@ Debug
Maximum verbosity + request/response logging.
Definition settings.h:16
@ Verbose
More detailed output.
Definition settings.h:15
Configuration options for hegel::test().
Definition settings.h:116
bool derandomize
Definition settings.h:128
std::optional< uint64_t > seed
Explicit seed for the test.
Definition settings.h:124
std::optional< uint64_t > test_cases
Number of test cases to run. Defaults to 100.
Definition settings.h:118
Verbosity verbosity
Verbosity level. Defaults to Verbosity::Normal.
Definition settings.h:121
Database database
Definition settings.h:132
std::vector< HealthCheck > suppress_health_check
Health checks to suppress for this test.
Definition settings.h:135