diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/meson.build | 1 | ||||
| -rw-r--r-- | tests/units.c | 224 |
2 files changed, 225 insertions, 0 deletions
diff --git a/tests/meson.build b/tests/meson.build index 1074e40..70b06ef 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -1,3 +1,4 @@ +executable('units', ['units.c'], dependencies: naunet) executable('misc_file', ['misc_file.c'], dependencies: naunet) executable('condition_variable', ['condition_variable.c'], dependencies: naunet) executable('timer_thread', ['timer_thread.c'], dependencies: naunet) diff --git a/tests/units.c b/tests/units.c new file mode 100644 index 0000000..5cbd4a0 --- /dev/null +++ b/tests/units.c @@ -0,0 +1,224 @@ +#include <al/test.h> +#include <al/str.h> +#include <al/array.h> +#include <al/random.h> +#include <nnwt/common.h> +#include <nnwt/sort.h> + +#define SHUFFLE_ARRAY(arr) do { \ + al_assert((arr).count > 2); \ + for (u32 i = 0; i < (arr).count - 2; i++) { \ + u32 j = al_random_int(i, (arr).count - 1); \ + SWAP(al_array_at(arr, i), al_array_at(arr, j)); \ + } \ +} while (0) + +static bool sort_test_numerical_compare(void) +{ + AL_TEST_START("sort_numerical_compare"); + + array(str) strings; + al_array_init(strings); + + str files1[] = { + al_str_c("631475239_1.jpg"), + al_str_c("631475239_2.jpg"), + al_str_c("631475239_3.jpg"), + al_str_c("631475239_4.jpg"), + al_str_c("631475239_5.jpg"), + al_str_c("631475239_6.jpg"), + al_str_c("631475239_7.jpg"), + al_str_c("631475239_8.jpg"), + al_str_c("631475239_9.jpg"), + al_str_c("631475239_10.jpg"), + al_str_c("631475239_11.jpg"), + al_str_c("631475239_12.jpg"), + al_str_c("631475239_13.jpg"), + al_str_c("631475239_14.jpg"), + al_str_c("631475239_15.jpg"), + al_str_c("631475239_15.jpg"), + al_str_c("631475239_16.jpg"), + al_str_c("631475239_17.jpg"), + al_str_c("631475239_18.jpg"), + al_str_c("631475239_19.jpg"), + al_str_c("631475239_20.m4v"), + al_str_c("631475239_21.mp4") + }; + + al_array_push(strings, files1[7]); + al_array_push(strings, files1[16]); + al_array_push(strings, files1[2]); + al_array_push(strings, files1[10]); + al_array_push(strings, files1[3]); + al_array_push(strings, files1[13]); + al_array_push(strings, files1[4]); + al_array_push(strings, files1[6]); + al_array_push(strings, files1[17]); + al_array_push(strings, files1[18]); + al_array_push(strings, files1[8]); + al_array_push(strings, files1[19]); + al_array_push(strings, files1[9]); + al_array_push(strings, files1[11]); + al_array_push(strings, files1[5]); + al_array_push(strings, files1[12]); + al_array_push(strings, files1[21]); + al_array_push(strings, files1[0]); + al_array_push(strings, files1[14]); + al_array_push(strings, files1[15]); + al_array_push(strings, files1[1]); + al_array_push(strings, files1[20]); + SHUFFLE_ARRAY(strings); + + al_array_sort(strings, str, nn_numerical_compare); + + for (u32 i = 0; i < strings.count; i++) { + AL_TEST_TRUE(al_str_eq(&al_array_at(strings, i), &files1[i])); + } + + al_array_free(strings); + + al_array_init(strings); + + str files2[] = { + al_str_c("220.1png"), + al_str_c("220.jpg"), + al_str_c("220.png"), + al_str_c("35910.jpg"), + al_str_c("35910a.jpg"), + al_str_c("35910b.jpg"), + al_str_c("35910zzz.jpg"), + }; + + al_array_push(strings, files2[1]); + al_array_push(strings, files2[4]); + al_array_push(strings, files2[0]); + al_array_push(strings, files2[3]); + al_array_push(strings, files2[6]); + al_array_push(strings, files2[2]); + al_array_push(strings, files2[5]); + SHUFFLE_ARRAY(strings); + + al_array_sort(strings, str, nn_numerical_compare); + + for (u32 i = 0; i < strings.count; i++) { + AL_TEST_TRUE(al_str_eq(&al_array_at(strings, i), &files2[i])); + } + + al_array_free(strings); + + al_array_init(strings); + + str files3[] = { + al_str_c("214124_a.jpeg"), + al_str_c("625315_a.jpeg"), + al_str_c("1412310_b_2.png"), + al_str_c("1412311_b.png"), + al_str_c("1412311_b_2.png"), + al_str_c("1412311_b_b.png") + }; + + al_array_push(strings, files3[1]); + al_array_push(strings, files3[4]); + al_array_push(strings, files3[0]); + al_array_push(strings, files3[3]); + al_array_push(strings, files3[2]); + al_array_push(strings, files3[5]); + SHUFFLE_ARRAY(strings); + + al_array_sort(strings, str, nn_numerical_compare); + for (u32 i = 0; i < strings.count; i++) { + AL_TEST_TRUE(al_str_eq(&al_array_at(strings, i), &files3[i])); + } + + al_array_free(strings); + + al_array_init(strings); + + str files4[] = { + al_str_c("pixiv_i_75528824_media0.png"), + al_str_c("pixiv_i_76697911_media0.png"), + al_str_c("pixiv_i_80864793_media0.png"), + al_str_c("pixiv_i_80864793_media0.png"), + al_str_c("pixiv_i_80864793_media0.png"), + al_str_c("pixiv_i_80864793_media1.png"), + al_str_c("pixiv_i_122898592_media0.jpg"), + al_str_c("pixiv_i_122898592_media1.jfif") + }; + + al_array_push(strings, files4[3]); + al_array_push(strings, files4[4]); + al_array_push(strings, files4[6]); + al_array_push(strings, files4[2]); + al_array_push(strings, files4[5]); + al_array_push(strings, files4[7]); + al_array_push(strings, files4[1]); + al_array_push(strings, files4[0]); + SHUFFLE_ARRAY(strings); + + al_array_sort(strings, str, nn_numerical_compare); + + for (u32 i = 0; i < strings.count; i++) { + AL_TEST_TRUE(al_str_eq(&al_array_at(strings, i), &files4[i])); + } + + al_array_free(strings); + + al_array_init(strings); + + str files5[] = { + al_str_c("pixiv_i_24610911_media0.png"), + al_str_c("pixiv_i_27025514_media0.png"), + al_str_c("pixiv_i_33659689_media0.png"), + al_str_c("pixiv_i_42610626_media0.png"), + al_str_c("pixiv_i_49089079_media0.png"), + al_str_c("pixiv_i_49089079_media1.png"), + al_str_c("pixiv_i_49089079_media2.png"), + al_str_c("pixiv_i_49089079_media3.png"), + al_str_c("pixiv_i_49089079_media4.png"), + al_str_c("pixiv_i_49089079_media5.png"), + al_str_c("pixiv_i_49089079_media6.png"), + al_str_c("pixiv_i_49089079_media7.png"), + al_str_c("pixiv_i_49089079_media8.png"), + al_str_c("pixiv_i_49089079_media9.png"), + al_str_c("pixiv_i_49089079_media10.png"), + al_str_c("pixiv_i_49089079_media11.png"), + al_str_c("pixiv_i_49089079_media12.png"), + al_str_c("pixiv_i_49089079_media13.png"), + al_str_c("pixiv_i_49089079_media14.png"), + al_str_c("pixiv_i_49089079_media15.png"), + al_str_c("pixiv_i_49089079_media16.png"), + al_str_c("pixiv_i_49089079_media17.png"), + al_str_c("pixiv_i_49089079_media18.png"), + al_str_c("pixiv_i_49089079_media19.png"), + al_str_c("pixiv_i_49089079_media20.png"), + al_str_c("pixiv_i_49089079_media21.png"), + al_str_c("pixiv_i_114990114_media0.png") + }; + for (u32 i = 0; i < ARRAY_SIZE(files5); i++) { + al_array_push(strings, files5[i]); + } + SHUFFLE_ARRAY(strings); + + al_array_sort(strings, str, nn_numerical_compare); + + for (u32 i = 0; i < strings.count; i++) { + AL_TEST_TRUE(al_str_eq(&al_array_at(strings, i), &files5[i])); + } + + al_array_free(strings); + + AL_TEST_END(); +} + +s32 main(void) +{ + if (!nn_common_init(NULL)) return EXIT_FAILURE; + + AL_TEST_START_GROUP("units"); + + AL_TEST_RUN(sort_test_numerical_compare); + + AL_TEST_END_GROUP(); + + return EXIT_SUCCESS; +} |