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> 8*41836a9fSLuiz Capitulino * 9*41836a9fSLuiz Capitulino * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. 10*41836a9fSLuiz 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 235de65a07SLuiz Capitulino START_TEST(qstring_from_str_test) 245de65a07SLuiz Capitulino { 255de65a07SLuiz Capitulino QString *qstring; 265de65a07SLuiz Capitulino const char *str = "QEMU"; 275de65a07SLuiz Capitulino 285de65a07SLuiz Capitulino qstring = qstring_from_str(str); 295de65a07SLuiz Capitulino fail_unless(qstring != NULL); 305de65a07SLuiz Capitulino fail_unless(qstring->base.refcnt == 1); 315de65a07SLuiz Capitulino fail_unless(strcmp(str, qstring->string) == 0); 325de65a07SLuiz Capitulino fail_unless(qobject_type(QOBJECT(qstring)) == QTYPE_QSTRING); 335de65a07SLuiz Capitulino 345de65a07SLuiz Capitulino // destroy doesn't exit yet 355de65a07SLuiz Capitulino qemu_free(qstring->string); 365de65a07SLuiz Capitulino qemu_free(qstring); 375de65a07SLuiz Capitulino } 385de65a07SLuiz Capitulino END_TEST 395de65a07SLuiz Capitulino 405de65a07SLuiz Capitulino START_TEST(qstring_destroy_test) 415de65a07SLuiz Capitulino { 425de65a07SLuiz Capitulino QString *qstring = qstring_from_str("destroy test"); 435de65a07SLuiz Capitulino QDECREF(qstring); 445de65a07SLuiz Capitulino } 455de65a07SLuiz Capitulino END_TEST 465de65a07SLuiz Capitulino 475de65a07SLuiz Capitulino START_TEST(qstring_get_str_test) 485de65a07SLuiz Capitulino { 495de65a07SLuiz Capitulino QString *qstring; 505de65a07SLuiz Capitulino const char *ret_str; 515de65a07SLuiz Capitulino const char *str = "QEMU/KVM"; 525de65a07SLuiz Capitulino 535de65a07SLuiz Capitulino qstring = qstring_from_str(str); 545de65a07SLuiz Capitulino ret_str = qstring_get_str(qstring); 555de65a07SLuiz Capitulino fail_unless(strcmp(ret_str, str) == 0); 565de65a07SLuiz Capitulino 575de65a07SLuiz Capitulino QDECREF(qstring); 585de65a07SLuiz Capitulino } 595de65a07SLuiz Capitulino END_TEST 605de65a07SLuiz Capitulino 61f08932c8SLuiz Capitulino START_TEST(qstring_append_chr_test) 62f08932c8SLuiz Capitulino { 63f08932c8SLuiz Capitulino int i; 64f08932c8SLuiz Capitulino QString *qstring; 65f08932c8SLuiz Capitulino const char *str = "qstring append char unit-test"; 66f08932c8SLuiz Capitulino 67f08932c8SLuiz Capitulino qstring = qstring_new(); 68f08932c8SLuiz Capitulino 69f08932c8SLuiz Capitulino for (i = 0; str[i]; i++) 70f08932c8SLuiz Capitulino qstring_append_chr(qstring, str[i]); 71f08932c8SLuiz Capitulino 72f08932c8SLuiz Capitulino fail_unless(strcmp(str, qstring_get_str(qstring)) == 0); 73f08932c8SLuiz Capitulino QDECREF(qstring); 74f08932c8SLuiz Capitulino } 75f08932c8SLuiz Capitulino END_TEST 76f08932c8SLuiz Capitulino 7764084a03SLuiz Capitulino START_TEST(qstring_from_substr_test) 7864084a03SLuiz Capitulino { 7964084a03SLuiz Capitulino QString *qs; 8064084a03SLuiz Capitulino 8164084a03SLuiz Capitulino qs = qstring_from_substr("virtualization", 3, 9); 8264084a03SLuiz Capitulino fail_unless(qs != NULL); 8364084a03SLuiz Capitulino fail_unless(strcmp(qstring_get_str(qs), "tualiza") == 0); 8464084a03SLuiz Capitulino 8564084a03SLuiz Capitulino QDECREF(qs); 8664084a03SLuiz Capitulino } 8764084a03SLuiz Capitulino END_TEST 8864084a03SLuiz Capitulino 8964084a03SLuiz Capitulino 905de65a07SLuiz Capitulino START_TEST(qobject_to_qstring_test) 915de65a07SLuiz Capitulino { 925de65a07SLuiz Capitulino QString *qstring; 935de65a07SLuiz Capitulino 945de65a07SLuiz Capitulino qstring = qstring_from_str("foo"); 955de65a07SLuiz Capitulino fail_unless(qobject_to_qstring(QOBJECT(qstring)) == qstring); 965de65a07SLuiz Capitulino 975de65a07SLuiz Capitulino QDECREF(qstring); 985de65a07SLuiz Capitulino } 995de65a07SLuiz Capitulino END_TEST 1005de65a07SLuiz Capitulino 1015de65a07SLuiz Capitulino static Suite *qstring_suite(void) 1025de65a07SLuiz Capitulino { 1035de65a07SLuiz Capitulino Suite *s; 1045de65a07SLuiz Capitulino TCase *qstring_public_tcase; 1055de65a07SLuiz Capitulino 1065de65a07SLuiz Capitulino s = suite_create("QString test-suite"); 1075de65a07SLuiz Capitulino 1085de65a07SLuiz Capitulino qstring_public_tcase = tcase_create("Public Interface"); 1095de65a07SLuiz Capitulino suite_add_tcase(s, qstring_public_tcase); 1105de65a07SLuiz Capitulino tcase_add_test(qstring_public_tcase, qstring_from_str_test); 1115de65a07SLuiz Capitulino tcase_add_test(qstring_public_tcase, qstring_destroy_test); 1125de65a07SLuiz Capitulino tcase_add_test(qstring_public_tcase, qstring_get_str_test); 113f08932c8SLuiz Capitulino tcase_add_test(qstring_public_tcase, qstring_append_chr_test); 11464084a03SLuiz Capitulino tcase_add_test(qstring_public_tcase, qstring_from_substr_test); 1155de65a07SLuiz Capitulino tcase_add_test(qstring_public_tcase, qobject_to_qstring_test); 1165de65a07SLuiz Capitulino 1175de65a07SLuiz Capitulino return s; 1185de65a07SLuiz Capitulino } 1195de65a07SLuiz Capitulino 1205de65a07SLuiz Capitulino int main(void) 1215de65a07SLuiz Capitulino { 1225de65a07SLuiz Capitulino int nf; 1235de65a07SLuiz Capitulino Suite *s; 1245de65a07SLuiz Capitulino SRunner *sr; 1255de65a07SLuiz Capitulino 1265de65a07SLuiz Capitulino s = qstring_suite(); 1275de65a07SLuiz Capitulino sr = srunner_create(s); 1285de65a07SLuiz Capitulino 1295de65a07SLuiz Capitulino srunner_run_all(sr, CK_NORMAL); 1305de65a07SLuiz Capitulino nf = srunner_ntests_failed(sr); 1315de65a07SLuiz Capitulino srunner_free(sr); 1325de65a07SLuiz Capitulino 1335de65a07SLuiz Capitulino return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE; 1345de65a07SLuiz Capitulino } 135