]> git.saurik.com Git - apt.git/blobdiff - test/libapt/srvrecs_test.cc
use clock() as source for SRV randomness
[apt.git] / test / libapt / srvrecs_test.cc
index 7e43cc7572249313010bf44f3d7fee96e55c84a2..4b63d2ccd08e8e801246488fba79bd06af156d95 100644 (file)
@@ -12,20 +12,28 @@ 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++)
+   for(size_t 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);
+      Meep.emplace_back("foo", 20, 0, 80);
+      Meep.emplace_back("bar", 20, 0, 80);
+      Meep.emplace_back("baz", 30, 0, 80);
 
-      EXPECT_EQ(Meep.size(), 2);
-      SrvRec result = PopFromSrvRecs(Meep);
+      EXPECT_EQ(Meep.size(), 3);
+      SrvRec const result = PopFromSrvRecs(Meep);
       selected.insert(result.target);
       // ensure that pop removed one element
+      EXPECT_EQ(Meep.size(), 2);
+      EXPECT_NE(result.target, "baz");
+
+      SrvRec const result2 = PopFromSrvRecs(Meep);
+      EXPECT_NE(result.target, result2.target);
+      EXPECT_NE(result2.target, "baz");
       EXPECT_EQ(Meep.size(), 1);
+
+      SrvRec const result3 = PopFromSrvRecs(Meep);
+      EXPECT_EQ(result3.target, "baz");
+      EXPECT_TRUE(Meep.empty());
    }
 
    // ensure that after enough runs we end up with both selected