/* * 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 #include #include #include "transmission.h" #include "session.h" #include "session-id.h" #include "utils.h" #include "version.h" #undef VERBOSE #include "libtransmission-test.h" static int testPeerId (void) { int i; uint8_t peer_id[PEER_ID_LEN+1]; for (i = 0; i < 100000; ++i) { int j; int val = 0; tr_peerIdInit (peer_id); 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); } check ((val % 36) == 0); } 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)); }