84 lines
1.7 KiB
C
84 lines
1.7 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.
|
|
*
|
|
* $Id$
|
|
*/
|
|
|
|
#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 (err == NULL);
|
|
|
|
tr_error_set (&err, 1, "error: %s (%d)", "oops", 2);
|
|
check (err != NULL);
|
|
check_int_eq (1, err->code);
|
|
check_streq ("error: oops (2)", err->message);
|
|
tr_error_clear (&err);
|
|
check (err == NULL);
|
|
|
|
tr_error_set_literal (&err, 2, "oops");
|
|
check (err != NULL);
|
|
check_int_eq (2, err->code);
|
|
check_streq ("oops", err->message);
|
|
|
|
tr_error_prefix (&err, "error: ");
|
|
check (err != NULL);
|
|
check_int_eq (2, err->code);
|
|
check_streq ("error: oops", err->message);
|
|
|
|
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 (err != NULL);
|
|
check_int_eq (1, err->code);
|
|
check_streq ("oops", err->message);
|
|
|
|
tr_error_propagate (&err2, &err);
|
|
check (err2 != NULL);
|
|
check_int_eq (1, err2->code);
|
|
check_streq ("oops", err2->message);
|
|
check (err == NULL);
|
|
|
|
tr_error_propagate_prefixed (&err, &err2, "error: ");
|
|
check (err != NULL);
|
|
check_int_eq (1, err->code);
|
|
check_streq ("error: oops", err->message);
|
|
check (err2 == NULL);
|
|
|
|
tr_error_propagate (NULL, &err);
|
|
check (err == NULL);
|
|
|
|
tr_error_free (err2);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
const testFunc tests[] = { test_error_set,
|
|
test_error_propagate };
|
|
|
|
return runTests (tests, NUM_TESTS (tests));
|
|
}
|