diff options
author | Kacper Michajłow <kasper93@gmail.com> | 2023-11-19 21:22:24 +0100 |
---|---|---|
committer | Kacper Michajłow <kasper93@gmail.com> | 2024-03-21 03:50:11 +0100 |
commit | 8708f4dc918b1bc005149c50abb3d54d66ed3047 (patch) | |
tree | a542bb97e54ba7f6287c755ece5fe1d73bd4b910 /test | |
parent | c84bb1ce67f2dd3adb974c49a66d28c0cf55d39d (diff) | |
download | mpv-8708f4dc918b1bc005149c50abb3d54d66ed3047.tar.bz2 mpv-8708f4dc918b1bc005149c50abb3d54d66ed3047.tar.xz |
m_property: add `>` for fixed precision floating-point expansion
This enhancement makes it easier to create constant width property
expansions, useful for the `--term-status-msg`. Additionally, it changes
to `%f` printing with manual zero trimming, which is easier to control
than `%g`. With this method, we can directly specify precision, not just
significant numbers. This approach also avoids overly high precision for
values less than 1, which is not necessary for a generic floating-point
print function.
A new print helper function is added, which can be used with adjusted
precision for specific cases where a different default is needed. This
also unifies the code slightly.
Diffstat (limited to 'test')
-rw-r--r-- | test/format.c | 99 | ||||
-rw-r--r-- | test/meson.build | 3 |
2 files changed, 102 insertions, 0 deletions
diff --git a/test/format.c b/test/format.c new file mode 100644 index 0000000000..8033d1b7e0 --- /dev/null +++ b/test/format.c @@ -0,0 +1,99 @@ +#include "test_utils.h" +#include "common/common.h" + +int main(void) +{ + void *ta_ctx = talloc_new(NULL); + + assert_string_equal(mp_format_double(ta_ctx, 123.456, 0, false, false, false), "123"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 0, false, false, true), "123"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 0, false, true, false), "123%"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 0, false, true, true), "123%"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 0, true, false, false), "+123"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 0, true, false, true), "+123"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 0, true, true, false), "+123%"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 0, true, true, true), "+123%"); + + assert_string_equal(mp_format_double(ta_ctx, -123.456, 0, false, false, false), "-123"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 0, false, false, true), "-123"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 0, false, true, false), "-123%"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 0, false, true, true), "-123%"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 0, true, false, false), "-123"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 0, true, false, true), "-123"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 0, true, true, false), "-123%"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 0, true, true, true), "-123%"); + + assert_string_equal(mp_format_double(ta_ctx, 123.456, 2, false, false, false), "123.46"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 2, false, false, true), "123.46"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 2, false, true, false), "123.46%"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 2, false, true, true), "123.46%"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 2, true, false, false), "+123.46"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 2, true, false, true), "+123.46"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 2, true, true, false), "+123.46%"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 2, true, true, true), "+123.46%"); + + assert_string_equal(mp_format_double(ta_ctx, -123.456, 2, false, false, false), "-123.46"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 2, false, false, true), "-123.46"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 2, false, true, false), "-123.46%"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 2, false, true, true), "-123.46%"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 2, true, false, false), "-123.46"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 2, true, false, true), "-123.46"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 2, true, true, false), "-123.46%"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 2, true, true, true), "-123.46%"); + + assert_string_equal(mp_format_double(ta_ctx, 123.456, 6, false, false, false), "123.456000"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 6, false, false, true), "123.456"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 6, false, true, false), "123.456000%"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 6, false, true, true), "123.456%"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 6, true, false, false), "+123.456000"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 6, true, false, true), "+123.456"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 6, true, true, false), "+123.456000%"); + assert_string_equal(mp_format_double(ta_ctx, 123.456, 6, true, true, true), "+123.456%"); + + assert_string_equal(mp_format_double(ta_ctx, -123.456, 6, false, false, false), "-123.456000"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 6, false, false, true), "-123.456"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 6, false, true, false), "-123.456000%"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 6, false, true, true), "-123.456%"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 6, true, false, false), "-123.456000"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 6, true, false, true), "-123.456"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 6, true, true, false), "-123.456000%"); + assert_string_equal(mp_format_double(ta_ctx, -123.456, 6, true, true, true), "-123.456%"); + + assert_string_equal(mp_format_double(ta_ctx, 123, 6, false, false, false), "123.000000"); + assert_string_equal(mp_format_double(ta_ctx, 123, 6, false, false, true), "123"); + assert_string_equal(mp_format_double(ta_ctx, 123, 6, false, true, false), "123.000000%"); + assert_string_equal(mp_format_double(ta_ctx, 123, 6, false, true, true), "123%"); + assert_string_equal(mp_format_double(ta_ctx, 123, 6, true, false, false), "+123.000000"); + assert_string_equal(mp_format_double(ta_ctx, 123, 6, true, false, true), "+123"); + assert_string_equal(mp_format_double(ta_ctx, 123, 6, true, true, false), "+123.000000%"); + assert_string_equal(mp_format_double(ta_ctx, 123, 6, true, true, true), "+123%"); + + assert_string_equal(mp_format_double(ta_ctx, -123, 6, false, false, false), "-123.000000"); + assert_string_equal(mp_format_double(ta_ctx, -123, 6, false, false, true), "-123"); + assert_string_equal(mp_format_double(ta_ctx, -123, 6, false, true, false), "-123.000000%"); + assert_string_equal(mp_format_double(ta_ctx, -123, 6, false, true, true), "-123%"); + assert_string_equal(mp_format_double(ta_ctx, -123, 6, true, false, false), "-123.000000"); + assert_string_equal(mp_format_double(ta_ctx, -123, 6, true, false, true), "-123"); + assert_string_equal(mp_format_double(ta_ctx, -123, 6, true, true, false), "-123.000000%"); + assert_string_equal(mp_format_double(ta_ctx, -123, 6, true, true, true), "-123%"); + + assert_string_equal(mp_format_double(ta_ctx, INFINITY, 6, false, false, false), "inf"); + assert_string_equal(mp_format_double(ta_ctx, INFINITY, 6, false, false, true), "inf"); + assert_string_equal(mp_format_double(ta_ctx, INFINITY, 6, false, true, false), "inf%"); + assert_string_equal(mp_format_double(ta_ctx, INFINITY, 6, false, true, true), "inf%"); + assert_string_equal(mp_format_double(ta_ctx, INFINITY, 6, true, false, false), "+inf"); + assert_string_equal(mp_format_double(ta_ctx, INFINITY, 6, true, false, true), "+inf"); + assert_string_equal(mp_format_double(ta_ctx, INFINITY, 6, true, true, false), "+inf%"); + assert_string_equal(mp_format_double(ta_ctx, INFINITY, 6, true, true, true), "+inf%"); + + assert_string_equal(mp_format_double(ta_ctx, -INFINITY, 6, false, false, false), "-inf"); + assert_string_equal(mp_format_double(ta_ctx, -INFINITY, 6, false, false, true), "-inf"); + assert_string_equal(mp_format_double(ta_ctx, -INFINITY, 6, false, true, false), "-inf%"); + assert_string_equal(mp_format_double(ta_ctx, -INFINITY, 6, false, true, true), "-inf%"); + assert_string_equal(mp_format_double(ta_ctx, -INFINITY, 6, true, false, false), "-inf"); + assert_string_equal(mp_format_double(ta_ctx, -INFINITY, 6, true, false, true), "-inf"); + assert_string_equal(mp_format_double(ta_ctx, -INFINITY, 6, true, true, false), "-inf%"); + assert_string_equal(mp_format_double(ta_ctx, -INFINITY, 6, true, true, true), "-inf%"); + + talloc_free(ta_ctx); +} diff --git a/test/meson.build b/test/meson.build index a78428333a..ad246333a8 100644 --- a/test/meson.build +++ b/test/meson.build @@ -106,6 +106,9 @@ test('linked-list', linked_list) timer = executable('timer', files('timer.c'), include_directories: incdir, link_with: test_utils) test('timer', timer) +format = executable('format', files('format.c'), include_directories: incdir, link_with: test_utils) +test('format', format) + paths_objects = libmpv.extract_objects('options/path.c', path_source) paths = executable('paths', 'paths.c', include_directories: incdir, objects: paths_objects, link_with: test_utils) |