summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorKacper Michajłow <kasper93@gmail.com>2023-11-19 21:22:24 +0100
committerKacper Michajłow <kasper93@gmail.com>2024-03-21 03:50:11 +0100
commit8708f4dc918b1bc005149c50abb3d54d66ed3047 (patch)
treea542bb97e54ba7f6287c755ece5fe1d73bd4b910 /test
parentc84bb1ce67f2dd3adb974c49a66d28c0cf55d39d (diff)
downloadmpv-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.c99
-rw-r--r--test/meson.build3
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)