1 /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * Copyright (C) 2007-2014 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_H__ 21 #define __CUT_TEST_H__ 22 23 #include <setjmp.h> 24 25 #include <glib-object.h> 26 27 #include <cutter/cut-private.h> 28 #include <cutter/cut-test-context.h> 29 30 G_BEGIN_DECLS 31 32 #define CUT_TYPE_TEST (cut_test_get_type ()) 33 #define CUT_TEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CUT_TYPE_TEST, CutTest)) 34 #define CUT_TEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CUT_TYPE_TEST, CutTestClass)) 35 #define CUT_IS_TEST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CUT_TYPE_TEST)) 36 #define CUT_IS_TEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CUT_TYPE_TEST)) 37 #define CUT_TEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), CUT_TYPE_TEST, CutTestClass)) 38 39 typedef struct _CutTestClass CutTestClass; 40 41 typedef struct _CutTestResultClass CutTestResultClass; 42 43 typedef void (*CutTestFunction) (void); 44 typedef void (*CutAttributesSetupFunction)(void); 45 typedef void (*CutSetupFunction) (void); 46 typedef void (*CutTeardownFunction) (void); 47 48 struct _CutTest 49 { 50 GObject object; 51 }; 52 53 struct _CutTestClass 54 { 55 GObjectClass parent_class; 56 57 void (*start) (CutTest *test, 58 CutTestContext *context); 59 void (*pass_assertion) (CutTest *test, 60 CutTestContext *context); 61 void (*success) (CutTest *test, 62 CutTestContext *context, 63 CutTestResult *result); 64 void (*failure) (CutTest *test, 65 CutTestContext *context, 66 CutTestResult *result); 67 void (*error) (CutTest *test, 68 CutTestContext *context, 69 CutTestResult *result); 70 void (*pending) (CutTest *test, 71 CutTestContext *context, 72 CutTestResult *result); 73 void (*notification) (CutTest *test, 74 CutTestContext *context, 75 CutTestResult *result); 76 void (*omission) (CutTest *test, 77 CutTestContext *context, 78 CutTestResult *result); 79 void (*crash) (CutTest *test, 80 CutTestContext *context, 81 CutTestResult *result); 82 void (*complete) (CutTest *test, 83 CutTestContext *context, 84 gboolean success); 85 86 gdouble (*get_elapsed) (CutTest *test); 87 void (*set_elapsed) (CutTest *test, gdouble elapsed); 88 89 gboolean (*run) (CutTest *test, 90 CutTestContext *test_context, 91 CutRunContext *run_context); 92 void (*long_jump) (CutTest *test, 93 jmp_buf *jump_buffer, 94 gint value); 95 gboolean (*is_available) (CutTest *test, 96 CutTestContext *test_context, 97 CutRunContext *run_context); 98 void (*invoke) (CutTest *test, 99 CutTestContext *test_context, 100 CutRunContext *run_context); 101 void (*emit_result_signal) 102 (CutTest *test, 103 CutTestContext *test_context, 104 CutTestResult *result); 105 }; 106 107 GType cut_test_get_type (void) G_GNUC_CONST; 108 109 CutTest *cut_test_new (const gchar *name, 110 CutTestFunction function); 111 CutTest *cut_test_new_empty (void); 112 gboolean cut_test_run (CutTest *test, 113 CutTestContext *test_context, 114 CutRunContext *run_context); 115 116 void cut_test_long_jump (CutTest *test, 117 jmp_buf *jump_buffer, 118 gint value); 119 gboolean cut_test_is_own_jump_buffer (CutTest *test, 120 jmp_buf *jump_buffer); 121 122 const gchar *cut_test_get_name (CutTest *test); 123 void cut_test_set_name (CutTest *test, 124 const gchar *name); 125 const gchar *cut_test_get_full_name (CutTest *test); 126 const gchar *cut_test_get_description (CutTest *test); 127 void cut_test_get_start_time (CutTest *test, 128 GTimeVal *start_time); 129 void cut_test_set_start_time (CutTest *test, 130 GTimeVal *start_time); 131 gdouble cut_test_get_elapsed (CutTest *test); 132 void cut_test_set_elapsed (CutTest *test, 133 gdouble elapsed); 134 const gchar *cut_test_get_attribute (CutTest *test, 135 const gchar *name); 136 void cut_test_set_attribute (CutTest *test, 137 const gchar *name, 138 const gchar *value); 139 GHashTable *cut_test_get_attributes (CutTest *test); 140 const gchar *cut_test_get_base_directory (CutTest *test); 141 void cut_test_set_base_directory (CutTest *test, 142 const gchar *base_directory); 143 144 gchar *cut_test_to_xml (CutTest *test); 145 void cut_test_to_xml_string (CutTest *test, 146 GString *string, 147 guint indent); 148 149 void cut_test_set_result_elapsed (CutTest *test, 150 CutTestResult *result); 151 void cut_test_emit_result_signal (CutTest *test, 152 CutTestContext *test_context, 153 CutTestResult *result); 154 155 G_END_DECLS 156 157 #endif /* __CUT_TEST_H__ */ 158 159 /* 160 vi:ts=4:nowrap:ai:expandtab:sw=4 161 */ 162