Blender V4.3
BLI_array_store_test.cc File Reference
#include "testing/testing.h"
#include "MEM_guardedalloc.h"
#include "BLI_array_store.h"
#include "BLI_array_utils.h"
#include "BLI_listbase.h"
#include "BLI_rand.h"
#include "BLI_ressource_strings.h"
#include "BLI_string.h"
#include "BLI_sys_types.h"
#include "BLI_utildefines.h"

Go to the source code of this file.

Classes

struct  TestChunk
 
struct  TestBuffer
 

Macros

#define testbuffer_list_state_from_string_array(lb, data_array)
 
#define TESTBUFFER_STRINGS_CREATE(lb, ...)
 
#define TESTBUFFER_STRINGS(stride, chunk_count, ...)
 
#define D   "#1#2#3#4"
 
#define WORDS   words10k, sizeof(words10k)
 

Functions

static TestChunktestchunk_list_add (ListBase *lb, const void *data, size_t data_len)
 
static void testchunk_list_free (ListBase *lb)
 
static char * testchunk_as_data_array (TestChunk **tc_array, int tc_array_len, size_t *r_data_len)
 
static TestBuffertestbuffer_list_add (ListBase *lb, const void *data, size_t data_len)
 
static TestBuffertestbuffer_list_add_copydata (ListBase *lb, const void *data, size_t data_len)
 
static void testbuffer_list_state_from_data (ListBase *lb, const char *data, const size_t data_len)
 
static void testbuffer_list_state_from_data__stride_expand (ListBase *lb, const char *data, const size_t data_len, const size_t stride)
 
static bool testbuffer_item_validate (TestBuffer *tb)
 
static bool testbuffer_list_validate (const ListBase *lb)
 
static void testbuffer_list_data_randomize (ListBase *lb, uint random_seed)
 
static void testbuffer_list_store_populate (BArrayStore *bs, ListBase *lb)
 
static void testbuffer_list_store_clear (BArrayStore *bs, ListBase *lb)
 
static void testbuffer_list_free (ListBase *lb)
 
static void testbuffer_run_tests_single (BArrayStore *bs, ListBase *lb)
 
static void testbuffer_run_tests (BArrayStore *bs, ListBase *lb)
 
static void testbuffer_run_tests_simple (ListBase *lb, const int stride, const int chunk_count)
 
 TEST (array_store, Nop)
 
 TEST (array_store, NopState)
 
 TEST (array_store, Single)
 
 TEST (array_store, DoubleNop)
 
 TEST (array_store, DoubleDiff)
 
 TEST (array_store, TextMixed)
 
 TEST (array_store, TextDupeIncreaseDecrease)
 
static void plain_text_helper (const char *words, int words_len, const char word_delim, const int stride, const int chunk_count, const int random_seed)
 
 TEST (array_store, TextSentences_Chunk1)
 
 TEST (array_store, TextSentences_Chunk2)
 
 TEST (array_store, TextSentences_Chunk8)
 
 TEST (array_store, TextSentences_Chunk32)
 
 TEST (array_store, TextSentences_Chunk128)
 
 TEST (array_store, TextSentences_Chunk1024)
 
 TEST (array_store, TextSentences_Chunk3)
 
 TEST (array_store, TextSentences_Chunk13)
 
 TEST (array_store, TextSentences_Chunk131)
 
 TEST (array_store, TextWords_Chunk1)
 
 TEST (array_store, TextWords_Chunk2)
 
 TEST (array_store, TextWords_Chunk8)
 
 TEST (array_store, TextWords_Chunk32)
 
 TEST (array_store, TextWords_Chunk128)
 
 TEST (array_store, TextWords_Chunk1024)
 
 TEST (array_store, TextWords_Chunk3)
 
 TEST (array_store, TextWords_Chunk13)
 
 TEST (array_store, TextWords_Chunk131)
 
 TEST (array_store, TextSentencesRandom_Stride3_Chunk3)
 
 TEST (array_store, TextSentencesRandom_Stride8_Chunk8)
 
 TEST (array_store, TextSentencesRandom_Stride32_Chunk1)
 
 TEST (array_store, TextSentencesRandom_Stride12_Chunk512)
 
 TEST (array_store, TextSentencesRandom_Stride128_Chunk6)
 
static uint rand_range_i (RNG *rng, uint min_i, uint max_i, uint step)
 
