[lasem] tests: LsmSvgFilterSurface unit testing



commit f9014b73de7c6004aeb2f1eabc65f9b8d9e43f4d
Author: Emmanuel Pacaud <emmanuel gnome org>
Date:   Tue Aug 11 21:41:05 2015 +0200

    tests: LsmSvgFilterSurface unit testing

 src/lsmsvgfiltersurface.h |    1 -
 tests/.gitignore          |    1 +
 tests/Makefile.am         |    5 +-
 tests/filter.c            |  141 +++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 146 insertions(+), 2 deletions(-)
---
diff --git a/src/lsmsvgfiltersurface.h b/src/lsmsvgfiltersurface.h
index 12062c4..d807e30 100644
--- a/src/lsmsvgfiltersurface.h
+++ b/src/lsmsvgfiltersurface.h
@@ -42,7 +42,6 @@ LsmSvgFilterSurface *         lsm_svg_filter_surface_new              (const char *name, 
unsigned
 LsmSvgFilterSurface *  lsm_svg_filter_surface_new_with_content (const char *name, cairo_surface_t *surface, 
const LsmBox *subregion);
 LsmSvgFilterSurface *  lsm_svg_filter_surface_new_similar      (const char *name, LsmSvgFilterSurface 
*model, const LsmBox *subregion);
 
-void                   lsm_svg_filter_surface_copy_data        (LsmSvgFilterSurface *to, LsmSvgFilterSurface 
*from);
 const char *           lsm_svg_filter_surface_get_name         (LsmSvgFilterSurface *surface);
 cairo_surface_t *      lsm_svg_filter_surface_get_cairo_surface(LsmSvgFilterSurface *surface);
 const LsmBox *         lsm_svg_filter_surface_get_subregion    (LsmSvgFilterSurface *surface);
diff --git a/tests/.gitignore b/tests/.gitignore
index 21a68cd..c70dd5b 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -1,5 +1,6 @@
 dom
 str
+filter
 lsm-test
 fuzz.*
 *-diff.png
diff --git a/tests/Makefile.am b/tests/Makefile.am
index be8b8e1..308962b 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -14,7 +14,7 @@ noinst_PROGRAMS = lsm-test
 lsm_test_SOURCES = lsmtest.c
 lsm_test_LDADD = $(test_progs_ldadd)
 
-TEST_PROGS += dom str suite
+TEST_PROGS += dom str filter suite
 
 noinst_PROGRAMS += $(TEST_PROGS)
 
@@ -24,6 +24,9 @@ str_LDADD = $(test_progs_ldadd)
 dom_SOURCES = dom.c
 dom_LDADD = $(test_progs_ldadd)
 
+filter_SOURCES = filter.c
+filter_LDADD = $(test_progs_ldadd)
+
 suite_SOURCES = suite.c
 suite_LDADD = $(test_progs_ldadd)
 suite_CFLAGS = -DSUITE_DATA_DIRECTORY="\"$(top_srcdir)/tests/data\"" 
-DSUITE_OPTION_FILE="\"$(top_srcdir)/tests/suite.ini\""
diff --git a/tests/filter.c b/tests/filter.c
new file mode 100644
index 0000000..ef0888d
--- /dev/null
+++ b/tests/filter.c
@@ -0,0 +1,141 @@
+#include <glib.h>
+#include <lsmsvgfiltersurface.h>
+
+static void
+surface (void)
+{
+       LsmSvgFilterSurface *surface;
+       const LsmBox *subregion;
+
+       surface = lsm_svg_filter_surface_new ("test", 320, 200, NULL);
+
+       g_assert (surface != NULL);
+       g_assert_cmpstr (lsm_svg_filter_surface_get_name (surface),  ==, "test");
+
+       subregion = lsm_svg_filter_surface_get_subregion (surface);
+
+       g_assert (subregion != NULL);
+
+       lsm_svg_filter_surface_ref (surface);
+       lsm_svg_filter_surface_unref (surface);
+
+       lsm_svg_filter_surface_unref (surface);
+
+       g_test_expect_message ("Lasem", G_LOG_LEVEL_CRITICAL, "*assertion*ref_count*failed");
+
+       lsm_svg_filter_surface_unref (surface);
+
+       g_test_assert_expected_messages ();
+}
+
+static void
+similar (void)
+{
+       LsmSvgFilterSurface *surface_a;
+       LsmSvgFilterSurface *surface_b;
+
+       surface_a = lsm_svg_filter_surface_new ("test_a", 320, 200, NULL);
+       surface_b = lsm_svg_filter_surface_new_similar ("test_b", surface_a, NULL);
+
+       g_assert_cmpstr (lsm_svg_filter_surface_get_name (surface_a),  ==, "test_a");
+       g_assert_cmpstr (lsm_svg_filter_surface_get_name (surface_b),  ==, "test_b");
+
+       lsm_svg_filter_surface_unref (surface_a);
+       lsm_svg_filter_surface_unref (surface_b);
+}
+
+static void
+operations (LsmSvgFilterSurface *input_1, LsmSvgFilterSurface *input_2, LsmSvgFilterSurface *output)
+{
+       lsm_svg_filter_surface_alpha (input_1, output);
+       lsm_svg_filter_surface_blend (input_1, input_2, output, LSM_SVG_BLENDING_MODE_XOR);
+       lsm_svg_filter_surface_blur (input_1, output, 0.0, 0.0);
+       lsm_svg_filter_surface_blur (input_1, output, 1.0, 1.0);
+       lsm_svg_filter_surface_blur (input_1, output, 10.0, 10.0);
+       lsm_svg_filter_surface_blur (input_1, output, 1000.0, 1000.0);
+       lsm_svg_filter_surface_flood (output, 1.0, 0.0, 0.5, 0.25);
+       lsm_svg_filter_surface_offset (input_1, output, 10, 10);
+       lsm_svg_filter_surface_offset (input_1, output, -10, -10);
+       lsm_svg_filter_surface_offset (input_1, output, -1000, -1000);
+       lsm_svg_filter_surface_merge (input_1, output);
+       lsm_svg_filter_surface_tile (input_1, output);
+       lsm_svg_filter_surface_color_matrix (input_1, output, LSM_SVG_COLOR_FILTER_TYPE_HUE_ROTATE, 0, NULL);
+       lsm_svg_filter_surface_convolve_matrix (input_1, output, 0, 0, 0, NULL, 1.0, 0.0, 0, 0, 
LSM_SVG_EDGE_MODE_NONE, TRUE);
+       lsm_svg_filter_surface_morphology (input_1, output, LSM_SVG_MORPHOLOGY_OPERATOR_ERODE, 1, 1);
+       lsm_svg_filter_surface_morphology (input_1, output, LSM_SVG_MORPHOLOGY_OPERATOR_DILATE, 1, 1);
+       lsm_svg_filter_surface_turbulence (output, 10.0, 10.0, 2, 1.0, LSM_SVG_STITCH_TILES_STITCH, 
LSM_SVG_TURBULENCE_TYPE_FRACTAL_NOISE);
+}
+
+static void
+processing (void)
+{
+       LsmSvgFilterSurface *input_1;
+       LsmSvgFilterSurface *input_2;
+       LsmSvgFilterSurface *output;
+
+       input_1 = lsm_svg_filter_surface_new ("input_1", 320, 200, NULL);
+       input_2 = lsm_svg_filter_surface_new_similar ("input_2", input_1, NULL);
+       output = lsm_svg_filter_surface_new_similar ("output", input_1, NULL);
+
+       operations (input_1, input_2, output);
+
+       lsm_svg_filter_surface_unref (input_1);
+       lsm_svg_filter_surface_unref (input_2);
+       lsm_svg_filter_surface_unref (output);
+}
+
+static void
+processing_mismatch (void)
+{
+       LsmSvgFilterSurface *input_1;
+       LsmSvgFilterSurface *input_2;
+       LsmSvgFilterSurface *output;
+
+       input_1 = lsm_svg_filter_surface_new ("input_1", 320, 200, NULL);
+       input_2 = lsm_svg_filter_surface_new ("input_2", 100, 10, NULL);
+       output = lsm_svg_filter_surface_new ("output", 10, 5, NULL);
+
+       operations (input_1, input_2, output);
+
+       lsm_svg_filter_surface_unref (input_1);
+       lsm_svg_filter_surface_unref (input_2);
+       lsm_svg_filter_surface_unref (output);
+}
+
+static void
+processing_null (void)
+{
+       unsigned int i;
+
+       for (i = 0; i < 17; i++)
+               g_test_expect_message ("Lasem", G_LOG_LEVEL_CRITICAL, "*assertion*NULL*failed");
+
+       operations (NULL, NULL, NULL);
+
+       for (i = 0; i < 17; i++)
+               g_test_assert_expected_messages ();
+}
+
+int
+main (int argc, char *argv[])
+{
+       int result;
+
+       g_test_init (&argc, &argv, NULL);
+
+       g_test_add_func ("/filter/surface", surface);
+       g_test_add_func ("/filter/similar", similar);
+       g_test_add_func ("/filter/processing", processing);
+       g_test_add_func ("/filter/processing_mismatch", processing_mismatch);
+       g_test_add_func ("/filter/processing_null", processing_null);
+
+#if !GLIB_CHECK_VERSION(2,36,0)
+       g_type_init ();
+#endif
+
+       result = g_test_run ();
+
+       lsm_shutdown ();
+
+       return result;
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]