jaulib v1.3.6
Jau Support Library (C++, Java, ..)
Loading...
Searching...
No Matches
test_cow_iterator_01.cpp File Reference
#include <cassert>
#include <cstring>
#include <vector>
#include <type_traits>
#include <jau/test/catch2_ext.hpp>
#include <jau/basic_algos.hpp>
#include <jau/basic_types.hpp>
#include <jau/darray.hpp>
#include <jau/cow_darray.hpp>
#include <jau/cow_vector.hpp>
#include <jau/counting_allocator.hpp>
#include <jau/callocator.hpp>
#include <jau/counting_callocator.hpp>
Include dependency graph for test_cow_iterator_01.cpp:

Go to the source code of this file.

Typedefs

typedef jau::cow_darray< uint64_t, jau::nsize_t, counting_callocator< uint64_t > > jau_cow_darray_uint64_t
 
typedef jau::cow_vector< uint64_t, counting_allocator< uint64_t > > jau_cow_vector_uint64_t
 
typedef jau::darray< uint64_t, jau::nsize_t, counting_callocator< uint64_t > > jau_darray_uint64_t
 
typedef std::vector< uint64_t, counting_allocator< uint64_t > > std_vector_uint64_t
 

Functions

template<class T>
static void fill_list (T &data, const std::size_t size)
 
template<class Iter>
static void print_iterator_info (const std::string &typedefname, typename std::enable_if_t< !std::is_class_v< Iter > > *=nullptr)
 
template<class Iter>
static void print_iterator_info (const std::string &typedefname, typename std::enable_if_t< std::is_class_v< Iter > > *=nullptr)
 
template<class T>
static void print_list (const std::string &pre, T &data)
 
template<class T>
static void print_list (T &data)
 
template<class T>
static bool test_00_inspect_iterator_types (const std::string &type_id)
 
template<class T>
static bool test_01_cow_iterator_properties (const std::string &type_id)
 
template<class T>
static bool test_01_validate_iterator_ops (const std::string &type_id)
 
 TEST_CASE ("Iterator Test 00 - Inspect all Iterator Types", "[datatype][std][vector][darray][cow_vector][cow_darray]")
 
 TEST_CASE ("JAU COW_DArray Test 21 - Validate Iterator Operations", "[datatype][jau][cow_darray]")
 
 TEST_CASE ("JAU COW_Vector Test 11 - Validate Iterator Operations", "[datatype][jau][cow_vector]")
 
 TEST_CASE ("JAU DArray Test 02 - Validate Iterator and Index Operations", "[datatype][jau][darray]")
 
 TEST_CASE ("STD Vector Test 01 - Validate Iterator and Index Operations", "[datatype][std][vector]")
 
template<class T>
static bool test_citer_type_ops (const std::string &type_id, std::enable_if_t< !is_cow_type< T >::value, bool >=true)
 
template<class T>
static bool test_citer_type_ops (const std::string &type_id, std::enable_if_t< is_cow_type< T >::value, bool >=true)
 
template<class T, typename iterator_type1, typename iterator_type2>
static void test_iterator_arithmetic (const typename T::size_type size, iterator_type1 &begin, iterator_type2 &end)
 
template<class T, typename iterator_type1, typename iterator_type2, typename iterator_type3, typename iterator_type4>
static void test_iterator_compare (const typename T::size_type size, iterator_type1 &begin, iterator_type2 &end, iterator_type3 &citer1, iterator_type4 &citer2, const typename T::difference_type citer1_idx, const typename T::difference_type citer2_idx)
 
template<class T, typename iterator_type1, typename iterator_type2>
static void test_iterator_dereference (const typename T::size_type size, iterator_type1 &begin, iterator_type2 &end)
 
template<class T, typename iterator_type1, typename iterator_type2>
static void test_iterator_equal (iterator_type1 &citer1, iterator_type2 &citer2)
 
template<class T, typename iterator_type1, typename iterator_type2>
static void test_iterator_notequal (iterator_type1 &citer1, iterator_type2 &citer2)
 
template<class T>
static bool test_mutable_iterator_ops (const std::string &type_id, std::enable_if_t< !is_cow_type< T >::value, bool >=true)
 
template<class T>
static bool test_mutable_iterator_ops (const std::string &type_id, std::enable_if_t< is_cow_type< T >::value, bool >=true)
 

Typedef Documentation

◆ std_vector_uint64_t

typedef std::vector<uint64_t, counting_allocator<uint64_t> > std_vector_uint64_t

Definition at line 49 of file test_cow_iterator_01.cpp.

◆ jau_darray_uint64_t

Definition at line 50 of file test_cow_iterator_01.cpp.

◆ jau_cow_vector_uint64_t

Definition at line 51 of file test_cow_iterator_01.cpp.

◆ jau_cow_darray_uint64_t

Definition at line 52 of file test_cow_iterator_01.cpp.

Function Documentation

◆ print_list() [1/2]

template<class T>
static void print_list ( T & data)
static
Examples
test_cow_iterator_01.cpp.

Definition at line 60 of file test_cow_iterator_01.cpp.

Here is the caller graph for this function:

◆ print_list() [2/2]

template<class T>
static void print_list ( const std::string & pre,
T & data )
static

Definition at line 69 of file test_cow_iterator_01.cpp.

◆ fill_list()

template<class T>
static void fill_list ( T & data,
const std::size_t size )
static
Examples
test_cow_iterator_01.cpp.

Definition at line 78 of file test_cow_iterator_01.cpp.

Here is the caller graph for this function:

◆ print_iterator_info() [1/2]

template<class Iter>
static void print_iterator_info ( const std::string & typedefname,
typename std::enable_if_t< std::is_class_v< Iter > > * = nullptr )
static
Examples
test_cow_iterator_01.cpp.

