qemu/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 <check.h>
  13
  14#include "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
  23START_TEST(qint_from_int_test)
  24{
  25    QInt *qi;
  26    const int value = -42;
  27
  28    qi = qint_from_int(value);
  29    fail_unless(qi != NULL);
  30    fail_unless(qi->value == value);
  31    fail_unless(qi->base.refcnt == 1);
  32    fail_unless(qobject_type(QOBJECT(qi)) == QTYPE_QINT);
  33
  34    // destroy doesn't exit yet
  35    qemu_free(qi);
  36}
  37END_TEST
  38
  39START_TEST(qint_destroy_test)
  40{
  41    QInt *qi = qint_from_int(0);
  42    QDECREF(qi);
  43}
  44END_TEST
  45
  46START_TEST(qint_from_int64_test)
  47{
  48    QInt *qi;
  49    const int64_t value = 0x1234567890abcdefLL;
  50
  51    qi = qint_from_int(value);
  52    fail_unless((int64_t) qi->value == value);
  53
  54    QDECREF(qi);
  55}
  56END_TEST
  57
  58START_TEST(qint_get_int_test)
  59{
  60    QInt *qi;
  61    const int value = 123456;
  62
  63    qi = qint_from_int(value);
  64    fail_unless(qint_get_int(qi) == value);
  65
  66    QDECREF(qi);
  67}
  68END_TEST
  69
  70START_TEST(qobject_to_qint_test)
  71{
  72    QInt *qi;
  73
  74    qi = qint_from_int(0);
  75    fail_unless(qobject_to_qint(QOBJECT(qi)) == qi);
  76
  77    QDECREF(qi);
  78}
  79END_TEST
  80
  81static Suite *qint_suite(void)
  82{
  83    Suite *s;
  84    TCase *qint_public_tcase;
  85
  86    s = suite_create("QInt test-suite");
  87
  88    qint_public_tcase = tcase_create("Public Interface");
  89    suite_add_tcase(s, qint_public_tcase);
  90    tcase_add_test(qint_public_tcase, qint_from_int_test);
  91    tcase_add_test(qint_public_tcase, qint_destroy_test);
  92    tcase_add_test(qint_public_tcase, qint_from_int64_test);
  93    tcase_add_test(qint_public_tcase, qint_get_int_test);
  94    tcase_add_test(qint_public_tcase, qobject_to_qint_test);
  95
  96    return s;
  97}
  98
  99int main(void)
 100{
 101        int nf;
 102        Suite *s;
 103        SRunner *sr;
 104
 105        s = qint_suite();
 106        sr = srunner_create(s);
 107
 108        srunner_run_all(sr, CK_NORMAL);
 109        nf = srunner_ntests_failed(sr);
 110        srunner_free(sr);
 111
 112        return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
 113}
 114