45namespace sequoia::testing
48 template<test_mode Mode, pseudoregular T,
class U>
49 requires checkable_against_for_semantics<Mode, T, U>
50 void check_semantics(std::string description,
54 optional_ref<const U> movedFromPostConstruction,
55 optional_ref<const U> movedFromPostAssignment)
57 sentinel<Mode> sentry{logger, add_type_info<T>(std::move(description)).append(
"\n")};
58 impl::check_semantics(logger,
62 movedFromPostConstruction,
63 movedFromPostAssignment,
72 template<test_mode Mode, pseudoregular T,
class U,
class V>
73 requires equivalence_checkable_for_semantics<Mode, T, U> && checkable_against_for_semantics<Mode, T, V>
74 void check_semantics(std::string description,
80 optional_ref<const V> movedFromPostConstruction,
81 optional_ref<const V> movedFromPostAssignment)
83 sentinel<Mode> sentry{logger, add_type_info<T>(std::move(description)).append(
"\n")};
85 impl::check_best_equivalence(logger, x, y, xEquivalent, yEquivalent);
86 impl::check_semantics(logger,
90 movedFromPostConstruction,
91 movedFromPostAssignment,
96 template<test_mode Mode, pseudoregular T,
class U>
97 requires std::totally_ordered<T> && checkable_against_for_semantics<Mode, T, U>
98 void check_semantics(std::string description,
102 optional_ref<const U> movedFromPostConstruction,
103 optional_ref<const U> movedFromPostAssignment,
104 std::weak_ordering order)
106 sentinel<Mode> sentry{logger, add_type_info<T>(std::move(description)).append(
"\n")};
107 impl::check_semantics(logger,
111 movedFromPostConstruction,
112 movedFromPostAssignment,
121 template<test_mode Mode, pseudoregular T,
class U,
class V>
122 requires std::totally_ordered<T> && equivalence_checkable_for_semantics<Mode, T, U> && checkable_against_for_semantics<Mode, T, V>
123 void check_semantics(std::string description,
127 const U& xEquivalent,
128 const U& yEquivalent,
129 optional_ref<const V> movedFromPostConstruction,
130 optional_ref<const V> movedFromPostAssignment,
131 std::weak_ordering order)
133 sentinel<Mode> sentry{logger, add_type_info<T>(std::move(description)).append(
"\n")};
135 impl::check_best_equivalence(logger, x, y, xEquivalent, yEquivalent);
136 impl::check_semantics(logger,
140 movedFromPostConstruction,
141 movedFromPostAssignment,
146 template<test_mode Mode, pseudoregular T,
class U, std::invocable<T&> Mutator>
147 requires checkable_against_for_semantics<Mode, T, U>
148 void check_semantics(std::string description,
152 optional_ref<const U> movedFromPostConstruction,
153 optional_ref<const U> movedFromPostAssignment,
156 sentinel<Mode> sentry{logger, add_type_info<T>(std::move(description)).append(
"\n")};
157 impl::check_semantics(logger,
161 movedFromPostConstruction,
162 movedFromPostAssignment,
171 template<test_mode Mode, pseudoregular T,
class U,
class V, std::invocable<T&> Mutator>
172 requires equivalence_checkable_for_semantics<Mode, T, U> && checkable_against_for_semantics<Mode, T, V>
173 void check_semantics(std::string description,
177 const U& xEquivalent,
178 const U& yEquivalent,
179 optional_ref<const V> movedFromPostConstruction,
180 optional_ref<const V> movedFromPostAssignment,
183 sentinel<Mode> sentry{logger, add_type_info<T>(std::move(description)).append(
"\n")};
185 impl::check_best_equivalence(logger, x, y, xEquivalent, yEquivalent);
186 impl::check_semantics(logger,
190 movedFromPostConstruction,
191 movedFromPostAssignment,
196 template<test_mode Mode, pseudoregular T,
class U, std::invocable<T&> Mutator>
197 requires std::totally_ordered<T> && checkable_against_for_semantics<Mode, T, U>
198 void check_semantics(std::string description,
202 optional_ref<const U> movedFromPostConstruction,
203 optional_ref<const U> movedFromPostAssignment,
204 std::weak_ordering order,
207 sentinel<Mode> sentry{logger, add_type_info<T>(std::move(description)).append(
"\n")};
208 impl::check_semantics(logger,
212 movedFromPostConstruction,
213 movedFromPostAssignment,
222 template<test_mode Mode, pseudoregular T,
class U,
class V, std::invocable<T&> Mutator>
223 requires std::totally_ordered<T> && equivalence_checkable_for_semantics<Mode, T, U> && checkable_against_for_semantics<Mode, T, V>
224 void check_semantics(std::string description,
228 const U& xEquivalent,
229 const U& yEquivalent,
230 optional_ref<const V> movedFromPostConstruction,
231 optional_ref<const V> movedFromPostAssignment,
232 std::weak_ordering order,
235 sentinel<Mode> sentry{logger, add_type_info<T>(std::move(description)).append(
"\n")};
237 impl::check_best_equivalence(logger, x, y, xEquivalent, yEquivalent);
238 impl::check_semantics(logger,
242 movedFromPostConstruction,
243 movedFromPostAssignment,
Free functions for performing checks, together with the 'checker' class template which wraps them.
Implementation details for checking regular semantics.
Definition: TestLogger.hpp:277
Definition: TestLogger.hpp:183
Definition: SemanticsCheckersDetails.hpp:150
Definition: SemanticsCheckersDetails.hpp:116