diff options
Diffstat (limited to 'common/refarray/ref_array_ut.c')
-rw-r--r-- | common/refarray/ref_array_ut.c | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/common/refarray/ref_array_ut.c b/common/refarray/ref_array_ut.c index 6e6009a..2b6f27c 100644 --- a/common/refarray/ref_array_ut.c +++ b/common/refarray/ref_array_ut.c @@ -560,7 +560,123 @@ int ref_array_adv_test(void) return EOK; } +int copy_cb(void *elem, + void *new_elem) +{ + char *ne = NULL; + + ne = strdup(*((char **)elem)); + *(char ***)new_elem = ≠ + + return EOK; +} + +int ref_array_copy_test(void) +{ + const char *line1 = "line1"; + const char *line2 = "line2"; + const char *line3 = "line3"; + const char *line4 = "line4"; + const char *line5 = "line5"; + const char *line6 = "line6"; + uint32_t i; + struct ref_array *ra; + struct ref_array *ra2; + int error = EOK; + uint32_t len = 0; + + error = ref_array_create(&ra, sizeof(char *), 1, NULL, NULL); + if (error) { + printf("Failed to create array %d\n", error); + return error; + } + + RAOUT(ref_array_debug(ra)); + + error = ref_array_append(ra, &line1); + if (error) { + ref_array_destroy(ra); + printf("Failed to append to array line 1 %d\n", error); + return error; + } + + RAOUT(ref_array_debug(ra)); + + error = ref_array_append(ra, &line2); + if (error) { + ref_array_destroy(ra); + printf("Failed to append to array line 2 %d\n", error); + return error; + } + + RAOUT(ref_array_debug(ra)); + + error = ref_array_append(ra, &line3); + if (error) { + ref_array_destroy(ra); + printf("Failed to append to array line 3 %d\n", error); + return error; + } + + RAOUT(ref_array_debug(ra)); + + error = ref_array_append(ra, &line4); + if (error) { + ref_array_destroy(ra); + printf("Failed to append to array line 4 %d\n", error); + return error; + } + + RAOUT(ref_array_debug(ra)); + + error = ref_array_append(ra, &line5); + if (error) { + ref_array_destroy(ra); + printf("Failed to append to array line 5 %d\n", error); + return error; + } + + RAOUT(ref_array_debug(ra)); + + error = ref_array_append(ra, &line6); + if (error) { + ref_array_destroy(ra); + printf("Failed to append to array line 6 %d\n", error); + return error; + } + RAOUT(ref_array_debug(ra)); + + RAOUT(printf("\n\nTest 1 - Printing lines.\n\n")); + + error = ref_array_copy(ra, copy_cb, &ra2); + if (error) { + ref_array_destroy(ra); + printf("Failed to get length %d\n", error); + return error; + } + + for (i = 0; i < len; i++) { + if (strcmp(ref_array_get(ra, i, NULL), + ref_array_get(ra2, i, NULL)) != 0) { + printf("\nRetrieved strings were expected to be same,\n"); + printf("but they are not:\n"); + printf("First:[%s]\nSecond:[%s]\n", + (char *)ref_array_get(ra, i, NULL), + (char *)ref_array_get(ra2, i, NULL)); + ref_array_destroy(ra); + ref_array_destroy(ra2); + return EFAULT; + } + } + + ref_array_destroy(ra); + ref_array_destroy(ra2); + + RAOUT(printf("\n\nDone!!!\n\n")); + return EOK; + +} /* Main function of the unit test */ int main(int argc, char *argv[]) @@ -569,6 +685,7 @@ int main(int argc, char *argv[]) test_fn tests[] = { ref_array_basic_test, ref_array_free_test, ref_array_adv_test, + ref_array_copy_test, NULL }; test_fn t; int i = 0; |