summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/gl_video.c42
-rw-r--r--test/test_helpers.h4
2 files changed, 46 insertions, 0 deletions
diff --git a/test/gl_video.c b/test/gl_video.c
new file mode 100644
index 0000000000..543ff2e295
--- /dev/null
+++ b/test/gl_video.c
@@ -0,0 +1,42 @@
+#include "test_helpers.h"
+#include "video/out/gl_video.h"
+
+static void test_scale_ambient_lux_limits(void **state) {
+ float x;
+ x = gl_video_scale_ambient_lux(16.0, 64.0, 2.40, 1.961, 16.0);
+ assert_double_equal(x, 2.40f);
+
+ x = gl_video_scale_ambient_lux(16.0, 64.0, 2.40, 1.961, 64.0);
+ assert_double_equal(x, 1.961f);
+}
+
+static void test_scale_ambient_lux_sign(void **state) {
+ float x;
+ x = gl_video_scale_ambient_lux(16.0, 64.0, 1.961, 2.40, 64.0);
+ assert_double_equal(x, 2.40f);
+}
+
+static void test_scale_ambient_lux_clamping(void **state) {
+ float x;
+ x = gl_video_scale_ambient_lux(16.0, 64.0, 2.40, 1.961, 0.0);
+ assert_double_equal(x, 2.40f);
+}
+
+static void test_scale_ambient_lux_log10_midpoint(void **state) {
+ float x;
+ // 32 corresponds to the the midpoint after converting lux to the log10 scale
+ x = gl_video_scale_ambient_lux(16.0, 64.0, 2.40, 1.961, 32.0);
+ float mid_gamma = (2.40 - 1.961) / 2 + 1.961;
+ assert_double_equal(x, mid_gamma);
+}
+
+int main(void) {
+ const UnitTest tests[] = {
+ unit_test(test_scale_ambient_lux_limits),
+ unit_test(test_scale_ambient_lux_sign),
+ unit_test(test_scale_ambient_lux_clamping),
+ unit_test(test_scale_ambient_lux_log10_midpoint),
+ };
+ return run_tests(tests);
+}
+
diff --git a/test/test_helpers.h b/test/test_helpers.h
index 3dfe08fdbe..7a61da82ea 100644
--- a/test/test_helpers.h
+++ b/test/test_helpers.h
@@ -7,5 +7,9 @@
#include <cmocka.h>
#include <stdio.h>
+#include <math.h>
+#include <float.h>
+
+#define assert_double_equal(a, b) assert_true(fabs(a - b) <= DBL_EPSILON)
#endif