-
Notifications
You must be signed in to change notification settings - Fork 189
Expand file tree
/
Copy pathConfigurationTests.cpp
More file actions
103 lines (85 loc) · 3.56 KB
/
Copy pathConfigurationTests.cpp
File metadata and controls
103 lines (85 loc) · 3.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <catch2/catch.hpp>
#include <rapidcheck/catch.h>
#include "util/TemplateProps.h"
#include "util/Generators.h"
#include "rapidcheck/detail/Configuration.h"
using namespace rc;
using namespace rc::detail;
TEST_CASE("Configuration") {
SECTION("operator==/operator!=") {
propConformsToEquals<Configuration>();
PROP_REPLACE_MEMBER_INEQUAL(Configuration, testParams);
PROP_REPLACE_MEMBER_INEQUAL(Configuration, verboseProgress);
PROP_REPLACE_MEMBER_INEQUAL(Configuration, verboseShrinking);
}
SECTION("operator<<") { propConformsToOutputOperator<Configuration>(); }
}
TEST_CASE("configFromString") {
prop("emtpy string yields default config",
[](const Configuration &config) {
RC_ASSERT(configFromString("", config) == config);
});
prop("ignores unknown keys",
[](const Configuration &config) {
RC_ASSERT(configFromString("foo=bar stuff=things", config) == config);
});
SECTION("throws on invalid seed") {
REQUIRE_THROWS_AS(configFromString("seed=foobar"), ConfigurationException);
REQUIRE_THROWS_AS(configFromString("seed=--2"), ConfigurationException);
}
SECTION("throws on invalid maxSuccess") {
REQUIRE_THROWS_AS(configFromString("max_success=foobar"),
ConfigurationException);
REQUIRE_THROWS_AS(configFromString("max_success=-2"),
ConfigurationException);
}
SECTION("throws on invalid maxSize") {
REQUIRE_THROWS_AS(configFromString("max_size=foobar"),
ConfigurationException);
REQUIRE_THROWS_AS(configFromString("max_size=-2"), ConfigurationException);
}
SECTION("throws on invalid maxDiscardRatio") {
REQUIRE_THROWS_AS(configFromString("max_discard_ratio=foobar"),
ConfigurationException);
REQUIRE_THROWS_AS(configFromString("max_discard_ratio=-2"),
ConfigurationException);
}
SECTION("throws on invalid noshrink setting") {
REQUIRE_THROWS_AS(configFromString("noshrink=foobar"),
ConfigurationException);
REQUIRE_THROWS_AS(configFromString("noshrink=2"), ConfigurationException);
}
SECTION("throws on invalid verbose progress setting") {
REQUIRE_THROWS_AS(configFromString("verbose_progress=foo"),
ConfigurationException);
REQUIRE_THROWS_AS(configFromString("verbose_progress=2"),
ConfigurationException);
}
SECTION("throws on invalid verbose shrinking setting") {
REQUIRE_THROWS_AS(configFromString("verbose_shrinking=foo"),
ConfigurationException);
REQUIRE_THROWS_AS(configFromString("verbose_shrinking=2"),
ConfigurationException);
}
SECTION("throws on invalid map format") {
REQUIRE_THROWS_AS(configFromString("'max_discard_ratio=foobar"),
ConfigurationException);
REQUIRE_THROWS_AS(configFromString("max_discard_ratio=\"-2"),
ConfigurationException);
}
prop("configFromString(configToString(x)) == x",
[](const Configuration &config) {
RC_ASSERT(configFromString(configToString(config)) == config);
});
}
TEST_CASE("configToMinimalString") {
prop("is always shorter or same size as configFromString",
[](const Configuration &config) {
RC_ASSERT(configToMinimalString(config).size() <=
configToString(config).size());
});
prop("configFromString(configToMinimalString(x)) == x",
[](const Configuration &config) {
RC_ASSERT(configFromString(configToMinimalString(config)) == config);
});
}