| // Copyright 2017 PDFium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "core/fxcrt/fx_random.h" | |
| #include <array> | |
| #include <set> | |
| #include "testing/gtest/include/gtest/gtest.h" | |
| TEST(FX_Random, GenerateMT3600times) { | |
| // Prove this doesn't spin wait for a second each time. | |
| // Since our global seeds are sequential, they wont't collide once | |
| // seeded until 2^32 calls, and if the PNRG is any good, we won't | |
| // get the same sequence from different seeds, esp. with this few | |
| // iterations. | |
| std::set<std::array<uint32_t, 16>> seen; | |
| std::array<uint32_t, 16> current; | |
| for (int i = 0; i < 3600; ++i) { | |
| FX_Random_GenerateMT(current.data(), 16); | |
| EXPECT_TRUE(seen.insert(current).second); | |
| } | |
| } |