1 #include <gtest/gtest.h> 2 #include <stdlib.h> 3 using namespace testing::ext; 4 5 constexpr int CANCEL_NUM = 1000; 6 constexpr int AVER_NUM = 500; 7 constexpr double EXPECT_NUM = 50.0; 8 constexpr int BUF_SIZE = 100; 9 10 class StdlibArc4randomTest : public testing::Test { SetUp()11 void SetUp() override {} TearDown()12 void TearDown() override {} 13 }; 14 15 /** 16 * @tc.name: arc4random_001 17 * @tc.desc: Verify the randomness of this arc4random. 18 * @tc.type: FUNC 19 * */ 20 HWTEST_F(StdlibArc4randomTest, arc4random_001, TestSize.Level1) 21 { 22 int num, sum = 0; 23 for (int i = 0; i < CANCEL_NUM; i++) { 24 num = arc4random() % CANCEL_NUM; 25 EXPECT_GE(CANCEL_NUM, num); 26 sum += num; 27 } 28 double dev = static_cast<double>(sum) / CANCEL_NUM; 29 EXPECT_NEAR(dev, AVER_NUM, EXPECT_NUM); 30 } 31 32 /** 33 * @tc.name: arc4random_uniform_001 34 * @tc.desc: Verify the randomness of this arc4random_uniform. 35 * @tc.type: FUNC 36 * */ 37 HWTEST_F(StdlibArc4randomTest, arc4random_uniform_001, TestSize.Level1) 38 { 39 int num, sum = 0; 40 for (int i = 0; i < CANCEL_NUM; i++) { 41 num = arc4random_uniform(CANCEL_NUM); 42 EXPECT_GE(CANCEL_NUM, num); 43 sum += num; 44 } 45 double dev = static_cast<double>(sum) / CANCEL_NUM; 46 EXPECT_NEAR(dev, AVER_NUM, EXPECT_NUM); 47 } 48 49 /** 50 * @tc.name: arc4random_buf_001 51 * @tc.desc: Verify the randomness of this arc4random_buf. 52 * @tc.type: FUNC 53 * */ 54 HWTEST_F(StdlibArc4randomTest, arc4random_buf_001, TestSize.Level1) 55 { 56 uint8_t buffer[BUF_SIZE]; 57 uint8_t buffer2[BUF_SIZE]; 58 arc4random_buf(buffer, BUF_SIZE); 59 arc4random_buf(buffer2, BUF_SIZE); 60 bool isRandom = false; 61 for (int i = 0; i < BUF_SIZE; ++i) { 62 if (buffer[i] != buffer2[i]) { 63 isRandom = true; 64 break; 65 } 66 } 67 EXPECT_TRUE(isRandom); 68 }