Prop210: Refactor connection_get_* to produce lists and counts
[tor.git] / src / test / test_nodelist.c
bloba8693ec9b5478edcb79858c1ed126f27a15d2161
1 /* Copyright (c) 2007-2015, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
4 /**
5 * \file test_nodelist.c
6 * \brief Unit tests for nodelist related functions.
7 **/
9 #include "or.h"
10 #include "nodelist.h"
11 #include "test.h"
13 /** Test the case when node_get_by_id() returns NULL,
14 * node_get_verbose_nickname_by_id should return the base 16 encoding
15 * of the id.
17 static void
18 test_nodelist_node_get_verbose_nickname_by_id_null_node(void *arg)
20 char vname[MAX_VERBOSE_NICKNAME_LEN+1];
21 const char ID[] = "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
22 "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA";
23 (void) arg;
25 /* make sure node_get_by_id returns NULL */
26 tt_assert(!node_get_by_id(ID));
27 node_get_verbose_nickname_by_id(ID, vname);
28 tt_str_op(vname,OP_EQ, "$AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
29 done:
30 return;
33 /** For routers without named flag, get_verbose_nickname should return
34 * "Fingerprint~Nickname"
36 static void
37 test_nodelist_node_get_verbose_nickname_not_named(void *arg)
39 node_t mock_node;
40 routerstatus_t mock_rs;
42 char vname[MAX_VERBOSE_NICKNAME_LEN+1];
44 (void) arg;
46 memset(&mock_node, 0, sizeof(node_t));
47 memset(&mock_rs, 0, sizeof(routerstatus_t));
49 /* verbose nickname should use ~ instead of = for unnamed routers */
50 strlcpy(mock_rs.nickname, "TestOR", sizeof(mock_rs.nickname));
51 mock_node.rs = &mock_rs;
52 memcpy(mock_node.identity,
53 "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
54 "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA",
55 DIGEST_LEN);
56 node_get_verbose_nickname(&mock_node, vname);
57 tt_str_op(vname,OP_EQ, "$AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~TestOR");
59 done:
60 return;
63 #define NODE(name, flags) \
64 { #name, test_nodelist_##name, (flags), NULL, NULL }
66 struct testcase_t nodelist_tests[] = {
67 NODE(node_get_verbose_nickname_by_id_null_node, TT_FORK),
68 NODE(node_get_verbose_nickname_not_named, TT_FORK),
69 END_OF_TESTCASES