summaryrefslogtreecommitdiffstats
path: root/test/tests.h
diff options
context:
space:
mode:
Diffstat (limited to 'test/tests.h')
-rw-r--r--test/tests.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/test/tests.h b/test/tests.h
new file mode 100644
index 0000000000..c19f90f75d
--- /dev/null
+++ b/test/tests.h
@@ -0,0 +1,51 @@
+#pragma once
+
+#include <float.h>
+#include <inttypes.h>
+#include <math.h>
+
+#include "common/common.h"
+
+struct MPContext;
+
+bool run_tests(struct MPContext *mpctx);
+
+struct test_ctx {
+ struct mpv_global *global;
+ struct mp_log *log;
+};
+
+struct unittest {
+ // This is used to select the test on command line with --unittest=<name>.
+ const char *name;
+
+ // Cannot run without additional arguments supplied.
+ bool is_complex;
+
+ // Entrypoints. There are various for various purposes. Only 1 of them must
+ // be set.
+
+ // Entrypoint for tests which have a simple dependency on the mpv core. The
+ // core is sufficiently initialized at this point.
+ void (*run)(struct test_ctx *ctx);
+};
+
+extern const struct unittest test_chmap;
+extern const struct unittest test_gl_video;
+extern const struct unittest test_json;
+extern const struct unittest test_linked_list;
+
+#define assert_true(x) assert(x)
+#define assert_false(x) assert(!(x))
+#define assert_int_equal(a, b) \
+ assert_int_equal_impl(__FILE__, __LINE__, (a), (b))
+#define assert_string_equal(a, b) \
+ assert_string_equal_impl(__FILE__, __LINE__, (a), (b))
+#define assert_float_equal(a, b, tolerance) \
+ assert_float_equal_impl(__FILE__, __LINE__, (a), (b), (tolerance))
+
+void assert_int_equal_impl(const char *file, int line, int64_t a, int64_t b);
+void assert_string_equal_impl(const char *file, int line,
+ const char *a, const char *b);
+void assert_float_equal_impl(const char *file, int line,
+ double a, double b, double tolerance);