add missing slash in %configure
[platform/upstream/libsoup.git] / tests / test-utils.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2
3 #ifdef HAVE_CONFIG_H
4 #include "config.h"
5 #endif
6
7 #include <string.h>
8 #include <stdlib.h>
9
10 #define LIBSOUP_USE_UNSTABLE_REQUEST_API
11
12 #include "libsoup/soup.h"
13 #include "libsoup/soup-requester.h"
14
15 void test_init    (int argc, char **argv, GOptionEntry *entries);
16 void test_cleanup (void);
17
18 extern int debug_level;
19 extern gboolean tls_available;
20 extern gboolean apache_available;
21 void debug_printf (int level, const char *format, ...) G_GNUC_PRINTF (2, 3);
22
23 #define SOUP_TEST_SKIP_IF_NO_TLS                                \
24         G_STMT_START {                                          \
25                 if (!tls_available) {                           \
26                         g_test_skip ("TLS is not available");   \
27                         return;                                 \
28                 }                                               \
29         } G_STMT_END
30
31 #ifdef HAVE_APACHE
32 void apache_init    (void);
33 void apache_cleanup (void);
34 #define SOUP_TEST_SKIP_IF_NO_APACHE
35 #else
36 #define apache_init()
37 #define apache_cleanup()
38 #define SOUP_TEST_SKIP_IF_NO_APACHE                             \
39         G_STMT_START {                                          \
40                 g_test_skip ("apache is not available");        \
41                 return;                                         \
42         } G_STMT_END
43 #endif
44
45 typedef enum {
46         SOUP_TEST_REQUEST_NONE = 0,
47         SOUP_TEST_REQUEST_CANCEL_MESSAGE = (1 << 0),
48         SOUP_TEST_REQUEST_CANCEL_CANCELLABLE = (1 << 1),
49         SOUP_TEST_REQUEST_CANCEL_SOON = (1 << 2),
50         SOUP_TEST_REQUEST_CANCEL_IMMEDIATE = (1 << 3),
51         SOUP_TEST_REQUEST_CANCEL_PREEMPTIVE = (1 << 4),
52         SOUP_TEST_REQUEST_CANCEL_AFTER_SEND_FINISH = (1 << 5),
53 } SoupTestRequestFlags;
54
55 SoupSession *soup_test_session_new         (GType type, ...);
56 void         soup_test_session_abort_unref (SoupSession *session);
57
58 SoupServer  *soup_test_server_new        (gboolean in_own_thread);
59 SoupServer  *soup_test_server_new_ssl    (gboolean in_own_thread);
60 void         soup_test_server_quit_unref (SoupServer *server);
61
62 GInputStream *soup_test_request_send         (SoupRequest  *req,
63                                               GCancellable *cancellable,
64                                               guint         flags,
65                                               GError       **error);
66 gboolean      soup_test_request_read_all     (SoupRequest   *req,
67                                               GInputStream  *stream,
68                                               GCancellable  *cancellable,
69                                               GError       **error);
70 gboolean      soup_test_request_close_stream (SoupRequest   *req,
71                                               GInputStream  *stream,
72                                               GCancellable  *cancellable,
73                                               GError       **error);
74
75 void        soup_test_register_resources (void);
76 SoupBuffer *soup_test_load_resource      (const char  *name,
77                                           GError     **error);
78
79 SoupBuffer *soup_test_get_index          (void);
80
81 #ifdef G_HAVE_ISO_VARARGS
82 #define soup_test_assert(expr, ...)                             \
83 G_STMT_START {                                                          \
84         char *_message;                                                 \
85         if (G_UNLIKELY (!(expr))) {                                     \
86                 _message = g_strdup_printf (__VA_ARGS__);               \
87                 g_assertion_message (G_LOG_DOMAIN,                      \
88                                      __FILE__, __LINE__, G_STRFUNC,     \
89                                      _message);                         \
90                 g_free (_message);                                      \
91         }                                                               \
92 } G_STMT_END
93 #else
94 void soup_test_assert (gboolean expr, const char *fmt, ...);
95 #endif
96
97 #define soup_test_assert_message_status(msg, status)                    \
98 G_STMT_START {                                                          \
99         SoupMessage *_msg = (msg);                                      \
100         guint _status = (status);                                       \
101         char *_message;                                                 \
102                                                                         \
103         if (G_UNLIKELY (_msg->status_code != _status)) {                \
104                 _message = g_strdup_printf ("Unexpected status %d %s (expected %d %s)", \
105                                             _msg->status_code, _msg->reason_phrase,     \
106                                             _status, soup_status_get_phrase (_status)); \
107                 g_assertion_message (G_LOG_DOMAIN,                      \
108                                      __FILE__, __LINE__, G_STRFUNC,     \
109                                      _message);                         \
110                 g_free (_message);                                      \
111         }                                                               \
112 } G_STMT_END
113
114 #define soup_assert_cmpmem(s1, l1, s2, l2)                              \
115 G_STMT_START {                                                          \
116         int __l1 = l1, __l2 = l2;                                       \
117         gconstpointer __s1 = s1, __s2 = s2;                             \
118         if (G_UNLIKELY ((__l1) != (__l2))) {                            \
119                 g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
120                                             "len(" #s1 ") == len(" #s2 ")", __l1, "==", __l2, \
121                                             'i');                       \
122         } else if (G_UNLIKELY (memcmp (__s1, __s2, __l1) != 0)) {       \
123                 g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
124                                      "assertion failed (" #s1 " == " #s2 ")"); \
125         }                                                               \
126 } G_STMT_END