Hegel 0.11.4
Property-based testing for C++
Loading...
Searching...
No Matches
primitives.h
1#pragma once
2
3#include "hegel/core.h"
4
5namespace hegel::generators {
6
9
15
17 // Concrete IGenerator<T> subclass produced by just(). A constant draws
18 // zero entropy, so it returns the captured value without touching the
19 // engine at all.
20 template <typename T> class JustGenerator : public IGenerator<T> {
21 public:
22 explicit JustGenerator(T value) : value_(std::move(value)) {}
23
24 T do_draw(const TestCase&) const override { return value_; }
25
26 private:
27 T value_;
28 };
30
43 template <typename T> Generator<T> just(T value) {
44 return Generator<T>(new JustGenerator<T>(std::move(value)));
45 }
46
53 inline Generator<std::string> just(const char* value) {
54 return just(std::string(value));
55 }
56
58
59} // namespace hegel::generators
Handle to the currently-executing test case.
Definition test_case.h:40
The base class of all generators.
Definition core.h:67
Hegel generators.
Definition core.h:17
Generator< T > just(T value)
Generate a constant value.
Definition primitives.h:43
Generator< bool > booleans()
Generate random boolean values.
Base interface for generators.
Definition core.h:29