mirror of https://github.com/tc39/test262.git
Ported Sputnik changes over from the 'external' directory to 'test/suite/sputnik'. Still need to convert
the tests over to test262 format.
This commit is contained in:
parent
a7e6453c0e
commit
febe8b348b
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.1;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "abstract" token can not be used as identifier;
|
||||
* @description: Checking if execution of "abstract=1" fails;
|
||||
* @negative
|
||||
*/
|
||||
* @assertion: The "abstract" token can be used as identifier;
|
||||
* @description: Checking if execution of "abstract=1" succeeds;
|
||||
*/
|
||||
|
||||
abstract = 1;
|
||||
|
|
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.12;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "final" token can not be used as identifier;
|
||||
* @description: Checking if execution of "final=1" fails;
|
||||
* @negative
|
||||
*/
|
||||
* @assertion: The "final" token can be used as identifier;
|
||||
* @description: Checking if execution of "final=1" succeeds;
|
||||
*/
|
||||
|
||||
final = 1;
|
||||
|
|
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.13;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "float" token can not be used as identifier;
|
||||
* @description: Checking if execution of "float=1" fails;
|
||||
* @negative
|
||||
* @assertion: The "float" token can be used as identifier;
|
||||
* @description: Checking if execution of "float=1" succeeds;
|
||||
*/
|
||||
|
||||
float = 1;
|
||||
|
|
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.14;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "goto" token can not be used as identifier;
|
||||
* @description: Checking if execution of "goto=1" fails;
|
||||
* @negative
|
||||
*/
|
||||
* @assertion: The "goto" token can be used as identifier;
|
||||
* @description: Checking if execution of "goto=1" succeeds;
|
||||
*/
|
||||
|
||||
goto = 1;
|
||||
|
|
|
@ -4,9 +4,12 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.15;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "implements" token can not be used as identifier;
|
||||
* @description: Checking if execution of "implements=1" fails;
|
||||
* @assertion: The "implements" token can not be used as identifier in
|
||||
* strict code;
|
||||
* @description: Checking if execution of "implements=1" fails in
|
||||
* strict code;
|
||||
* @negative
|
||||
*/
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
implements = 1;
|
|
@ -0,0 +1,13 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S7.5.3_A1.15;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "implements" token can be used as identifier in
|
||||
* non-strict code;
|
||||
* @description: Checking if execution of "implements=1" succeeds in
|
||||
* non-strict code;
|
||||
*/
|
||||
|
||||
new Function('implements = 1');
|
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.17;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "int" token can not be used as identifier;
|
||||
* @description: Checking if execution of "int=1" fails;
|
||||
* @negative
|
||||
* @assertion: The "int" token can be used as identifier;
|
||||
* @description: Checking if execution of "int=1" succeeds;
|
||||
*/
|
||||
|
||||
int = 1;
|
||||
|
|
|
@ -4,9 +4,12 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.18;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "interface" token can not be used as identifier;
|
||||
* @description: Checking if execution of "interface = 1" fails;
|
||||
* @assertion: The "interface" token can not be used as identifier in
|
||||
* strict code;
|
||||
* @description: Checking if execution of "interface = 1" fails in
|
||||
* strict code;
|
||||
* @negative
|
||||
*/
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
interface = 1;
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S7.5.3_A1.18;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "interface" token can be used as identifier in
|
||||
* non-strict code;
|
||||
* @description: Checking if execution of "interface = 1" succeeds in
|
||||
* strict code;
|
||||
*/
|
||||
|
||||
new Function('interface = 1');
|
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.19;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "long" token can not be used as identifier;
|
||||
* @description: Checking if execution of "long=1" fails;
|
||||
* @negative
|
||||
*/
|
||||
* @assertion: The "long" token can be used as identifier;
|
||||
* @description: Checking if execution of "long=1" succeeds;
|
||||
*/
|
||||
|
||||
long = 1;
|
||||
|
|
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.2;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "boolean" token can not be used as identifier;
|
||||
* @description: Checking if execution of "boolean=1" fails;
|
||||
* @negative
|
||||
*/
|
||||
* @assertion: The "boolean" token can be used as identifier;
|
||||
* @description: Checking if execution of "boolean=1" succeeds;
|
||||
*/
|
||||
|
||||
boolean = 1;
|
||||
|
|
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.20;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "native" token can not be used as identifier;
|
||||
* @description: Checking if execution of "native=1" fails;
|
||||
* @negative
|
||||
*/
|
||||
* @assertion: The "native" token can be used as identifier;
|
||||
* @description: Checking if execution of "native=1" succeeds;
|
||||
*/
|
||||
|
||||
native = 1;
|
||||
|
|
|
@ -4,9 +4,11 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.21;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "package" token can not be used as identifier;
|
||||
* @description: Checking if execution of "package=1" fails;
|
||||
* @assertion: The "package" token can not be used as identifier in
|
||||
* strict code;
|
||||
* @description: Checking if execution of "package=1" fails in strict code;
|
||||
* @negative
|
||||
*/
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
package = 1;
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S7.5.3_A1.21;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "package" token can be used as identifier in
|
||||
* non-strict code;
|
||||
* @description: Checking if execution of "package=1" succeeds in
|
||||
* non-strict code;
|
||||
*/
|
||||
|
||||
new Function('package = 1');
|
|
@ -4,9 +4,11 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.22;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "private" token can not be used as identifier;
|
||||
* @description: Checking if execution of "private=1" fails;
|
||||
* @assertion: The "private" token can not be used as identifier in
|
||||
* strict code;
|
||||
* @description: Checking if execution of "private=1" fails in strict code;
|
||||
* @negative
|
||||
*/
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
private = 1;
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S7.5.3_A1.22;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "private" token can be used as identifier in
|
||||
* non-strict code;
|
||||
* @description: Checking if execution of "private=1" succeeds in
|
||||
* non-strict code;
|
||||
*/
|
||||
|
||||
new Function('private = 1');
|
|
@ -4,9 +4,12 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.23;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "protected" token can not be used as identifier;
|
||||
* @description: Checking if execution of "protected=1" fails;
|
||||
* @assertion: The "protected" token can not be used as identifier in
|
||||
* strict code;
|
||||
* @description: Checking if execution of "protected=1" fails in
|
||||
* strict code;
|
||||
* @negative
|
||||
*/
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
protected = 1;
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S7.5.3_A1.23;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "protected" token can be used as identifier in
|
||||
* non-strict code;
|
||||
* @description: Checking if execution of "protected=1" succeeds in
|
||||
* non-strict code;
|
||||
*/
|
||||
|
||||
new Function('protected = 1');
|
|
@ -4,9 +4,11 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.24;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "public" token can not be used as identifier;
|
||||
* @description: Checking if execution of "public=1" fails;
|
||||
* @assertion: The "public" token can not be used as identifier in
|
||||
* strict code;
|
||||
* @description: Checking if execution of "public=1" fails in strict code;
|
||||
* @negative
|
||||
*/
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
public = 1;
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S7.5.3_A1.24;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "public" token can be used as identifier in
|
||||
* non-strict code;
|
||||
* @description: Checking if execution of "public=1" succeeds in
|
||||
* non-strict code;
|
||||
*/
|
||||
|
||||
new Function('public = 1');
|
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.25;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "short" token can not be used as identifier;
|
||||
* @description: Checking if execution of "short=1" fails;
|
||||
* @negative
|
||||
*/
|
||||
* @assertion: The "short" token can be used as identifier;
|
||||
* @description: Checking if execution of "short=1" succeeds;
|
||||
*/
|
||||
|
||||
short = 1;
|
||||
|
|
|
@ -4,9 +4,11 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.26;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "static" token can not be used as identifier;
|
||||
* @description: Checking if execution of "static=1" fails;
|
||||
* @assertion: The "static" token can not be used as identifier in
|
||||
* strict code;
|
||||
* @description: Checking if execution of "static=1" fails in strict code;
|
||||
* @negative
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
static = 1;
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S7.5.3_A1.26;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "static" token can be used as identifier in
|
||||
* non-strict code;
|
||||
* @description: Checking if execution of "static=1" succeeds in
|
||||
* non-strict code;
|
||||
*/
|
||||
|
||||
new Function('static = 1');
|
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.28;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "synchronized" token can not be used as identifier;
|
||||
* @description: Checking if execution of "synchronized=1" fails;
|
||||
* @negative
|
||||
* @assertion: The "synchronized" token can be used as identifier;
|
||||
* @description: Checking if execution of "synchronized=1" succeeds;
|
||||
*/
|
||||
|
||||
synchronized = 1;
|
||||
|
|
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.29;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "throws" token can not be used as identifier;
|
||||
* @description: Checking if execution of "throws=1" fails;
|
||||
* @negative
|
||||
* @assertion: The "throws" token can be used as identifier;
|
||||
* @description: Checking if execution of "throws=1" succeeds;
|
||||
*/
|
||||
|
||||
throws = 1;
|
||||
|
|
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.3;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "byte" token can not be used as identifier;
|
||||
* @description: Checking if execution of "byte=1" fails;
|
||||
* @negative
|
||||
*/
|
||||
* @assertion: The "byte" token can be used as identifier;
|
||||
* @description: Checking if execution of "byte=1" succeeds;
|
||||
*/
|
||||
|
||||
byte = 1;
|
||||
|
|
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.30;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "transient" token can not be used as identifier;
|
||||
* @description: Checking if execution of "transient=1" fails;
|
||||
* @negative
|
||||
*/
|
||||
* @assertion: The "transient" token can be used as identifier;
|
||||
* @description: Checking if execution of "transient=1" succeeds;
|
||||
*/
|
||||
|
||||
transient = 1;
|
||||
|
|
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.31;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "volatile" token can not be used as identifier;
|
||||
* @description: Checking if execution of "volatile=1" fails;
|
||||
* @negative
|
||||
*/
|
||||
* @assertion: The "volatile" token can be used as identifier;
|
||||
* @description: Checking if execution of "volatile=1" succeeds;
|
||||
*/
|
||||
|
||||
volatile = 1;
|
||||
|
|
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.4;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "char" token can not be used as identifier;
|
||||
* @description: Checking if execution of "char=1" fails;
|
||||
* @negative
|
||||
*/
|
||||
* @assertion: The "char" token can be used as identifier;
|
||||
* @description: Checking if execution of "char=1" succeeds;
|
||||
*/
|
||||
|
||||
char = 1;
|
||||
|
|
|
@ -4,9 +4,8 @@
|
|||
/**
|
||||
* @name: S7.5.3_A1.8;
|
||||
* @section: 7.5.3;
|
||||
* @assertion: The "double" token can not be used as identifier;
|
||||
* @description: Checking if execution of "double=1" fails;
|
||||
* @negative
|
||||
*/
|
||||
* @assertion: The "double" token can be used as identifier;
|
||||
* @description: Checking if execution of "double=1" succeeds;
|
||||
*/
|
||||
|
||||
double = 1;
|
||||
|
|
|
@ -9,12 +9,7 @@
|
|||
*/
|
||||
|
||||
//CHECK#1
|
||||
|
||||
//Test262 Change
|
||||
//var regexp = /(?:)/\u0067;
|
||||
var regexp;
|
||||
eval('regexp = /(?:)/\\u0067;');
|
||||
|
||||
var regexp = /(?:)/\u0067;
|
||||
if (regexp.global !== true) {
|
||||
$ERROR('#1: var regexp = /(?:)/\\u0067; regexp.global === true. Actual: ' + (regexp.global));
|
||||
}
|
||||
|
|
|
@ -9,13 +9,7 @@
|
|||
*/
|
||||
|
||||
//CHECK#1
|
||||
|
||||
//Test262 Change
|
||||
//var regexp = /(?:)/\u0069;
|
||||
|
||||
var regexp;
|
||||
eval('regexp = /(?:)/\\u0069;');
|
||||
|
||||
var regexp = /(?:)/\u0069;
|
||||
if (regexp.ignoreCase !== true) {
|
||||
$ERROR('#1: var regexp = /(?:)/\\u0069; regexp.ignoreCase === true. Actual: ' + (regexp.ignoreCase));
|
||||
}
|
||||
|
|
|
@ -9,12 +9,7 @@
|
|||
*/
|
||||
|
||||
//CHECK#1
|
||||
|
||||
//Test262 Change
|
||||
//var regexp = /(?:)/\u006D;
|
||||
var regexp;
|
||||
eval('regexp = /(?:)/\\u006D;');
|
||||
|
||||
var regexp = /(?:)/\u006D;
|
||||
if (regexp.multiline !== true) {
|
||||
$ERROR('#1: var regexp = /(?:)/\\u006D; regexp.multiline === true. Actual: ' + (regexp.multiline));
|
||||
}
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
* @section: 12.10;
|
||||
* @assertion: No matter how control leaves the embedded 'Statement',
|
||||
* the scope chain is always restored to its former state;
|
||||
* @description: Declaring "with" statement within a function constructor, leading to completion by exception;
|
||||
* @description: Declaring "with" statement within a function
|
||||
* constructor, leading to completion by exception;
|
||||
* @strict_mode_negative
|
||||
*/
|
||||
|
||||
|
@ -18,15 +19,16 @@ var myObj = {
|
|||
p1: 'a',
|
||||
value: 'myObj_value',
|
||||
valueOf : function(){return 'obj_valueOf';}
|
||||
};
|
||||
|
||||
function __FACTORY(){
|
||||
with(myObj){
|
||||
var p1 = 'x1';
|
||||
throw value;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
function __FACTORY(){
|
||||
with(myObj){
|
||||
p1 = 'x1';
|
||||
throw value;
|
||||
}
|
||||
}
|
||||
var obj = new __FACTORY();
|
||||
} catch(e){
|
||||
result = p1;
|
||||
|
@ -34,7 +36,7 @@ try {
|
|||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//CHECK#1
|
||||
if(result !== 1){
|
||||
if (result !== 1) {
|
||||
$ERROR('#1: result === 1. Actual: result ==='+ result );
|
||||
}
|
||||
//
|
||||
|
@ -42,7 +44,7 @@ if(result !== 1){
|
|||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//CHECK#2
|
||||
if(p1 !== 1){
|
||||
if (p1 !== 1) {
|
||||
$ERROR('#2: p1 === 1. Actual: p1 ==='+ p1 );
|
||||
}
|
||||
//
|
||||
|
@ -50,7 +52,7 @@ if(p1 !== 1){
|
|||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//CHECK#3
|
||||
if(myObj.p1 !== "x1"){
|
||||
if (myObj.p1 !== "x1") {
|
||||
$ERROR('#3: myObj.p1 === "x1". Actual: myObj.p1 ==='+ myObj.p1 );
|
||||
}
|
||||
//
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
* @section: 12.14;
|
||||
* @assertion: Using "try" with "catch" or "finally" statement within/without a "with" statement;
|
||||
* @description: Using try/catch/finally in With and With in try/catch/finally;
|
||||
* @strict_mode_negative SyntaxError;
|
||||
*/
|
||||
|
||||
var myObj = {p1: 'a',
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
* @section: 12.14;
|
||||
* @assertion: Sanity test for "catch(Indetifier) statement";
|
||||
* @description: Checking if deleting an exception fails;
|
||||
* @strict_mode_negative SyntaxError;
|
||||
*/
|
||||
|
||||
// CHECK#1
|
||||
|
|
|
@ -4,10 +4,15 @@
|
|||
/**
|
||||
* @name: S12.1_A1;
|
||||
* @section: 12.1;
|
||||
* @assertion: The production Block { } can't contain function declaration;
|
||||
* @assertion: The production Block { } in strict code can't contain
|
||||
* function declaration;
|
||||
* @description: Trying to declare function at the Block statement;
|
||||
* @negative;
|
||||
* @negative SyntaxError;
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
if (!strict_mode) { throw new SyntaxError('unspecified case'); }
|
||||
|
||||
{
|
||||
function __func(){}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
//////////////////////////////////////////////////////////////////////////////
|
||||
//CHECK#1
|
||||
try {
|
||||
__evaluated = eval("if(1);");
|
||||
var __evaluated = eval("if(1);");
|
||||
if (__evaluated !== undefined) {
|
||||
$ERROR('#1: __evaluated === undefined. Actual: __evaluated ==='+ __evaluated );
|
||||
}
|
||||
|
|
|
@ -4,11 +4,15 @@
|
|||
/**
|
||||
* @name: S12.5_A9_T1;
|
||||
* @section: 12.5;
|
||||
* @assertion: Function declaration within an "if" statement is not allowed;
|
||||
* @assertion: Function declaration within an "if" statement in strict
|
||||
* code is not allowed;
|
||||
* @description: Declaring function within an "if" statement;
|
||||
* @negative;
|
||||
* @negative SyntaxError;
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
if (!strict_mode) { throw new SyntaxError('unspecified case'); }
|
||||
|
||||
if (true) {
|
||||
function __func(){};
|
||||
} else {
|
||||
|
|
|
@ -4,12 +4,15 @@
|
|||
/**
|
||||
* @name: S12.5_A9_T2;
|
||||
* @section: 12.5;
|
||||
* @assertion: Function declaration within an "if" statement is not allowed;
|
||||
* @description: Declaring function within and "if" that is declared within the function call;
|
||||
* @negative;
|
||||
* @assertion: Function declaration within an "if" statement in strict
|
||||
* code is not allowed;
|
||||
* @description: Declaring function within an "if" that is declared
|
||||
* within the strict function;
|
||||
* @negative SyntaxError;
|
||||
*/
|
||||
|
||||
(function(){
|
||||
"use strict";
|
||||
|
||||
if (true) {
|
||||
function __func(){};
|
||||
|
@ -17,4 +20,4 @@ if (true) {
|
|||
function __func(){};
|
||||
}
|
||||
|
||||
})();
|
||||
});
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
* @description: Evaluating various Expressions;
|
||||
*/
|
||||
|
||||
var __in__do;
|
||||
|
||||
do __in__do=1; while ( false );
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -4,11 +4,15 @@
|
|||
/**
|
||||
* @name: S12.6.1_A13_T1;
|
||||
* @section: 12.6.1, 13;
|
||||
* @assertion: FunctionDeclaration within a "do-while" Block is not allowed;
|
||||
* @assertion: FunctionDeclaration within a "do-while" Block in strict
|
||||
* code is not allowed;
|
||||
* @description: Declaring function within a "do-while" loop;
|
||||
* @negative;
|
||||
* @negative SyntaxError;
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
if (!strict_mode) { throw new SyntaxError('unspecified case'); }
|
||||
|
||||
do{
|
||||
function __func(){};
|
||||
} while(0);
|
||||
|
|
|
@ -4,15 +4,17 @@
|
|||
/**
|
||||
* @name: S12.6.1_A13_T2;
|
||||
* @section: 12.6.1, 13;
|
||||
* @assertion: FunctionDeclaration within a "do-while" Block is not allowed;
|
||||
* @description: Declaring a function within a "do-while" loop that is within a function call;
|
||||
* @negative;
|
||||
* @assertion: FunctionDeclaration within a "do-while" Block in strict
|
||||
* code is not allowed;
|
||||
* @description: Declaring a function within a "do-while" loop that is
|
||||
* within a strict function;
|
||||
* @negative SyntaxError;
|
||||
*/
|
||||
|
||||
(function(){
|
||||
|
||||
"use strict";
|
||||
do{
|
||||
function __func(){};
|
||||
}while(0);
|
||||
|
||||
})();
|
||||
});
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.10.6.2_A12;
|
||||
* @section: 15.10.6.2;
|
||||
* @assertion: regExp exec() acts like regExp.exec('undefined') (step 2);
|
||||
* @description: Checking RegExp.prototype.exec.length;
|
||||
*/
|
||||
|
||||
(/foo/).test('xfoox');
|
||||
var match = new RegExp('(.|\r|\n)*','').exec()[0];
|
||||
if (match === 'xfoox') {
|
||||
$FAIL('#1: regExp.exec() leaks match globally');
|
||||
}
|
||||
if (match !== 'undefined') {
|
||||
$FAIL('#2: regExp.exec() must coerce absent first arg to "undefined"');
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.12.2_A1;
|
||||
* @section: 15.12.2;
|
||||
* @assertion: JSON.parse must create a property with the given
|
||||
* property name;
|
||||
* @description: Tests that JSON.parse treats "__proto__" as a regular
|
||||
* property name;
|
||||
*/
|
||||
|
||||
var x = JSON.parse('{"__proto__":[]}');
|
||||
if (Object.getPrototypeOf(x) !== Object.prototype) {
|
||||
$FAIL('#1: JSON.parse confused by "__proto__"');
|
||||
}
|
||||
if (!Array.isArray(x.__proto__)) {
|
||||
$FAIL('#2: JSON.parse did not set "__proto__" as a regular property');
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.2_A12;
|
||||
* @section: 15.2.4.2;
|
||||
* @assertion: If the this value is undefined, return "[object Undefined]".
|
||||
*/
|
||||
|
||||
if (Object.prototype.toString.call(undefined) !== "[object Undefined]") {
|
||||
$ERROR('If the this value is undefined, return "[object Undefined]".');
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.2_A13;
|
||||
* @section: 15.2.4.2;
|
||||
* @assertion: If the this value is null, return "[object Null]".
|
||||
*/
|
||||
|
||||
if (Object.prototype.toString.call(null) !== "[object Null]") {
|
||||
$ERROR('If the this value is null, return "[object Null]".');
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.2_A14;
|
||||
* @section: 15.2.4.2;
|
||||
* @assertion: Let O be the result of calling ToObject passing the this
|
||||
* value as the argument.
|
||||
*/
|
||||
|
||||
if (Object.prototype.toString.call(33) !== "[object Number]") {
|
||||
$ERROR('Let O be the result of calling ToObject passing the this ' +
|
||||
'value as the argument.');
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.2_A15;
|
||||
* @section: 15.2.4.2;
|
||||
* @assertion: Let O be the result of calling ToObject passing the this
|
||||
* value as the argument.
|
||||
*/
|
||||
|
||||
if (Object.prototype.toString.call(true) !== "[object Boolean]") {
|
||||
$ERROR('Let O be the result of calling ToObject passing the this ' +
|
||||
'value as the argument.');
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.2_A16;
|
||||
* @section: 15.2.4.2;
|
||||
* @assertion: Let O be the result of calling ToObject passing the this
|
||||
* value as the argument.
|
||||
*/
|
||||
|
||||
if (Object.prototype.toString.call('foo') !== "[object String]") {
|
||||
$ERROR('Let O be the result of calling ToObject passing the this ' +
|
||||
'value as the argument.');
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.3_A12;
|
||||
* @section: 15.2.4.3;
|
||||
* @assertion: Let O be the result of calling ToObject passing the this
|
||||
* value as the argument.
|
||||
* @negative
|
||||
*/
|
||||
|
||||
Object.prototype.toLocaleString.call(undefined);
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.3_A13;
|
||||
* @section: 15.2.4.3;
|
||||
* @assertion: Let O be the result of calling ToObject passing the this
|
||||
* value as the argument.
|
||||
* @negative
|
||||
*/
|
||||
|
||||
Object.prototype.toLocaleString.call(null);
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.4_A12;
|
||||
* @section: 15.2.4.4;
|
||||
* @assertion: Let O be the result of calling ToObject passing the this
|
||||
* value as the argument.
|
||||
* @negative
|
||||
*/
|
||||
|
||||
Object.prototype.valueOf.call(undefined);
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.4_A13;
|
||||
* @section: 15.2.4.4;
|
||||
* @assertion: Let O be the result of calling ToObject passing the this
|
||||
* value as the argument.
|
||||
* @negative
|
||||
*/
|
||||
|
||||
Object.prototype.valueOf.call(null);
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.4_A14;
|
||||
* @section: 15.2.4.4;
|
||||
* @assertion: Let O be the result of calling ToObject passing the this
|
||||
* value as the argument.
|
||||
* @negative
|
||||
*/
|
||||
|
||||
(1,Object.prototype.valueOf)();
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.5_A12;
|
||||
* @section: 15.2.4.5;
|
||||
* @assertion: Let O be the result of calling ToObject passing the this
|
||||
* value as the argument.
|
||||
* @negative
|
||||
*/
|
||||
|
||||
Object.prototype.hasOwnProperty.call(undefined, 'foo');
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.5_A13;
|
||||
* @section: 15.2.4.5;
|
||||
* @assertion: Let O be the result of calling ToObject passing the this
|
||||
* value as the argument.
|
||||
* @negative
|
||||
*/
|
||||
|
||||
Object.prototype.hasOwnProperty.call(null, 'foo');
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.6_A12;
|
||||
* @section: 15.2.4.6;
|
||||
* @assertion: Let O be the result of calling ToObject passing the this
|
||||
* value as the argument.
|
||||
* @negative
|
||||
*/
|
||||
|
||||
Object.prototype.isPrototypeOf.call(undefined, {});
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.6_A13;
|
||||
* @section: 15.2.4.6;
|
||||
* @assertion: Let O be the result of calling ToObject passing the this
|
||||
* value as the argument.
|
||||
* @negative
|
||||
*/
|
||||
|
||||
Object.prototype.isPrototypeOf.call(null, {});
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.7_A12;
|
||||
* @section: 15.2.4.7;
|
||||
* @assertion: Let O be the result of calling ToObject passing the this
|
||||
* value as the argument.
|
||||
* @negative
|
||||
*/
|
||||
|
||||
Object.prototype.propertyIsEnumerable.call(undefined, 'foo');
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.2.4.7_A13;
|
||||
* @section: 15.2.4.7;
|
||||
* @assertion: Let O be the result of calling ToObject passing the this
|
||||
* value as the argument.
|
||||
* @negative
|
||||
*/
|
||||
|
||||
Object.prototype.propertyIsEnumerable.call(null, 'foo');
|
|
@ -13,7 +13,7 @@ if (!(Function.prototype.toString.hasOwnProperty('length'))) {
|
|||
$FAIL('#1: the Function.prototype.toString has length property.');
|
||||
}
|
||||
|
||||
obj = Function.prototype.toString.length;
|
||||
var obj = Function.prototype.toString.length;
|
||||
|
||||
Function.prototype.toString.length = function(){return "shifted";};
|
||||
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.2_A12;
|
||||
* @section: 15.3.4.2;
|
||||
* @assertion: The Function.prototype.toString function is not generic;
|
||||
* it throws a TypeError exception if its this value is not
|
||||
* a Function object.
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
Function.prototype.toString.call(undefined);
|
|
@ -0,0 +1,13 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.2_A13;
|
||||
* @section: 15.3.4.2;
|
||||
* @assertion: The toString function is not generic; it throws a
|
||||
* TypeError exception if its this value is not a Function
|
||||
* object.
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
Function.prototype.toString.call(null);
|
|
@ -0,0 +1,13 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.2_A14;
|
||||
* @section: 15.3.4.2;
|
||||
* @assertion: The toString function is not generic; it throws a
|
||||
* TypeError exception if its this value is not a Function
|
||||
* object.
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
Function.prototype.toString.call({});
|
|
@ -0,0 +1,16 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.2_A15;
|
||||
* @section: 15.3.4.2;
|
||||
* @assertion: The toString function is not generic; it throws a
|
||||
* TypeError exception if its this value is not a Function
|
||||
* object.
|
||||
* @description: Whether or not they are callable, RegExp objects are
|
||||
* not Function objects, so toString should throw a
|
||||
* TypeError.
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
Function.prototype.toString.call(/x/);
|
|
@ -0,0 +1,18 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.2_A16;
|
||||
* @section: 15.3.4.2;
|
||||
* @assertion: The toString function is not generic; it throws a
|
||||
* TypeError exception if its this value is not a Function
|
||||
* object.
|
||||
* @description: The String constructor, given an object, should invoke
|
||||
* that object's toString method as a method, i.e., with
|
||||
* its this value bound to that object.
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
var obj = {toString: Function.prototype.toString};
|
||||
|
||||
String(obj);
|
|
@ -8,9 +8,9 @@
|
|||
* @description: For testing use Function.prototype.toString() function;
|
||||
*/
|
||||
|
||||
f = function(x) {
|
||||
var f = function(x) {
|
||||
return x*x;
|
||||
}
|
||||
};
|
||||
|
||||
//CHECK#1
|
||||
if (eval(f.toString())(10) !== f(10)) {
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.3_A13;
|
||||
* @section: 15.3.4.3;
|
||||
* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
Function.prototype.apply.call(undefined, {}, []);
|
|
@ -0,0 +1,11 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.3_A14;
|
||||
* @section: 15.3.4.3;
|
||||
* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
Function.prototype.apply.call(null, {}, []);
|
|
@ -0,0 +1,11 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.3_A15;
|
||||
* @section: 15.3.4.3;
|
||||
* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
Function.prototype.apply.call({}, {}, []);
|
|
@ -0,0 +1,27 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.3_A16;
|
||||
* @section: 15.3.4.3;
|
||||
* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
* @description: A RegExp is not a function, but it may be
|
||||
* callable. Iff it is, it's typeof should be 'function',
|
||||
* in which case apply should accept it as a valid this
|
||||
* value.
|
||||
*/
|
||||
|
||||
var re = (/x/);
|
||||
if (typeof re === 'function') {
|
||||
Function.prototype.apply.call(re, undefined, ['x']);
|
||||
} else {
|
||||
try {
|
||||
Function.prototype.bind.call(re, undefined);
|
||||
$FAIL('#1: If IsCallable(func) is false, ' +
|
||||
'then (bind should) throw a TypeError exception');
|
||||
} catch (e) {
|
||||
if (!(e instanceof TypeError)) {
|
||||
$ERROR('#1: TypeError expected. Actual: ' + e);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.4_A13;
|
||||
* @section: 15.3.4.4;
|
||||
* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
Function.prototype.call.call(undefined, {});
|
|
@ -0,0 +1,11 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.4_A14;
|
||||
* @section: 15.3.4.4;
|
||||
* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
Function.prototype.call.call(null, {});
|
|
@ -0,0 +1,11 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.4_A15;
|
||||
* @section: 15.3.4.4;
|
||||
* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
Function.prototype.call.call({}, {});
|
|
@ -0,0 +1,27 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.4_A16;
|
||||
* @section: 15.3.4.4;
|
||||
* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
* @description: A RegExp is not a function, but it may be
|
||||
* callable. Iff it is, it's typeof should be 'function',
|
||||
* in which case call should accept it as a valid this
|
||||
* value.
|
||||
*/
|
||||
|
||||
var re = (/x/);
|
||||
if (typeof re === 'function') {
|
||||
Function.prototype.call.call(re, undefined, 'x');
|
||||
} else {
|
||||
try {
|
||||
Function.prototype.bind.call(re, undefined);
|
||||
$FAIL('#1: If IsCallable(func) is false, ' +
|
||||
'then (bind should) throw a TypeError exception');
|
||||
} catch (e) {
|
||||
if (!(e instanceof TypeError)) {
|
||||
$ERROR('#1: TypeError expected. Actual: ' + e);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.5_A1;
|
||||
* @section: 15.3.4.5;
|
||||
* @assertion: "caller" of bound function is poisoned (step 20);
|
||||
* @description A bound function should fail to find its "caller";
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
function foo() { return bar.caller; }
|
||||
var bar = foo.bind({});
|
||||
function baz() { return bar(); }
|
||||
baz();
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.5_A13;
|
||||
* @section: 15.3.4.5;
|
||||
* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
Function.prototype.bind.call(undefined, {});
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.5_A14;
|
||||
* @section: 15.3.4.5;
|
||||
* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
Function.prototype.bind.call(null, {});
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.5_A15;
|
||||
* @section: 15.3.4.5;
|
||||
* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
Function.prototype.bind.call({}, {});
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.5_A16;
|
||||
* @section: 15.3.4.5;
|
||||
* @assertion: If IsCallable(func) is false, then throw a TypeError exception.
|
||||
* @description: A RegExp is not a function, but it may be
|
||||
* callable. Iff it is, it's typeof should be 'function',
|
||||
* in which case bind should accept it as a valid this
|
||||
* value.
|
||||
*/
|
||||
|
||||
var re = (/x/);
|
||||
if (typeof re === 'function') {
|
||||
Function.prototype.bind.call(re, undefined);
|
||||
} else {
|
||||
try {
|
||||
Function.prototype.bind.call(re, undefined);
|
||||
$FAIL('#1: If IsCallable(func) is false, ' +
|
||||
'then (bind should) throw a TypeError exception');
|
||||
} catch (e) {
|
||||
if (!(e instanceof TypeError)) {
|
||||
$ERROR('#1: TypeError expected. Actual: ' + e);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.3.4.5_A1;
|
||||
* @section: 15.3.4.5;
|
||||
* @assertion: "arguments" of bound function is poisoned (step 21);
|
||||
* @description a bound function should fail to find the bound function
|
||||
* "arguments";
|
||||
* @negative TypeError;
|
||||
*/
|
||||
|
||||
function foo() { return bar.arguments; }
|
||||
var bar = foo.bind({});
|
||||
function baz() { return bar(); }
|
||||
baz();
|
|
@ -4,14 +4,12 @@
|
|||
/**
|
||||
* @name: S15.3.4_A1;
|
||||
* @section: 15.3.4;
|
||||
* @assertion: The Function prototype object is itself a Function object (its [[Class]] is "Function");
|
||||
* @description: first we delete Function.prototype.toString cause it overrides Object prototype toString.
|
||||
* Object.prototype.toString returns [object+[[class]]+];
|
||||
* @assertion: The Function prototype object is itself a Function
|
||||
* object (its [[Class]] is "Function");
|
||||
* @description: Object.prototype.toString returns [object+[[Class]]+];
|
||||
*/
|
||||
|
||||
delete Function.prototype.toString;
|
||||
|
||||
//CHECK#1
|
||||
if (Function.prototype.toString() !== "[object "+"Function"+"]") {
|
||||
$ERROR('#1: The Function prototype object is itself a Function object (its [[Class]] is "Function")');
|
||||
if (Object.prototype.toString.call(Function.prototype) !== "[object Function]") {
|
||||
$ERROR('#2: The Function prototype object is itself a Function ' +
|
||||
'object (its [[Class]] is "Function") (15.3.4)');
|
||||
}
|
||||
|
|
|
@ -3,19 +3,15 @@
|
|||
|
||||
/**
|
||||
* @name: S15.3.4_A3_T1;
|
||||
* @section: 15.3.4, 15.3.2.1;
|
||||
* @assertion: The value of the internal [[Prototype]] property of the Function prototype object is the Object prototype object (15.3.2.1);
|
||||
* @section: 15.3.4;
|
||||
* @assertion: The value of the internal [[Prototype]] property of the
|
||||
* Function prototype object is the Object prototype object
|
||||
* (15.3.4);
|
||||
* @description: Checking prototype of Function.prototype;
|
||||
*/
|
||||
|
||||
//CHECK#1
|
||||
if (!(Object.prototype.isPrototypeOf(Function.prototype))) {
|
||||
$ERROR('#1: The value of the internal [[Prototype]] property of the Function prototype object is the Object prototype object (15.3.2.1)');
|
||||
}
|
||||
|
||||
delete Function.prototype.toString;
|
||||
|
||||
//CHECK#2
|
||||
if (Function.prototype.toString() !== "[object "+"Function"+"]") {
|
||||
$ERROR('#2: The value of the internal [[Prototype]] property of the Function prototype object is the Object prototype object (15.3.2.1)');
|
||||
if (Object.getPrototypeOf(Function.prototype) !== Object.prototype) {
|
||||
$ERROR('#1: The value of the internal [[Prototype]] property of ' +
|
||||
'the Function prototype object is the Object prototype ' +
|
||||
'object (15.3.4)');
|
||||
}
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
/**
|
||||
* @name: S15.3.5.1_A1_T1;
|
||||
* @section: 15.3.5.1;
|
||||
* @assertion: The value of the length property is usually an integer that indicates the 'typical' number of arguments expected by the function;
|
||||
* @assertion: The value of the length property is usually an integer
|
||||
* that indicates the 'typical' number of arguments
|
||||
* expected by the function;
|
||||
* @description: Checking length property of Function("arg1,arg2,arg3", null);
|
||||
*/
|
||||
|
||||
|
|
|
@ -4,17 +4,12 @@
|
|||
/**
|
||||
* @name: S15.3.5_A1_T1;
|
||||
* @section: 15.3.5;
|
||||
* @assertion: The value of the [[Class]] property is "Function" ;
|
||||
* @description: We delete Function.prototype.toString method to access Object.prototype.toString method.
|
||||
* For testing use variable f = new Function;
|
||||
* @assertion: The value of the [[Class]] property is "Function";
|
||||
* @description: For testing use variable f = new Function;
|
||||
*/
|
||||
|
||||
f = new Function;
|
||||
var f = new Function;
|
||||
|
||||
delete Function.prototype.toString;
|
||||
|
||||
//CHECK#1
|
||||
if (f.toString() !== "[object "+"Function"+"]") {
|
||||
if (Object.prototype.toString.call(f) !== "[object Function]") {
|
||||
$ERROR('#1: The value of the [[Class]] property is "Function"');
|
||||
}
|
||||
|
||||
|
|
|
@ -5,16 +5,12 @@
|
|||
* @name: S15.3.5_A1_T2;
|
||||
* @section: 15.3.5;
|
||||
* @assertion: The value of the [[Class]] property is "Function" ;
|
||||
* @description: We delete Function.prototype.toString method to access Object.prototype.toString method
|
||||
* For testing use variable f = Function();
|
||||
* @description: For testing use variable f = Function();
|
||||
*/
|
||||
|
||||
f = Function();
|
||||
var f = Function();
|
||||
|
||||
delete Function.prototype.toString;
|
||||
|
||||
//CHECK#1
|
||||
if (f.toString() !== "[object "+"Function"+"]") {
|
||||
if (Object.prototype.toString.call(f) !== "[object Function]") {
|
||||
$ERROR('#1: The value of the [[Class]] property is "Function"');
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.4.4.11_A8;
|
||||
* @section: 15.4.4.11;
|
||||
* @assertion: Call the comparefn passing undefined as the this value
|
||||
* (step 13b);
|
||||
* @description: comparefn tests that its this value is undefined;
|
||||
*/
|
||||
|
||||
var global = this;
|
||||
[2,3].sort(function(x,y) {
|
||||
"use strict";
|
||||
|
||||
if (this === global) {
|
||||
$FAIL('#1: Sort leaks global');
|
||||
}
|
||||
if (this !== undefined) {
|
||||
$FAIL('#2: Sort comparefn should be called with this===undefined. ' +
|
||||
'Actual: ' + this);
|
||||
}
|
||||
return x - y;
|
||||
});
|
|
@ -0,0 +1,11 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.4.4.18_A1;
|
||||
* @section: 15.4.4.18;
|
||||
* @assertion: array.forEach can be frozen while in progress
|
||||
* @description: Freezes array.forEach during a forEach to see if it works
|
||||
*/
|
||||
|
||||
['z'].forEach(function(){ Object.freeze(Array.prototype.forEach); });
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.4.4.18_A2;
|
||||
* @section: 15.4.4.18;
|
||||
* @assertion: array.forEach can be frozen while in progress
|
||||
* @description: Freezes array.forEach during a forEach to see if it works
|
||||
*/
|
||||
|
||||
function foo() {
|
||||
['z'].forEach(function(){ Object.freeze(Array.prototype.forEach); });
|
||||
}
|
||||
foo();
|
|
@ -3,15 +3,13 @@
|
|||
|
||||
/**
|
||||
* @name: S15.4.4_A1.1_T2;
|
||||
* @section: 15.4.4, 11.4.1;
|
||||
* @assertion: The value of the internal [[Prototype]] property of
|
||||
* the Array prototype object is the Object prototype object;
|
||||
* @description: delete Array.prototype.toString;
|
||||
* @strict_mode_negative
|
||||
* @section: 15.4.4;
|
||||
* @assertion:The Array prototype object is itself an array; its
|
||||
* [[Class]] is "Array",
|
||||
*/
|
||||
|
||||
//CHECK#1
|
||||
delete Array.prototype.toString;
|
||||
if (Array.prototype.toString() !== "[object " + "Array" + "]") {
|
||||
$ERROR('#1: delete Array.prototype.toString; var Array.prototype = Object(); Array.prototype.toString() === "[object " + "Array" + "]". Actual: ' + (Array.prototype.toString()));
|
||||
if (Object.prototype.toString.call(Array.prototype) !== "[object Array]") {
|
||||
$ERROR('The Array prototype object is itself an array; its' +
|
||||
'[[Class]] is "Array".');
|
||||
}
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
// Copyright 2011 the Sputnik authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/**
|
||||
* @name: S15.5.4.11_A12;
|
||||
* @section: 15.5.4.11;
|
||||
* @assertion: Call replaceValue passing undefined as the this value;
|
||||
* @description: replaceValue tests that its this value is undefined;
|
||||
*/
|
||||
|
||||
var global = this;
|
||||
'x'.replace(/x/, function() {
|
||||
"use strict";
|
||||
|
||||
if (this === global) {
|
||||
$FAIL('#1: String replace leaks global');
|
||||
}
|
||||
if (this !== undefined) {
|
||||
$FAIL('#2: replaceValue should be called with this===undefined. ' +
|
||||
'Actual: ' + this);
|
||||
}
|
||||
return 'y';
|
||||
});
|
|
@ -10,10 +10,7 @@
|
|||
|
||||
var __instance = new Object(true);
|
||||
|
||||
//Test262 Change
|
||||
//var __instance.lastIndexOf = String.prototype.lastIndexOf;
|
||||
__instance.lastIndexOf = String.prototype.lastIndexOf;
|
||||
|
||||
var __instance.lastIndexOf = String.prototype.lastIndexOf;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//CHECK#1
|
||||
|
|
Loading…
Reference in New Issue