static void testbuffer_list_state_random_data (ListBase *lb, const size_t stride, const size_t data_min_len, const size_t data_max_len, const uint mutate, RNG *rng)
 
static void random_data_mutate_helper (const int items_size_min, const int items_size_max, const int items_total, const int stride, const int chunk_count, const int random_seed, const int mutate)
 
 TEST (array_store, TestData_Stride1_Chunk32_Mutate2)
 
 TEST (array_store, TestData_Stride8_Chunk512_Mutate2)
 
 TEST (array_store, TestData_Stride12_Chunk48_Mutate2)
 
 TEST (array_store, TestData_Stride32_Chunk64_Mutate1)
 
 TEST (array_store, TestData_Stride32_Chunk64_Mutate8)
 
static void random_chunk_generate (ListBase *lb, const int chunks_per_buffer, const int stride, const int chunk_count, const int random_seed)
 
static void random_chunk_mutate_helper (const int chunks_per_buffer, const int items_total, const int stride, const int chunk_count, const int random_seed)
 
 TEST (array_store, TestChunk_Rand8_Stride1_Chunk64)
 
 TEST (array_store, TestChunk_Rand32_Stride1_Chunk64)
 
 TEST (array_store, TestChunk_Rand64_Stride8_Chunk32)
 
 TEST (array_store, TestChunk_Rand31_Stride11_Chunk21)
 

Macro Definition Documentation

◆ D

◆ testbuffer_list_state_from_string_array

#define testbuffer_list_state_from_string_array ( lb,
data_array )
Value:
{ \
uint i_ = 0; \
const char *data; \
while ((data = data_array[i_++])) { \
testbuffer_list_state_from_data(lb, data, strlen(data)); \
} \
} \
((void)0)
unsigned int uint

Definition at line 171 of file BLI_array_store_test.cc.

◆ TESTBUFFER_STRINGS

#define TESTBUFFER_STRINGS ( stride,
chunk_count,
... )
Value:
{ \
ListBase lb; \
TESTBUFFER_STRINGS_CREATE(&lb, __VA_ARGS__); \
\
testbuffer_run_tests_simple(&lb, stride, chunk_count); \
\
testbuffer_list_free(&lb); \
} \
((void)0)

Definition at line 192 of file BLI_array_store_test.cc.

Referenced by TEST().

◆ TESTBUFFER_STRINGS_CREATE

#define TESTBUFFER_STRINGS_CREATE ( lb,
... )
Value:
{ \
BLI_listbase_clear(lb); \
const char *data_array[] = {__VA_ARGS__ nullptr}; \
testbuffer_list_state_from_string_array((lb), data_array); \
} \
((void)0)

Definition at line 183 of file BLI_array_store_test.cc.

Referenced by TEST().

◆ WORDS

Function Documentation

◆ plain_text_helper()

static void plain_text_helper ( const char * words,
int words_len,
const char word_delim,
const int stride,
const int chunk_count,
const int random_seed )
static

Test that uses text input with different params for the array-store to ensure no corner cases fail.

Definition at line 427 of file BLI_array_store_test.cc.

References BLI_listbase_clear(), ELEM, testbuffer_list_data_randomize(), testbuffer_list_free(), testbuffer_list_state_from_data__stride_expand(), and testbuffer_run_tests_simple().

Referenced by TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and TEST().

◆ rand_range_i()

static uint rand_range_i ( RNG * rng,
uint min_i,
uint max_i,
uint step )
static

Definition at line 562 of file BLI_array_store_test.cc.

References BLI_assert, BLI_rng_get_uint(), max_i(), min_i(), and range.

Referenced by testbuffer_list_state_random_data().

◆ random_chunk_generate()

static void random_chunk_generate ( ListBase * lb,
const int chunks_per_buffer,
const int stride,
const int chunk_count,
const int random_seed )
static

◆ random_chunk_mutate_helper()

static void random_chunk_mutate_helper ( const int chunks_per_buffer,
const int items_total,
const int stride,
const int chunk_count,
const int random_seed )
static

◆ random_data_mutate_helper()

static void random_data_mutate_helper ( const int items_size_min,
const int items_size_max,
const int items_total,
const int stride,
const int chunk_count,
const int random_seed,
const int mutate )
static

◆ TEST() [1/39]

◆ TEST() [2/39]

◆ TEST() [3/39]

TEST ( array_store ,
Nop  )

