83 lines
1.8 KiB
C
83 lines
1.8 KiB
C
/*
|
|
* This file Copyright (C) 2013-2014 Mnemosyne LLC
|
|
*
|
|
* It may be used under the GNU GPL versions 2 or 3
|
|
* or any future license endorsed by Mnemosyne LLC.
|
|
*
|
|
*/
|
|
|
|
#include "transmission.h"
|
|
#include "error.h"
|
|
|
|
#include "libtransmission-test.h"
|
|
|
|
static int test_error_set(void)
|
|
{
|
|
tr_error* err = NULL;
|
|
|
|
tr_error_prefix(&err, "error: ");
|
|
check_ptr(err, ==, NULL);
|
|
|
|
tr_error_set(&err, 1, "error: %s (%d)", "oops", 2);
|
|
check(err != NULL);
|
|
check_int(err->code, ==, 1);
|
|
check_str(err->message, ==, "error: oops (2)");
|
|
tr_error_clear(&err);
|
|
check_ptr(err, ==, NULL);
|
|
|
|
tr_error_set_literal(&err, 2, "oops");
|
|
check_ptr(err, !=, NULL);
|
|
check_int(err->code, ==, 2);
|
|
check_str(err->message, ==, "oops");
|
|
|
|
tr_error_prefix(&err, "error: ");
|
|
check_ptr(err, !=, NULL);
|
|
check_int(err->code, ==, 2);
|
|
check_str(err->message, ==, "error: oops");
|
|
|
|
tr_error_free(err);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int test_error_propagate(void)
|
|
{
|
|
tr_error* err = NULL;
|
|
tr_error* err2 = NULL;
|
|
|
|
tr_error_set_literal(&err, 1, "oops");
|
|
check_ptr(err, !=, NULL);
|
|
check_int(err->code, ==, 1);
|
|
check_str(err->message, ==, "oops");
|
|
|
|
tr_error_propagate(&err2, &err);
|
|
check_ptr(err2, !=, NULL);
|
|
check_int(err2->code, ==, 1);
|
|
check_str(err2->message, ==, "oops");
|
|
check_ptr(err, ==, NULL);
|
|
|
|
tr_error_propagate_prefixed(&err, &err2, "error: ");
|
|
check_ptr(err, !=, NULL);
|
|
check_int(err->code, ==, 1);
|
|
check_str(err->message, ==, "error: oops");
|
|
check_ptr(err2, ==, NULL);
|
|
|
|
tr_error_propagate(NULL, &err);
|
|
check_ptr(err, ==, NULL);
|
|
|
|
tr_error_free(err2);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
testFunc const tests[] =
|
|
{
|
|
test_error_set,
|
|
test_error_propagate
|
|
};
|
|
|
|
return runTests(tests, NUM_TESTS(tests));
|
|
}
|