From b72451ef8c5f68bb81189c7ddfffb13a78bff675 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Thu, 7 Jan 2010 13:00:41 -0600 Subject: [PATCH] Add unit test for idmap utilities --- Makefile.am | 6 ++- unit/test-idmap.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 unit/test-idmap.c diff --git a/Makefile.am b/Makefile.am index 57f788c4..757b7eb8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -261,7 +261,8 @@ dist_man_MANS = doc/ofonod.8 unit_objects = noinst_PROGRAMS = unit/test-common unit/test-util \ - unit/test-sms unit/test-simutil unit/test-mux + unit/test-sms unit/test-simutil unit/test-mux \ + unit/test-idmap unit_test_common_SOURCES = unit/test-common.c src/common.c unit_test_common_LDADD = @GLIB_LIBS@ @@ -285,6 +286,9 @@ unit_test_mux_SOURCES = unit/test-mux.c $(gatchat_sources) unit_test_mux_LDADD = @GLIB_LIBS@ unit_objects += $(unit_test_mux_OBJECTS) +unit_test_idmap_SOURCES = unit/test-idmap.c src/idmap.c +unit_test_idmap_LDADD = @GLIB_LIBS@ +unit_objects += $(unit_test_idmap_OBJECTS) noinst_PROGRAMS += gatchat/gsmdial diff --git a/unit/test-idmap.c b/unit/test-idmap.c new file mode 100644 index 00000000..0a8c4ff4 --- /dev/null +++ b/unit/test-idmap.c @@ -0,0 +1,97 @@ +/* + * + * oFono - Open Source Telephony + * + * Copyright (C) 2008-2010 Intel Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + +#include "idmap.h" + +static void test_alloc() +{ + struct idmap *idmap; + unsigned int bit; + + idmap = idmap_new(2); + + g_assert(idmap); + + bit = idmap_alloc(idmap); + g_assert(bit == 1); + + bit = idmap_alloc(idmap); + g_assert(bit == 2); + + bit = idmap_alloc(idmap); + g_assert(bit == 0); + + idmap_put(idmap, 3); + bit = idmap_alloc(idmap); + g_assert(bit == 0); + + idmap_put(idmap, 0); + bit = idmap_alloc(idmap); + g_assert(bit == 0); + + idmap_put(idmap, 1); + bit = idmap_alloc(idmap); + g_assert(bit == 1); + + idmap_put(idmap, 1); + idmap_put(idmap, 2); + bit = idmap_alloc(idmap); + g_assert(bit == 1); + + idmap_free(idmap); +} + +static void test_alloc_next() +{ + struct idmap *idmap; + unsigned int bit; + + idmap = idmap_new(256); + + g_assert(idmap); + + bit = idmap_alloc_next(idmap, 255); + g_assert(bit == 256); + + bit = idmap_alloc_next(idmap, 255); + g_assert(bit == 1); + + bit = idmap_alloc_next(idmap, 1); + g_assert(bit == 2); + + idmap_free(idmap); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + + g_test_add_func("/testidmap/alloc", test_alloc); + g_test_add_func("/testidmap/alloc_next", test_alloc_next); + + return g_test_run(); +}