qemu/tests/check-qint.c
<<
>>
Prefs
   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 "qemu/osdep.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