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 */ 12681c28a3SPeter Maydell #include "qemu/osdep.h" 135de65a07SLuiz Capitulino 147b1b5d19SPaolo Bonzini #include "qapi/qmp/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 230ac7cc2aSAnthony 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); 290ac7cc2aSAnthony Liguori g_assert(qstring != NULL); 300ac7cc2aSAnthony Liguori g_assert(qstring->base.refcnt == 1); 310ac7cc2aSAnthony Liguori g_assert(strcmp(str, qstring->string) == 0); 320ac7cc2aSAnthony Liguori g_assert(qobject_type(QOBJECT(qstring)) == QTYPE_QSTRING); 335de65a07SLuiz Capitulino 34cb3e7f08SMarc-André Lureau qobject_unref(qstring); 355de65a07SLuiz Capitulino } 365de65a07SLuiz Capitulino 370ac7cc2aSAnthony Liguori static void qstring_get_str_test(void) 385de65a07SLuiz Capitulino { 395de65a07SLuiz Capitulino QString *qstring; 405de65a07SLuiz Capitulino const char *ret_str; 415de65a07SLuiz Capitulino const char *str = "QEMU/KVM"; 425de65a07SLuiz Capitulino 435de65a07SLuiz Capitulino qstring = qstring_from_str(str); 445de65a07SLuiz Capitulino ret_str = qstring_get_str(qstring); 450ac7cc2aSAnthony Liguori g_assert(strcmp(ret_str, str) == 0); 465de65a07SLuiz Capitulino 47cb3e7f08SMarc-André Lureau qobject_unref(qstring); 485de65a07SLuiz Capitulino } 495de65a07SLuiz Capitulino 500ac7cc2aSAnthony Liguori static void qstring_append_chr_test(void) 51f08932c8SLuiz Capitulino { 52f08932c8SLuiz Capitulino int i; 53f08932c8SLuiz Capitulino QString *qstring; 54f08932c8SLuiz Capitulino const char *str = "qstring append char unit-test"; 55f08932c8SLuiz Capitulino 56f08932c8SLuiz Capitulino qstring = qstring_new(); 57f08932c8SLuiz Capitulino 58f08932c8SLuiz Capitulino for (i = 0; str[i]; i++) 59f08932c8SLuiz Capitulino qstring_append_chr(qstring, str[i]); 60f08932c8SLuiz Capitulino 610ac7cc2aSAnthony Liguori g_assert(strcmp(str, qstring_get_str(qstring)) == 0); 62cb3e7f08SMarc-André Lureau qobject_unref(qstring); 63f08932c8SLuiz Capitulino } 64f08932c8SLuiz Capitulino 650ac7cc2aSAnthony Liguori static void qstring_from_substr_test(void) 6664084a03SLuiz Capitulino { 6764084a03SLuiz Capitulino QString *qs; 6864084a03SLuiz Capitulino 69*ba891d68SMarkus Armbruster qs = qstring_from_substr("virtualization", 3, 10); 700ac7cc2aSAnthony Liguori g_assert(qs != NULL); 710ac7cc2aSAnthony Liguori g_assert(strcmp(qstring_get_str(qs), "tualiza") == 0); 7264084a03SLuiz Capitulino 73cb3e7f08SMarc-André Lureau qobject_unref(qs); 7464084a03SLuiz Capitulino } 7564084a03SLuiz Capitulino 7664084a03SLuiz Capitulino 770ac7cc2aSAnthony Liguori static void qobject_to_qstring_test(void) 785de65a07SLuiz Capitulino { 795de65a07SLuiz Capitulino QString *qstring; 805de65a07SLuiz Capitulino 815de65a07SLuiz Capitulino qstring = qstring_from_str("foo"); 827dc847ebSMax Reitz g_assert(qobject_to(QString, QOBJECT(qstring)) == qstring); 835de65a07SLuiz Capitulino 84cb3e7f08SMarc-André Lureau qobject_unref(qstring); 855de65a07SLuiz Capitulino } 865de65a07SLuiz Capitulino 870ac7cc2aSAnthony Liguori int main(int argc, char **argv) 885de65a07SLuiz Capitulino { 890ac7cc2aSAnthony Liguori g_test_init(&argc, &argv, NULL); 905de65a07SLuiz Capitulino 910ac7cc2aSAnthony Liguori g_test_add_func("/public/from_str", qstring_from_str_test); 920ac7cc2aSAnthony Liguori g_test_add_func("/public/get_str", qstring_get_str_test); 930ac7cc2aSAnthony Liguori g_test_add_func("/public/append_chr", qstring_append_chr_test); 940ac7cc2aSAnthony Liguori g_test_add_func("/public/from_substr", qstring_from_substr_test); 950ac7cc2aSAnthony Liguori g_test_add_func("/public/to_qstring", qobject_to_qstring_test); 965de65a07SLuiz Capitulino 970ac7cc2aSAnthony Liguori return g_test_run(); 985de65a07SLuiz Capitulino } 99