root / tests / check-qlist.c @ 5d12aa63
History | View | Annotate | Download (2.4 kB)
1 | 3aa3dcff | Luiz Capitulino | /*
|
---|---|---|---|
2 | 3aa3dcff | Luiz Capitulino | * QList unit-tests.
|
3 | 3aa3dcff | Luiz Capitulino | *
|
4 | 3aa3dcff | Luiz Capitulino | * Copyright (C) 2009 Red Hat Inc.
|
5 | 3aa3dcff | Luiz Capitulino | *
|
6 | 3aa3dcff | Luiz Capitulino | * Authors:
|
7 | 3aa3dcff | Luiz Capitulino | * Luiz Capitulino <lcapitulino@redhat.com>
|
8 | 3aa3dcff | Luiz Capitulino | *
|
9 | 41836a9f | Luiz Capitulino | * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
10 | 41836a9f | Luiz Capitulino | * See the COPYING.LIB file in the top-level directory.
|
11 | 3aa3dcff | Luiz Capitulino | */
|
12 | 91479dd0 | Anthony Liguori | #include <glib.h> |
13 | 3aa3dcff | Luiz Capitulino | |
14 | 7b1b5d19 | Paolo Bonzini | #include "qapi/qmp/qint.h" |
15 | 7b1b5d19 | Paolo Bonzini | #include "qapi/qmp/qlist.h" |
16 | 3aa3dcff | Luiz Capitulino | |
17 | 3aa3dcff | Luiz Capitulino | /*
|
18 | 3aa3dcff | Luiz Capitulino | * Public Interface test-cases
|
19 | 3aa3dcff | Luiz Capitulino | *
|
20 | 3aa3dcff | Luiz Capitulino | * (with some violations to access 'private' data)
|
21 | 3aa3dcff | Luiz Capitulino | */
|
22 | 3aa3dcff | Luiz Capitulino | |
23 | 91479dd0 | Anthony Liguori | static void qlist_new_test(void) |
24 | 3aa3dcff | Luiz Capitulino | { |
25 | 3aa3dcff | Luiz Capitulino | QList *qlist; |
26 | 3aa3dcff | Luiz Capitulino | |
27 | 3aa3dcff | Luiz Capitulino | qlist = qlist_new(); |
28 | 91479dd0 | Anthony Liguori | g_assert(qlist != NULL);
|
29 | 91479dd0 | Anthony Liguori | g_assert(qlist->base.refcnt == 1);
|
30 | 91479dd0 | Anthony Liguori | g_assert(qobject_type(QOBJECT(qlist)) == QTYPE_QLIST); |
31 | 3aa3dcff | Luiz Capitulino | |
32 | 3aa3dcff | Luiz Capitulino | // destroy doesn't exist yet
|
33 | 7267c094 | Anthony Liguori | g_free(qlist); |
34 | 3aa3dcff | Luiz Capitulino | } |
35 | 3aa3dcff | Luiz Capitulino | |
36 | 91479dd0 | Anthony Liguori | static void qlist_append_test(void) |
37 | 3aa3dcff | Luiz Capitulino | { |
38 | 3aa3dcff | Luiz Capitulino | QInt *qi; |
39 | 3aa3dcff | Luiz Capitulino | QList *qlist; |
40 | 3aa3dcff | Luiz Capitulino | QListEntry *entry; |
41 | 3aa3dcff | Luiz Capitulino | |
42 | 3aa3dcff | Luiz Capitulino | qi = qint_from_int(42);
|
43 | 3aa3dcff | Luiz Capitulino | |
44 | 3aa3dcff | Luiz Capitulino | qlist = qlist_new(); |
45 | 3aa3dcff | Luiz Capitulino | qlist_append(qlist, qi); |
46 | 3aa3dcff | Luiz Capitulino | |
47 | 3aa3dcff | Luiz Capitulino | entry = QTAILQ_FIRST(&qlist->head); |
48 | 91479dd0 | Anthony Liguori | g_assert(entry != NULL);
|
49 | 91479dd0 | Anthony Liguori | g_assert(entry->value == QOBJECT(qi)); |
50 | 3aa3dcff | Luiz Capitulino | |
51 | 3aa3dcff | Luiz Capitulino | // destroy doesn't exist yet
|
52 | 3aa3dcff | Luiz Capitulino | QDECREF(qi); |
53 | 7267c094 | Anthony Liguori | g_free(entry); |
54 | 7267c094 | Anthony Liguori | g_free(qlist); |
55 | 3aa3dcff | Luiz Capitulino | } |
56 | 3aa3dcff | Luiz Capitulino | |
57 | 91479dd0 | Anthony Liguori | static void qobject_to_qlist_test(void) |
58 | 3aa3dcff | Luiz Capitulino | { |
59 | 3aa3dcff | Luiz Capitulino | QList *qlist; |
60 | 3aa3dcff | Luiz Capitulino | |
61 | 3aa3dcff | Luiz Capitulino | qlist = qlist_new(); |
62 | 3aa3dcff | Luiz Capitulino | |
63 | 91479dd0 | Anthony Liguori | g_assert(qobject_to_qlist(QOBJECT(qlist)) == qlist); |
64 | 3aa3dcff | Luiz Capitulino | |
65 | 3aa3dcff | Luiz Capitulino | // destroy doesn't exist yet
|
66 | 7267c094 | Anthony Liguori | g_free(qlist); |
67 | 3aa3dcff | Luiz Capitulino | } |
68 | 3aa3dcff | Luiz Capitulino | |
69 | 91479dd0 | Anthony Liguori | static void qlist_destroy_test(void) |
70 | 3aa3dcff | Luiz Capitulino | { |
71 | 3aa3dcff | Luiz Capitulino | int i;
|
72 | 3aa3dcff | Luiz Capitulino | QList *qlist; |
73 | 3aa3dcff | Luiz Capitulino | |
74 | 3aa3dcff | Luiz Capitulino | qlist = qlist_new(); |
75 | 3aa3dcff | Luiz Capitulino | |
76 | 3aa3dcff | Luiz Capitulino | for (i = 0; i < 42; i++) |
77 | 3aa3dcff | Luiz Capitulino | qlist_append(qlist, qint_from_int(i)); |
78 | 3aa3dcff | Luiz Capitulino | |
79 | 3aa3dcff | Luiz Capitulino | QDECREF(qlist); |
80 | 3aa3dcff | Luiz Capitulino | } |
81 | 3aa3dcff | Luiz Capitulino | |
82 | 3aa3dcff | Luiz Capitulino | static int iter_called; |
83 | 3aa3dcff | Luiz Capitulino | static const int iter_max = 42; |
84 | 3aa3dcff | Luiz Capitulino | |
85 | 3aa3dcff | Luiz Capitulino | static void iter_func(QObject *obj, void *opaque) |
86 | 3aa3dcff | Luiz Capitulino | { |
87 | 3aa3dcff | Luiz Capitulino | QInt *qi; |
88 | 3aa3dcff | Luiz Capitulino | |
89 | 91479dd0 | Anthony Liguori | g_assert(opaque == NULL);
|
90 | 3aa3dcff | Luiz Capitulino | |
91 | 3aa3dcff | Luiz Capitulino | qi = qobject_to_qint(obj); |
92 | 91479dd0 | Anthony Liguori | g_assert(qi != NULL);
|
93 | 91479dd0 | Anthony Liguori | g_assert((qint_get_int(qi) >= 0) && (qint_get_int(qi) <= iter_max));
|
94 | 3aa3dcff | Luiz Capitulino | |
95 | 3aa3dcff | Luiz Capitulino | iter_called++; |
96 | 3aa3dcff | Luiz Capitulino | } |
97 | 3aa3dcff | Luiz Capitulino | |
98 | 91479dd0 | Anthony Liguori | static void qlist_iter_test(void) |
99 | 3aa3dcff | Luiz Capitulino | { |
100 | 3aa3dcff | Luiz Capitulino | int i;
|
101 | 3aa3dcff | Luiz Capitulino | QList *qlist; |
102 | 3aa3dcff | Luiz Capitulino | |
103 | 3aa3dcff | Luiz Capitulino | qlist = qlist_new(); |
104 | 3aa3dcff | Luiz Capitulino | |
105 | 3aa3dcff | Luiz Capitulino | for (i = 0; i < iter_max; i++) |
106 | 3aa3dcff | Luiz Capitulino | qlist_append(qlist, qint_from_int(i)); |
107 | 3aa3dcff | Luiz Capitulino | |
108 | 3aa3dcff | Luiz Capitulino | iter_called = 0;
|
109 | 3aa3dcff | Luiz Capitulino | qlist_iter(qlist, iter_func, NULL);
|
110 | 3aa3dcff | Luiz Capitulino | |
111 | 91479dd0 | Anthony Liguori | g_assert(iter_called == iter_max); |
112 | 3aa3dcff | Luiz Capitulino | |
113 | 3aa3dcff | Luiz Capitulino | QDECREF(qlist); |
114 | 3aa3dcff | Luiz Capitulino | } |
115 | 3aa3dcff | Luiz Capitulino | |
116 | 91479dd0 | Anthony Liguori | int main(int argc, char **argv) |
117 | 3aa3dcff | Luiz Capitulino | { |
118 | 91479dd0 | Anthony Liguori | g_test_init(&argc, &argv, NULL);
|
119 | 3aa3dcff | Luiz Capitulino | |
120 | 91479dd0 | Anthony Liguori | g_test_add_func("/public/new", qlist_new_test);
|
121 | 91479dd0 | Anthony Liguori | g_test_add_func("/public/append", qlist_append_test);
|
122 | 91479dd0 | Anthony Liguori | g_test_add_func("/public/to_qlist", qobject_to_qlist_test);
|
123 | 91479dd0 | Anthony Liguori | g_test_add_func("/public/destroy", qlist_destroy_test);
|
124 | 91479dd0 | Anthony Liguori | g_test_add_func("/public/iter", qlist_iter_test);
|
125 | 3aa3dcff | Luiz Capitulino | |
126 | 91479dd0 | Anthony Liguori | return g_test_run();
|
127 | 3aa3dcff | Luiz Capitulino | } |