fxp: Add FXP_INIT_PERCENT
This lets us specify fxp values easily in source.
This commit is contained in:
committed by
David Goldblatt
parent
caef4c2868
commit
bdb7307ff2
@@ -96,7 +96,8 @@ TEST_BEGIN(test_parse_valid) {
|
||||
}
|
||||
TEST_END
|
||||
|
||||
static void expect_parse_failure(const char *str) {
|
||||
static void
|
||||
expect_parse_failure(const char *str) {
|
||||
fxp_t result = FXP_INIT_INT(333);
|
||||
char *end = (void *)0x123;
|
||||
bool err = fxp_parse(&result, str, &end);
|
||||
@@ -120,6 +121,29 @@ TEST_BEGIN(test_parse_invalid) {
|
||||
}
|
||||
TEST_END
|
||||
|
||||
static void
|
||||
expect_init_percent(unsigned percent, const char *str) {
|
||||
fxp_t result_init = FXP_INIT_PERCENT(percent);
|
||||
fxp_t result_parse = xparse_fxp(str);
|
||||
expect_u32_eq(result_init, result_parse,
|
||||
"Expect representations of FXP_INIT_PERCENT(%u) and "
|
||||
"fxp_parse(\"%s\") to be equal; got %x and %x",
|
||||
percent, str, result_init, result_parse);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Every other test uses either parsing or FXP_INIT_INT; it gets tested in those
|
||||
* ways. We need a one-off for the percent-based initialization, though.
|
||||
*/
|
||||
TEST_BEGIN(test_init_percent) {
|
||||
expect_init_percent(100, "1");
|
||||
expect_init_percent(75, ".75");
|
||||
expect_init_percent(1, ".01");
|
||||
expect_init_percent(50, ".5");
|
||||
}
|
||||
TEST_END
|
||||
|
||||
static void
|
||||
expect_add(const char *astr, const char *bstr, const char* resultstr) {
|
||||
fxp_t a = xparse_fxp(astr);
|
||||
@@ -358,6 +382,7 @@ main(void) {
|
||||
return test_no_reentrancy(
|
||||
test_parse_valid,
|
||||
test_parse_invalid,
|
||||
test_init_percent,
|
||||
test_add_simple,
|
||||
test_sub_simple,
|
||||
test_mul_simple,
|
||||
|
Reference in New Issue
Block a user