diff options
author | Benjamin Barenblat <bbaren@google.com> | 2024-05-08 10:59:21 -0400 |
---|---|---|
committer | Benjamin Barenblat <bbaren@google.com> | 2024-05-08 10:59:21 -0400 |
commit | d8e2b896d5e3c1ebf2d6d0d37bd9e7a1b59e0b99 (patch) | |
tree | 33d0793fcdd3615f21e5b4f0e50ae20811a5bde5 /absl/algorithm/container_test.cc | |
parent | 57fc09f12cfb9642e7ebd4ca3c64d07154d2de9a (diff) | |
parent | d7aaad83b488fd62bd51c81ecf16cd938532cc0a (diff) | |
download | abseil-d8e2b896d5e3c1ebf2d6d0d37bd9e7a1b59e0b99.tar.gz abseil-d8e2b896d5e3c1ebf2d6d0d37bd9e7a1b59e0b99.tar.bz2 abseil-d8e2b896d5e3c1ebf2d6d0d37bd9e7a1b59e0b99.zip |
Merge new upstream LTS 20240116.2
Diffstat (limited to 'absl/algorithm/container_test.cc')
-rw-r--r-- | absl/algorithm/container_test.cc | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/absl/algorithm/container_test.cc b/absl/algorithm/container_test.cc index 0fbc7773..c01f5fc0 100644 --- a/absl/algorithm/container_test.cc +++ b/absl/algorithm/container_test.cc @@ -14,6 +14,7 @@ #include "absl/algorithm/container.h" +#include <algorithm> #include <functional> #include <initializer_list> #include <iterator> @@ -40,8 +41,10 @@ using ::testing::Each; using ::testing::ElementsAre; using ::testing::Gt; using ::testing::IsNull; +using ::testing::IsSubsetOf; using ::testing::Lt; using ::testing::Pointee; +using ::testing::SizeIs; using ::testing::Truly; using ::testing::UnorderedElementsAre; @@ -963,12 +966,29 @@ TEST(MutatingTest, RotateCopy) { EXPECT_THAT(actual, ElementsAre(3, 4, 1, 2, 5)); } +template <typename T> +T RandomlySeededPrng() { + std::random_device rdev; + std::seed_seq::result_type data[T::state_size]; + std::generate_n(data, T::state_size, std::ref(rdev)); + std::seed_seq prng_seed(data, data + T::state_size); + return T(prng_seed); +} + TEST(MutatingTest, Shuffle) { std::vector<int> actual = {1, 2, 3, 4, 5}; - absl::c_shuffle(actual, std::random_device()); + absl::c_shuffle(actual, RandomlySeededPrng<std::mt19937_64>()); EXPECT_THAT(actual, UnorderedElementsAre(1, 2, 3, 4, 5)); } +TEST(MutatingTest, Sample) { + std::vector<int> actual; + absl::c_sample(std::vector<int>{1, 2, 3, 4, 5}, std::back_inserter(actual), 3, + RandomlySeededPrng<std::mt19937_64>()); + EXPECT_THAT(actual, IsSubsetOf({1, 2, 3, 4, 5})); + EXPECT_THAT(actual, SizeIs(3)); +} + TEST(MutatingTest, PartialSort) { std::vector<int> sequence{5, 3, 42, 0}; absl::c_partial_sort(sequence, sequence.begin() + 2); |