Definition at line 298 of file BLI_array_store_test.cc.

References BLI_array_store_create(), and BLI_array_store_destroy().

◆ TEST() [4/39]

◆ TEST() [5/39]

◆ TEST() [6/39]

TEST ( array_store ,
TestChunk_Rand31_Stride11_Chunk21  )

Definition at line 788 of file BLI_array_store_test.cc.

References random_chunk_mutate_helper().

◆ TEST() [7/39]

TEST ( array_store ,
TestChunk_Rand32_Stride1_Chunk64  )

Definition at line 780 of file BLI_array_store_test.cc.

References random_chunk_mutate_helper().

◆ TEST() [8/39]

TEST ( array_store ,
TestChunk_Rand64_Stride8_Chunk32  )

Definition at line 784 of file BLI_array_store_test.cc.

References random_chunk_mutate_helper().

◆ TEST() [9/39]

TEST ( array_store ,
TestChunk_Rand8_Stride1_Chunk64  )

Definition at line 776 of file BLI_array_store_test.cc.

References random_chunk_mutate_helper().

◆ TEST() [10/39]

TEST ( array_store ,
TestData_Stride12_Chunk48_Mutate2  )

Definition at line 691 of file BLI_array_store_test.cc.

References random_data_mutate_helper().

◆ TEST() [11/39]

TEST ( array_store ,
TestData_Stride1_Chunk32_Mutate2  )

Definition at line 683 of file BLI_array_store_test.cc.

References random_data_mutate_helper().

◆ TEST() [12/39]

TEST ( array_store ,
TestData_Stride32_Chunk64_Mutate1  )

Definition at line 695 of file BLI_array_store_test.cc.

References random_data_mutate_helper().

◆ TEST() [13/39]

TEST ( array_store ,
TestData_Stride32_Chunk64_Mutate8  )

Definition at line 699 of file BLI_array_store_test.cc.

References random_data_mutate_helper().

◆ TEST() [14/39]

TEST ( array_store ,
TestData_Stride8_Chunk512_Mutate2  )

Definition at line 687 of file BLI_array_store_test.cc.

References random_data_mutate_helper().

◆ TEST() [15/39]

◆ TEST() [16/39]

TEST ( array_store ,
TextMixed  )

Definition at line 379 of file BLI_array_store_test.cc.

References TESTBUFFER_STRINGS.

◆ TEST() [17/39]

TEST ( array_store ,
TextSentences_Chunk1  )

Definition at line 458 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [18/39]

TEST ( array_store ,
TextSentences_Chunk1024  )

Definition at line 478 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [19/39]

TEST ( array_store ,
TextSentences_Chunk128  )

Definition at line 474 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [20/39]

TEST ( array_store ,
TextSentences_Chunk13  )

Definition at line 487 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [21/39]

TEST ( array_store ,
TextSentences_Chunk131  )

Definition at line 491 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [22/39]

TEST ( array_store ,
TextSentences_Chunk2  )

Definition at line 462 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [23/39]

TEST ( array_store ,
TextSentences_Chunk3  )

Definition at line 483 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [24/39]

TEST ( array_store ,
TextSentences_Chunk32  )

Definition at line 470 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [25/39]

TEST ( array_store ,
TextSentences_Chunk8  )

Definition at line 466 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [26/39]

TEST ( array_store ,
TextSentencesRandom_Stride128_Chunk6  )

Definition at line 552 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [27/39]

TEST ( array_store ,
TextSentencesRandom_Stride12_Chunk512  )

Definition at line 548 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [28/39]

TEST ( array_store ,
TextSentencesRandom_Stride32_Chunk1  )

Definition at line 544 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [29/39]

TEST ( array_store ,
TextSentencesRandom_Stride3_Chunk3  )

Definition at line 536 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [30/39]

TEST ( array_store ,
TextSentencesRandom_Stride8_Chunk8  )

Definition at line 540 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [31/39]

TEST ( array_store ,
TextWords_Chunk1  )

Definition at line 497 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [32/39]

TEST ( array_store ,
TextWords_Chunk1024  )

Definition at line 517 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [33/39]

TEST ( array_store ,
TextWords_Chunk128  )

Definition at line 513 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [34/39]

TEST ( array_store ,
TextWords_Chunk13  )

Definition at line 526 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [35/39]

TEST ( array_store ,
TextWords_Chunk131  )

