43 template<
class expected_t,
class collection_t>
56 template<
class expected_t,
class collection_t>
58 for (
auto item : collection)
59 if (
dynamic_cast<expected_t
>(item) ==
nullptr) {
60 fail(
"all items instance of <" + typeof_<expected_t>().full_name() +
">", join_items(collection), message, stack_frame);
63 succeed(message, stack_frame);
67 template<
class expected_t,
class item_t>
69 template<
class expected_t,
class item_t>
71 for (
auto item : collection)
72 if (dynamic_cast<expected_t>(item) == nullptr) {
73 fail(
"all items instance of <" + typeof_<expected_t>().full_name() +
">", join_items(collection), message, stack_frame);
76 succeed(message, stack_frame);
93 template<
class collection_t>
108 template<
class collection_t>
110 for (
auto item : collection)
111 if (item ==
nullptr) {
112 fail(
"all items are not null", join_items(collection), message, stack_frame);
115 succeed(message, stack_frame);
119 template<
class item_t>
121 template<
class item_t>
123 for (
auto item : collection)
124 if (item == nullptr) {
125 fail(
"all items are not null", join_items(collection), message, stack_frame);
128 succeed(message, stack_frame);
144 template<
class collection_t>
158 template<
class collection_t>
160 auto value = *collection.cbegin();
161 std::map<
decltype(value),
int32> counts;
162 for (
auto item : collection) {
163 auto result = counts.emplace(item, 1);
164 if (result.second ==
false)
165 fail(
"all items are unique", join_items(collection), message, stack_frame);
167 succeed(message, stack_frame);
171 template<
class item_t>
173 template<
class item_t>
175 std::map<item_t, int32> counts;
176 for (
auto item : collection) {
177 auto result = counts.emplace(item, 1);
178 if (result.second ==
false)
179 fail(
"all items are unique", join_items(collection), message, stack_frame);
181 succeed(message, stack_frame);
196 template<
class expected_t,
class actual_t>
209 template<
class expected_t,
class actual_t>
211 if (equals(actual.begin(), actual.end(), expected.begin(), expected.end())) succeed(message, stack_frame);
212 else fail(join_items(expected), join_items(actual), message, stack_frame);
216 template<
class item_t>
218 template<
class item_t>
220 if (equals(actual.begin(), actual.end(), expected.begin(), expected.end())) succeed(message, stack_frame);
221 else fail(join_items(expected), join_items(actual), message, stack_frame);
223 template<
class collection_t,
class item_t>
225 template<
class collection_t,
class item_t>
227 if (equals(actual.begin(), actual.end(), expected.begin(), expected.end())) succeed(message, stack_frame);
228 else fail(join_items(expected), join_items(actual), message, stack_frame);
230 template<
class item_t,
class collection_t>
232 template<
class item_t,
class collection_t>
234 if (equals(actual.begin(), actual.end(), expected.begin(), expected.end())) succeed(message, stack_frame);
235 else fail(join_items(expected), join_items(actual), message, stack_frame);
250 template<
class expected_t,
class actual_t>
263 template<
class expected_t,
class actual_t>
265 if (equivalents(expected.begin(), expected.end(), actual.begin(), actual.end())) succeed(message, stack_frame);
266 else fail(
"equivalent " + join_items(expected), join_items(actual), message, stack_frame);
270 template<
class expected_t,
class actual_t>
272 template<
class expected_t,
class actual_t>
274 if (equivalents(expected.begin(), expected.end(), actual.begin(), actual.end())) succeed(message, stack_frame);
275 else fail(
"equivalent " + join_items(expected), join_items(actual), message, stack_frame);
277 template<
class collection_t,
class item_t>
279 template<
class collection_t,
class item_t>
281 if (equivalents(expected.begin(), expected.end(), actual.begin(), actual.end())) succeed(message, stack_frame);
282 else fail(
"equivalent " + join_items(expected), join_items(actual), message, stack_frame);
284 template<
class item_t,
class collection_t>
286 template<
class item_t,
class collection_t>
288 if (equivalents(expected.begin(), expected.end(), actual.begin(), actual.end())) succeed(message, stack_frame);
289 else fail(
"equivalent " + join_items(expected), join_items(actual), message, stack_frame);
304 template<
class expected_t,
class actual_t>
317 template<
class expected_t,
class actual_t>
319 if (!equals(actual.begin(), actual.end(), expected.begin(), expected.end())) succeed(message, stack_frame);
320 else fail(
"not " + join_items(expected), join_items(actual), message, stack_frame);
324 template<
class item_t>
326 template<
class item_t>
328 if (!equals(actual.begin(), actual.end(), expected.begin(), expected.end())) succeed(message, stack_frame);
329 else fail(
"not " + join_items(expected), join_items(actual), message, stack_frame);
331 template<
class collection_t,
class item_t>
333 template<
class collection_t,
class item_t>
335 if (!equals(actual.begin(), actual.end(), expected.begin(), expected.end())) succeed(message, stack_frame);
336 else fail(
"not " + join_items(expected), join_items(actual), message, stack_frame);
338 template<
class item_t,
class collection_t>
340 template<
class item_t,
class collection_t>
342 if (!equals(actual.begin(), actual.end(), expected.begin(), expected.end())) succeed(message, stack_frame);
343 else fail(
"not " + join_items(expected), join_items(actual), message, stack_frame);
358 template<
class expected_t,
class actual_t>
371 template<
class expected_t,
class actual_t>
373 if (!equivalents(expected.begin(), expected.end(), actual.begin(), actual.end())) succeed(message, stack_frame);
374 else fail(
"not equivalent " + join_items(expected), join_items(actual), message, stack_frame);
378 template<
class expected_t,
class actual_t>
380 template<
class expected_t,
class actual_t>
382 if (!equivalents(expected.begin(), expected.end(), actual.begin(), actual.end())) succeed(message, stack_frame);
383 else fail(
"not equivalent " + join_items(expected), join_items(actual), message, stack_frame);
385 template<
class collection_t,
class item_t>
387 template<
class collection_t,
class item_t>
389 if (!equivalents(expected.begin(), expected.end(), actual.begin(), actual.end())) succeed(message, stack_frame);
390 else fail(
"not equivalent " + join_items(expected), join_items(actual), message, stack_frame);
392 template<
class item_t,
class collection_t>
394 template<
class item_t,
class collection_t>
396 if (!equivalents(expected.begin(), expected.end(), actual.begin(), actual.end())) succeed(message, stack_frame);
397 else fail(
"not equivalent " + join_items(expected), join_items(actual), message, stack_frame);
412 template<
class expected_t,
class actual_t>
425 template<
class expected_t,
class actual_t>
427 for (
const auto& item : expected) {
428 if (std::find_if(std::begin(actual), std::end(actual), [&](
const auto& value) {
return value == item;}) == std::end(actual)) {
429 fail(
"contains " + join_items(expected), join_items(actual), message, stack_frame);
433 succeed(message, stack_frame);
437 template<
class item_t>
439 template<
class item_t>
441 for (
const auto& item : expected) {
442 if (std::find_if(std::begin(actual), std::end(actual), [&](
const item_t& value) {
return value == item;}) == std::end(actual)) {
443 fail(
"contains " + join_items(expected), join_items(actual), message, stack_frame);
447 succeed(message, stack_frame);
449 template<
class collection_t,
class item_t>
451 template<
class collection_t,
class item_t>
453 for (
const auto& item : expected) {
454 if (std::find_if(std::begin(actual), std::end(actual), [&](
const item_t& value) {
return value == item;}) == std::end(actual)) {
455 fail(
"contains " + join_items(expected), join_items(actual), message, stack_frame);
459 succeed(message, stack_frame);
461 template<
class item_t,
class collection_t>
463 template<
class item_t,
class collection_t>
465 for (
const auto& item : expected) {
466 if (std::find_if(std::begin(actual), std::end(actual), [&](
const item_t& value) {
return value == item;}) == std::end(actual)) {
467 fail(
"contains " + join_items(expected), join_items(actual), message, stack_frame);
471 succeed(message, stack_frame);
486 template<
class expected_t,
class actual_t>
499 template<
class expected_t,
class actual_t>
501 for (
const auto& item : expected) {
502 if (std::find_if(std::begin(actual), std::end(actual), [&](
const auto& value) {
return value == item;}) == std::end(actual)) {
503 succeed(message, stack_frame);
507 fail(
"not contains " + join_items(expected), join_items(actual), message, stack_frame);
511 template<
class item_t>
513 template<
class item_t>
515 for (
const auto& item : expected) {
516 if (std::find_if(std::begin(actual), std::end(actual), [&](
const item_t& value) {
return value == item;}) == std::end(actual)) {
517 succeed(message, stack_frame);
521 fail(
"not contains " + join_items(expected), join_items(actual), message, stack_frame);
523 template<
class collection_t,
class item_t>
525 template<
class collection_t,
class item_t>
527 for (
const auto& item : expected) {
528 if (std::find_if(std::begin(actual), std::end(actual), [&](
const item_t& value) {
return value == item;}) == std::end(actual)) {
529 succeed(message, stack_frame);
533 fail(
"not contains " + join_items(expected), join_items(actual), message, stack_frame);
535 template<
class item_t,
class collection_t>
537 template<
class item_t,
class collection_t>
539 for (
const auto& item : expected) {
540 if (std::find_if(std::begin(actual), std::end(actual), [&](
const item_t& value) {
return value == item;}) == std::end(actual)) {
541 succeed(message, stack_frame);
545 fail(
"not contains " + join_items(expected), join_items(actual), message, stack_frame);
560 template<
class value_t>
574 template<
class value_t>
576 if (std::empty(value)) succeed(message, stack_frame);
577 else fail(
"<empty>", join_items(value), message, stack_frame);
581 template<
class value_t>
583 template<
class value_t>
585 if (std::empty(value)) succeed(message, stack_frame);
586 else fail(
"<empty>", join_items(value), message, stack_frame);
601 template<
class value_t>
615 template<
class value_t>
617 if (!std::empty(value)) succeed(message, stack_frame);
618 else fail(
"not <empty>",
"<empty>", message, stack_frame);
622 template<
class value_t>
624 template<
class value_t>
626 if (!std::empty(value)) succeed(message, stack_frame);
627 else fail(
"not <empty>",
"<empty>", message, stack_frame);
642 template<
class value_t>
656 template<
class value_t>
658 if (std::is_sorted(value.begin(), value.end())) succeed(message, stack_frame);
659 else fail(
"<ordered>", join_items(value), message, stack_frame);
663 template<
class value_t>
665 template<
class value_t>
667 if (std::is_sorted(value.begin(), value.end())) succeed(message, stack_frame);
668 else fail(
"<ordered>", join_items(value), message, stack_frame);
674 template <
class expected_iterator_t,
class actual_iterator_t>
675 static bool equals(expected_iterator_t expected_begin, expected_iterator_t expected_end, actual_iterator_t actual_begin, actual_iterator_t actual_end) {
676 return std::equal(expected_begin, expected_end, actual_begin, actual_end, [&](
const auto& expected,
const auto& actual) {
return base_assert::equals(expected, actual);});
679 template <
class expected_iterator_t,
class actual_iterator_t>
680 static bool equivalents(expected_iterator_t expected_begin, expected_iterator_t expected_end, actual_iterator_t actual_begin, actual_iterator_t actual_end) {
681 if (std::distance(expected_begin, expected_end) != std::distance(actual_begin, actual_end))
return false;
682 for (
auto iterator = expected_begin; iterator != expected_end; ++iterator)
683 if (std::find_if(actual_begin, actual_end, [&](
const auto& value) {
return base_assert::equals(value, *iterator);}) == actual_end)
return false;
static const basic_string empty_string
Represents the empty basic_string.
Definition basic_string.hpp:116
Provides information about a xtd::diagnostics::stack_frame, which represents a function call on the c...
Definition stack_frame.hpp:48
static stack_frame current(const xtd::diagnostics::source_location &value=xtd::diagnostics::source_location::current()) noexcept
Crates a new xtd::diagnostics::stack_frame object corresponding to the location of the call site.
The base class for assert.
Definition base_assert.hpp:30
The collection_assert class contains a collection of static methods that implement the most collectio...
Definition collection_assert.hpp:23
static void are_equivalent(const expected_t &expected, const actual_t &actual, const std::string &message, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that all collection items are equivalent.
Definition collection_assert.hpp:264
static void is_ordered(const value_t &value, const std::string &message, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that collection is ordered.
Definition collection_assert.hpp:657
static void is_empty(const value_t &value, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that collection contains an item.
Definition collection_assert.hpp:561
static void is_ordered(const value_t &value, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that collection is ordered.
Definition collection_assert.hpp:643
static void are_equal(const expected_t &expected, const actual_t &actual, const std::string &message, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that all collection items are equal.
Definition collection_assert.hpp:210
static void are_equal(const expected_t &expected, const actual_t &actual, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that all collection items are equal.
Definition collection_assert.hpp:197
static void are_not_equivalent(const expected_t &expected, const actual_t &actual, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that all collection items are not equivalent.
Definition collection_assert.hpp:359
static void is_not_empty(const value_t &value, const std::string &message, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that collection or traits does not contain any item.
Definition collection_assert.hpp:616
static void contains(const expected_t &expected, const actual_t &actual, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that collection contains all items.
Definition collection_assert.hpp:413
static void all_items_are_not_null(const collection_t &collection, const std::string &message, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that all collection items are not null.
Definition collection_assert.hpp:109
static void all_items_are_unique(const collection_t &collection, const std::string &message, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that all collection items are unique.
Definition collection_assert.hpp:159
static void all_items_are_instances_of(const collection_t &collection, const std::string &message, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that all collection items are of the type supplied or a derived type.
Definition collection_assert.hpp:57
static void are_not_equal(const expected_t &expected, const actual_t &actual, const std::string &message, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that all collection items are not equal.
Definition collection_assert.hpp:318
static void does_not_contain(const expected_t &expected, const actual_t &actual, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that collection contains all items.
Definition collection_assert.hpp:487
static void is_empty(const value_t &value, const std::string &message, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that collection contains an item.
Definition collection_assert.hpp:575
static void is_not_empty(const value_t &value, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that collection or traits does not contain any item.
Definition collection_assert.hpp:602
static void all_items_are_unique(const collection_t &collection, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that all collection items are unique.
Definition collection_assert.hpp:145
static void all_items_are_not_null(const collection_t &collection, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that all collection items are not null.
Definition collection_assert.hpp:94
static void does_not_contain(const expected_t &expected, const actual_t &actual, const std::string &message, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that collection contains all items.
Definition collection_assert.hpp:500
static void are_not_equal(const expected_t &expected, const actual_t &actual, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that all collection items are not equal.
Definition collection_assert.hpp:305
static void contains(const expected_t &expected, const actual_t &actual, const std::string &message, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that collection contains all items.
Definition collection_assert.hpp:426
static void are_not_equivalent(const expected_t &expected, const actual_t &actual, const std::string &message, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that all collection items are not equivalent.
Definition collection_assert.hpp:372
static void all_items_are_instances_of(const collection_t &collection, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that all collection items are of the type supplied or a derived type.
Definition collection_assert.hpp:44
static void are_equivalent(const expected_t &expected, const actual_t &actual, const xtd::diagnostics::stack_frame &stack_frame=xtd::diagnostics::stack_frame::current())
Asserts that all collection items are equivalent.
Definition collection_assert.hpp:251
#define tunit_export_
Define shared library export.
Definition tunit_export.hpp:13
int32_t int32
Represents a 32-bit signed integer.
Definition int32.hpp:23
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.hpp:10
Contains xtd::tunit::assert class.