@@ -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