diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/gl_video.c | 42 | ||||
-rw-r--r-- | test/test_helpers.h | 4 |
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 |