summaryrefslogtreecommitdiff
path: root/test/libapt/srvrecs_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/libapt/srvrecs_test.cc')
-rw-r--r--test/libapt/srvrecs_test.cc33
1 files changed, 33 insertions, 0 deletions
diff --git a/test/libapt/srvrecs_test.cc b/test/libapt/srvrecs_test.cc
new file mode 100644
index 000000000..7e43cc757
--- /dev/null
+++ b/test/libapt/srvrecs_test.cc
@@ -0,0 +1,33 @@
+#include <config.h>
+
+#include <apt-pkg/srvrec.h>
+
+#include <string>
+#include <iostream>
+
+#include <gtest/gtest.h>
+
+TEST(SrvRecTest, PopFromSrvRecs)
+{
+ // the PopFromSrvRecs() is using a random number so we must
+ // run it a bunch of times to ensure we are not fooled by randomness
+ std::set<std::string> selected;
+ for(int i=0;i<100;i++)
+ {
+ std::vector<SrvRec> Meep;
+ SrvRec foo = {target:"foo", priority: 20, weight: 0, port: 80};
+ Meep.push_back(foo);
+
+ SrvRec bar = {target:"bar", priority: 20, weight: 0, port: 80};
+ Meep.push_back(bar);
+
+ EXPECT_EQ(Meep.size(), 2);
+ SrvRec result = PopFromSrvRecs(Meep);
+ selected.insert(result.target);
+ // ensure that pop removed one element
+ EXPECT_EQ(Meep.size(), 1);
+ }
+
+ // ensure that after enough runs we end up with both selected
+ EXPECT_EQ(selected.size(), 2);
+}