Make UniqueNumberGenerator::AddKnownId() return a value
Make AddKnownId() return a value to indicate whether the ID was
known before, or has only been made known now.
This allows users of the class to RTC_DCHECK that no collisions
existed in their seed set, for instance.
This change is done for the following classes:
1. UniqueNumberGenerator
2. UniqueRandomIdGenerator
3. UniqueStringGenerator
Bug: None
Change-Id: I627d2821cb76aa333075e36575088d76dbeb3665
Reviewed-on: https://webrtc-review.googlesource.com/c/121780
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Amit Hilbuch <amithi@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26621}
diff --git a/rtc_base/unique_id_generator_unittest.cc b/rtc_base/unique_id_generator_unittest.cc
index 1634d56..7ce192c 100644
--- a/rtc_base/unique_id_generator_unittest.cc
+++ b/rtc_base/unique_id_generator_unittest.cc
@@ -29,6 +29,7 @@
using test_types = ::testing::Types<UniqueNumberGenerator<uint8_t>,
UniqueNumberGenerator<uint16_t>,
UniqueNumberGenerator<uint32_t>,
+ UniqueNumberGenerator<int>,
UniqueRandomIdGenerator,
UniqueStringGenerator>;
@@ -107,4 +108,43 @@
EXPECT_THAT(intersection, IsEmpty());
}
+TYPED_TEST(UniqueIdGeneratorTest, AddKnownIdOnNewIdReturnsTrue) {
+ typedef TypeParam Generator;
+
+ rtc::InitRandom(0);
+ Generator generator1;
+ const typename Generator::value_type id = generator1();
+
+ rtc::InitRandom(0);
+ Generator generator2;
+ EXPECT_TRUE(generator2.AddKnownId(id));
+}
+
+TYPED_TEST(UniqueIdGeneratorTest, AddKnownIdCalledAgainForSameIdReturnsFalse) {
+ typedef TypeParam Generator;
+
+ rtc::InitRandom(0);
+ Generator generator1;
+ const typename Generator::value_type id = generator1();
+
+ rtc::InitRandom(0);
+ Generator generator2;
+ ASSERT_TRUE(generator2.AddKnownId(id));
+ EXPECT_FALSE(generator2.AddKnownId(id));
+}
+
+TYPED_TEST(UniqueIdGeneratorTest,
+ AddKnownIdOnIdProvidedAsKnownToCtorReturnsFalse) {
+ typedef TypeParam Generator;
+
+ rtc::InitRandom(0);
+ Generator generator1;
+ const typename Generator::value_type id = generator1();
+ std::vector<typename Generator::value_type> known_values = {id};
+
+ rtc::InitRandom(0);
+ Generator generator2(known_values);
+ EXPECT_FALSE(generator2.AddKnownId(id));
+}
+
} // namespace rtc