xref: /qemu/tests/unit/check-qstring.c (revision 0ac7cc2af500b948510f2481c22e84a57b0a2447)
15de65a07SLuiz Capitulino /*
25de65a07SLuiz Capitulino  * QString unit-tests.
35de65a07SLuiz Capitulino  *
45de65a07SLuiz Capitulino  * Copyright (C) 2009 Red Hat Inc.
55de65a07SLuiz Capitulino  *
65de65a07SLuiz Capitulino  * Authors:
75de65a07SLuiz Capitulino  *  Luiz Capitulino <lcapitulino@redhat.com>
841836a9fSLuiz Capitulino  *
941836a9fSLuiz Capitulino  * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
1041836a9fSLuiz Capitulino  * See the COPYING.LIB file in the top-level directory.
115de65a07SLuiz Capitulino  */
125de65a07SLuiz Capitulino #include <check.h>
135de65a07SLuiz Capitulino 
145de65a07SLuiz Capitulino #include "qstring.h"
155de65a07SLuiz Capitulino #include "qemu-common.h"
165de65a07SLuiz Capitulino 
175de65a07SLuiz Capitulino /*
185de65a07SLuiz Capitulino  * Public Interface test-cases
195de65a07SLuiz Capitulino  *
205de65a07SLuiz Capitulino  * (with some violations to access 'private' data)
215de65a07SLuiz Capitulino  */
225de65a07SLuiz Capitulino 
23*0ac7cc2aSAnthony Liguori static void qstring_from_str_test(void)
245de65a07SLuiz Capitulino {
255de65a07SLuiz Capitulino     QString *qstring;
265de65a07SLuiz Capitulino     const char *str = "QEMU";
275de65a07SLuiz Capitulino 
285de65a07SLuiz Capitulino     qstring = qstring_from_str(str);
29*0ac7cc2aSAnthony Liguori     g_assert(qstring != NULL);
30*0ac7cc2aSAnthony Liguori     g_assert(qstring->base.refcnt == 1);
31*0ac7cc2aSAnthony Liguori     g_assert(strcmp(str, qstring->string) == 0);
32*0ac7cc2aSAnthony Liguori     g_assert(qobject_type(QOBJECT(qstring)) == QTYPE_QSTRING);
335de65a07SLuiz Capitulino 
345de65a07SLuiz Capitulino     // destroy doesn't exit yet
357267c094SAnthony Liguori     g_free(qstring->string);
367267c094SAnthony Liguori     g_free(qstring);
375de65a07SLuiz Capitulino }
385de65a07SLuiz Capitulino 
39*0ac7cc2aSAnthony Liguori static void qstring_destroy_test(void)
405de65a07SLuiz Capitulino {
415de65a07SLuiz Capitulino     QString *qstring = qstring_from_str("destroy test");
425de65a07SLuiz Capitulino     QDECREF(qstring);
435de65a07SLuiz Capitulino }
445de65a07SLuiz Capitulino 
45*0ac7cc2aSAnthony Liguori static void qstring_get_str_test(void)
465de65a07SLuiz Capitulino {
475de65a07SLuiz Capitulino     QString *qstring;
485de65a07SLuiz Capitulino     const char *ret_str;
495de65a07SLuiz Capitulino     const char *str = "QEMU/KVM";
505de65a07SLuiz Capitulino 
515de65a07SLuiz Capitulino     qstring = qstring_from_str(str);
525de65a07SLuiz Capitulino     ret_str = qstring_get_str(qstring);
53*0ac7cc2aSAnthony Liguori     g_assert(strcmp(ret_str, str) == 0);
545de65a07SLuiz Capitulino 
555de65a07SLuiz Capitulino     QDECREF(qstring);
565de65a07SLuiz Capitulino }
575de65a07SLuiz Capitulino 
58*0ac7cc2aSAnthony Liguori static void qstring_append_chr_test(void)
59f08932c8SLuiz Capitulino {
60f08932c8SLuiz Capitulino     int i;
61f08932c8SLuiz Capitulino     QString *qstring;
62f08932c8SLuiz Capitulino     const char *str = "qstring append char unit-test";
63f08932c8SLuiz Capitulino 
64f08932c8SLuiz Capitulino     qstring = qstring_new();
65f08932c8SLuiz Capitulino 
66f08932c8SLuiz Capitulino     for (i = 0; str[i]; i++)
67f08932c8SLuiz Capitulino         qstring_append_chr(qstring, str[i]);
68f08932c8SLuiz Capitulino 
69*0ac7cc2aSAnthony Liguori     g_assert(strcmp(str, qstring_get_str(qstring)) == 0);
70f08932c8SLuiz Capitulino     QDECREF(qstring);
71f08932c8SLuiz Capitulino }
72f08932c8SLuiz Capitulino 
73*0ac7cc2aSAnthony Liguori static void qstring_from_substr_test(void)
7464084a03SLuiz Capitulino {
7564084a03SLuiz Capitulino     QString *qs;
7664084a03SLuiz Capitulino 
7764084a03SLuiz Capitulino     qs = qstring_from_substr("virtualization", 3, 9);
78*0ac7cc2aSAnthony Liguori     g_assert(qs != NULL);
79*0ac7cc2aSAnthony Liguori     g_assert(strcmp(qstring_get_str(qs), "tualiza") == 0);
8064084a03SLuiz Capitulino 
8164084a03SLuiz Capitulino     QDECREF(qs);
8264084a03SLuiz Capitulino }
8364084a03SLuiz Capitulino 
8464084a03SLuiz Capitulino 
85*0ac7cc2aSAnthony Liguori static void qobject_to_qstring_test(void)
865de65a07SLuiz Capitulino {
875de65a07SLuiz Capitulino     QString *qstring;
885de65a07SLuiz Capitulino 
895de65a07SLuiz Capitulino     qstring = qstring_from_str("foo");
90*0ac7cc2aSAnthony Liguori     g_assert(qobject_to_qstring(QOBJECT(qstring)) == qstring);
915de65a07SLuiz Capitulino 
925de65a07SLuiz Capitulino     QDECREF(qstring);
935de65a07SLuiz Capitulino }
945de65a07SLuiz Capitulino 
95*0ac7cc2aSAnthony Liguori int main(int argc, char **argv)
965de65a07SLuiz Capitulino {
97*0ac7cc2aSAnthony Liguori     g_test_init(&argc, &argv, NULL);
985de65a07SLuiz Capitulino 
99*0ac7cc2aSAnthony Liguori     g_test_add_func("/public/from_str", qstring_from_str_test);
100*0ac7cc2aSAnthony Liguori     g_test_add_func("/public/destroy", qstring_destroy_test);
101*0ac7cc2aSAnthony Liguori     g_test_add_func("/public/get_str", qstring_get_str_test);
102*0ac7cc2aSAnthony Liguori     g_test_add_func("/public/append_chr", qstring_append_chr_test);
103*0ac7cc2aSAnthony Liguori     g_test_add_func("/public/from_substr", qstring_from_substr_test);
104*0ac7cc2aSAnthony Liguori     g_test_add_func("/public/to_qstring", qobject_to_qstring_test);
1055de65a07SLuiz Capitulino 
106*0ac7cc2aSAnthony Liguori     return g_test_run();
1075de65a07SLuiz Capitulino }
108