Definition at line 91 of file test_cow_iterator_01.cpp.

Here is the caller graph for this function:

◆ print_iterator_info() [2/2]

template<class Iter>
static void print_iterator_info ( const std::string & typedefname,
typename std::enable_if_t< !std::is_class_v< Iter > > * = nullptr )
static

Definition at line 105 of file test_cow_iterator_01.cpp.

◆ test_00_inspect_iterator_types()

template<class T>
static bool test_00_inspect_iterator_types ( const std::string & type_id)
static
Examples
test_cow_iterator_01.cpp.

Definition at line 114 of file test_cow_iterator_01.cpp.

Here is the caller graph for this function:

◆ test_iterator_equal()

template<class T, typename iterator_type1, typename iterator_type2>
static void test_iterator_equal ( iterator_type1 & citer1,
iterator_type2 & citer2 )
static
Examples
test_cow_iterator_01.cpp.

Definition at line 138 of file test_cow_iterator_01.cpp.

Here is the caller graph for this function:

◆ test_iterator_notequal()

template<class T, typename iterator_type1, typename iterator_type2>
static void test_iterator_notequal ( iterator_type1 & citer1,
iterator_type2 & citer2 )
static
Examples
test_cow_iterator_01.cpp.

Definition at line 153 of file test_cow_iterator_01.cpp.

Here is the caller graph for this function:

◆ test_iterator_compare()

template<class T, typename iterator_type1, typename iterator_type2, typename iterator_type3, typename iterator_type4>
static void test_iterator_compare ( const typename T::size_type size,
iterator_type1 & begin,
iterator_type2 & end,
iterator_type3 & citer1,
iterator_type4 & citer2,
const typename T::difference_type citer1_idx,
const typename T::difference_type citer2_idx )
static
Examples
test_cow_iterator_01.cpp.

Definition at line 170 of file test_cow_iterator_01.cpp.

Here is the caller graph for this function:

◆ test_iterator_dereference()

template<class T, typename iterator_type1, typename iterator_type2>
static void test_iterator_dereference ( const typename T::size_type size,
iterator_type1 & begin,
iterator_type2 & end )
static
Examples
test_cow_iterator_01.cpp.

Definition at line 237 of file test_cow_iterator_01.cpp.

Here is the caller graph for this function:

◆ test_iterator_arithmetic()

template<class T, typename iterator_type1, typename iterator_type2>
static void test_iterator_arithmetic ( const typename T::size_type size,
iterator_type1 & begin,
iterator_type2 & end )
static
Examples
test_cow_iterator_01.cpp.

Definition at line 289 of file test_cow_iterator_01.cpp.

Here is the caller graph for this function:

◆ test_citer_type_ops() [1/2]

template<class T>
static bool test_citer_type_ops ( const std::string & type_id,
std::enable_if_t< is_cow_type< T >::value, bool > = true )
static
Examples
test_cow_iterator_01.cpp.

Definition at line 383 of file test_cow_iterator_01.cpp.

Here is the caller graph for this function:

◆ test_citer_type_ops() [2/2]

template<class T>
static bool test_citer_type_ops ( const std::string & type_id,
std::enable_if_t< !is_cow_type< T >::value, bool > = true )
static

Definition at line 423 of file test_cow_iterator_01.cpp.

◆ test_mutable_iterator_ops() [1/2]

template<class T>
static bool test_mutable_iterator_ops ( const std::string & type_id,
std::enable_if_t< is_cow_type< T >::value, bool > = true )
static
Examples
test_cow_iterator_01.cpp.

Definition at line 459 of file test_cow_iterator_01.cpp.

Here is the caller graph for this function:

◆ test_mutable_iterator_ops() [2/2]

template<class T>
static bool test_mutable_iterator_ops ( const std::string & type_id,
std::enable_if_t< !is_cow_type< T >::value, bool > = true )
static

Definition at line 794 of file test_cow_iterator_01.cpp.

◆ test_01_validate_iterator_ops()

template<class T>
static bool test_01_validate_iterator_ops ( const std::string & type_id)
static
Examples
test_cow_iterator_01.cpp.

Definition at line 1102 of file test_cow_iterator_01.cpp.

Here is the caller graph for this function:

◆ test_01_cow_iterator_properties()

template<class T>
static bool test_01_cow_iterator_properties ( const std::string & type_id)
static
Examples
test_cow_iterator_01.cpp.

Definition at line 1112 of file test_cow_iterator_01.cpp.

Here is the caller graph for this function:

◆ TEST_CASE() [1/5]

TEST_CASE ( "Iterator Test 00 - Inspect all Iterator Types" ,
"" [datatype][std][vector][darray][cow_vector][cow_darray] )

Definition at line 1253 of file test_cow_iterator_01.cpp.

◆ TEST_CASE() [2/5]

TEST_CASE ( "STD Vector Test 01 - Validate Iterator and Index Operations" ,
"" [datatype][std][vector] )

Definition at line 1260 of file test_cow_iterator_01.cpp.

◆ TEST_CASE() [3/5]

TEST_CASE ( "JAU DArray Test 02 - Validate Iterator and Index Operations" ,
"" [datatype][jau][darray] )

Definition at line 1264 of file test_cow_iterator_01.cpp.

◆ TEST_CASE() [4/5]

TEST_CASE ( "JAU COW_Vector Test 11 - Validate Iterator Operations" ,
"" [datatype][jau][cow_vector] )

Definition at line 1268 of file test_cow_iterator_01.cpp.

◆ TEST_CASE() [5/5]

TEST_CASE ( "JAU COW_DArray Test 21 - Validate Iterator Operations" ,
"" [datatype][jau][cow_darray] )

Definition at line 1274 of file test_cow_iterator_01.cpp.