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