1 /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  *  Copyright (C) 2007-2011  Kouhei Sutou <kou@clear-code.com>
4  *
5  *  This library is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU Lesser General Public License as published by
7  *  the Free Software Foundation, either version 3 of the License, or
8  *  (at your option) any later version.
9  *
10  *  This library is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Lesser General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Lesser General Public License
16  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  *
18  */
19 
20 #ifndef __CUT_TEST_CONTEXT_H__
21 #define __CUT_TEST_CONTEXT_H__
22 
23 #include <glib-object.h>
24 
25 #include <cutter/cut-private.h>
26 #include <cutter/cut-public.h>
27 #include <cutter/cut-test-data.h>
28 #include <gcutter/gcut-public.h>
29 
30 G_BEGIN_DECLS
31 
32 #define CUT_TEST_CONTEXT_ERROR                (cut_test_context_error_quark())
33 
34 #define CUT_TYPE_TEST_CONTEXT                 (cut_test_context_get_type())
35 #define CUT_TEST_CONTEXT(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), CUT_TYPE_TEST_CONTEXT, CutTestContext))
36 #define CUT_TEST_TEST_CONTEXT_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), CUT_TYPE_TEST_CONTEXT, CutTestContextClass))
37 #define CUT_IS_TEST_CONTEXT(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CUT_TYPE_TEST_CONTEXT))
38 #define CUT_IS_TEST_TEST_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CUT_TYPE_TEST_CONTEXT))
39 #define CUT_TEST_TEST_CONTEXT_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), CUT_TYPE_TEST_CONTEXT, CutTestContextClass))
40 
41 typedef struct _CutTestContextClass    CutTestContextClass;
42 
43 struct _CutTestContext
44 {
45     GObject object;
46 };
47 
48 struct _CutTestContextClass
49 {
50     GObjectClass parent_class;
51 };
52 
53 typedef enum
54 {
55     CUT_TEST_CONTEXT_ERROR_FATAL
56 } CutTestContextError;
57 
58 GQuark           cut_test_context_error_quark  (void);
59 
60 GType            cut_test_context_get_type     (void) G_GNUC_CONST;
61 
62 void             cut_test_context_current_init (void);
63 void             cut_test_context_current_quit (void);
64 
65 CutTestContext  *cut_test_context_new (CutRunContext   *run_context,
66                                        CutTestSuite    *test_suite,
67                                        CutTestCase     *test_case,
68                                        CutTestIterator *test_iterator,
69                                        CutTest         *test);
70 CutTestContext  *cut_test_context_new_empty (void);
71 CutTestContext  *cut_test_context_new_sub (CutTestContext *parent);
72 
73 CutRunContext   *cut_test_context_get_run_context (CutTestContext *context);
74 void             cut_test_context_set_run_context (CutTestContext *context,
75                                                    CutRunContext  *run_context);
76 CutTestSuite *cut_test_context_get_test_suite (CutTestContext *context);
77 void          cut_test_context_set_test_suite (CutTestContext *context,
78                                                CutTestSuite   *test_suite);
79 CutTestCase  *cut_test_context_get_test_case  (CutTestContext *context);
80 void          cut_test_context_set_test_case  (CutTestContext *context,
81                                                CutTestCase    *test_case);
82 CutTestIterator *cut_test_context_get_test_iterator
83                                               (CutTestContext *context);
84 void          cut_test_context_set_test_iterator
85                                               (CutTestContext *context,
86                                                CutTestIterator *test_iterator);
87 CutTest      *cut_test_context_get_test       (CutTestContext *context);
88 void          cut_test_context_set_test       (CutTestContext *context,
89                                                CutTest        *test);
90 
91 void          cut_test_context_set_multi_thread
92                                               (CutTestContext *context,
93                                                gboolean        use_multi_thread);
94 gboolean      cut_test_context_is_multi_thread
95                                               (CutTestContext *context);
96 
97 void          cut_test_context_set_data       (CutTestContext *context,
98                                                CutTestData    *test_data);
99 CutTestData  *cut_test_context_get_data       (CutTestContext *context,
100                                                guint           index);
101 void          cut_test_context_shift_data     (CutTestContext *context);
102 gboolean      cut_test_context_have_data      (CutTestContext *context);
103 CutTestData  *cut_test_context_get_current_data
104                                               (CutTestContext *context);
105 guint         cut_test_context_get_n_data     (CutTestContext *context);
106 
107 void          cut_test_context_set_failed     (CutTestContext *context,
108                                                gboolean        failed);
109 gboolean      cut_test_context_is_failed      (CutTestContext *context);
110 gboolean      cut_test_context_need_test_run  (CutTestContext *context);
111 
112 void          cut_test_context_emit_signal    (CutTestContext *context,
113                                                CutTestResult  *result);
114 
115 gchar        *cut_test_context_to_xml         (CutTestContext *context);
116 void          cut_test_context_to_xml_string  (CutTestContext *context,
117                                                GString        *string,
118                                                guint           indent);
119 
120 const gchar  *cut_test_context_build_fixture_path_va_list
121                                               (CutTestContext *context,
122                                                const gchar    *path,
123                                                va_list         args);
124 GString      *cut_test_context_get_fixture_data
125                                               (CutTestContext *context,
126                                                GError        **error,
127                                                const gchar   **full_path,
128                                                const gchar    *path,
129                                                ...) G_GNUC_NULL_TERMINATED;
130 GString      *cut_test_context_get_fixture_data_va_list
131                                               (CutTestContext *context,
132                                                GError        **error,
133                                                const gchar  **full_path,
134                                                const gchar    *path,
135                                                va_list         args);
136 
137 gchar        *cut_test_context_build_source_filename
138                                               (CutTestContext *context,
139                                                const gchar    *filename);
140 
141 G_END_DECLS
142 
143 #endif /* __CUT_TEST_CONTEXT_H__ */
144 
145 /*
146 vi:ts=4:nowrap:ai:expandtab:sw=4
147 */
148