Changeset View
Changeset View
Standalone View
Standalone View
src/secp256k1/src/tests.c
Show First 20 Lines • Show All 359 Lines • ▼ Show 20 Lines | void run_scratch_tests(void) { | ||||
/* Allocating 500 bytes succeeds */ | /* Allocating 500 bytes succeeds */ | ||||
checkpoint = secp256k1_scratch_checkpoint(&none->error_callback, scratch); | checkpoint = secp256k1_scratch_checkpoint(&none->error_callback, scratch); | ||||
CHECK(secp256k1_scratch_alloc(&none->error_callback, scratch, 500) != NULL); | CHECK(secp256k1_scratch_alloc(&none->error_callback, scratch, 500) != NULL); | ||||
CHECK(secp256k1_scratch_max_allocation(&none->error_callback, scratch, 0) == 1000 - adj_alloc); | CHECK(secp256k1_scratch_max_allocation(&none->error_callback, scratch, 0) == 1000 - adj_alloc); | ||||
CHECK(secp256k1_scratch_max_allocation(&none->error_callback, scratch, 1) == 1000 - adj_alloc - (ALIGNMENT - 1)); | CHECK(secp256k1_scratch_max_allocation(&none->error_callback, scratch, 1) == 1000 - adj_alloc - (ALIGNMENT - 1)); | ||||
CHECK(scratch->alloc_size != 0); | CHECK(scratch->alloc_size != 0); | ||||
CHECK(scratch->alloc_size % ALIGNMENT == 0); | CHECK(scratch->alloc_size % ALIGNMENT == 0); | ||||
/* Allocating another 500 bytes fails */ | /* Allocating another 501 bytes fails */ | ||||
CHECK(secp256k1_scratch_alloc(&none->error_callback, scratch, 500) == NULL); | CHECK(secp256k1_scratch_alloc(&none->error_callback, scratch, 501) == NULL); | ||||
CHECK(secp256k1_scratch_max_allocation(&none->error_callback, scratch, 0) == 1000 - adj_alloc); | CHECK(secp256k1_scratch_max_allocation(&none->error_callback, scratch, 0) == 1000 - adj_alloc); | ||||
CHECK(secp256k1_scratch_max_allocation(&none->error_callback, scratch, 1) == 1000 - adj_alloc - (ALIGNMENT - 1)); | CHECK(secp256k1_scratch_max_allocation(&none->error_callback, scratch, 1) == 1000 - adj_alloc - (ALIGNMENT - 1)); | ||||
CHECK(scratch->alloc_size != 0); | CHECK(scratch->alloc_size != 0); | ||||
CHECK(scratch->alloc_size % ALIGNMENT == 0); | CHECK(scratch->alloc_size % ALIGNMENT == 0); | ||||
/* ...but it succeeds once we apply the checkpoint to undo it */ | /* ...but it succeeds once we apply the checkpoint to undo it */ | ||||
secp256k1_scratch_apply_checkpoint(&none->error_callback, scratch, checkpoint); | secp256k1_scratch_apply_checkpoint(&none->error_callback, scratch, checkpoint); | ||||
CHECK(scratch->alloc_size == 0); | CHECK(scratch->alloc_size == 0); | ||||
Show All 16 Lines | void run_scratch_tests(void) { | ||||
scratch = &local_scratch; | scratch = &local_scratch; | ||||
CHECK(!secp256k1_scratch_max_allocation(&none->error_callback, scratch, 0)); | CHECK(!secp256k1_scratch_max_allocation(&none->error_callback, scratch, 0)); | ||||
CHECK(ecount == 3); | CHECK(ecount == 3); | ||||
CHECK(secp256k1_scratch_alloc(&none->error_callback, scratch, 500) == NULL); | CHECK(secp256k1_scratch_alloc(&none->error_callback, scratch, 500) == NULL); | ||||
CHECK(ecount == 4); | CHECK(ecount == 4); | ||||
secp256k1_scratch_space_destroy(none, scratch); | secp256k1_scratch_space_destroy(none, scratch); | ||||
CHECK(ecount == 5); | CHECK(ecount == 5); | ||||
/* Test that large integers do not wrap around in a bad way */ | |||||
scratch = secp256k1_scratch_space_create(none, 1000); | |||||
/* Try max allocation with a large number of objects. Only makes sense if | |||||
* ALIGNMENT is greater than 1 because otherwise the objects take no extra | |||||
* space. */ | |||||
CHECK(ALIGNMENT <= 1 || !secp256k1_scratch_max_allocation(&none->error_callback, scratch, (SIZE_MAX / (ALIGNMENT - 1)) + 1)); | |||||
/* Try allocating SIZE_MAX to test wrap around which only happens if | |||||
* ALIGNMENT > 1, otherwise it returns NULL anyway because the scratch | |||||
* space is too small. */ | |||||
CHECK(secp256k1_scratch_alloc(&none->error_callback, scratch, SIZE_MAX) == NULL); | |||||
secp256k1_scratch_space_destroy(none, scratch); | |||||
/* cleanup */ | /* cleanup */ | ||||
secp256k1_scratch_space_destroy(none, NULL); /* no-op */ | secp256k1_scratch_space_destroy(none, NULL); /* no-op */ | ||||
secp256k1_context_destroy(none); | secp256k1_context_destroy(none); | ||||
} | } | ||||
/***** HASH TESTS *****/ | /***** HASH TESTS *****/ | ||||
void run_sha256_tests(void) { | void run_sha256_tests(void) { | ||||
▲ Show 20 Lines • Show All 5,270 Lines • Show Last 20 Lines |