Definition at line 530 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [36/39]

TEST ( array_store ,
TextWords_Chunk2  )

Definition at line 501 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [37/39]

TEST ( array_store ,
TextWords_Chunk3  )

Definition at line 522 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [38/39]

TEST ( array_store ,
TextWords_Chunk32  )

Definition at line 509 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ TEST() [39/39]

TEST ( array_store ,
TextWords_Chunk8  )

Definition at line 505 of file BLI_array_store_test.cc.

References plain_text_helper(), and WORDS.

◆ testbuffer_item_validate()

static bool testbuffer_item_validate ( TestBuffer * tb)
static

◆ testbuffer_list_add()

◆ testbuffer_list_add_copydata()

static TestBuffer * testbuffer_list_add_copydata ( ListBase * lb,
const void * data,
size_t data_len )
static

Definition at line 135 of file BLI_array_store_test.cc.

References MEM_mallocN, and testbuffer_list_add().

Referenced by testbuffer_list_state_from_data().

◆ testbuffer_list_data_randomize()

static void testbuffer_list_data_randomize ( ListBase * lb,
uint random_seed )
static

Definition at line 229 of file BLI_array_store_test.cc.

References BLI_array_randomize(), and LISTBASE_FOREACH.

Referenced by plain_text_helper().

◆ testbuffer_list_free()

static void testbuffer_list_free ( ListBase * lb)
static

◆ testbuffer_list_state_from_data()

static void testbuffer_list_state_from_data ( ListBase * lb,
const char * data,
const size_t data_len )
static

◆ testbuffer_list_state_from_data__stride_expand()

static void testbuffer_list_state_from_data__stride_expand ( ListBase * lb,
const char * data,
const size_t data_len,
const size_t stride )
static

A version of testbuffer_list_state_from_data that expand data by stride, handy so we can test data at different strides.

Definition at line 151 of file BLI_array_store_test.cc.

References MEM_mallocN, testbuffer_list_add(), and testbuffer_list_state_from_data().

Referenced by plain_text_helper().

◆ testbuffer_list_state_random_data()

static void testbuffer_list_state_random_data ( ListBase * lb,
const size_t stride,
const size_t data_min_len,
const size_t data_max_len,
const uint mutate,
RNG * rng )
static

◆ testbuffer_list_store_clear()

static void testbuffer_list_store_clear ( BArrayStore * bs,
ListBase * lb )
static

Definition at line 246 of file BLI_array_store_test.cc.

References BLI_array_store_state_remove(), and LISTBASE_FOREACH.

Referenced by TEST(), and testbuffer_run_tests().

◆ testbuffer_list_store_populate()

static void testbuffer_list_store_populate ( BArrayStore * bs,
ListBase * lb )
static

Definition at line 236 of file BLI_array_store_test.cc.

References BLI_array_store_state_add(), and ListBase::first.

Referenced by TEST(), and testbuffer_run_tests_single().

◆ testbuffer_list_validate()

static bool testbuffer_list_validate ( const ListBase * lb)
static

Definition at line 218 of file BLI_array_store_test.cc.

References LISTBASE_FOREACH, and testbuffer_item_validate().

Referenced by TEST(), and testbuffer_run_tests_single().

◆ testbuffer_run_tests()

static void testbuffer_run_tests ( BArrayStore * bs,
ListBase * lb )
static

◆ testbuffer_run_tests_simple()

static void testbuffer_run_tests_simple ( ListBase * lb,
const int stride,
const int chunk_count )
static

◆ testbuffer_run_tests_single()

static void testbuffer_run_tests_single ( BArrayStore * bs,
ListBase * lb )
static

◆ testchunk_as_data_array()

static char * testchunk_as_data_array ( TestChunk ** tc_array,
int tc_array_len,
size_t * r_data_len )
static

Definition at line 93 of file BLI_array_store_test.cc.

References data, TestChunk::data, TestChunk::data_len, and MEM_mallocN.

Referenced by random_chunk_mutate_helper().

◆ testchunk_list_add()

static TestChunk * testchunk_list_add ( ListBase * lb,
const void * data,
size_t data_len )
static

◆ testchunk_list_free()

static void testchunk_list_free ( ListBase * lb)
static

Definition at line 62 of file BLI_array_store_test.cc.

References BLI_listbase_clear(), ListBase::first, and MEM_freeN().

Referenced by random_chunk_mutate_helper().