Skip to content

Commit

Permalink
Start writing some unittests for vde_ordhash
Browse files Browse the repository at this point in the history
Just a basic infrastructure for now, needs to be expanded.

Signed-off-by: Luca Bigliardi <shammash@artha.org>
  • Loading branch information
shammash committed Jul 30, 2010
1 parent 9d6c001 commit 3c4a201
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 2 deletions.
7 changes: 5 additions & 2 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,14 @@ src_vde_hub2hub_LDFLAGS = -levent


if CHECK
TESTS = tests/check_context
check_PROGRAMS = tests/check_context
TESTS = tests/check_context tests/check_vde_ordhash
check_PROGRAMS = tests/check_context tests/check_vde_ordhash
tests_check_context_SOURCES = tests/check_context.c
tests_check_context_CFLAGS = $(AM_CFLAGS) $(CHECK_CFLAGS) -I$(top_srcdir)/src/include/
tests_check_context_LDADD = $(CHECK_LIBS) src/libvde.la
tests_check_vde_ordhash_SOURCES = tests/check_vde_ordhash.c
tests_check_vde_ordhash_CFLAGS = $(AM_CFLAGS) $(CHECK_CFLAGS) -I$(top_srcdir)/src/include/
tests_check_vde_ordhash_LDADD = $(CHECK_LIBS) src/libvde.la

val_default_opts = --tool=memcheck -q --show-reachable=yes \
--leak-check=yes --num-callers=20 --track-fds=yes --read-var-info=yes \
Expand Down
86 changes: 86 additions & 0 deletions tests/check_vde_ordhash.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>

#include <check.h>
#include <vde3/vde_ordhash.h>

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#ifdef HAVE_VALGRIND_VALGRIND_H
#include <valgrind/valgrind.h>
#define V_START_TEST(n) START_TEST(n) VALGRIND_PRINTF("starting test "#n"\n");
#else
#define V_START_TEST(n) START_TEST(n)
#endif

// fixture components, always present
vde_ordhash *f_oh;

void
setup (void)
{
f_oh = vde_ordhash_new();
}

void
teardown (void)
{
vde_ordhash_delete(f_oh);
}


V_START_TEST (test_ordhash_insert_lookup_remove)
{
void *fk = 1, *fv = 2, *rfv = NULL;
void *sk = 3, *sv = 4, *rsv = NULL;
int rv = 0;

vde_ordhash_insert(f_oh, fk, fv);
rfv = vde_ordhash_lookup(f_oh, fk);
fail_unless (rfv == fv, "could not lookup first value");

vde_ordhash_insert(f_oh, sk, sv);
rsv = vde_ordhash_lookup(f_oh, sk);
fail_unless (rsv == sv, "could not lookup second value");

rv = vde_ordhash_remove(f_oh, fk);
fail_unless (rv != 0, "remove first item returned zero");

rv = vde_ordhash_remove(f_oh, sk);
fail_unless (rv != 0, "remove second item returned zero");

}
END_TEST

Suite *
vde_ordhash_suite (void)
{
Suite *s = suite_create ("vde_ordhash");

/* Core test case */
TCase *tc_core = tcase_create ("Core");
tcase_add_checked_fixture (tc_core, setup, teardown);
tcase_add_test (tc_core, test_ordhash_insert_lookup_remove);
suite_add_tcase (s, tc_core);

/* Component test case */
TCase *tc_iterators = tcase_create ("Iterators");
tcase_add_checked_fixture (tc_iterators, setup, teardown);
suite_add_tcase (s, tc_iterators);
return s;
}

int
main (void)
{
int number_failed;
Suite *s = vde_ordhash_suite ();
SRunner *sr = srunner_create (s);
srunner_run_all (sr, CK_NORMAL);
number_failed = srunner_ntests_failed (sr);
srunner_free (sr);
return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
}

0 comments on commit 3c4a201

Please sign in to comment.