147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org/* 247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * Copyright 2004 The WebRTC Project Authors. All rights reserved. 347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * 447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * Use of this source code is governed by a BSD-style license 547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * that can be found in the LICENSE file in the root of the source 647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * tree. An additional intellectual property rights grant can be found 747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * in the file PATENTS. All contributing project authors may 847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org * be found in the AUTHORS file in the root of the source tree. 947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org */ 1047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include <string> 1247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "webrtc/base/gunit.h" 1447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "webrtc/base/helpers.h" 1547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org#include "webrtc/base/ssladapter.h" 1647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgnamespace rtc { 1847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 1947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgclass RandomTest : public testing::Test { 2047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org public: 2147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org static void SetUpTestCase() { 2247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org rtc::InitializeSSL(); 2347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org } 2447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 2547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org static void TearDownTestCase() { 2647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org rtc::CleanupSSL(); 2747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org } 2847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org}; 2947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 3047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST_F(RandomTest, TestCreateRandomId) { 3147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org CreateRandomId(); 3247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 3347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 3447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST_F(RandomTest, TestCreateRandomDouble) { 3547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org for (int i = 0; i < 100; ++i) { 3647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org double r = CreateRandomDouble(); 3747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_GE(r, 0.0); 3847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_LT(r, 1.0); 3947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org } 4047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 4147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 4247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST_F(RandomTest, TestCreateNonZeroRandomId) { 4347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_NE(0U, CreateRandomNonZeroId()); 4447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 4547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 4647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST_F(RandomTest, TestCreateRandomString) { 4747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org std::string random = CreateRandomString(256); 4847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ(256U, random.size()); 4947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org std::string random2; 5047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_TRUE(CreateRandomString(256, &random2)); 5147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_NE(random, random2); 5247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ(256U, random2.size()); 5347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 5447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 5547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.orgTEST_F(RandomTest, TestCreateRandomForTest) { 5647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org // Make sure we get the output we expect. 5747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org SetRandomTestMode(true); 5847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ(2154761789U, CreateRandomId()); 5947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ("h0ISP4S5SJKH/9EY", CreateRandomString(16)); 6047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 6147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org // Reset and make sure we get the same output. 6247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org SetRandomTestMode(true); 6347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ(2154761789U, CreateRandomId()); 6447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ("h0ISP4S5SJKH/9EY", CreateRandomString(16)); 6547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 6647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org // Test different character sets. 6747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org SetRandomTestMode(true); 6847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org std::string str; 6947be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_TRUE(CreateRandomString(16, "a", &str)); 7047be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ("aaaaaaaaaaaaaaaa", str); 7147be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_TRUE(CreateRandomString(16, "abc", &str)); 7247be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org EXPECT_EQ("acbccaaaabbaacbb", str); 7347be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 7447be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org // Turn off test mode for other tests. 7547be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org SetRandomTestMode(false); 7647be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} 7747be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org 7847be73b8629244d6bb63a28198f97f040ce53d21henrike@webrtc.org} // namespace rtc 79