Get the full set of PRNG functions in <stdlib.h>

Bug: https://code.google.com/p/android/issues/detail?id=58888
Change-Id: I435250bdae302e8bd7e29977d0fde7b9afbfca5e
This commit is contained in:
Elliott Hughes
2014-06-12 11:48:04 -07:00
parent d242aff47d
commit a0beeeabbc
6 changed files with 669 additions and 26 deletions

View File

@@ -35,27 +35,34 @@ TEST(stdlib, drand48) {
EXPECT_DOUBLE_EQ(0.061637783047395089, drand48());
}
TEST(stdlib, lrand48_random_rand) {
TEST(stdlib, lrand48) {
srand48(0x01020304);
EXPECT_EQ(1409163720, lrand48());
EXPECT_EQ(397769746, lrand48());
EXPECT_EQ(902267124, lrand48());
EXPECT_EQ(132366131, lrand48());
}
#if defined(__BIONIC__)
// On bionic, random(3) is equivalent to lrand48...
TEST(stdlib, random) {
srandom(0x01020304);
EXPECT_EQ(1409163720, random());
EXPECT_EQ(397769746, random());
EXPECT_EQ(902267124, random());
EXPECT_EQ(132366131, random());
EXPECT_EQ(55436735, random());
EXPECT_EQ(1399865117, random());
EXPECT_EQ(2032643283, random());
EXPECT_EQ(571329216, random());
}
// ...and rand(3) is the bottom 32 bits.
TEST(stdlib, rand) {
srand(0x01020304);
EXPECT_EQ(static_cast<int>(1409163720), rand());
EXPECT_EQ(static_cast<int>(397769746), rand());
EXPECT_EQ(static_cast<int>(902267124), rand());
EXPECT_EQ(static_cast<int>(132366131), rand());
#if defined(__BIONIC__)
EXPECT_EQ(1675538669, rand());
EXPECT_EQ(1678228258, rand());
EXPECT_EQ(1352350131, rand());
EXPECT_EQ(824068976, rand());
#else
EXPECT_EQ(55436735, rand());
EXPECT_EQ(1399865117, rand());
EXPECT_EQ(2032643283, rand());
EXPECT_EQ(571329216, rand());
#endif
}