Skip to content

Commit 3e24fff

Browse files
committed
Add unit tests
1 parent 5616626 commit 3e24fff

File tree

1 file changed

+41
-2
lines changed

1 file changed

+41
-2
lines changed

tests/xtd.core.unit_tests/src/xtd/tests/forward_iterable_tests.cpp

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ namespace xtd::tests {
77
class test_class_(forward_iterable_tests) {
88
template<class value_t>
99
requires forward_iterable<value_t>
10-
auto is_forward_iterable(value_t&& value) -> bool {return true;}
10+
[[nodiscard]] static auto is_forward_iterable(value_t&& value) noexcept -> bool {return true;}
11+
1112
template<class value_t>
1213
requires (!forward_iterable<value_t>)
13-
auto is_forward_iterable(value_t&& value) -> bool {return false;}
14+
[[nodiscard]] static auto is_forward_iterable(value_t&& value) noexcept -> bool {return false;}
1415

1516
auto test_method_(with_string_literal) {
1617
assert_that(is_forward_iterable("str")).is().true_();
@@ -24,12 +25,50 @@ namespace xtd::tests {
2425
assert_that(is_forward_iterable("str"_s)).is().true_();
2526
}
2627

28+
auto test_method_(with_version) {
29+
assert_that(is_forward_iterable("1.2.3"_vers)).is().false_();
30+
}
31+
2732
auto test_method_(with_std_vector) {
2833
assert_that(is_forward_iterable(std::vector<int> {})).is().true_();
2934
}
3035

3136
auto test_method_(with_list) {
3237
assert_that(is_forward_iterable(list<int> {})).is().true_();
3338
}
39+
40+
auto test_method_(with_my_not_forward_iterable) {
41+
struct my_not_forward_iterable {};
42+
43+
assert_that(is_forward_iterable(my_not_forward_iterable {})).is().false_();
44+
}
45+
46+
auto test_method_(with_my_forward_iterable) {
47+
struct my_forward_iterable {
48+
auto begin() const {return items.begin();}
49+
auto end() const {return items.end();}
50+
std::vector<int> items;
51+
};
52+
53+
assert_that(is_forward_iterable(my_forward_iterable {})).is().true_();
54+
}
55+
56+
auto test_method_(with_my_broken_end_forward_iterable) {
57+
struct my_broken_end_forward_iterable {
58+
auto begin() const {return items.begin();}
59+
std::vector<int> items;
60+
};
61+
62+
assert_that(is_forward_iterable(my_broken_end_forward_iterable {})).is().false_();
63+
}
64+
65+
auto test_method_(with_my_broken_begin_forward_iterable) {
66+
struct my_broken_begin_forward_iterable {
67+
auto end() const {return items.end();}
68+
std::vector<int> items;
69+
};
70+
71+
assert_that(is_forward_iterable(my_broken_begin_forward_iterable {})).is().false_();
72+
}
3473
};
3574
}

0 commit comments

Comments
 (0)