|  | /* | 
|  | * QFloat unit-tests. | 
|  | * | 
|  | * Copyright IBM, Corp. 2009 | 
|  | * | 
|  | * Authors: | 
|  | *  Anthony Liguori   <aliguori@us.ibm.com> | 
|  | * | 
|  | * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. | 
|  | * See the COPYING.LIB file in the top-level directory. | 
|  | * | 
|  | */ | 
|  | #include <check.h> | 
|  |  | 
|  | #include "qfloat.h" | 
|  | #include "qemu-common.h" | 
|  |  | 
|  | /* | 
|  | * Public Interface test-cases | 
|  | * | 
|  | * (with some violations to access 'private' data) | 
|  | */ | 
|  |  | 
|  | START_TEST(qfloat_from_double_test) | 
|  | { | 
|  | QFloat *qf; | 
|  | const double value = -42.23423; | 
|  |  | 
|  | qf = qfloat_from_double(value); | 
|  | fail_unless(qf != NULL); | 
|  | fail_unless(qf->value == value); | 
|  | fail_unless(qf->base.refcnt == 1); | 
|  | fail_unless(qobject_type(QOBJECT(qf)) == QTYPE_QFLOAT); | 
|  |  | 
|  | // destroy doesn't exit yet | 
|  | qemu_free(qf); | 
|  | } | 
|  | END_TEST | 
|  |  | 
|  | START_TEST(qfloat_destroy_test) | 
|  | { | 
|  | QFloat *qf = qfloat_from_double(0.0); | 
|  | QDECREF(qf); | 
|  | } | 
|  | END_TEST | 
|  |  | 
|  | static Suite *qfloat_suite(void) | 
|  | { | 
|  | Suite *s; | 
|  | TCase *qfloat_public_tcase; | 
|  |  | 
|  | s = suite_create("QFloat test-suite"); | 
|  |  | 
|  | qfloat_public_tcase = tcase_create("Public Interface"); | 
|  | suite_add_tcase(s, qfloat_public_tcase); | 
|  | tcase_add_test(qfloat_public_tcase, qfloat_from_double_test); | 
|  | tcase_add_test(qfloat_public_tcase, qfloat_destroy_test); | 
|  |  | 
|  | return s; | 
|  | } | 
|  |  | 
|  | int main(void) | 
|  | { | 
|  | int nf; | 
|  | Suite *s; | 
|  | SRunner *sr; | 
|  |  | 
|  | s = qfloat_suite(); | 
|  | sr = srunner_create(s); | 
|  |  | 
|  | srunner_run_all(sr, CK_NORMAL); | 
|  | nf = srunner_ntests_failed(sr); | 
|  | srunner_free(sr); | 
|  |  | 
|  | return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE; | 
|  | } |