]> git.sesse.net Git - movit/blobdiff - test_util.cpp
Prefix include guards with _MOVIT to avoid clashes with external files.
[movit] / test_util.cpp
index 9053c5e6d6e9f003d34c45299bc8cf494e8990f5..190af9559bb8fa302e0cf7bd6251f8a277ab0488 100644 (file)
@@ -1,12 +1,16 @@
-#include "init.h"
-#include "test_util.h"
+#include <assert.h>
+#include <gtest/gtest-message.h>
+#include <math.h>
+#include <stdio.h>
+#include <algorithm>
+
 #include "flat_input.h"
 #include "gtest/gtest.h"
+#include "init.h"
+#include "test_util.h"
+#include "util.h"
 
-#include <stdio.h>
-#include <math.h>
-
-#include <algorithm>
+class Input;
 
 namespace {
 
@@ -29,7 +33,7 @@ EffectChainTester::EffectChainTester(const float *data, unsigned width, unsigned
                                      GLenum framebuffer_format)
        : chain(width, height), width(width), height(height), finalized(false)
 {
-       init_movit();
+       init_movit(".", MOVIT_DEBUG_ON);
 
        if (data != NULL) {
                add_input(data, pixel_format, color_space, gamma_curve);
@@ -89,10 +93,10 @@ Input *EffectChainTester::add_input(const unsigned char *data, MovitPixelFormat
        return input;
 }
 
-void EffectChainTester::run(float *out_data, GLenum format, Colorspace color_space, GammaCurve gamma_curve)
+void EffectChainTester::run(float *out_data, GLenum format, Colorspace color_space, GammaCurve gamma_curve, OutputAlphaFormat alpha_format)
 {
        if (!finalized) {
-               finalize_chain(color_space, gamma_curve);
+               finalize_chain(color_space, gamma_curve, alpha_format);
        }
 
        chain.render_to_fbo(fbo, width, height);
@@ -107,10 +111,10 @@ void EffectChainTester::run(float *out_data, GLenum format, Colorspace color_spa
        vertical_flip(out_data, width, height);
 }
 
-void EffectChainTester::run(unsigned char *out_data, GLenum format, Colorspace color_space, GammaCurve gamma_curve)
+void EffectChainTester::run(unsigned char *out_data, GLenum format, Colorspace color_space, GammaCurve gamma_curve, OutputAlphaFormat alpha_format)
 {
        if (!finalized) {
-               finalize_chain(color_space, gamma_curve);
+               finalize_chain(color_space, gamma_curve, alpha_format);
        }
 
        chain.render_to_fbo(fbo, width, height);
@@ -125,13 +129,13 @@ void EffectChainTester::run(unsigned char *out_data, GLenum format, Colorspace c
        vertical_flip(out_data, width, height);
 }
 
-void EffectChainTester::finalize_chain(Colorspace color_space, GammaCurve gamma_curve)
+void EffectChainTester::finalize_chain(Colorspace color_space, GammaCurve gamma_curve, OutputAlphaFormat alpha_format)
 {
        assert(!finalized);
        ImageFormat image_format;
        image_format.color_space = color_space;
        image_format.gamma_curve = gamma_curve;
-       chain.add_output(image_format);
+       chain.add_output(image_format, alpha_format);
        chain.finalize();
        finalized = true;
 }
@@ -185,6 +189,9 @@ void expect_equal(const float *ref, const float *result, unsigned width, unsigne
 
 void expect_equal(const unsigned char *ref, const unsigned char *result, unsigned width, unsigned height, unsigned largest_difference_limit, float rms_limit)
 {
+       assert(width > 0);
+       assert(height > 0);
+
        float *ref_float = new float[width * height];
        float *result_float = new float[width * height];
 
@@ -196,4 +203,7 @@ void expect_equal(const unsigned char *ref, const unsigned char *result, unsigne
        }
 
        expect_equal(ref_float, result_float, width, height, largest_difference_limit, rms_limit);
+
+       delete[] ref_float;
+       delete[] result_float;
 }