1/* 2 * QInt unit-tests. 3 * 4 * Copyright (C) 2009 Red Hat Inc. 5 * 6 * Authors: 7 * Luiz Capitulino <lcapitulino@redhat.com> 8 */ 9#include <check.h> 10 11#include "qint.h" 12#include "qemu-common.h" 13 14/* 15 * Public Interface test-cases 16 * 17 * (with some violations to access 'private' data) 18 */ 19 20START_TEST(qint_from_int_test) 21{ 22 QInt *qi; 23 const int value = -42; 24 25 qi = qint_from_int(value); 26 fail_unless(qi != NULL); 27 fail_unless(qi->value == value); 28 fail_unless(qi->base.refcnt == 1); 29 fail_unless(qobject_type(QOBJECT(qi)) == QTYPE_QINT); 30 31 // destroy doesn't exit yet 32 qemu_free(qi); 33} 34END_TEST 35 36START_TEST(qint_destroy_test) 37{ 38 QInt *qi = qint_from_int(0); 39 QDECREF(qi); 40} 41END_TEST 42 43START_TEST(qint_from_int64_test) 44{ 45 QInt *qi; 46 const int64_t value = 0x1234567890abcdefLL; 47 48 qi = qint_from_int(value); 49 fail_unless((int64_t) qi->value == value); 50 51 QDECREF(qi); 52} 53END_TEST 54 55START_TEST(qint_get_int_test) 56{ 57 QInt *qi; 58 const int value = 123456; 59 60 qi = qint_from_int(value); 61 fail_unless(qint_get_int(qi) == value); 62 63 QDECREF(qi); 64} 65END_TEST 66 67START_TEST(qobject_to_qint_test) 68{ 69 QInt *qi; 70 71 qi = qint_from_int(0); 72 fail_unless(qobject_to_qint(QOBJECT(qi)) == qi); 73 74 QDECREF(qi); 75} 76END_TEST 77 78static Suite *qint_suite(void) 79{ 80 Suite *s; 81 TCase *qint_public_tcase; 82 83 s = suite_create("QInt test-suite"); 84 85 qint_public_tcase = tcase_create("Public Interface"); 86 suite_add_tcase(s, qint_public_tcase); 87 tcase_add_test(qint_public_tcase, qint_from_int_test); 88 tcase_add_test(qint_public_tcase, qint_destroy_test); 89 tcase_add_test(qint_public_tcase, qint_from_int64_test); 90 tcase_add_test(qint_public_tcase, qint_get_int_test); 91 tcase_add_test(qint_public_tcase, qobject_to_qint_test); 92 93 return s; 94} 95 96int main(void) 97{ 98 int nf; 99 Suite *s; 100 SRunner *sr; 101 102 s = qint_suite(); 103 sr = srunner_create(s); 104 105 srunner_run_all(sr, CK_NORMAL); 106 nf = srunner_ntests_failed(sr); 107 srunner_free(sr); 108 109 return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE; 110} 111