gtk+: add test harness plus basic tests
[test/generic/wayland-fits.git] / src / test / gtk+ / testharness.h
1 /*
2  * Copyright © 2013 Intel Corporation
3  *
4  * Permission to use, copy, modify, distribute, and sell this software and
5  * its documentation for any purpose is hereby granted without fee, provided
6  * that the above copyright notice appear in all copies and that both that
7  * copyright notice and this permission notice appear in supporting
8  * documentation, and that the name of the copyright holders not be used in
9  * advertising or publicity pertaining to distribution of the software
10  * without specific, written prior permission.  The copyright holders make
11  * no representations about the suitability of this software for any
12  * purpose.  It is provided "as is" without express or implied warranty.
13  *
14  * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
15  * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
16  * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
17  * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
18  * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
19  * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
20  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21  */
22
23 #ifndef __WFITS_GTK_GTKTESTHARNESS_H__
24 #define __WFITS_GTK_GTKTESTHARNESS_H__
25
26 #include <gtk/gtk.h>
27 #include <gdk/gdkwayland.h>
28
29 #include "test/tools.h"
30 #include "test/harness.h"
31
32 namespace wfits {
33 namespace test {
34 namespace gtk {
35
36 class GtkTestHarness : public test::Harness
37 {
38 public:
39         GtkTestHarness();
40
41         void run();
42
43         /*virtual*/ void yield(const unsigned time = 0.01 * 1e6) const;
44         /*virtual*/ const Client& client() const;
45
46 private:
47         static gboolean idleStep(gpointer);
48 };
49
50 #define WFITS_GTK_HARNESS_TEST_CASE(Harness) \
51 TEST(Harness) \
52 { \
53         Harness().run(); \
54 }
55
56 } // namespace gtk
57 } // namespace test
58 } // namespace wfits
59
60 #endif
61