From cd9b9360032268cf65bed067b9acbf13e3269282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sun, 26 Dec 2021 12:36:55 +0100 Subject: [PATCH] test: config: add test_double() utility function --- tests/test-config.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tests/test-config.c b/tests/test-config.c index 7cde7408..2ba2795b 100644 --- a/tests/test-config.c +++ b/tests/test-config.c @@ -219,6 +219,43 @@ test_uint32(struct context *ctx, bool (*parse_fun)(struct context *ctx), } } +static void +test_double(struct context *ctx, bool (*parse_fun)(struct context *ctx), + const char *key, const float *conf_ptr) +{ + ctx->key = key; + + static const struct { + const char *option_string; + float value; + bool invalid; + } input[] = { + {"0", 0}, {"0.1", 0.1}, {"1e10", 1e10}, {"-10.7", -10.7}, + {"abc", 0, true}, {"true", 0, true}, + }; + + for (size_t i = 0; i < ALEN(input); i++) { + ctx->value = input[i].option_string; + + if (input[i].invalid) { + if (parse_fun(ctx)) { + BUG("[%s].%s=%s: did not fail to parse as expected", + ctx->section, ctx->key, ctx->value); + } + } else { + if (!parse_fun(ctx)) { + BUG("[%s].%s=%s: failed to parse", + ctx->section, ctx->key, ctx->value); + } + if (*conf_ptr != input[i].value) { + BUG("[%s].%s=%s: set value (%f) not the expected one (%f)", + ctx->section, ctx->key, ctx->value, + *conf_ptr, input[i].value); + } + } + } +} + static void test_pt_or_px(struct context *ctx, bool (*parse_fun)(struct context *ctx), const char *key, const struct pt_or_px *conf_ptr)