Skip to content

Commit

Permalink
Introduce QString unit-tests
Browse files Browse the repository at this point in the history
This suite contains tests to assure that QString API works as expected.

To execute it you should have check installed and build QEMU with
check support enabled (--enable-check-utests) and then run:

$ ./check-qstring

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
  • Loading branch information
Luiz Capitulino authored and Anthony Liguori committed Sep 4, 2009
1 parent 33837ba commit 5de65a0
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 1 deletion.
1 change: 1 addition & 0 deletions Makefile
Expand Up @@ -182,6 +182,7 @@ qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx
$(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@," GEN $@")

check-qint: check-qint.o qint.o qemu-malloc.o
check-qstring: check-qstring.o qstring.o qemu-malloc.o

clean:
# avoid old build problems by removing potentially incorrect old files
Expand Down
100 changes: 100 additions & 0 deletions check-qstring.c
@@ -0,0 +1,100 @@
/*
* QString unit-tests.
*
* Copyright (C) 2009 Red Hat Inc.
*
* Authors:
* Luiz Capitulino <lcapitulino@redhat.com>
*/
#include <check.h>

#include "qstring.h"
#include "qemu-common.h"

/*
* Public Interface test-cases
*
* (with some violations to access 'private' data)
*/

START_TEST(qstring_from_str_test)
{
QString *qstring;
const char *str = "QEMU";

qstring = qstring_from_str(str);
fail_unless(qstring != NULL);
fail_unless(qstring->base.refcnt == 1);
fail_unless(strcmp(str, qstring->string) == 0);
fail_unless(qobject_type(QOBJECT(qstring)) == QTYPE_QSTRING);

// destroy doesn't exit yet
qemu_free(qstring->string);
qemu_free(qstring);
}
END_TEST

START_TEST(qstring_destroy_test)
{
QString *qstring = qstring_from_str("destroy test");
QDECREF(qstring);
}
END_TEST

START_TEST(qstring_get_str_test)
{
QString *qstring;
const char *ret_str;
const char *str = "QEMU/KVM";

qstring = qstring_from_str(str);
ret_str = qstring_get_str(qstring);
fail_unless(strcmp(ret_str, str) == 0);

QDECREF(qstring);
}
END_TEST

START_TEST(qobject_to_qstring_test)
{
QString *qstring;

qstring = qstring_from_str("foo");
fail_unless(qobject_to_qstring(QOBJECT(qstring)) == qstring);

QDECREF(qstring);
}
END_TEST

static Suite *qstring_suite(void)
{
Suite *s;
TCase *qstring_public_tcase;

s = suite_create("QString test-suite");

qstring_public_tcase = tcase_create("Public Interface");
suite_add_tcase(s, qstring_public_tcase);
tcase_add_test(qstring_public_tcase, qstring_from_str_test);
tcase_add_test(qstring_public_tcase, qstring_destroy_test);
tcase_add_test(qstring_public_tcase, qstring_get_str_test);
tcase_add_test(qstring_public_tcase, qobject_to_qstring_test);

return s;
}

int main(void)
{
int nf;
Suite *s;
SRunner *sr;

s = qstring_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;
}
2 changes: 1 addition & 1 deletion configure
Expand Up @@ -1927,7 +1927,7 @@ if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
if [ "$linux" = "yes" ] ; then
tools="qemu-nbd\$(EXESUF) qemu-io\$(EXESUF) $tools"
if [ "$check_utests" = "yes" ]; then
tools="check-qint $tools"
tools="check-qint check-qstring $tools"
fi
fi
fi
Expand Down

0 comments on commit 5de65a0

Please sign in to comment.