On Wed, Jun 15, 2022 at 6:58 PM Steve Sistare <steven.sist...@oracle.com>
wrote:

> Signed-off-by: Steve Sistare <steven.sist...@oracle.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com>


> ---
>  MAINTAINERS               |  1 +
>  tests/unit/meson.build    |  1 +
>  tests/unit/test-strlist.c | 81
> +++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 83 insertions(+)
>  create mode 100644 tests/unit/test-strlist.c
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 1e4e72f..f9a6362 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -3160,6 +3160,7 @@ F: include/migration/cpr.h
>  F: migration/cpr.c
>  F: qapi/cpr.json
>  F: stubs/cpr.c
> +F: tests/unit/test-strlist.c
>
>  Record/replay
>  M: Pavel Dovgalyuk <pavel.dovga...@ispras.ru>
> diff --git a/tests/unit/meson.build b/tests/unit/meson.build
> index 287b367..57d48d5 100644
> --- a/tests/unit/meson.build
> +++ b/tests/unit/meson.build
> @@ -17,6 +17,7 @@ tests = {
>    'test-forward-visitor': [testqapi],
>    'test-string-input-visitor': [testqapi],
>    'test-string-output-visitor': [testqapi],
> +  'test-strlist': [testqapi],
>    'test-opts-visitor': [testqapi],
>    'test-visitor-serialization': [testqapi],
>    'test-bitmap': [],
> diff --git a/tests/unit/test-strlist.c b/tests/unit/test-strlist.c
> new file mode 100644
> index 0000000..ef740dc
> --- /dev/null
> +++ b/tests/unit/test-strlist.c
> @@ -0,0 +1,81 @@
> +/*
> + * Copyright (c) 2022 Oracle and/or its affiliates.
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2.
> + * See the COPYING file in the top-level directory.
> + */
> +
> +#include "qemu/osdep.h"
> +#include "qapi/util.h"
> +#include "qapi/qapi-builtin-types.h"
> +
> +static strList *make_list(int length)
> +{
> +    strList *head = 0, *list, **prev = &head;
> +
> +    while (length--) {
> +        list = *prev = g_new0(strList, 1);
> +        list->value = g_strdup("aaa");
> +        prev = &list->next;
> +    }
> +    return head;
> +}
> +
> +static void test_length(void)
> +{
> +    strList *list;
> +    int i;
> +
> +    for (i = 0; i < 5; i++) {
> +        list = make_list(i);
> +        g_assert_cmpint(i, ==, QAPI_LIST_LENGTH(list));
> +        qapi_free_strList(list);
> +    }
> +}
> +
> +struct {
> +    const char *string;
> +    char delim;
> +    const char *args[5];
> +} list_data[] = {
> +    { 0, ',', { 0 } },
> +    { "", ',', { 0 } },
> +    { "a", ',', { "a", 0 } },
> +    { "a,b", ',', { "a", "b", 0 } },
> +    { "a,b,c", ',', { "a", "b", "c", 0 } },
> +    { "first last", ' ', { "first", "last", 0 } },
> +    { "a:", ':', { "a", 0 } },
> +    { "a::b", ':', { "a", "", "b", 0 } },
> +    { ":", ':', { "", 0 } },
> +    { ":a", ':', { "", "a", 0 } },
> +    { "::a", ':', { "", "", "a", 0 } },
> +};
> +
> +static void test_strv(void)
> +{
> +    int i, j;
> +    const char **expect;
> +    strList *list;
> +    GStrv args;
> +
> +    for (i = 0; i < ARRAY_SIZE(list_data); i++) {
> +        expect = list_data[i].args;
> +        list = strList_from_string(list_data[i].string,
> list_data[i].delim);
> +        args = strv_from_strList(list);
> +        qapi_free_strList(list);
> +        for (j = 0; expect[j] && args[j]; j++) {
> +            g_assert_cmpstr(expect[j], ==, args[j]);
> +        }
> +        g_assert_null(expect[j]);
> +        g_assert_null(args[j]);
> +        g_strfreev(args);
> +    }
> +}
> +
> +int main(int argc, char **argv)
> +{
> +    g_test_init(&argc, &argv, NULL);
> +    g_test_add_func("/test-string/length", test_length);
> +    g_test_add_func("/test-string/strv", test_strv);
> +    return g_test_run();
> +}
> --
> 1.8.3.1
>
>
>

-- 
Marc-André Lureau

Reply via email to