The GTest report output allows the developer to know where exactly
a test unit failure happened. The test-text-cache unit makes it
very hard to pinpoint the exact failure location because it relies
on the output to be printed out - which is not the case when the
tests are run as part of a make check.
This commit makes each sub-test inside the unit fail exactly where
the check function fails, which makes it easier to know which sub-test
did actually fail.
ClutterText behaviour with regards to the paint opacity has been
changed by commit 07e19fff5ffa9617413fa6c3715914513fec3793.
We need to update the test suite for the paint opacity to reflect
that change as well.
The clutter_text_get_chars() function returns a section of the
contents of the Text actor, delimited by a start and an end position.
This commit adds the implementation for that function and a test
unit that guarantees the offset-to-bytes computations are correct.
Comment why we need to enable the editability of the Text actor
inside the test suite.
This should clarify commit ea508ea528d61ae478d8bc4c88f54a89304f18e8
Whenever we are sending specially crafted KeyEvents to a ClutterText
we also need to set it editable, since the event handling code depends
on the editability setting.
Instead of changing the unit for ClutterEntry, we add a new
test unit specifically for ClutterText so that we can later tweak
it specifically for the behaviour changes needed to make ClutterText
work better.
* clutter/Makefile.am:
* clutter/clutter.h: Add ClutterBindingPool to the build.
* clutter/clutter-binding-pool.c:
* clutter/clutter-binding-pool.h: Add ClutterBindingPool, a data
structure meant to hold (key symbol, modifiers) pairs and associate
them to a closure. The ClutterBindingPool can be used to install
key bindings for actors and then execute closures inside the
key-press-event signal handlers, removing the need for big
switch() or if() blocks for each key.
* clutter/clutter-event.c: Consistently use "key symbol" instead
of "key value".
* clutter/clutter-event.h: Add more modifier masks.
* clutter/clutter-marshal.list:
* tests/conform/Makefile.am:
* tests/conform/test-binding-pool.c:
* tests/conform/test-conform-main.c: Add ClutterBindingPool
conformance test.
* tests/interactive/Makefile.am:
* tests/interactive/test-binding-pool.c: Add interactive test (and
example code) for the ClutterBindingPool usage.
* clutter/clutter-path.h:
* clutter/clutter-path.c: Implementation of new ClutterPath object
to represent a path combining straight line and bezier curve
elements.
* clutter/clutter.h: Include clutter-path.h and remove
clutter-behaviour-bspline.h
* tests/interactive/test-threads.c (test_threads_main):
* tests/interactive/test-script.c:
* tests/interactive/test-behave.c (test_behave_main): Use new path
API
* clutter/clutter-effect.c: Use the new ClutterBehaviourPath API.
* clutter/clutter-bezier.h:
* clutter/clutter-bezier.c: Moved bezier curve handling code out
from clutter-behaviour-bspline.c to a separate file.
* clutter/clutter-behaviour-path.h:
* clutter/clutter-behaviour-path.c: Reimplemented to work with a
ClutterPath
* clutter/clutter-behaviour-bspline.h:
* clutter/clutter-behaviour-bspline.c: Removed
* clutter/Makefile.am: Add clutter-path and clutter-bezier, remove
clutter-behaviour-bspline.
* tests/conform/test-path.c: New automatic test for ClutterPath
consistency
* tests/conform/test-conform-main.c (main): Add test_path
* tests/conform/Makefile.am (test_conformance_SOURCES): Add
test-path.c
* clutter/clutter-sections.txt: Add ClutterPath docs
* clutter/clutter.types:
* clutter/clutter-docs.xml:
* doc/reference/clutter/clutter-animation-tutorial.xml: Remove
mention of ClutterBehaviourBspline
* clutter/clutter-marshal.list: Add VOID:UINT
* tests/conform/test-mesh-interleved.c:
* tests/conform/test-mesh-contiguous.c: Remove the idle source
after the test is complete so that it won't interfere with other
tests.
* tests/tools/Makefile.am: Optionally build the
libdisable-npots.la library depending on whether libdl was
detected in the configure script. A helper script is also
generated to setup the LD_PRELOAD.
* tests/conform/Makefile.am: There are now two versions of the
test-report and full-report rules. test-report-normal is the same
as before and test-report-disable-npots runs the tests with the
disable-npots wrapper script. The full-report rule runs both of
them and displays two separate HTML files. The test-report rule
just runs the normal version as before.
* configure.ac: Add a test for libdl
* tests/tools/disable-npots.sh.in: New file. Template for the
helper script
* tests/tools/disable-npots.c: New file
* tests/conform/test-conform-main.c (main): Do not run the
conformance test suite if we are on X11 but we do not have
a DISPLAY available. Some of the tests require a DISPLAY,
and everything passes through a clutter_init() call which will
fail anyway. If we are running make distcheck on an headless
box we might as well just skip the conformance test suite
without a meaningless error.
* tests/conform/test-mesh-contiguous.c:
* tests/conform/test-mesh-interleved.c:
* tests/conform/test-mesh-mutability.c: Remove the last bare
g_print() from the conformance test suite.
* clutter/cogl/common/cogl-mesh.c:
Make sure we use the appropriate cogl_wrap_gl* funcs as appropriate
* clutter/cogl/gles/cogl-gles2-wrapper.c
* clutter/cogl/gles/cogl-gles2-wrapper.h:
In our glColorPointer wrapper we needed to mark our color attribute
as normalized.
* tests/conform/Makefile.am:
When creating unit test symlinks we use the -l gtester option to
list tests, but when using the PVR SDK the test binary also spews
out some extra info that caused lots of random symlinks to be
created. We now grep for lines starting with a '/'
* tests/conform/test-mesh-contiguous.c
* tests/conform/test-mesh-mutability.c:
Use cogl_set_source_color instead of directly calling glColor4ub
* tests/conform/Makefile.am:
* tests/conform/test-conform-main.c:
* tests/conform/test-paint-opacity.c: Add test unit for label,
rectangle and paint opacity.
* tests/conform/test-mesh-mutability.c (on_paint):
* tests/conform/test-mesh-interleved.c (on_paint):
* tests/conform/test-mesh-contiguous.c (on_paint): Use g_usleep
instead of sleep
* tests/conform/test-mesh-mutability.c (queue_redraw):
* tests/conform/test-mesh-interleved.c (queue_redraw):
* tests/conform/test-mesh-contiguous.c (queue_redraw): Added
missing return statement
* clutter/cogl/cogl-mesh.h: Add a declaration for
cogl_mesh_submit
* clutter/cogl/common/cogl-mesh.c (cogl_mesh_submit): Move the
documentation to cogl-mesh.h to match the rest of the functions
* clutter/cogl/cogl-mesh.h
* clutter/cogl/cogl-types.h
* clutter/cogl/cogl.h.in
* clutter/cogl/common/Makefile.am
* clutter/cogl/common/cogl-mesh-private.h
* clutter/cogl/common/cogl-mesh.c
* clutter/cogl/gl/cogl-context.c
* clutter/cogl/gl/cogl-context.h
* clutter/cogl/gl/cogl-defines.h.in
* clutter/cogl/gl/cogl.c
* clutter/cogl/gles/cogl-context.c
* clutter/cogl/gles/cogl-context.h
* doc/reference/cogl/cogl-docs.sgml
* doc/reference/cogl/cogl-sections.txt:
The Mesh API provides a means for submitting an extensible number of
per vertex attributes to OpenGL in a way that doesn't require format
conversions and so that the data can be mapped into the GPU (in vertex
buffer objects) for - hopefully - fast re-use.
There are a number of things we can potentially use this API for, but
right now this just provides a foundation to build on. Please read
the extensive list of TODO items in cogl-mesh.c for examples.
Please refer to the cogl-mesh section in the reference manual for
documentation of the API.
* tests/conform/Makefile.am
* tests/conform/test-conform-main.c
* tests/conform/test-mesh-contiguous.c
* tests/conform/test-mesh-interleved.c
* tests/conform/test-mesh-mutability.c:
Privides basic coverage testing for the mesh API.
* tests/conform/test-conform-common.c
* tests/conform/test-pick.c:
Instead of using clutter_stage_new /clutter_actor_destroy as a way to
avoid cascading side effects between unit tests, due to left over
actors, we now destroy all children of the default stage between
tests instead.
* tests/conform/wrapper.sh:
Adds a convenience note about how to run valgrind for an individual
unit test
* tests/conform/test-label-cache.c:
* tests/conform/test-pick.c:
* tests/conform/test-timeline.c: Show all the output messages only
if the test was done with the verbose flag turned on.
* tests/interactive/test-main.c: Do not use the (gpointer*) cast,
but use a temporary gpointer instead.
* tests/conform/wrapper.sh:
* tests/conform/test-conform-main.c:
* tests/conform/test-timeline.c:
Adds Neil's updates to test-timeline.c so it now works with the new unit
testing infrastructure.
Also some fixes to ensure wrappers get setup correctly for the timeline
tests.
* tests/interactive/test-main.c:
cast the symbol return pointer as (gpointer *) to avoid warning
* tests/conform/test-pick.c:
g_assert that the test passes, instead of using exit()
* test/conform/ADDING_NEW_TESTS:
Fixes a silly typo
* tests/conform/Makefile.am:
* tests/conform/test-actor-invariants.c:
* tests/conform/test-conform-main.c: Move the actor invariants
unit to the conform section of the test suite.
* tests/interactive/Makefile.am:
* tests/interactive/test-entry-auto.c:
* tests/interactive/test-invariants.c: Remove the entry-auto
and invariants test, since those two belong to the conform
section.
framework
* configure.ac:
* tests/*:
The tests have been reorganised into different categories: conformance,
interactive and micro benchmarks.
- conformance tests can be run as part of automated tests
- interactive tests are basically all the existing tests
- micro benchmarks focus on a single performance metric
I converted the timeline tests to conformance tests and also added some
tests from Neil Roberts and Ebassi.
Note: currently only the conformance tests use the glib test APIs,
though the micro benchmarks should too.
The other change is to make the unit tests link into monolithic binaries
which makes the build time for unit tests considerably faster. To deal
with the extra complexity this adds to debugging individual tests I
have added some sugar to the makefiles so all the tests can be run
directly via a symlink and when an individual test is run this way,
then a note is printed to the terminal explaining exactly how that test
may be debugged using GDB.
There is a convenience make rule: 'make test-report', that will run all
the conformance tests and hopefully even open the results in your web
browser. It skips some of the slower timeline tests, but you can run
those using 'make full-report'