transmission/libtransmission/session-test.c

142 lines
3.6 KiB
C
Raw Normal View History

/*
* 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.
*
*/
2008-01-07 17:52:50 +00:00
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "transmission.h"
#include "session.h"
#include "session-id.h"
2008-01-07 17:52:50 +00:00
#include "utils.h"
#include "version.h"
2008-01-07 17:52:50 +00:00
#undef VERBOSE
#include "libtransmission-test.h"
2008-01-07 17:52:50 +00:00
static int
testPeerId (void)
2008-01-07 17:52:50 +00:00
{
int i;
uint8_t peer_id[PEER_ID_LEN+1];
2008-01-07 17:52:50 +00:00
for (i = 0; i < 100000; ++i)
2008-01-07 17:52:50 +00:00
{
int j;
int val = 0;
2008-01-07 17:52:50 +00:00
tr_peerIdInit (peer_id);
2008-01-07 17:52:50 +00:00
check (strlen ((char*)peer_id) == PEER_ID_LEN);
check (memcmp (peer_id, PEERID_PREFIX, 8) == 0);
for (j = 8; j < PEER_ID_LEN; ++j)
{
char tmp[2] = { (char)peer_id[j], '\0' };
val += strtoul (tmp, NULL, 36);
2008-01-07 17:52:50 +00:00
}
check ((val % 36) == 0);
2008-01-07 17:52:50 +00:00
}
return 0;
}
static int
test_session_id (void)
{
tr_session_id_t session_id;
const char * session_id_str_1 = NULL;
const char * session_id_str_2 = NULL;
const char * session_id_str_3 = NULL;
check (!tr_session_id_is_local (NULL));
check (!tr_session_id_is_local (""));
check (!tr_session_id_is_local ("test"));
session_id = tr_session_id_new ();
check (session_id != NULL);
tr_timeUpdate (0);
session_id_str_1 = tr_session_id_get_current (session_id);
check (session_id_str_1 != NULL);
check (strlen (session_id_str_1) == 48);
session_id_str_1 = tr_strdup (session_id_str_1);
check (tr_session_id_is_local (session_id_str_1));
tr_timeUpdate (60 * 60 - 1);
check (tr_session_id_is_local (session_id_str_1));
session_id_str_2 = tr_session_id_get_current (session_id);
check (session_id_str_2 != NULL);
check (strlen (session_id_str_2) == 48);
check (strcmp (session_id_str_2, session_id_str_1) == 0);
tr_timeUpdate (60 * 60);
check (tr_session_id_is_local (session_id_str_1));
session_id_str_2 = tr_session_id_get_current (session_id);
check (session_id_str_2 != NULL);
check (strlen (session_id_str_2) == 48);
check (strcmp (session_id_str_2, session_id_str_1) != 0);
session_id_str_2 = tr_strdup (session_id_str_2);
check (tr_session_id_is_local (session_id_str_2));
check (tr_session_id_is_local (session_id_str_1));
tr_timeUpdate (60 * 60 * 2);
check (tr_session_id_is_local (session_id_str_2));
check (tr_session_id_is_local (session_id_str_1));
session_id_str_3 = tr_session_id_get_current (session_id);
check (session_id_str_3 != NULL);
check (strlen (session_id_str_3) == 48);
check (strcmp (session_id_str_3, session_id_str_2) != 0);
check (strcmp (session_id_str_3, session_id_str_1) != 0);
session_id_str_3 = tr_strdup (session_id_str_3);
check (tr_session_id_is_local (session_id_str_3));
check (tr_session_id_is_local (session_id_str_2));
check (!tr_session_id_is_local (session_id_str_1));
tr_timeUpdate (60 * 60 * 10);
check (tr_session_id_is_local (session_id_str_3));
check (tr_session_id_is_local (session_id_str_2));
check (!tr_session_id_is_local (session_id_str_1));
check (!tr_session_id_is_local (NULL));
check (!tr_session_id_is_local (""));
check (!tr_session_id_is_local ("test"));
tr_session_id_free (session_id);
check (!tr_session_id_is_local (session_id_str_3));
check (!tr_session_id_is_local (session_id_str_2));
check (!tr_session_id_is_local (session_id_str_1));
tr_free (session_id_str_3);
tr_free (session_id_str_2);
tr_free (session_id_str_1);
return 0;
}
int
main (void)
{
const testFunc tests[] = { testPeerId,
test_session_id };
return runTests (tests, NUM_TESTS (tests));
}