[lasem] tests: LsmSvgFilterSurface unit testing
- From: Emmanuel Pacaud <emmanuel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [lasem] tests: LsmSvgFilterSurface unit testing
- Date: Tue, 11 Aug 2015 20:15:58 +0000 (UTC)
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]