diff options
Diffstat (limited to 'test/basictests.c')
-rw-r--r-- | test/basictests.c | 538 |
1 files changed, 203 insertions, 335 deletions
diff --git a/test/basictests.c b/test/basictests.c index cedb0c3..210b82c 100644 --- a/test/basictests.c +++ b/test/basictests.c @@ -12,6 +12,10 @@ #include "tests.h" +#ifndef UNUSED +#define UNUSED(x) (void)(x) +#endif + static void *last_pw = NULL; static void * trivial_alloc_fn(void *p, size_t s, void *pw) @@ -22,383 +26,225 @@ trivial_alloc_fn(void *p, size_t s, void *pw) #ifndef NDEBUG /* All the basic assert() tests */ -START_TEST (test_lwc_context_creation_bad_alloc_aborts) -{ - lwc_context *ctx = NULL; - lwc_error err; - - err = lwc_create_context(NULL, NULL, &ctx); -} -END_TEST - -START_TEST (test_lwc_context_destruction_aborts) -{ - lwc_context_unref(NULL); -} -END_TEST - -START_TEST (test_lwc_context_ref_aborts) -{ - lwc_context_ref(NULL); -} -END_TEST - -START_TEST (test_lwc_context_unref_aborts) -{ - lwc_context_unref(NULL); -} -END_TEST - -START_TEST (test_lwc_context_intern_aborts1) -{ - lwc_context_intern(NULL, NULL, 0, NULL); -} -END_TEST - -START_TEST (test_lwc_context_intern_aborts2) +START_TEST (test_lwc_intern_string_aborts1) { - lwc_context *ctx; - - fail_unless(lwc_create_context(trivial_alloc_fn, NULL, &ctx) == lwc_error_ok, - "Unable to create context"); - - lwc_context_intern(ctx, NULL, 0, NULL); + lwc_intern_string(NULL, 0, NULL); } END_TEST -START_TEST (test_lwc_context_intern_aborts3) +START_TEST (test_lwc_intern_string_aborts2) { - lwc_context *ctx; - - fail_unless(lwc_create_context(trivial_alloc_fn, NULL, &ctx) == lwc_error_ok, - "Unable to create context"); - - lwc_context_intern(ctx, "A", 1, NULL); + lwc_intern_string("A", 1, NULL); } END_TEST -START_TEST (test_lwc_context_intern_substring_aborts1) +START_TEST (test_lwc_intern_substring_aborts1) { - lwc_context_intern_substring(NULL, NULL, 0, 0, NULL); + lwc_intern_substring(NULL, 0, 0, NULL); } END_TEST -START_TEST (test_lwc_context_intern_substring_aborts2) +START_TEST (test_lwc_intern_substring_aborts2) { - lwc_context *ctx; - fail_unless(lwc_create_context(trivial_alloc_fn, NULL, &ctx) == lwc_error_ok, - "Unable to create context"); - - lwc_context_intern_substring(ctx, NULL, 0, 0, NULL); -} -END_TEST - -START_TEST (test_lwc_context_intern_substring_aborts3) -{ - lwc_context *ctx; lwc_string *str; - fail_unless(lwc_create_context(trivial_alloc_fn, NULL, &ctx) == lwc_error_ok, - "Unable to create context"); - fail_unless(lwc_context_intern(ctx, "Jam", 3, &str) == lwc_error_ok, + fail_unless(lwc_initialise(trivial_alloc_fn, NULL, 0) == lwc_error_ok, + "unable to initialise the library"); + fail_unless(lwc_intern_string("Jam", 3, &str) == lwc_error_ok, "unable to intern 'Jam'"); - lwc_context_intern_substring(ctx, str, 100, 1, NULL); + lwc_intern_substring(str, 88, 77, NULL); } END_TEST -START_TEST (test_lwc_context_intern_substring_aborts4) +START_TEST (test_lwc_string_ref_aborts) { - lwc_context *ctx; - lwc_string *str; - fail_unless(lwc_create_context(trivial_alloc_fn, NULL, &ctx) == lwc_error_ok, - "Unable to create context"); - fail_unless(lwc_context_intern(ctx, "Jam", 3, &str) == lwc_error_ok, - "unable to intern 'Jam'"); - - lwc_context_intern_substring(ctx, str, 1, 10, NULL); + lwc_string_ref(NULL); } END_TEST -START_TEST (test_lwc_context_intern_substring_aborts5) +START_TEST (test_lwc_string_unref_aborts) { - lwc_context *ctx; - lwc_string *str; - fail_unless(lwc_create_context(trivial_alloc_fn, NULL, &ctx) == lwc_error_ok, - "Unable to create context"); - fail_unless(lwc_context_intern(ctx, "Jam", 3, &str) == lwc_error_ok, - "unable to intern 'Jam'"); - - lwc_context_intern_substring(ctx, str, 1, 2, NULL); + lwc_string_unref(NULL); } END_TEST -START_TEST (test_lwc_context_string_ref_aborts1) +START_TEST (test_lwc_string_data_aborts) { - lwc_context_string_ref(NULL, NULL); + lwc_string_data(NULL); } END_TEST -START_TEST (test_lwc_context_string_ref_aborts2) +START_TEST (test_lwc_string_length_aborts) { - lwc_context *ctx; - fail_unless(lwc_create_context(trivial_alloc_fn, NULL, &ctx) == lwc_error_ok, - "Unable to create context"); - lwc_context_string_ref(ctx, NULL); + lwc_string_length(NULL); } END_TEST -START_TEST (test_lwc_context_string_unref_aborts1) +START_TEST (test_lwc_string_hash_value_aborts) { - lwc_context_string_unref(NULL, NULL); + lwc_string_hash_value(NULL); } END_TEST -START_TEST (test_lwc_context_string_unref_aborts2) -{ - lwc_context *ctx; - fail_unless(lwc_create_context(trivial_alloc_fn, NULL, &ctx) == lwc_error_ok, - "Unable to create context"); - lwc_context_string_unref(ctx, NULL); -} -END_TEST +#endif -START_TEST (test_lwc_string_data_aborts) +START_TEST (test_lwc_double_initialise_fails) { - lwc_string_data(NULL); + fail_unless(lwc_initialise(trivial_alloc_fn, NULL, 0) == lwc_error_ok, + "Unable to initialise library"); + fail_unless(lwc_initialise(trivial_alloc_fn, NULL, 0) == lwc_error_initialised, + "Able to initialise library a second time"); } END_TEST -START_TEST (test_lwc_string_length_aborts) +static void *enomem_allocator(void *ptr, size_t n, void *pw) { - lwc_string_length(NULL); + int *pi = (int*)pw; + UNUSED(ptr); + UNUSED(n); + + if (*pi > 0) { + *pi -= 1; + return realloc(ptr, n); + } + + return NULL; } -END_TEST -START_TEST (test_lwc_string_hash_value_aborts) +START_TEST (test_lwc_initialise_fails_with_no_memory) { - lwc_string_hash_value(NULL); + int permitted = 0; + fail_unless(lwc_initialise(enomem_allocator, &permitted, 0) == lwc_error_oom, + "Able to initialise library with no memory available?!"); } END_TEST -START_TEST (test_lwc_context_size_aborts) +START_TEST (test_lwc_initialise_fails_with_low_memory) { - lwc_context_size(NULL); + int permitted = 1; + fail_unless(lwc_initialise(enomem_allocator, &permitted, 0) == lwc_error_oom, + "Able to initialise library with no memory available?!"); } END_TEST -#endif - -START_TEST (test_lwc_context_creation_ok) +START_TEST (test_lwc_intern_fails_with_no_memory) { - lwc_context *ctx = NULL; - lwc_error err; + int permitted = 2; /* context and buckets */ + lwc_string *str; + + fail_unless(lwc_initialise(enomem_allocator, &permitted, 0) == lwc_error_ok, + "Unable to initialise library"); + fail_unless(lwc_intern_string("Hello", 5, &str) == lwc_error_oom, + "Able to allocate string despite enomem."); - err = lwc_create_context(trivial_alloc_fn, NULL, &ctx); - fail_unless(ctx != NULL, - "Unable to create context"); - fail_unless(err == lwc_error_ok, - "Created context but returned !ok"); } END_TEST -START_TEST (test_lwc_context_destruction_ok) +START_TEST (test_lwc_caseless_compare_fails_with_no_memory1) { - lwc_context *ctx = NULL; + int permitted = 3; /* ctx, buckets, 1 string */ + lwc_string *str; + bool result = true; - fail_unless(lwc_create_context(trivial_alloc_fn, NULL, &ctx) == lwc_error_ok, - "Unable to create context"); + fail_unless(lwc_initialise(enomem_allocator, &permitted, 0) == lwc_error_ok, + "Unable to initialise library"); + fail_unless(lwc_intern_string("Hello", 5, &str) == lwc_error_ok, + "Unable to allocate string."); + fail_unless(lwc_string_caseless_isequal(str, str, &result) == lwc_error_oom, + "Able to caselessly compare despite no memory"); - lwc_context_unref(ctx); } END_TEST -START_TEST (test_lwc_reffed_context_destruction_ok) +START_TEST (test_lwc_caseless_compare_fails_with_no_memory2) { - lwc_context *ctx = NULL; - - fail_unless(lwc_create_context(trivial_alloc_fn, NULL, &ctx) == lwc_error_ok, - "Unable to create context"); + int permitted = 5; /* ctx, buckets, 3 strings */ + lwc_string *str1, *str2; + bool result = true; - lwc_context_ref(ctx); /* make the weak ref strong */ + fail_unless(lwc_initialise(enomem_allocator, &permitted, 0) == lwc_error_ok, + "Unable to initialise library"); + fail_unless(lwc_intern_string("Hello", 5, &str1) == lwc_error_ok, + "Unable to allocate string."); + fail_unless(lwc_intern_string("World", 5, &str2) == lwc_error_ok, + "Unable to allocate string."); + fail_unless(lwc_string_caseless_isequal(str1, str2, &result) == lwc_error_oom, + "Able to caselessly compare despite no memory"); - lwc_context_unref(ctx); } END_TEST /**** The next set of tests need a fixture set ****/ -static lwc_context *shared_ctx; - static void with_simple_context_setup(void) { - fail_unless(lwc_create_context(trivial_alloc_fn, NULL, - &shared_ctx) == lwc_error_ok, - "Unable to create context"); - lwc_context_ref(shared_ctx); + fail_unless(lwc_initialise(trivial_alloc_fn, NULL, 0) == lwc_error_ok, + "Unable to initialise library"); } static void with_simple_context_teardown(void) { - lwc_context_unref(shared_ctx); + /* Nothing to do to tear down */ } -START_TEST (test_lwc_context_intern_ok) +START_TEST (test_lwc_intern_string_ok) { lwc_string *str = NULL; - fail_unless(lwc_context_intern(shared_ctx, "A", 1, &str) == lwc_error_ok, + fail_unless(lwc_intern_string("A", 1, &str) == lwc_error_ok, "Unable to intern a simple string"); fail_unless(str != NULL, "Returned OK but str was still NULL"); } END_TEST -START_TEST (test_lwc_context_intern_twice_ok) +START_TEST (test_lwc_intern_string_twice_ok) { lwc_string *str1 = NULL, *str2 = NULL; - fail_unless(lwc_context_intern(shared_ctx, "A", 1, &str1) == lwc_error_ok, + fail_unless(lwc_intern_string("A", 1, &str1) == lwc_error_ok, "Unable to intern a simple string"); fail_unless(str1 != NULL, "Returned OK but str was still NULL"); - fail_unless(lwc_context_intern(shared_ctx, "B", 1, &str2) == lwc_error_ok, + fail_unless(lwc_intern_string("B", 1, &str2) == lwc_error_ok, "Unable to intern a simple string"); fail_unless(str2 != NULL, "Returned OK but str was still NULL"); } END_TEST -START_TEST (test_lwc_context_intern_twice_same_ok) +START_TEST (test_lwc_intern_string_twice_same_ok) { lwc_string *str1 = NULL, *str2 = NULL; - fail_unless(lwc_context_intern(shared_ctx, "A", 1, &str1) == lwc_error_ok, + fail_unless(lwc_intern_string("A", 1, &str1) == lwc_error_ok, "Unable to intern a simple string"); fail_unless(str1 != NULL, "Returned OK but str was still NULL"); - fail_unless(lwc_context_intern(shared_ctx, "A", 1, &str2) == lwc_error_ok, + fail_unless(lwc_intern_string("A", 1, &str2) == lwc_error_ok, "Unable to intern a simple string"); fail_unless(str2 != NULL, "Returned OK but str was still NULL"); } END_TEST -START_TEST (test_lwc_context_size_non_zero) -{ - fail_unless(lwc_context_size(shared_ctx) > 0, - "Size of empty context is zero"); -} -END_TEST - -START_TEST (test_lwc_context_size_updated_on_string_intern) -{ - size_t empty_size = lwc_context_size(shared_ctx); - lwc_string *str; - - fail_unless(empty_size > 0, - "Size of empty context is zero"); - - fail_unless(lwc_context_intern(shared_ctx, "one", 3, &str) == lwc_error_ok, - "Unable to intern a simple string"); - - fail_unless(lwc_context_size(shared_ctx) > empty_size, - "Post-intern context size is same or smaller than empty size"); -} -END_TEST - -START_TEST (test_lwc_context_size_updated_on_string_unref) -{ - size_t empty_size = lwc_context_size(shared_ctx); - lwc_string *str; - - fail_unless(empty_size > 0, - "Size of empty context is zero"); - - fail_unless(lwc_context_intern(shared_ctx, "one", 3, &str) == lwc_error_ok, - "Unable to intern a simple string"); - - fail_unless(lwc_context_size(shared_ctx) > empty_size, - "Post-intern context size is same or smaller than empty size"); - - lwc_context_string_unref(shared_ctx, str); - - fail_unless(lwc_context_size(shared_ctx) == empty_size, - "Post-unref context size is not the same as empty size"); -} -END_TEST - -START_TEST (test_lwc_context_size_updated_on_substring_intern) -{ - size_t empty_size = lwc_context_size(shared_ctx); - size_t post_intern_size = 0; - lwc_string *str, *str2; - - fail_unless(empty_size > 0, - "Size of empty context is zero"); - - fail_unless(lwc_context_intern(shared_ctx, "one", 3, &str) == lwc_error_ok, - "Unable to intern a simple string"); - - post_intern_size = lwc_context_size(shared_ctx); - - fail_unless(post_intern_size > empty_size, - "Post-intern context size is same or smaller than empty size"); - - fail_unless(lwc_context_intern_substring(shared_ctx, str, 0, 1, &str2) == lwc_error_ok, - "Failed to intern substring"); - - fail_unless(lwc_context_size(shared_ctx) > post_intern_size, - "Post-substring-intern context size is same or smaller than pre-substring-intern size"); -} -END_TEST - -START_TEST (test_lwc_context_size_updated_on_substring_unref) -{ - size_t empty_size = lwc_context_size(shared_ctx); - size_t post_intern_size = 0; - lwc_string *str, *str2; - - fail_unless(empty_size > 0, - "Size of empty context is zero"); - - fail_unless(lwc_context_intern(shared_ctx, "one", 3, &str) == lwc_error_ok, - "Unable to intern a simple string"); - - post_intern_size = lwc_context_size(shared_ctx); - - fail_unless(post_intern_size > empty_size, - "Post-intern context size is same or smaller than empty size"); - - fail_unless(lwc_context_intern_substring(shared_ctx, str, 0, 1, &str2) == lwc_error_ok, - "Failed to intern substring"); - - fail_unless(lwc_context_size(shared_ctx) > post_intern_size, - "Post-substring-intern context size is same or smaller than pre-substring-intern size"); - - lwc_context_string_unref(shared_ctx, str2); - - fail_unless(lwc_context_size(shared_ctx) == post_intern_size, - "Post-substring-unref size is not the same as pre-substring-intern size"); -} -END_TEST - /**** The next set of tests need a fixture set with some strings ****/ -static lwc_string *intern_one = NULL, *intern_two = NULL, *intern_three = NULL; +static lwc_string *intern_one = NULL, *intern_two = NULL, *intern_three = NULL, *intern_YAY = NULL; static void with_filled_context_setup(void) { - fail_unless(lwc_create_context(trivial_alloc_fn, NULL, - &shared_ctx) == lwc_error_ok, - "Unable to create context"); - lwc_context_ref(shared_ctx); + fail_unless(lwc_initialise(trivial_alloc_fn, NULL, 2) == lwc_error_ok, + "Unable to initialise library"); - fail_unless(lwc_context_intern(shared_ctx, "one", 3, &intern_one) == lwc_error_ok, - "Unable to intern 'one'"); - fail_unless(lwc_context_intern(shared_ctx, "two", 3, &intern_two) == lwc_error_ok, - "Unable to intern 'one'"); - fail_unless(lwc_context_intern(shared_ctx, "three", 5, &intern_three) == lwc_error_ok, + fail_unless(lwc_intern_string("one", 3, &intern_one) == lwc_error_ok, "Unable to intern 'one'"); + fail_unless(lwc_intern_string("two", 3, &intern_two) == lwc_error_ok, + "Unable to intern 'two'"); + fail_unless(lwc_intern_string("three", 5, &intern_three) == lwc_error_ok, + "Unable to intern 'three'"); + fail_unless(lwc_intern_string("YAY", 3, &intern_YAY) == lwc_error_ok, + "Unable to intern 'YAY'"); fail_unless(intern_one != intern_two, "'one' == 'two'"); fail_unless(intern_one != intern_three, "'one' == 'three'"); @@ -408,14 +254,17 @@ with_filled_context_setup(void) static void with_filled_context_teardown(void) { - lwc_context_unref(shared_ctx); + lwc_string_unref(intern_one); + lwc_string_unref(intern_two); + lwc_string_unref(intern_three); + lwc_string_unref(intern_YAY); } START_TEST (test_lwc_interning_works) { lwc_string *new_one = NULL; - fail_unless(lwc_context_intern(shared_ctx, "one", 3, &new_one) == lwc_error_ok, + fail_unless(lwc_intern_string("one", 3, &new_one) == lwc_error_ok, "Unable to re-intern 'one'"); fail_unless(new_one == intern_one, @@ -427,62 +276,113 @@ START_TEST (test_lwc_intern_substring) { lwc_string *new_hre = NULL, *sub_hre = NULL; - fail_unless(lwc_context_intern(shared_ctx, "hre", 3, - &new_hre) == lwc_error_ok, + fail_unless(lwc_intern_string("hre", 3, &new_hre) == lwc_error_ok, "Unable to intern 'hre'"); - fail_unless(lwc_context_intern_substring(shared_ctx, intern_three, - 1, 3, &sub_hre) == lwc_error_ok, + fail_unless(lwc_intern_substring(intern_three, + 1, 3, &sub_hre) == lwc_error_ok, "Unable to re-intern 'hre' by substring"); fail_unless(new_hre == sub_hre, "'hre' != 'hre' -- wow!"); } END_TEST -START_TEST (test_lwc_context_string_ref_ok) +START_TEST (test_lwc_intern_substring_bad_offset) { - fail_unless(lwc_context_string_ref(shared_ctx, intern_one) == intern_one, + lwc_string *str; + + fail_unless(lwc_intern_substring(intern_three, 100, 1, &str) == lwc_error_range, + "Able to intern substring starting out of range"); +} +END_TEST + +START_TEST (test_lwc_intern_substring_bad_size) +{ + lwc_string *str; + + fail_unless(lwc_intern_substring(intern_three, 1, 100, &str) == lwc_error_range, + "Able to intern substring ending out of range"); +} +END_TEST + +START_TEST (test_lwc_string_ref_ok) +{ + fail_unless(lwc_string_ref(intern_one) == intern_one, "Oddly, reffing a string didn't return it"); } END_TEST -START_TEST (test_lwc_context_string_unref_ok) +START_TEST (test_lwc_string_unref_ok) +{ + lwc_string_unref(intern_one); +} +END_TEST + +START_TEST (test_lwc_string_ref_unref_ok) { - lwc_context_string_unref(shared_ctx, intern_one); + lwc_string_ref(intern_one); + lwc_string_unref(intern_one); } END_TEST -START_TEST (test_lwc_context_string_isequal_ok) +START_TEST (test_lwc_string_isequal_ok) { bool result = true; - fail_unless((lwc_context_string_isequal(shared_ctx, intern_one, - intern_two, &result)) == lwc_error_ok, + fail_unless((lwc_string_isequal(intern_one, intern_two, &result)) == lwc_error_ok, "Failure comparing 'one' and 'two'"); fail_unless(result == false, "'one' == 'two' ?!"); } END_TEST -START_TEST (test_lwc_context_string_caseless_isequal_ok) +START_TEST (test_lwc_string_caseless_isequal_ok1) { bool result = true; lwc_string *new_ONE; - fail_unless(lwc_context_intern(shared_ctx, "ONE", 3, &new_ONE) == lwc_error_ok, + fail_unless(lwc_intern_string("ONE", 3, &new_ONE) == lwc_error_ok, "Failure interning 'ONE'"); - fail_unless((lwc_context_string_isequal(shared_ctx, intern_one, new_ONE, - &result)) == lwc_error_ok); + fail_unless((lwc_string_isequal(intern_one, new_ONE, &result)) == lwc_error_ok); fail_unless(result == false, "'one' == 'ONE' ?!"); - fail_unless((lwc_context_string_caseless_isequal(shared_ctx, intern_one, - new_ONE, &result)) == lwc_error_ok, - "Failure comparing 'one' and 'two'"); + fail_unless((lwc_string_caseless_isequal(intern_one, new_ONE, &result)) == lwc_error_ok, + "Failure comparing 'one' and 'ONE' caselessly"); fail_unless(result == true, "'one' !~= 'ONE' ?!"); } END_TEST +START_TEST (test_lwc_string_caseless_isequal_ok2) +{ + bool result = true; + lwc_string *new_yay; + + fail_unless(lwc_intern_string("yay", 3, &new_yay) == lwc_error_ok, + "Failure interning 'yay'"); + + fail_unless((lwc_string_isequal(intern_YAY, new_yay, &result)) == lwc_error_ok); + fail_unless(result == false, + "'yay' == 'YAY' ?!"); + + fail_unless((lwc_string_caseless_isequal(intern_YAY, new_yay, &result)) == lwc_error_ok, + "Failure comparing 'yay' and 'YAY' caselessly"); + fail_unless(result == true, + "'yay' !~= 'YAY' ?!"); +} +END_TEST + +START_TEST (test_lwc_string_caseless_isequal_bad) +{ + bool result = true; + + fail_unless(lwc_string_caseless_isequal(intern_YAY, intern_one, &result) == lwc_error_ok, + "Failure comparing 'YAY' and 'one' caselessly"); + fail_unless(result == false, + "'YAY' ~= 'one' ?!"); +} +END_TEST + START_TEST (test_lwc_extract_data_ok) { fail_unless(memcmp("one", @@ -502,7 +402,7 @@ START_TEST (test_lwc_string_is_nul_terminated) { lwc_string *new_ONE; - fail_unless(lwc_context_intern(shared_ctx, "ONE", 3, &new_ONE) == lwc_error_ok, + fail_unless(lwc_intern_string("ONE", 3, &new_ONE) == lwc_error_ok, "Failure interning 'ONE'"); fail_unless(lwc_string_data(new_ONE)[lwc_string_length(new_ONE)] == '\0', @@ -515,10 +415,10 @@ START_TEST (test_lwc_substring_is_nul_terminated) lwc_string *new_ONE; lwc_string *new_O; - fail_unless(lwc_context_intern(shared_ctx, "ONE", 3, &new_ONE) == lwc_error_ok, + fail_unless(lwc_intern_string("ONE", 3, &new_ONE) == lwc_error_ok, "Failure interning 'ONE'"); - fail_unless(lwc_context_intern_substring(shared_ctx, new_ONE, 0, 1, &new_O) == lwc_error_ok, + fail_unless(lwc_intern_substring(new_ONE, 0, 1, &new_O) == lwc_error_ok, "Failure interning substring 'O'"); fail_unless(lwc_string_data(new_O)[lwc_string_length(new_O)] == '\0', @@ -536,52 +436,22 @@ lwc_basic_suite(SRunner *sr) #ifndef NDEBUG tcase_add_test_raise_signal(tc_basic, - test_lwc_context_creation_bad_alloc_aborts, - SIGABRT); - tcase_add_test_raise_signal(tc_basic, - test_lwc_context_destruction_aborts, + test_lwc_intern_string_aborts1, SIGABRT); tcase_add_test_raise_signal(tc_basic, - test_lwc_context_ref_aborts, + test_lwc_intern_string_aborts2, SIGABRT); tcase_add_test_raise_signal(tc_basic, - test_lwc_context_unref_aborts, + test_lwc_intern_substring_aborts1, SIGABRT); tcase_add_test_raise_signal(tc_basic, - test_lwc_context_intern_aborts1, + test_lwc_intern_substring_aborts2, SIGABRT); tcase_add_test_raise_signal(tc_basic, - test_lwc_context_intern_aborts2, + test_lwc_string_ref_aborts, SIGABRT); tcase_add_test_raise_signal(tc_basic, - test_lwc_context_intern_aborts3, - SIGABRT); - tcase_add_test_raise_signal(tc_basic, - test_lwc_context_intern_substring_aborts1, - SIGABRT); - tcase_add_test_raise_signal(tc_basic, - test_lwc_context_intern_substring_aborts2, - SIGABRT); - tcase_add_test_raise_signal(tc_basic, - test_lwc_context_intern_substring_aborts3, - SIGABRT); - tcase_add_test_raise_signal(tc_basic, - test_lwc_context_intern_substring_aborts4, - SIGABRT); - tcase_add_test_raise_signal(tc_basic, - test_lwc_context_intern_substring_aborts5, - SIGABRT); - tcase_add_test_raise_signal(tc_basic, - test_lwc_context_string_ref_aborts1, - SIGABRT); - tcase_add_test_raise_signal(tc_basic, - test_lwc_context_string_ref_aborts2, - SIGABRT); - tcase_add_test_raise_signal(tc_basic, - test_lwc_context_string_unref_aborts1, - SIGABRT); - tcase_add_test_raise_signal(tc_basic, - test_lwc_context_string_unref_aborts2, + test_lwc_string_unref_aborts, SIGABRT); tcase_add_test_raise_signal(tc_basic, test_lwc_string_data_aborts, @@ -592,31 +462,24 @@ lwc_basic_suite(SRunner *sr) tcase_add_test_raise_signal(tc_basic, test_lwc_string_hash_value_aborts, SIGABRT); - tcase_add_test_raise_signal(tc_basic, - test_lwc_context_size_aborts, - SIGABRT); #endif - tcase_add_test(tc_basic, test_lwc_context_creation_ok); - tcase_add_test(tc_basic, test_lwc_context_destruction_ok); - tcase_add_test(tc_basic, test_lwc_reffed_context_destruction_ok); + tcase_add_test(tc_basic, test_lwc_double_initialise_fails); + tcase_add_test(tc_basic, test_lwc_initialise_fails_with_no_memory); + tcase_add_test(tc_basic, test_lwc_initialise_fails_with_low_memory); + tcase_add_test(tc_basic, test_lwc_intern_fails_with_no_memory); + tcase_add_test(tc_basic, test_lwc_caseless_compare_fails_with_no_memory1); + tcase_add_test(tc_basic, test_lwc_caseless_compare_fails_with_no_memory2); + suite_add_tcase(s, tc_basic); tc_basic = tcase_create("Ops with a context"); tcase_add_checked_fixture(tc_basic, with_simple_context_setup, with_simple_context_teardown); - tcase_add_test(tc_basic, test_lwc_context_intern_ok); - tcase_add_test(tc_basic, test_lwc_context_intern_twice_ok); - tcase_add_test(tc_basic, test_lwc_context_intern_twice_same_ok); - tcase_add_test(tc_basic, test_lwc_context_size_non_zero); - tcase_add_test(tc_basic, - test_lwc_context_size_updated_on_string_intern); - tcase_add_test(tc_basic, test_lwc_context_size_updated_on_string_unref); - tcase_add_test(tc_basic, - test_lwc_context_size_updated_on_substring_intern); - tcase_add_test(tc_basic, - test_lwc_context_size_updated_on_substring_unref); + tcase_add_test(tc_basic, test_lwc_intern_string_ok); + tcase_add_test(tc_basic, test_lwc_intern_string_twice_ok); + tcase_add_test(tc_basic, test_lwc_intern_string_twice_same_ok); suite_add_tcase(s, tc_basic); tc_basic = tcase_create("Ops with a filled context"); @@ -625,14 +488,19 @@ lwc_basic_suite(SRunner *sr) with_filled_context_teardown); tcase_add_test(tc_basic, test_lwc_interning_works); tcase_add_test(tc_basic, test_lwc_intern_substring); - tcase_add_test(tc_basic, test_lwc_context_string_ref_ok); - tcase_add_test(tc_basic, test_lwc_context_string_unref_ok); - tcase_add_test(tc_basic, test_lwc_context_string_isequal_ok); - tcase_add_test(tc_basic, test_lwc_context_string_caseless_isequal_ok); + tcase_add_test(tc_basic, test_lwc_string_ref_ok); + tcase_add_test(tc_basic, test_lwc_string_ref_unref_ok); + tcase_add_test(tc_basic, test_lwc_string_unref_ok); + tcase_add_test(tc_basic, test_lwc_string_isequal_ok); + tcase_add_test(tc_basic, test_lwc_string_caseless_isequal_ok1); + tcase_add_test(tc_basic, test_lwc_string_caseless_isequal_ok2); + tcase_add_test(tc_basic, test_lwc_string_caseless_isequal_bad); tcase_add_test(tc_basic, test_lwc_extract_data_ok); tcase_add_test(tc_basic, test_lwc_string_hash_value_ok); tcase_add_test(tc_basic, test_lwc_string_is_nul_terminated); tcase_add_test(tc_basic, test_lwc_substring_is_nul_terminated); + tcase_add_test(tc_basic, test_lwc_intern_substring_bad_size); + tcase_add_test(tc_basic, test_lwc_intern_substring_bad_offset); suite_add_tcase(s, tc_basic); srunner_add_suite(sr, s); |