test: config: add test_double() utility function

This commit is contained in:
Daniel Eklöf 2021-12-26 12:36:55 +01:00
parent 193c696d03
commit cd9b936003
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -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)