tests: introduce struct fixture_metadata

This allows tests to give a meaningful name for their fixture setups
when they use more than one of them.

If a test uses DECLARE_FIXTURE_SETUP_WITH_ARG(), it must now pass a
third argument naming the field which is struct fixture_metadata. This
also means that the fixture setup data must now be a struct, it cannot
be a plain type anymore. A compiler error is generated if the field type
is not the expected one.

All tests using DECLARE_FIXTURE_SETUP_WITH_ARG() and converted to the
new form and given names for their fixture setups.

The fixture setup names not actually used yet, that will be another
patch.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
dev
Pekka Paalanen 4 years ago committed by Pekka Paalanen
parent eb5a95bfc9
commit ef81388466
  1. 13
      tests/alpha-blending-test.c
  2. 19
      tests/buffer-transforms-test.c
  3. 19
      tests/output-transforms-test.c
  4. 23
      tests/subsurface-shot-test.c
  5. 23
      tests/viewporter-shot-test.c
  6. 22
      tests/weston-test-runner.h

@ -33,6 +33,7 @@
#include "weston-test-fixture-compositor.h"
struct setup_args {
struct fixture_metadata meta;
enum renderer_type renderer;
};
@ -40,8 +41,14 @@ static const int ALPHA_STEPS = 256;
static const int BLOCK_WIDTH = 3;
static const struct setup_args my_setup_args[] = {
{ RENDERER_PIXMAN },
{ RENDERER_GL },
{
.renderer = RENDERER_PIXMAN,
.meta.name = "pixman"
},
{
.renderer = RENDERER_GL,
.meta.name = "GL"
},
};
static enum test_result_code
@ -57,7 +64,7 @@ fixture_setup(struct weston_test_harness *harness, const struct setup_args *arg)
return weston_test_harness_execute_as_client(harness, &setup);
}
DECLARE_FIXTURE_SETUP_WITH_ARG(fixture_setup, my_setup_args);
DECLARE_FIXTURE_SETUP_WITH_ARG(fixture_setup, my_setup_args, meta);
static void
set_opaque_rect(struct client *client,

@ -34,10 +34,23 @@
#define TRANSFORM(x) WL_OUTPUT_TRANSFORM_ ## x, #x
#define RENDERERS(s, t) \
{ RENDERER_PIXMAN, s, TRANSFORM(t) }, \
{ RENDERER_GL, s, TRANSFORM(t) }
{ \
.renderer = RENDERER_PIXMAN, \
.scale = s, \
.transform = WL_OUTPUT_TRANSFORM_ ## t, \
.transform_name = #t, \
.meta.name = "pixman " #s " " #t, \
}, \
{ \
.renderer = RENDERER_GL, \
.scale = s, \
.transform = WL_OUTPUT_TRANSFORM_ ## t, \
.transform_name = #t, \
.meta.name = "GL " #s " " #t, \
}
struct setup_args {
struct fixture_metadata meta;
enum renderer_type renderer;
int scale;
enum wl_output_transform transform;
@ -70,7 +83,7 @@ fixture_setup(struct weston_test_harness *harness, const struct setup_args *arg)
return weston_test_harness_execute_as_client(harness, &setup);
}
DECLARE_FIXTURE_SETUP_WITH_ARG(fixture_setup, my_setup_args);
DECLARE_FIXTURE_SETUP_WITH_ARG(fixture_setup, my_setup_args, meta);
struct buffer_args {
int scale;

@ -34,10 +34,23 @@
#define TRANSFORM(x) WL_OUTPUT_TRANSFORM_ ## x, #x
#define RENDERERS(s, t) \
{ RENDERER_PIXMAN, s, TRANSFORM(t) }, \
{ RENDERER_GL, s, TRANSFORM(t) }
{ \
.renderer = RENDERER_PIXMAN, \
.scale = s, \
.transform = WL_OUTPUT_TRANSFORM_ ## t, \
.transform_name = #t, \
.meta.name = "pixman " #s " " #t, \
}, \
{ \
.renderer = RENDERER_GL, \
.scale = s, \
.transform = WL_OUTPUT_TRANSFORM_ ## t, \
.transform_name = #t, \
.meta.name = "GL " #s " " #t, \
}
struct setup_args {
struct fixture_metadata meta;
enum renderer_type renderer;
int scale;
enum wl_output_transform transform;
@ -82,7 +95,7 @@ fixture_setup(struct weston_test_harness *harness, const struct setup_args *arg)
return weston_test_harness_execute_as_client(harness, &setup);
}
DECLARE_FIXTURE_SETUP_WITH_ARG(fixture_setup, my_setup_args);
DECLARE_FIXTURE_SETUP_WITH_ARG(fixture_setup, my_setup_args, meta);
struct buffer_args {
int scale;

@ -33,18 +33,29 @@
#include "weston-test-client-helper.h"
#include "weston-test-fixture-compositor.h"
static const enum renderer_type renderers[] = {
RENDERER_PIXMAN,
RENDERER_GL,
struct setup_args {
struct fixture_metadata meta;
enum renderer_type renderer;
};
static const struct setup_args my_setup_args[] = {
{
.renderer = RENDERER_PIXMAN,
.meta.name = "pixman"
},
{
.renderer = RENDERER_GL,
.meta.name = "GL"
},
};
static enum test_result_code
fixture_setup(struct weston_test_harness *harness, const enum renderer_type *arg)
fixture_setup(struct weston_test_harness *harness, const struct setup_args *arg)
{
struct compositor_setup setup;
compositor_setup_defaults(&setup);
setup.renderer = *arg;
setup.renderer = arg->renderer;
setup.width = 320;
setup.height = 240;
setup.shell = SHELL_TEST_DESKTOP;
@ -52,7 +63,7 @@ fixture_setup(struct weston_test_harness *harness, const enum renderer_type *arg
return weston_test_harness_execute_as_client(harness, &setup);
}
DECLARE_FIXTURE_SETUP_WITH_ARG(fixture_setup, renderers);
DECLARE_FIXTURE_SETUP_WITH_ARG(fixture_setup, my_setup_args, meta);
static struct wl_subcompositor *
get_subcompositor(struct client *client)

@ -33,24 +33,35 @@
#include "weston-test-client-helper.h"
#include "weston-test-fixture-compositor.h"
static const enum renderer_type renderers[] = {
RENDERER_PIXMAN,
RENDERER_GL,
struct setup_args {
struct fixture_metadata meta;
enum renderer_type renderer;
};
static const struct setup_args my_setup_args[] = {
{
.renderer = RENDERER_PIXMAN,
.meta.name = "pixman"
},
{
.renderer = RENDERER_GL,
.meta.name = "GL"
},
};
static enum test_result_code
fixture_setup(struct weston_test_harness *harness,
const enum renderer_type *renderer)
const struct setup_args *arg)
{
struct compositor_setup setup;
compositor_setup_defaults(&setup);
setup.renderer = *renderer;
setup.renderer = arg->renderer;
setup.shell = SHELL_TEST_DESKTOP;
return weston_test_harness_execute_as_client(harness, &setup);
}
DECLARE_FIXTURE_SETUP_WITH_ARG(fixture_setup, renderers);
DECLARE_FIXTURE_SETUP_WITH_ARG(fixture_setup, my_setup_args, meta);
TEST(viewport_upscale_solid)

@ -146,6 +146,20 @@ get_test_name(void);
int
get_test_fixture_index(void);
/** Metadata for fixture setup array elements
*
* Every type used as a fixture setup array's elements needs one member of
* this type, initialized.
*
* \sa DECLARE_FIXTURE_SETUP_WITH_ARG()
*
* \ingroup testharness
*/
struct fixture_metadata {
/** Human friendly name of the fixture setup */
const char *name;
};
/** Fixture setup array record
*
* Helper to store the attributes of the data array passed in to
@ -157,6 +171,7 @@ struct fixture_setup_array {
const void *array;
size_t element_size;
int n_elements;
size_t meta_offset;
};
const struct fixture_setup_array *
@ -222,18 +237,21 @@ fixture_setup_run_(struct weston_test_harness *harness, const void *arg_);
*
* \param func_ The function to be used as fixture setup.
* \param array_ A static const array of arbitrary type.
* \param meta_ Name of the field with type struct fixture_metadata.
*
* \ingroup testharness
*/
#define DECLARE_FIXTURE_SETUP_WITH_ARG(func_, array_) \
#define DECLARE_FIXTURE_SETUP_WITH_ARG(func_, array_, meta_) \
const struct fixture_setup_array * \
fixture_setup_array_get_(void) \
{ \
static const struct fixture_setup_array arr = { \
.array = array_, \
.element_size = sizeof(array_[0]), \
.n_elements = ARRAY_LENGTH(array_) \
.n_elements = ARRAY_LENGTH(array_), \
.meta_offset = offsetof(typeof(array_[0]), meta_), \
}; \
TYPEVERIFY(const struct fixture_metadata *, &array_[0].meta_); \
return &arr; \
} \
\

Loading…
Cancel
Save