blob: 9285930927ae5079f9f82533c5fef1fb78724833 [file] [log] [blame]
#!/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'