From bc69719462240016c6b3b80443ccede707b93347 Mon Sep 17 00:00:00 2001 From: Philipp Schafft Date: Wed, 15 Aug 2018 14:40:09 +0000 Subject: [PATCH] Feature: Added first (create/unref) tests for buffers --- src/tests/Makefile.am | 7 +++ src/tests/ctest_buffer.c | 111 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 src/tests/ctest_buffer.c diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am index e21c161f..bfa9497b 100644 --- a/src/tests/Makefile.am +++ b/src/tests/Makefile.am @@ -35,6 +35,13 @@ ctest_refobject_test_LDADD = libice_ctest.la \ icecast-refobject.o check_PROGRAMS += ctest_refobject.test +ctest_buffer_test_SOURCES = %reldir%/ctest_buffer.c +ctest_buffer_test_LDADD = libice_ctest.la \ + common/thread/libicethread.la \ + common/avl/libiceavl.la \ + icecast-refobject.o \ + icecast-buffer.o +check_PROGRAMS += ctest_buffer.test # Add all programs to TESTS TESTS = $(check_PROGRAMS) diff --git a/src/tests/ctest_buffer.c b/src/tests/ctest_buffer.c new file mode 100644 index 00000000..3a37c192 --- /dev/null +++ b/src/tests/ctest_buffer.c @@ -0,0 +1,111 @@ +/* Icecast + * + * This program is distributed under the GNU General Public License, version 2. + * A copy of this license is included with this source. + * + * Copyright 2018, Philipp "ph3-der-loewe" Schafft , + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + +#include "ctest_lib.h" + +#include "../src/buffer.h" +#include "../src/refobject.h" + +static void test_create_ref_unref(void) +{ + buffer_t *a; + + a = buffer_new(-1, NULL, NULL, REFOBJECT_NULL); + ctest_test("buffer created", a != NULL); + ctest_test("un-referenced", refobject_unref(a) == 0); + + a = buffer_new_simple(); + ctest_test("buffer created", a != NULL); + ctest_test("un-referenced", refobject_unref(a) == 0); + +} + +static void test_name(void) +{ + buffer_t *a; + const char *name = "test object name"; + const char *ret; + + a = buffer_new(-1, NULL, name, REFOBJECT_NULL); + ctest_test("buffer created", a != NULL); + + ret = refobject_get_name(a); + ctest_test("get name", ret != NULL); + ctest_test("name match", strcmp(name, ret) == 0); + + ctest_test("un-referenced", refobject_unref(a) == 0); +} + +static void test_userdata(void) +{ + buffer_t *a; + int tmp = 0; + void *userdata = &tmp; + void *ret; + + a = buffer_new(-1, NULL, NULL, REFOBJECT_NULL); + ctest_test("buffer created", a != NULL); + ret = refobject_get_userdata(a); + ctest_test("get userdata", ret == NULL); + ctest_test("set userdata", refobject_set_userdata(a, userdata) == 0); + ret = refobject_get_userdata(a); + ctest_test("get userdata", ret == userdata); + ctest_test("clearing userdata", refobject_set_userdata(a, NULL) == 0); + ret = refobject_get_userdata(a); + ctest_test("get userdata", ret == NULL); + + ctest_test("un-referenced", refobject_unref(a) == 0); + + a = buffer_new(-1, userdata, NULL, REFOBJECT_NULL); + ctest_test("buffer created", a != NULL); + ctest_test("refobject created", !REFOBJECT_IS_NULL(a)); + ret = refobject_get_userdata(a); + ctest_test("get userdata", ret == userdata); + ctest_test("clearing userdata", refobject_set_userdata(a, NULL) == 0); + ret = refobject_get_userdata(a); + ctest_test("get userdata", ret == NULL); + ctest_test("un-referenced", refobject_unref(a) == 0); +} + +static void test_associated(void) +{ + refobject_t a; + buffer_t *b; + + a = refobject_new(sizeof(refobject_base_t), NULL, NULL, NULL, REFOBJECT_NULL); + ctest_test("refobject created", !REFOBJECT_IS_NULL(a)); + + + b = buffer_new(-1, NULL, NULL, a); + ctest_test("buffer created with associated", !REFOBJECT_IS_NULL(b)); + + ctest_test("un-referenced (1 of 2)", refobject_unref(b) == 0); + ctest_test("un-referenced (2 of 2)", refobject_unref(a) == 0); +} + +int main (void) +{ + ctest_init(); + + + test_create_ref_unref(); + + test_name(); + test_userdata(); + test_associated(); + + ctest_fin(); + + return 0; +}