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