]>
Commit | Line | Data |
---|---|---|
33837ba6 LC |
1 | /* |
2 | * QInt unit-tests. | |
3 | * | |
4 | * Copyright (C) 2009 Red Hat Inc. | |
5 | * | |
6 | * Authors: | |
7 | * Luiz Capitulino <[email protected]> | |
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 | ||
20 | START_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 | } | |
34 | END_TEST | |
35 | ||
36 | START_TEST(qint_destroy_test) | |
37 | { | |
38 | QInt *qi = qint_from_int(0); | |
39 | QDECREF(qi); | |
40 | } | |
41 | END_TEST | |
42 | ||
43 | START_TEST(qint_from_int64_test) | |
44 | { | |
45 | QInt *qi; | |
02c068c3 | 46 | const int64_t value = 0x1234567890abcdefLL; |
33837ba6 LC |
47 | |
48 | qi = qint_from_int(value); | |
02c068c3 | 49 | fail_unless((int64_t) qi->value == value); |
33837ba6 LC |
50 | |
51 | QDECREF(qi); | |
52 | } | |
53 | END_TEST | |
54 | ||
55 | START_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 | } | |
65 | END_TEST | |
66 | ||
67 | START_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 | } | |
76 | END_TEST | |
77 | ||
78 | static 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 | ||
96 | int 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 | } |