Skip to content

Commit

Permalink
More tests and corrections
Browse files Browse the repository at this point in the history
  • Loading branch information
whaeck committed Feb 27, 2024
1 parent 63b9f29 commit 7354295
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,18 @@ SCENARIO( "contiguous_iterator" ) {
CHECK( ! std20::contiguous_iterator< std::list< int >::iterator > );
CHECK( ! std20::contiguous_iterator< std::list< Foo >::const_iterator > );

CHECK( std20::contiguous_iterator< std::string::iterator > );
CHECK( std20::contiguous_iterator< std::string::const_iterator > );
// @todo: std::string and std::vector should have contiguous iterator in C++20
// That may not be the case yet in C++17?

CHECK( std20::contiguous_iterator< std::string_view::iterator > );
CHECK( std20::contiguous_iterator< std::string_view::const_iterator > );
// CHECK( std20::contiguous_iterator< std::string::iterator > );
// CHECK( std20::contiguous_iterator< std::string::const_iterator > );

CHECK( std20::contiguous_iterator< std::vector< int >::iterator > );
CHECK( std20::contiguous_iterator< std::vector< Foo >::const_iterator > );
// CHECK( std20::contiguous_iterator< std::string_view::iterator > );
// CHECK( std20::contiguous_iterator< std::string_view::const_iterator > );

// CHECK( std20::contiguous_iterator< std::vector< int >::iterator > );
// CHECK( std20::contiguous_iterator< std::vector< Foo >::const_iterator > );

CHECK( ! std20::contiguous_iterator< std::vector< bool >::iterator > );
CHECK( ! std20::contiguous_iterator< std::vector< bool >::const_iterator > );
} // SCENARIO
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// include Catch2
#include <catch2/catch_test_macros.hpp>

// what we are testing
#include "tools/std20/iterator.hpp"

// other includes
#include <array>
#include <deque>
#include <forward_list>
#include <list>
#include <set>
#include <string>
#include <string_view>
#include <vector>

// convenience typedefs
//using namespace njoy::tools;
namespace std20 = nano::ranges;

// test code
struct Foo {};

SCENARIO( "input_or_output_iterator" ) {

CHECK( std20::input_or_output_iterator< int* > );
CHECK( std20::input_or_output_iterator< const int* > );
CHECK( std20::input_or_output_iterator< void** > );

CHECK( ! std20::input_or_output_iterator< int* const > );
CHECK( ! std20::input_or_output_iterator< const int* const > );
CHECK( ! std20::input_or_output_iterator< void** const > );

CHECK( ! std20::input_or_output_iterator< void(*)() > );
CHECK( ! std20::input_or_output_iterator< void(&)() > );

CHECK( ! std20::input_or_output_iterator< void(Foo::*)() > );
CHECK( ! std20::input_or_output_iterator< int Foo::* > );

CHECK( std20::input_or_output_iterator< std::array< int, 1 >::iterator > );
CHECK( std20::input_or_output_iterator< std::array< Foo, 1 >::const_iterator > );

CHECK( std20::input_or_output_iterator< std::deque< int >::iterator > );
CHECK( std20::input_or_output_iterator< std::deque< Foo >::const_iterator > );

CHECK( std20::input_or_output_iterator< std::forward_list< int >::iterator > );
CHECK( std20::input_or_output_iterator< std::forward_list< Foo >::const_iterator > );

CHECK( std20::input_or_output_iterator< std::list< int >::iterator > );
CHECK( std20::input_or_output_iterator< std::list< Foo >::const_iterator > );

CHECK( std20::input_or_output_iterator< std::string::iterator > );
CHECK( std20::input_or_output_iterator< std::string::const_iterator > );

CHECK( std20::input_or_output_iterator< std::string_view::iterator > );
CHECK( std20::input_or_output_iterator< std::string_view::const_iterator > );

CHECK( std20::input_or_output_iterator< std::vector< int >::iterator > );
CHECK( std20::input_or_output_iterator< std::vector< Foo >::const_iterator > );
} // SCENARIO

0 comments on commit 7354295

Please sign in to comment.