From 7f0627245462b4addfa852c07653d1542b3bfbc8 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Sat, 15 Dec 2007 19:18:08 +0000 Subject: [PATCH] added unit test for kademlia distance functions --- test/test_primitives.cpp | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/test/test_primitives.cpp b/test/test_primitives.cpp index 858099cf2..654bd3927 100644 --- a/test/test_primitives.cpp +++ b/test/test_primitives.cpp @@ -6,6 +6,7 @@ #include "libtorrent/entry.hpp" #include "libtorrent/torrent_info.hpp" #include "libtorrent/escape_string.hpp" +#include "libtorrent/kademlia/node_id.hpp" #include #include @@ -286,7 +287,34 @@ int test_main() TEST_CHECK(ti.name() == "test1"); - + // test kademlia functions + + using namespace libtorrent::dht; + + for (int i = 0; i < 160; i += 4) + { + for (int j = 0; j < 160; j += 4) + { + node_id a(0); + a[(159-i) / 8] = 1 << (i & 7); + node_id b(0); + b[(159-j) / 8] = 1 << (j & 7); + int dist = distance_exp(a, b); + + TEST_CHECK(dist >= 0 && dist < 160); + TEST_CHECK(dist == ((i == j)?0:std::max(i, j))); + + for (int k = 0; k < 160; k += 4) + { + node_id c(0); + c[(159-k) / 8] = 1 << (k & 7); + + bool cmp = compare_ref(a, b, c); + TEST_CHECK(cmp == (distance(a, c) < distance(b, c))); + } + } + } + return 0; }