From d50f5ea694faa07c1b232d96deda4f9803ffdfbd Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sun, 30 Oct 2016 18:38:47 -0400 Subject: [PATCH] added unit tests for utils --- include/villas/utils.h | 2 +- lib/kernel/kernel.c | 2 +- lib/utils.c | 2 +- tests/utils.c | 64 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 tests/utils.c diff --git a/include/villas/utils.h b/include/villas/utils.h index 82b7cabb7..d6faadff2 100644 --- a/include/villas/utils.h +++ b/include/villas/utils.h @@ -180,7 +180,7 @@ struct version { }; /** Compare two versions. */ -int version_compare(struct version *a, struct version *b); +int version_cmp(struct version *a, struct version *b); /** Parse a dotted version string. */ int version_parse(const char *s, struct version *v); diff --git a/lib/kernel/kernel.c b/lib/kernel/kernel.c index 6548dbf49..b2c9b94cc 100644 --- a/lib/kernel/kernel.c +++ b/lib/kernel/kernel.c @@ -101,7 +101,7 @@ int kernel_has_version(int maj, int min) if (version_parse(uts.release, ¤t)) return -1; - return version_compare(¤t, &required) < 0; + return version_cmp(¤t, &required) < 0; } int kernel_is_rt() diff --git a/lib/utils.c b/lib/utils.c index eff72a954..5fba36038 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -35,7 +35,7 @@ int version_parse(const char *s, struct version *v) return sscanf(s, "%u.%u", &v->major, &v->minor) != 2; } -int version_compare(struct version *a, struct version *b) { +int version_cmp(struct version *a, struct version *b) { int major = a->major - b->major; int minor = a->minor - b->minor; diff --git a/tests/utils.c b/tests/utils.c new file mode 100644 index 000000000..6999cd70e --- /dev/null +++ b/tests/utils.c @@ -0,0 +1,64 @@ +/** Unit tests for utilities + * + * @author Steffen Vogel + * @copyright 2014-2016, Institute for Automation of Complex Power Systems, EONERC + * This file is part of VILLASnode. All Rights Reserved. Proprietary and confidential. + * Unauthorized copying of this file, via any medium is strictly prohibited. + *********************************************************************************/ + +#include + +#include "utils.h" + +Test(utils, is_aligned) +{ + /* Positive */ + cr_assert(IS_ALIGNED(1, 1)); + cr_assert(IS_ALIGNED(128, 64)); + + /* Negative */ + cr_assert(!IS_ALIGNED(55, 16)); + cr_assert(!IS_ALIGNED(55, 55)); + cr_assert(!IS_ALIGNED(1128, 256)); +} + +Test(utils, ceil) +{ + cr_assert_eq(CEIL(10, 3), 4); + cr_assert_eq(CEIL(10, 5), 2); + cr_assert_eq(CEIL(4, 3), 2); +} + +Test(utils, is_pow2) +{ + /* Positive */ + cr_assert(IS_POW2(1)); + cr_assert(IS_POW2(2)); + cr_assert(IS_POW2(64)); + + /* Negative */ + cr_assert(!IS_POW2(0)); + cr_assert(!IS_POW2(3)); + cr_assert(!IS_POW2(11111)); + cr_assert(!IS_POW2(-1)); +} + +struct version_param { + const char *v1, *v2; + int result; +}; + +Test(utils, version) +{ + struct version v1, v2, v3, v4; + + version_parse("1.2", &v1); + version_parse("1.3", &v2); + version_parse("55", &v3); + version_parse("66", &v4); + + cr_assert_lt(version_cmp(&v1, &v2), 0); + cr_assert_eq(version_cmp(&v1, &v1), 0); + cr_assert_gt(version_cmp(&v2, &v1), 0); + cr_assert_lt(version_cmp(&v3, &v4), 0); +} \ No newline at end of file