From 16a7f77701fb9e622ba4dfd9057b6d601f5e802c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Fri, 5 Aug 2022 11:11:29 +0200 Subject: [PATCH] cogl/pipeline-state: Move out working unit test to separate file Part-of: --- cogl/cogl/cogl-pipeline-state.c | 38 ------------------ src/tests/cogl/unit/meson.build | 1 + src/tests/cogl/unit/test-pipeline-state.c | 47 +++++++++++++++++++++++ 3 files changed, 48 insertions(+), 38 deletions(-) create mode 100644 src/tests/cogl/unit/test-pipeline-state.c diff --git a/cogl/cogl/cogl-pipeline-state.c b/cogl/cogl/cogl-pipeline-state.c index 8408a4af9..5434d7021 100644 --- a/cogl/cogl/cogl-pipeline-state.c +++ b/cogl/cogl/cogl-pipeline-state.c @@ -41,8 +41,6 @@ #include "cogl-pipeline-state-private.h" #include "cogl-snippet-private.h" -#include - #include "string.h" #ifndef GL_FUNC_ADD @@ -1588,39 +1586,3 @@ _cogl_pipeline_hash_fragment_snippets_state (CoglPipeline *authority, _cogl_pipeline_snippet_list_hash (&authority->big_state->fragment_snippets, &state->hash); } - -UNIT_TEST (check_blend_constant_ancestry, - 0 /* no requirements */, - 0 /* no known failures */) -{ - CoglPipeline *pipeline = cogl_pipeline_new (test_ctx); - CoglNode *node; - int pipeline_length = 0; - int i; - - /* Repeatedly making a copy of a pipeline and changing the same - * state (in this case the blend constant) shouldn't cause a long - * chain of pipelines to be created because the redundant ancestry - * should be pruned. */ - - for (i = 0; i < 20; i++) - { - CoglColor color; - CoglPipeline *tmp_pipeline; - - cogl_color_init_from_4f (&color, i / 20.0f, 0.0f, 0.0f, 1.0f); - - tmp_pipeline = cogl_pipeline_copy (pipeline); - cogl_object_unref (pipeline); - pipeline = tmp_pipeline; - - cogl_pipeline_set_blend_constant (pipeline, &color); - } - - for (node = (CoglNode *) pipeline; node; node = node->parent) - pipeline_length++; - - g_assert_cmpint (pipeline_length, <=, 2); - - cogl_object_unref (pipeline); -} diff --git a/src/tests/cogl/unit/meson.build b/src/tests/cogl/unit/meson.build index 1158c3349..4ee20bcc7 100644 --- a/src/tests/cogl/unit/meson.build +++ b/src/tests/cogl/unit/meson.build @@ -2,6 +2,7 @@ cogl_unit_tests = [ ['test-bitmask', true], ['test-pipeline-cache', true], ['test-pipeline-state-known-failure', false], + ['test-pipeline-state', true], ] test_env = environment() diff --git a/src/tests/cogl/unit/test-pipeline-state.c b/src/tests/cogl/unit/test-pipeline-state.c new file mode 100644 index 000000000..bf2916414 --- /dev/null +++ b/src/tests/cogl/unit/test-pipeline-state.c @@ -0,0 +1,47 @@ +#include "cogl-config.h" + +#include "cogl/cogl.h" +#include "cogl/cogl-pipeline-state.h" +#include "tests/cogl-test-utils.h" + +static void +test_pipeline_state_blend_constant_ancestry (void) +{ + CoglPipeline *pipeline; + CoglNode *node; + int pipeline_length = 0; + int i; + + /* Repeatedly making a copy of a pipeline and changing the same + * state (in this case the blend constant) shouldn't cause a long + * chain of pipelines to be created because the redundant ancestry + * should be pruned. */ + + pipeline = cogl_pipeline_new (test_ctx); + + for (i = 0; i < 20; i++) + { + CoglColor color; + CoglPipeline *tmp_pipeline; + + cogl_color_init_from_4f (&color, i / 20.0f, 0.0f, 0.0f, 1.0f); + + tmp_pipeline = cogl_pipeline_copy (pipeline); + cogl_object_unref (pipeline); + pipeline = tmp_pipeline; + + cogl_pipeline_set_blend_constant (pipeline, &color); + } + + for (node = (CoglNode *) pipeline; node; node = node->parent) + pipeline_length++; + + g_assert_cmpint (pipeline_length, <=, 2); + + cogl_object_unref (pipeline); +} + +COGL_TEST_SUITE ( + g_test_add_func ("/pipeline-state/blend-constant-ancestry", + test_pipeline_state_blend_constant_ancestry); +)