tests: Add an initial Behaviour conformance suite

The coverage of the Behaviour sub-classes is currently abysmal. An
initial test suite for Behaviours should at least verify that the
accessors and the constructors are doing the right thing.

This initial test suite just verifies the BehaviourOpacity sub-class,
but it already bumps up the overall coverage by 2%.
This commit is contained in:
Emmanuele Bassi 2010-02-02 12:56:04 +00:00
parent f94e691151
commit 12b004b0e7
4 changed files with 91 additions and 0 deletions

1
.gitignore vendored
View File

@ -241,6 +241,7 @@ TAGS
/tests/conform/test-actor-destruction /tests/conform/test-actor-destruction
/tests/conform/test-color-operators /tests/conform/test-color-operators
/tests/conform/test-cogl-texture-mipmaps /tests/conform/test-cogl-texture-mipmaps
/tests/conform/test-behaviours
/tests/micro-bench/test-text-perf /tests/micro-bench/test-text-perf
/tests/micro-bench/test-text /tests/micro-bench/test-text
/tests/micro-bench/test-picking /tests/micro-bench/test-picking

View File

@ -43,6 +43,7 @@ test_conformance_SOURCES = \
test-texture-fbo.c \ test-texture-fbo.c \
test-script-parser.c \ test-script-parser.c \
test-actor-destroy.c \ test-actor-destroy.c \
test-behaviours.c \
$(NULL) $(NULL)
# For convenience, this provides a way to easily run individual unit tests: # For convenience, this provides a way to easily run individual unit tests:

View File

@ -0,0 +1,87 @@
#include <glib.h>
#include <clutter/clutter.h>
#include "test-conform-common.h"
typedef struct _BehaviourFixture BehaviourFixture;
typedef void (* BehaviourTestFunc) (BehaviourFixture *fixture);
struct _BehaviourFixture
{
ClutterTimeline *timeline;
ClutterAlpha *alpha;
ClutterActor *rect;
};
static void
opacity_behaviour (BehaviourFixture *fixture)
{
ClutterBehaviour *behaviour;
guint8 start, end;
behaviour = clutter_behaviour_opacity_new (fixture->alpha, 0, 255);
g_assert (CLUTTER_IS_BEHAVIOUR_OPACITY (behaviour));
clutter_behaviour_opacity_get_bounds (CLUTTER_BEHAVIOUR_OPACITY (behaviour),
&start,
&end);
if (g_test_verbose ())
g_print ("BehaviourOpacity:bounds = %d, %d (expected: 0, 255)\n",
start,
end);
g_assert_cmpint (start, ==, 0);
g_assert_cmpint (end, ==, 255);
clutter_behaviour_opacity_set_bounds (CLUTTER_BEHAVIOUR_OPACITY (behaviour),
255,
0);
start = 0;
g_object_get (G_OBJECT (behaviour), "opacity-start", &start, NULL);
if (g_test_verbose ())
g_print ("BehaviourOpacity:start = %d (expected: 255)\n", start);
g_assert_cmpint (start, ==, 255);
g_object_unref (behaviour);
}
static const struct
{
const gchar *desc;
BehaviourTestFunc func;
} behaviour_tests[] = {
{ "BehaviourOpacity", opacity_behaviour }
};
static const gint n_behaviour_tests = G_N_ELEMENTS (behaviour_tests);
void
test_behaviours (TestConformSimpleFixture *fixture,
gconstpointer dummy)
{
BehaviourFixture b_fixture;
gint i;
b_fixture.timeline = clutter_timeline_new (1000);
b_fixture.alpha = clutter_alpha_new_full (b_fixture.timeline, CLUTTER_LINEAR);
b_fixture.rect = clutter_rectangle_new ();
g_object_ref_sink (b_fixture.alpha);
g_object_unref (b_fixture.timeline);
for (i = 0; i < n_behaviour_tests; i++)
{
if (g_test_verbose ())
g_print ("Testing: %s\n", behaviour_tests[i].desc);
behaviour_tests[i].func (&b_fixture);
}
g_object_unref (b_fixture.alpha);
clutter_actor_destroy (b_fixture.rect);
}

View File

@ -178,6 +178,8 @@ main (int argc, char **argv)
TEST_CONFORM_SIMPLE ("/script", test_script_animation); TEST_CONFORM_SIMPLE ("/script", test_script_animation);
TEST_CONFORM_SIMPLE ("/script", test_script_named_object); TEST_CONFORM_SIMPLE ("/script", test_script_named_object);
TEST_CONFORM_SIMPLE ("/behaviours", test_behaviours);
TEST_CONFORM_SIMPLE ("/cogl", test_cogl_fixed); TEST_CONFORM_SIMPLE ("/cogl", test_cogl_fixed);
TEST_CONFORM_SIMPLE ("/cogl", test_cogl_backface_culling); TEST_CONFORM_SIMPLE ("/cogl", test_cogl_backface_culling);
TEST_CONFORM_SIMPLE ("/cogl", test_cogl_materials); TEST_CONFORM_SIMPLE ("/cogl", test_cogl_materials);