Move src/ -> webrtc/
TBR=niklas.enbom@webrtc.org Review URL: https://webrtc-codereview.appspot.com/915006 git-svn-id: http://webrtc.googlecode.com/svn/trunk@2963 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
77
webrtc/test/fuzz/common/random_javascript.py
Normal file
77
webrtc/test/fuzz/common/random_javascript.py
Normal file
@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
||||
#
|
||||
# Use of this source code is governed by a BSD-style license
|
||||
# that can be found in the LICENSE file in the root of the source
|
||||
# tree. An additional intellectual property rights grant can be found
|
||||
# in the file PATENTS. All contributing project authors may
|
||||
# be found in the AUTHORS file in the root of the source tree.
|
||||
|
||||
import random
|
||||
import string
|
||||
|
||||
|
||||
def RandomIdentifier():
|
||||
"""Generates a random javascript identifier.
|
||||
|
||||
Returns:
|
||||
A javascript identifier, which must start with a letter, continued by
|
||||
letters and digits.
|
||||
"""
|
||||
length = random.randint(1, 25)
|
||||
return (random.choice(string.letters) +
|
||||
''.join(random.choice(string.letters + string.digits)
|
||||
for i in xrange(length)))
|
||||
|
||||
|
||||
def RandomJavascriptAttributes(num_attributes):
|
||||
"""Generates a random set of attributes for javascript object.
|
||||
|
||||
Use like this, for instance:
|
||||
my_object = 'var myObject = { %s };' % GenerateRandomJavascriptAttributes(5)
|
||||
|
||||
Returns:
|
||||
A list of attribute strings.
|
||||
"""
|
||||
return ['%s: %s' % (RandomIdentifier(), RandomJavascriptValue())
|
||||
for i in xrange(num_attributes)]
|
||||
|
||||
|
||||
def MakeJavascriptObject(attributes):
|
||||
"""Generates a javascript object from the provided list of attributes.
|
||||
|
||||
Args:
|
||||
attributes: A list of attribute strings.
|
||||
Returns:
|
||||
javascript code for the object.
|
||||
"""
|
||||
return '{ ' + ', '.join(attributes) + ' }'
|
||||
|
||||
|
||||
def RandomJavascriptFunction():
|
||||
"""Generates code for an empty javascript function with random arguments.
|
||||
|
||||
Returns:
|
||||
javascript code for the function.
|
||||
"""
|
||||
num_parameters = random.randint(0, 10)
|
||||
parameter_list = ', '.join(RandomIdentifier() for i in xrange(num_parameters))
|
||||
return 'function ' + RandomIdentifier() + '(' + parameter_list + ')' + '{ }'
|
||||
|
||||
|
||||
def RandomJavascriptValue():
|
||||
"""Generates code for a random javascript expression.
|
||||
|
||||
Returns:
|
||||
Code for a javascript expression.
|
||||
"""
|
||||
roll = random.random()
|
||||
if roll < 0.3:
|
||||
return '"' + RandomIdentifier() + '"'
|
||||
elif roll < 0.6:
|
||||
return str(random.randint(-10000000, 10000000))
|
||||
elif roll < 0.9:
|
||||
# Functions are first-class objects.
|
||||
return RandomJavascriptFunction()
|
||||
else:
|
||||
return 'true' if random.random() < 0.5 else 'false'
|
||||
Reference in New Issue
Block a user