1 /*
2 * This file Copyright (C) 2013-2014 Mnemosyne LLC
3 *
4 * It may be used under the GNU GPL versions 2 or 3
5 * or any future license endorsed by Mnemosyne LLC.
6 *
7 */
8
9 #include "transmission.h"
10 #include "error.h"
11
12 #include "libtransmission-test.h"
13
test_error_set(void)14 static int test_error_set(void)
15 {
16 tr_error* err = NULL;
17
18 tr_error_prefix(&err, "error: ");
19 check_ptr(err, ==, NULL);
20
21 tr_error_set(&err, 1, "error: %s (%d)", "oops", 2);
22 check(err != NULL);
23 check_int(err->code, ==, 1);
24 check_str(err->message, ==, "error: oops (2)");
25 tr_error_clear(&err);
26 check_ptr(err, ==, NULL);
27
28 tr_error_set_literal(&err, 2, "oops");
29 check_ptr(err, !=, NULL);
30 check_int(err->code, ==, 2);
31 check_str(err->message, ==, "oops");
32
33 tr_error_prefix(&err, "error: ");
34 check_ptr(err, !=, NULL);
35 check_int(err->code, ==, 2);
36 check_str(err->message, ==, "error: oops");
37
38 tr_error_free(err);
39
40 return 0;
41 }
42
test_error_propagate(void)43 static int test_error_propagate(void)
44 {
45 tr_error* err = NULL;
46 tr_error* err2 = NULL;
47
48 tr_error_set_literal(&err, 1, "oops");
49 check_ptr(err, !=, NULL);
50 check_int(err->code, ==, 1);
51 check_str(err->message, ==, "oops");
52
53 tr_error_propagate(&err2, &err);
54 check_ptr(err2, !=, NULL);
55 check_int(err2->code, ==, 1);
56 check_str(err2->message, ==, "oops");
57 check_ptr(err, ==, NULL);
58
59 tr_error_propagate_prefixed(&err, &err2, "error: ");
60 check_ptr(err, !=, NULL);
61 check_int(err->code, ==, 1);
62 check_str(err->message, ==, "error: oops");
63 check_ptr(err2, ==, NULL);
64
65 tr_error_propagate(NULL, &err);
66 check_ptr(err, ==, NULL);
67
68 tr_error_free(err2);
69
70 return 0;
71 }
72
main(void)73 int main(void)
74 {
75 testFunc const tests[] =
76 {
77 test_error_set,
78 test_error_propagate
79 };
80
81 return runTests(tests, NUM_TESTS(tests));
82 }
83