← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 3053: bloom filter tests

 

------------------------------------------------------------
revno: 3053
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Sat 2012-09-15 16:25:58 +0200
message:
  bloom filter tests
added:
  test/testbloom.cpp
modified:
  changelog.txt


--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk

Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'changelog.txt'
--- changelog.txt	2012-09-13 21:15:43 +0000
+++ changelog.txt	2012-09-15 14:25:58 +0000
@@ -1,4 +1,4 @@
-* Revamp favorite hub settings (poy)
+* [L#270107] Revamp favorite hub settings (poy)
 * Reduce resource consumption when slots are full (poy)
 * [L#984330] Make PM windows more aware of the selected hub (poy)
 * [L#927821] Don't choke on hub addresses with spaces (poy)

=== added file 'test/testbloom.cpp'
--- test/testbloom.cpp	1970-01-01 00:00:00 +0000
+++ test/testbloom.cpp	2012-09-15 14:25:58 +0000
@@ -0,0 +1,127 @@
+#include <dcpp/stdinc.h>
+#include <dcpp/DCPlusPlus.h>
+
+#include <dcpp/HashBloom.h>
+#include <dcpp/HashValue.h>
+#include <dcpp/TigerHash.h>
+
+#include "gtest.h"
+
+using namespace dcpp;
+
+struct Hasher {
+	static const size_t BITS = 1024;
+	static const size_t BYTES = BITS / 8;
+};
+
+TEST(testbloom, test_0)
+{
+	HashBloom bloom;
+	ByteVector v;
+	bloom.reset(8, 1024, 24);
+	bloom.add(TTHValue("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
+	bloom.copy_to(v);
+	ASSERT_EQ("AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+		HashValue<Hasher>(&v[0]).toBase32());
+}
+
+TEST(testbloom, test_1)
+{
+	HashBloom bloom;
+	ByteVector v;
+	bloom.reset(8, 1024, 24);
+	bloom.add(TTHValue("BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
+	bloom.copy_to(v);
+	ASSERT_EQ("AEAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+		HashValue<Hasher>(&v[0]).toBase32());
+}
+
+TEST(testbloom, test_2)
+{
+	HashBloom bloom;
+	ByteVector v;
+	bloom.reset(8, 1024, 24);
+	bloom.add(TTHValue("QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
+	bloom.copy_to(v);
+	ASSERT_EQ("AEAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+		HashValue<Hasher>(&v[0]).toBase32());
+}
+
+TEST(testbloom, test_3)
+{
+	HashBloom bloom;
+	ByteVector v;
+	bloom.reset(8, 1024, 24);
+	bloom.add(TTHValue("BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
+	bloom.add(TTHValue("QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
+	bloom.copy_to(v);
+	ASSERT_EQ("AEAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+		HashValue<Hasher>(&v[0]).toBase32());
+}
+
+TEST(testbloom, test_4)
+{
+	HashBloom bloom;
+	ByteVector v;
+	bloom.reset(8, 1024, 24);
+	bloom.add(TTHValue("UDRJ6EGCH3CGWIIU2V6CH7VLFN4N2PCZKSPTBQA"));
+	bloom.copy_to(v);
+	ASSERT_EQ("AAAAAAAABAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQACAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAA",
+		HashValue<Hasher>(&v[0]).toBase32());
+}
+
+TEST(testbloom, test_5)
+{
+	HashBloom bloom;
+	ByteVector v;
+	bloom.reset(2, 1024, 64);
+	bloom.add(TTHValue("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
+	bloom.copy_to(v);
+	ASSERT_EQ("AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+		HashValue<Hasher>(&v[0]).toBase32());
+}
+
+TEST(testbloom, test_6)
+{
+	HashBloom bloom;
+	ByteVector v;
+	bloom.reset(2, 1024, 64);
+	bloom.add(TTHValue("BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
+	bloom.copy_to(v);
+	ASSERT_EQ("AEAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+		HashValue<Hasher>(&v[0]).toBase32());
+}
+
+TEST(testbloom, test_7)
+{
+	HashBloom bloom;
+	ByteVector v;
+	bloom.reset(2, 1024, 64);
+	bloom.add(TTHValue("QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
+	bloom.copy_to(v);
+	ASSERT_EQ("AEAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+		HashValue<Hasher>(&v[0]).toBase32());
+}
+
+TEST(testbloom, test_8)
+{
+	HashBloom bloom;
+	ByteVector v;
+	bloom.reset(2, 1024, 64);
+	bloom.add(TTHValue("BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
+	bloom.add(TTHValue("QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"));
+	bloom.copy_to(v);
+	ASSERT_EQ("AEAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+		HashValue<Hasher>(&v[0]).toBase32());
+}
+
+TEST(testbloom, test_9)
+{
+	HashBloom bloom;
+	ByteVector v;
+	bloom.reset(2, 1024, 64);
+	bloom.add(TTHValue("UDRJ6EGCH3CGWIIU2V6CH7VLFN4N2PCZKSPTBQA"));
+	bloom.copy_to(v);
+	ASSERT_EQ("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+		HashValue<Hasher>(&v[0]).toBase32());
+}