extend test/ufuzz.js
- property access - array literal - object literal
This commit is contained in:
parent
b7f6b73f4e
commit
dfa8ec2fa4
|
|
@ -474,7 +474,7 @@ function createExpression(recurmax, noComma, stmtDepth, canThrow) {
|
||||||
return _createExpression(recurmax, noComma, stmtDepth, canThrow);
|
return _createExpression(recurmax, noComma, stmtDepth, canThrow);
|
||||||
}
|
}
|
||||||
function _createExpression(recurmax, noComma, stmtDepth, canThrow) {
|
function _createExpression(recurmax, noComma, stmtDepth, canThrow) {
|
||||||
switch (rng(15)) {
|
switch (rng(20)) {
|
||||||
case 0:
|
case 0:
|
||||||
return createUnaryOp() + (rng(2) === 1 ? 'a' : 'b');
|
return createUnaryOp() + (rng(2) === 1 ? 'a' : 'b');
|
||||||
case 1:
|
case 1:
|
||||||
|
|
@ -552,9 +552,67 @@ function _createExpression(recurmax, noComma, stmtDepth, canThrow) {
|
||||||
return " ((" + createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) + ") || a || 3).toString() ";
|
return " ((" + createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) + ") || a || 3).toString() ";
|
||||||
case 14:
|
case 14:
|
||||||
return " /[abc4]/.test(((" + createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) + ") || b || 5).toString()) ";
|
return " /[abc4]/.test(((" + createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) + ") || b || 5).toString()) ";
|
||||||
|
case 15:
|
||||||
|
return " ((" + createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) +
|
||||||
|
") || " + rng(10) + ").toString()[" +
|
||||||
|
createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) + "] ";
|
||||||
|
case 16:
|
||||||
|
return createArrayLiteral(recurmax, COMMA_OK, stmtDepth, canThrow);
|
||||||
|
case 17:
|
||||||
|
return createObjectLiteral(recurmax, COMMA_OK, stmtDepth, canThrow);
|
||||||
|
case 18:
|
||||||
|
return '(' + createArrayLiteral(recurmax, COMMA_OK, stmtDepth, canThrow) + '[' +
|
||||||
|
createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) + "]) ";
|
||||||
|
case 19:
|
||||||
|
return '(' + createObjectLiteral(recurmax, COMMA_OK, stmtDepth, canThrow) + '[' +
|
||||||
|
createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) + "]) ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function createArrayLiteral(recurmax, noComma, stmtDepth, canThrow) {
|
||||||
|
var arr = "[";
|
||||||
|
for (var i = 0, N = rng(4); i <= N; ++i) {
|
||||||
|
// in rare cases produce an array hole element
|
||||||
|
var element = rng(20) ? createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) : "";
|
||||||
|
arr += element + ", ";
|
||||||
|
}
|
||||||
|
return arr + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
var KEYS = [
|
||||||
|
"length",
|
||||||
|
"foo",
|
||||||
|
"bar",
|
||||||
|
"a",
|
||||||
|
"b",
|
||||||
|
"c",
|
||||||
|
"x",
|
||||||
|
"''",
|
||||||
|
"' '",
|
||||||
|
"'-2'",
|
||||||
|
"'-1'",
|
||||||
|
"0",
|
||||||
|
"1",
|
||||||
|
"2.5",
|
||||||
|
"3",
|
||||||
|
"4",
|
||||||
|
"undefined",
|
||||||
|
"null",
|
||||||
|
"NaN",
|
||||||
|
"Infinity",
|
||||||
|
"in",
|
||||||
|
"var",
|
||||||
|
];
|
||||||
|
|
||||||
|
function createObjectLiteral(recurmax, noComma, stmtDepth, canThrow) {
|
||||||
|
var obj = "({";
|
||||||
|
for (var i = 0, N = rng(3); i <= N; ++i) {
|
||||||
|
var key = KEYS[rng(KEYS.length)];
|
||||||
|
obj += key + ":(" + createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) + "), ";
|
||||||
|
}
|
||||||
|
return obj + "})";
|
||||||
|
}
|
||||||
|
|
||||||
function createNestedBinaryExpr(recurmax, noComma) {
|
function createNestedBinaryExpr(recurmax, noComma) {
|
||||||
recurmax = 3; // note that this generates 2^recurmax expression parts... make sure to cap it
|
recurmax = 3; // note that this generates 2^recurmax expression parts... make sure to cap it
|
||||||
return _createSimpleBinaryExpr(recurmax, noComma);
|
return _createSimpleBinaryExpr(recurmax, noComma);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user