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 */ 12*681c28a3SPeter Maydell #include "qemu/osdep.h" 13515aa3c5SAnthony Liguori #include <glib.h> 145de65a07SLuiz Capitulino 157b1b5d19SPaolo Bonzini #include "qapi/qmp/qstring.h" 165de65a07SLuiz Capitulino #include "qemu-common.h" 175de65a07SLuiz Capitulino 185de65a07SLuiz Capitulino /* 195de65a07SLuiz Capitulino * Public Interface test-cases 205de65a07SLuiz Capitulino * 215de65a07SLuiz Capitulino * (with some violations to access 'private' data) 225de65a07SLuiz Capitulino */ 235de65a07SLuiz Capitulino 240ac7cc2aSAnthony Liguori static void qstring_from_str_test(void) 255de65a07SLuiz Capitulino { 265de65a07SLuiz Capitulino QString *qstring; 275de65a07SLuiz Capitulino const char *str = "QEMU"; 285de65a07SLuiz Capitulino 295de65a07SLuiz Capitulino qstring = qstring_from_str(str); 300ac7cc2aSAnthony Liguori g_assert(qstring != NULL); 310ac7cc2aSAnthony Liguori g_assert(qstring->base.refcnt == 1); 320ac7cc2aSAnthony Liguori g_assert(strcmp(str, qstring->string) == 0); 330ac7cc2aSAnthony Liguori g_assert(qobject_type(QOBJECT(qstring)) == QTYPE_QSTRING); 345de65a07SLuiz Capitulino 355de65a07SLuiz Capitulino // destroy doesn't exit yet 367267c094SAnthony Liguori g_free(qstring->string); 377267c094SAnthony Liguori g_free(qstring); 385de65a07SLuiz Capitulino } 395de65a07SLuiz Capitulino 400ac7cc2aSAnthony Liguori static void qstring_destroy_test(void) 415de65a07SLuiz Capitulino { 425de65a07SLuiz Capitulino QString *qstring = qstring_from_str("destroy test"); 435de65a07SLuiz Capitulino QDECREF(qstring); 445de65a07SLuiz Capitulino } 455de65a07SLuiz Capitulino 460ac7cc2aSAnthony Liguori static void qstring_get_str_test(void) 475de65a07SLuiz Capitulino { 485de65a07SLuiz Capitulino QString *qstring; 495de65a07SLuiz Capitulino const char *ret_str; 505de65a07SLuiz Capitulino const char *str = "QEMU/KVM"; 515de65a07SLuiz Capitulino 525de65a07SLuiz Capitulino qstring = qstring_from_str(str); 535de65a07SLuiz Capitulino ret_str = qstring_get_str(qstring); 540ac7cc2aSAnthony Liguori g_assert(strcmp(ret_str, str) == 0); 555de65a07SLuiz Capitulino 565de65a07SLuiz Capitulino QDECREF(qstring); 575de65a07SLuiz Capitulino } 585de65a07SLuiz Capitulino 590ac7cc2aSAnthony Liguori static void qstring_append_chr_test(void) 60f08932c8SLuiz Capitulino { 61f08932c8SLuiz Capitulino int i; 62f08932c8SLuiz Capitulino QString *qstring; 63f08932c8SLuiz Capitulino const char *str = "qstring append char unit-test"; 64f08932c8SLuiz Capitulino 65f08932c8SLuiz Capitulino qstring = qstring_new(); 66f08932c8SLuiz Capitulino 67f08932c8SLuiz Capitulino for (i = 0; str[i]; i++) 68f08932c8SLuiz Capitulino qstring_append_chr(qstring, str[i]); 69f08932c8SLuiz Capitulino 700ac7cc2aSAnthony Liguori g_assert(strcmp(str, qstring_get_str(qstring)) == 0); 71f08932c8SLuiz Capitulino QDECREF(qstring); 72f08932c8SLuiz Capitulino } 73f08932c8SLuiz Capitulino 740ac7cc2aSAnthony Liguori static void qstring_from_substr_test(void) 7564084a03SLuiz Capitulino { 7664084a03SLuiz Capitulino QString *qs; 7764084a03SLuiz Capitulino 7864084a03SLuiz Capitulino qs = qstring_from_substr("virtualization", 3, 9); 790ac7cc2aSAnthony Liguori g_assert(qs != NULL); 800ac7cc2aSAnthony Liguori g_assert(strcmp(qstring_get_str(qs), "tualiza") == 0); 8164084a03SLuiz Capitulino 8264084a03SLuiz Capitulino QDECREF(qs); 8364084a03SLuiz Capitulino } 8464084a03SLuiz Capitulino 8564084a03SLuiz Capitulino 860ac7cc2aSAnthony Liguori static void qobject_to_qstring_test(void) 875de65a07SLuiz Capitulino { 885de65a07SLuiz Capitulino QString *qstring; 895de65a07SLuiz Capitulino 905de65a07SLuiz Capitulino qstring = qstring_from_str("foo"); 910ac7cc2aSAnthony Liguori g_assert(qobject_to_qstring(QOBJECT(qstring)) == qstring); 925de65a07SLuiz Capitulino 935de65a07SLuiz Capitulino QDECREF(qstring); 945de65a07SLuiz Capitulino } 955de65a07SLuiz Capitulino 960ac7cc2aSAnthony Liguori int main(int argc, char **argv) 975de65a07SLuiz Capitulino { 980ac7cc2aSAnthony Liguori g_test_init(&argc, &argv, NULL); 995de65a07SLuiz Capitulino 1000ac7cc2aSAnthony Liguori g_test_add_func("/public/from_str", qstring_from_str_test); 1010ac7cc2aSAnthony Liguori g_test_add_func("/public/destroy", qstring_destroy_test); 1020ac7cc2aSAnthony Liguori g_test_add_func("/public/get_str", qstring_get_str_test); 1030ac7cc2aSAnthony Liguori g_test_add_func("/public/append_chr", qstring_append_chr_test); 1040ac7cc2aSAnthony Liguori g_test_add_func("/public/from_substr", qstring_from_substr_test); 1050ac7cc2aSAnthony Liguori g_test_add_func("/public/to_qstring", qobject_to_qstring_test); 1065de65a07SLuiz Capitulino 1070ac7cc2aSAnthony Liguori return g_test_run(); 1085de65a07SLuiz Capitulino } 109