1/* 2 * QInt unit-tests. 3 * 4 * Copyright (C) 2009 Red Hat Inc. 5 * 6 * Authors: 7 * Luiz Capitulino <lcapitulino@redhat.com> 8 * 9 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. 10 * See the COPYING.LIB file in the top-level directory. 11 */ 12#include <glib.h> 13 14#include "qapi/qmp/qint.h" 15#include "qemu-common.h" 16 17/* 18 * Public Interface test-cases 19 * 20 * (with some violations to access 'private' data) 21 */ 22 23static void qint_from_int_test(void) 24{ 25 QInt *qi; 26 const int value = -42; 27 28 qi = qint_from_int(value); 29 g_assert(qi != NULL); 30 g_assert(qi->value == value); 31 g_assert(qi->base.refcnt == 1); 32 g_assert(qobject_type(QOBJECT(qi)) == QTYPE_QINT); 33 34 // destroy doesn't exit yet 35 g_free(qi); 36} 37 38static void qint_destroy_test(void) 39{ 40 QInt *qi = qint_from_int(0); 41 QDECREF(qi); 42} 43 44static void qint_from_int64_test(void) 45{ 46 QInt *qi; 47 const int64_t value = 0x1234567890abcdefLL; 48 49 qi = qint_from_int(value); 50 g_assert((int64_t) qi->value == value); 51 52 QDECREF(qi); 53} 54 55static void qint_get_int_test(void) 56{ 57 QInt *qi; 58 const int value = 123456; 59 60 qi = qint_from_int(value); 61 g_assert(qint_get_int(qi) == value); 62 63 QDECREF(qi); 64} 65 66static void qobject_to_qint_test(void) 67{ 68 QInt *qi; 69 70 qi = qint_from_int(0); 71 g_assert(qobject_to_qint(QOBJECT(qi)) == qi); 72 73 QDECREF(qi); 74} 75 76int main(int argc, char **argv) 77{ 78 g_test_init(&argc, &argv, NULL); 79 80 g_test_add_func("/public/from_int", qint_from_int_test); 81 g_test_add_func("/public/destroy", qint_destroy_test); 82 g_test_add_func("/public/from_int64", qint_from_int64_test); 83 g_test_add_func("/public/get_int", qint_get_int_test); 84 g_test_add_func("/public/to_qint", qobject_to_qint_test); 85 86 return g_test_run(); 87} 88