diff --git a/js/tests/ecma_2/Exceptions/boolean-001.js b/js/tests/ecma_2/Exceptions/boolean-001.js new file mode 100644 index 000000000000..1645ad456c42 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/boolean-001.js @@ -0,0 +1,43 @@ +/** + File Name: boolean-001.js + Description: Corresponds to ecma/Boolean/15.6.4.2-4-n.js + + The toString function is not generic; it generates + a runtime error if its this value is not a Boolean + object. Therefore it cannot be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: june 27, 1997 +*/ + var SECTION = "boolean-001.js"; + var VERSION = "JS1_4"; + var TITLE = "Boolean.prototype.toString()"; + startTest(); + writeHeaderToLog( SECTION +" "+ TITLE ); + + var tc = 0; + var testcases = new Array(); + + var exception = "No exception thrown"; + var result = "Failed"; + + var TO_STRING = Boolean.prototype.toString; + + try { + var s = new String("Not a Boolean"); + s.toString = TO_STRING; + s.toString(); + } catch ( e ) { + result = "Passed!"; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "Assigning Boolean.prototype.toString to a String object "+ + "(threw " +exception +")", + "Passed!", + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/boolean-002.js b/js/tests/ecma_2/Exceptions/boolean-002.js new file mode 100644 index 000000000000..be31b99dea46 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/boolean-002.js @@ -0,0 +1,47 @@ +/** + File Name: boolean-001.js + Description: Corresponds to ecma/Boolean/15.6.4.3-4-n.js + + 15.6.4.3 Boolean.prototype.valueOf() + Returns this boolean value. + + The valueOf function is not generic; it generates + a runtime error if its this value is not a Boolean + object. Therefore it cannot be transferred to other + kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 09 september 1998 +*/ + var SECTION = "boolean-002.js"; + var VERSION = "JS1_4"; + var TITLE = "Boolean.prototype.valueOf()"; + startTest(); + writeHeaderToLog( SECTION +" "+ TITLE ); + + var tc = 0; + var testcases = new Array(); + + var exception = "No exception thrown"; + var result = "Failed"; + + var VALUE_OF = Boolean.prototype.valueOf; + + try { + var s = new String("Not a Boolean"); + s.valueOf = VALUE_0F; + s.valueOf(); + } catch ( e ) { + result = "Passed!"; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "Assigning Boolean.prototype.valueOf to a String object "+ + "(threw " +exception +")", + "Passed!", + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/date-001.js b/js/tests/ecma_2/Exceptions/date-001.js new file mode 100644 index 000000000000..60ef3a4af912 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/date-001.js @@ -0,0 +1,57 @@ +/** + File Name: date-001.js + Corresponds To: 15.9.5.2-2.js + ECMA Section: 15.9.5.2 Date.prototype.toString + Description: + This function returns a string value. The contents of the string are + implementation dependent, but are intended to represent the Date in a + convenient, human-readable form in the current time zone. + + The toString function is not generic; it generates a runtime error if its + this value is not a Date object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + + This verifies that calling toString on an object that is not a string + generates a runtime error. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "date-001"; + var VERSION = "JS1_4"; + var TITLE = "Date.prototype.toString"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var OBJ = new MyObject( new Date(0) ); + result = OBJ.toString(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "OBJECT = new MyObject( new Date(0)) ; result = OBJ.toString()" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyObject( value ) { + this.value = value; + this.valueOf = new Function( "return this.value" ); + this.toString = Date.prototype.toString; + return this; +} diff --git a/js/tests/ecma_2/Exceptions/date-002.js b/js/tests/ecma_2/Exceptions/date-002.js new file mode 100644 index 000000000000..6fd5a6489971 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/date-002.js @@ -0,0 +1,51 @@ +/** + File Name: date-002.js + Corresponds To: 15.9.5.23-3-n.js + ECMA Section: 15.9.5.23 + Description: Date.prototype.setTime + + 1. If the this value is not a Date object, generate a runtime error. + 2. Call ToNumber(time). + 3. Call TimeClip(Result(1)). + 4. Set the [[Value]] property of the this value to Result(2). + 5. Return the value of the [[Value]] property of the this value. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "date-002"; + var VERSION = "JS1_4"; + var TITLE = "Date.prototype.setTime()"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var MYDATE = new MyDate(); + result = MYDATE.setTime(0); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "MYDATE = new MyDate(); MYDATE.setTime(0)" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyDate(value) { + this.value = value; + this.setTime = Date.prototype.setTime; + return this; +} diff --git a/js/tests/ecma_2/Exceptions/date-003.js b/js/tests/ecma_2/Exceptions/date-003.js new file mode 100644 index 000000000000..b675fdd87aab --- /dev/null +++ b/js/tests/ecma_2/Exceptions/date-003.js @@ -0,0 +1,53 @@ +/** + File Name: date-003.js + Corresponds To 15.9.5.3-1.js + ECMA Section: 15.9.5.3-1 Date.prototype.valueOf + Description: + + The valueOf function returns a number, which is this time value. + + The valueOf function is not generic; it generates a runtime error if + its this value is not a Date object. Therefore it cannot be transferred + to other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "date-003"; + var VERSION = "JS1_4"; + var TITLE = "Date.prototype.valueOf"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var OBJ = new MyObject( new Date(0) ); + result = OBJ.valueOf(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "OBJ = new MyObject( new Date(0)); OBJ.valueOf()" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyObject( value ) { + this.value = value; + this.valueOf = Date.prototype.valueOf; +// The following line causes an infinte loop +// this.toString = new Function( "return this+\"\";"); + return this; +} diff --git a/js/tests/ecma_2/Exceptions/date-004.js b/js/tests/ecma_2/Exceptions/date-004.js new file mode 100644 index 000000000000..fc2e4199be02 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/date-004.js @@ -0,0 +1,47 @@ +/** + File Name: date-004.js + Corresponds To: 15.9.5.4-2-n.js + ECMA Section: 15.9.5.4-1 Date.prototype.getTime + Description: + + 1. If the this value is not an object whose [[Class]] property is "Date", + generate a runtime error. + 2. Return this time value. + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "date-004"; + var VERSION = "JS1_4"; + var TITLE = "Date.prototype.getTime"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var MYDATE = new MyDate(); + result = MYDATE.getTime(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "MYDATE = new MyDate(); MYDATE.getTime()" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyDate( value ) { + this.value = value; + this.getTime = Date.prototype.getTime; +} diff --git a/js/tests/ecma_2/Exceptions/exception-001.js b/js/tests/ecma_2/Exceptions/exception-001.js new file mode 100644 index 000000000000..eeeaa86e80f9 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/exception-001.js @@ -0,0 +1,42 @@ +/** + * File Name: exception-001 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * Call error. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-001"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: CallError"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + Call_1(); + + test(); + + function Call_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + Math(); + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "Math() [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } + diff --git a/js/tests/ecma_2/Exceptions/exception-002.js b/js/tests/ecma_2/Exceptions/exception-002.js new file mode 100644 index 000000000000..680fcbf3d146 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/exception-002.js @@ -0,0 +1,42 @@ +/** + * File Name: exception-002 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * Construct error. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-002"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: ConstructError"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + Construct_1(); + + test(); + + function Construct_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + result = new Math(); + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "new Math() [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } + diff --git a/js/tests/ecma_2/Exceptions/exception-003.js b/js/tests/ecma_2/Exceptions/exception-003.js new file mode 100644 index 000000000000..d073fbc14f6b --- /dev/null +++ b/js/tests/ecma_2/Exceptions/exception-003.js @@ -0,0 +1,46 @@ +/** + * File Name: exception-003 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * Target error. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-003"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: TargetError"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + Target_1(); + + test(); + + function Target_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + string = new String("hi"); + string.toString = Boolean.prototype.toString; + string.toString(); + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "string = new String(\"hi\");"+ + "string.toString = Boolean.prototype.toString" + + "string.toString() [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } + diff --git a/js/tests/ecma_2/Exceptions/exception-004.js b/js/tests/ecma_2/Exceptions/exception-004.js new file mode 100644 index 000000000000..1fde9595f435 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/exception-004.js @@ -0,0 +1,42 @@ +/** + * File Name: exception-004 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * ToObject error. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-004"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: ToObjectError"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + ToObject_1(); + + test(); + + function ToObject_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + result = foo["bar"]; + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "foo[\"bar\"] [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } + diff --git a/js/tests/ecma_2/Exceptions/exception-005.js b/js/tests/ecma_2/Exceptions/exception-005.js new file mode 100644 index 000000000000..2fbb98461480 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/exception-005.js @@ -0,0 +1,42 @@ +/** + * File Name: exception-005 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * ToObject error. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-005"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: ToObjectError"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + ToObject_1(); + + test(); + + function ToObject_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + result = foo["bar"]; + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "foo[\"bar\"] [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } + diff --git a/js/tests/ecma_2/Exceptions/exception-006.js b/js/tests/ecma_2/Exceptions/exception-006.js new file mode 100644 index 000000000000..8a84d72529a3 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/exception-006.js @@ -0,0 +1,53 @@ +/** + * File Name: exception-006 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * ToPrimitive error. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-006"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: ToPrimitiveError"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + ToPrimitive_1(); + + test(); + + + /** + * Getting the [[DefaultValue]] of any instances of MyObject + * should result in a runtime error in ToPrimitive. + */ + + function MyObject() { + this.toString = void 0; + this.valueOf = void 0; + } + + function ToPrimitive_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + result = new MyObject() + new MyObject(); + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "new MyObject() + new MyObject() [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } + diff --git a/js/tests/ecma_2/Exceptions/exception-007.js b/js/tests/ecma_2/Exceptions/exception-007.js new file mode 100644 index 000000000000..6215ca3c7e35 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/exception-007.js @@ -0,0 +1,54 @@ +/** + * File Name: exception-007 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * DefaultValue error. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-007"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: DefaultValueError"; + var BUGNUMBER="318250"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + DefaultValue_1(); + + test(); + + + /** + * Getting the [[DefaultValue]] of any instances of MyObject + * should result in a runtime error in ToPrimitive. + */ + + function MyObject() { + this.toString = void 0; + this.valueOf = new Object(); + } + + function DefaultValue_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + result = new MyObject() + new MyObject(); + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "new MyObject() + new MyObject() [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } + diff --git a/js/tests/ecma_2/Exceptions/exception-008.js b/js/tests/ecma_2/Exceptions/exception-008.js new file mode 100644 index 000000000000..797f12566b2a --- /dev/null +++ b/js/tests/ecma_2/Exceptions/exception-008.js @@ -0,0 +1,41 @@ +/** + * File Name: exception-008 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * SyntaxError. + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-008"; + var VERSION = "js1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: SyntaxError"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + Syntax_1(); + + test(); + + function Syntax_1() { + result = "failed: no exception thrown"; + exception = null; + + try { + result = eval("continue;"); + } catch ( e ) { + result = "passed: threw exception", + exception = e.toString(); + } finally { + testcases[tc++] = new TestCase( + SECTION, + "eval(\"continue\") [ exception is " + exception +" ]", + "passed: threw exception", + result ); + } + } diff --git a/js/tests/ecma_2/Exceptions/exception-009.js b/js/tests/ecma_2/Exceptions/exception-009.js new file mode 100644 index 000000000000..b153532e55bd --- /dev/null +++ b/js/tests/ecma_2/Exceptions/exception-009.js @@ -0,0 +1,50 @@ +/** + * File Name: exception-009 + * ECMA Section: + * Description: Tests for JavaScript Standard Exceptions + * + * Regression test for nested try blocks. + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=312964 + * + * Author: christine@netscape.com + * Date: 31 August 1998 + */ + var SECTION = "exception-009"; + var VERSION = "JS1_4"; + var TITLE = "Tests for JavaScript Standard Exceptions: SyntaxError"; + var BUGNUMBER= "312964"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + try { + expect = "passed: no exception thrown"; + result = expect; + Nested_1(); + } catch ( e ) { + result = "failed: threw " + e; + } finally { + testcases[tc++] = new TestCase( + SECTION, + "nested try", + expect, + result ); + } + + + test(); + + function Nested_1() { + try { + try { + } catch (a) { + } finally { + } + } catch (b) { + } finally { + } + } diff --git a/js/tests/ecma_2/Exceptions/expression-001.js b/js/tests/ecma_2/Exceptions/expression-001.js new file mode 100644 index 000000000000..b1baf6f15d75 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-001.js @@ -0,0 +1,47 @@ +/** + File Name: expression-001.js + Corresponds to: ecma/Expressions/11.12-2-n.js + ECMA Section: 11.12 + Description: + + The grammar for a ConditionalExpression in ECMAScript is a little bit + different from that in C and Java, which each allow the second + subexpression to be an Expression but restrict the third expression to + be a ConditionalExpression. The motivation for this difference in + ECMAScript is to allow an assignment expression to be governed by either + arm of a conditional and to eliminate the confusing and fairly useless + case of a comma expression as the center expression. + + Author: christine@netscape.com + Date: 09 september 1998 +*/ + var SECTION = "expression-001"; + var VERSION = "JS1_4"; + var TITLE = "Conditional operator ( ? : )" + startTest(); + writeHeaderToLog( SECTION + " " + TITLE ); + + var tc = 0; + var testcases = new Array(); + + // the following expression should be an error in JS. + + var result = "Failed" + var exception = "No exception was thrown"; + + try { + eval("var MY_VAR = true ? \"EXPR1\", \"EXPR2\" : \"EXPR3\""); + } catch ( e ) { + result = "Passed"; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "comma expression in a conditional statement "+ + "(threw "+ exception +")", + "Passed", + result ); + + + test(); diff --git a/js/tests/ecma_2/Exceptions/expression-002.js b/js/tests/ecma_2/Exceptions/expression-002.js new file mode 100644 index 000000000000..1a73ebec01d9 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-002.js @@ -0,0 +1,57 @@ +/** + File Name: expressions-002.js + Corresponds to: ecma/Expressions/11.2.1-3-n.js + ECMA Section: 11.2.1 Property Accessors + Description: + + Try to access properties of an object whose value is undefined. + + Author: christine@netscape.com + Date: 09 september 1998 +*/ + var SECTION = "expressions-002.js"; + var VERSION = "JS1_4"; + var TITLE = "Property Accessors"; + writeHeaderToLog( SECTION + " "+TITLE ); + + startTest(); + + var tc = 0; + var testcases = new Array(); + + // go through all Native Function objects, methods, and properties and get their typeof. + + var PROPERTY = new Array(); + var p = 0; + + // try to access properties of primitive types + + OBJECT = new Property( "undefined", void 0, "undefined", NaN ); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = OBJECT.value.valueOf(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + + testcases[tc++] = new TestCase( + SECTION, + "Get the value of an object whose value is undefined "+ + "(threw " + exception +")", + expect, + result ); + + test(); + +function Property( object, value, string, number ) { + this.object = object; + this.string = String(value); + this.number = Number(value); + this.valueOf = value; +} \ No newline at end of file diff --git a/js/tests/ecma_2/Exceptions/expression-003.js b/js/tests/ecma_2/Exceptions/expression-003.js new file mode 100644 index 000000000000..30b536912ac9 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-003.js @@ -0,0 +1,52 @@ +/** + File Name: expressions-003.js + Corresponds to: ecma/Expressions/11.2.1-3-n.js + ECMA Section: 11.2.1 Property Accessors + Description: + + Try to access properties of an object whose value is undefined. + + Author: christine@netscape.com + Date: 09 september 1998 +*/ + var SECTION = "expressions-003.js"; + var VERSION = "JS1_4"; + var TITLE = "Property Accessors"; + writeHeaderToLog( SECTION + " "+TITLE ); + + startTest(); + + var tc = 0; + var testcases = new Array(); + + // try to access properties of primitive types + + OBJECT = new Property( "undefined", void 0, "undefined", NaN ); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = OBJECT.value.toString(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + + testcases[tc++] = new TestCase( + SECTION, + "Get the toString value of an object whose value is undefined "+ + "(threw " + exception +")", + expect, + result ); + + test(); + +function Property( object, value, string, number ) { + this.object = object; + this.string = String(value); + this.number = Number(value); + this.value = value; +} \ No newline at end of file diff --git a/js/tests/ecma_2/Exceptions/expression-004.js b/js/tests/ecma_2/Exceptions/expression-004.js new file mode 100644 index 000000000000..0ce3864b11c3 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-004.js @@ -0,0 +1,46 @@ +/** + File Name: expression-004.js + Corresponds To: 11.2.1-4-n.js + ECMA Section: 11.2.1 Property Accessors + Description: + + Author: christine@netscape.com + Date: 09 september 1998 +*/ + var SECTION = "expression-004"; + var VERSION = "JS1_4"; + var TITLE = "Property Accessors"; + writeHeaderToLog( SECTION + " "+TITLE ); + startTest(); + + var tc = 0; + var testcases = new Array(); + + var OBJECT = new Property( "null", null, "null", 0 ); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = OBJECT.value.toString(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "Get the toString value of an object whose value is null "+ + "(threw " + exception +")", + expect, + result ); + + test(); + +function Property( object, value, string, number ) { + this.object = object; + this.string = String(value); + this.number = Number(value); + this.value = value; +} diff --git a/js/tests/ecma_2/Exceptions/expression-005.js b/js/tests/ecma_2/Exceptions/expression-005.js new file mode 100644 index 000000000000..df6914493bc9 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-005.js @@ -0,0 +1,38 @@ +/** + File Name: expression-005.js + Corresponds To: 11.2.2-10-n.js + ECMA Section: 11.2.2. The new operator + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + + var SECTION = "expression-005"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var expect = "Passed"; + var exception = "No exception thrown"; + + try { + result = new Math(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "result= new Math() (threw " + exception + ")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/expression-006.js b/js/tests/ecma_2/Exceptions/expression-006.js new file mode 100644 index 000000000000..1bf0798a1603 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-006.js @@ -0,0 +1,43 @@ +/** + File Name: expression-006.js + Corresponds to: 11.2.2-1-n.js + ECMA Section: 11.2.2. The new operator + Description: + + http://scopus/bugsplat/show_bug.cgi?id=327765 + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-006.js"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + var BUGNUMBER="327765"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var OBJECT = new Object(); + result = new OBJECT(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "OBJECT = new Object; result = new OBJECT()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/expression-007.js b/js/tests/ecma_2/Exceptions/expression-007.js new file mode 100644 index 000000000000..988109b652bf --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-007.js @@ -0,0 +1,41 @@ +/** + File Name: expression-007.js + Corresponds To: 11.2.2-2-n.js + ECMA Section: 11.2.2. The new operator + Description: + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-007"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + UNDEFINED = void 0; + result = new UNDEFINED(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "UNDEFINED = void 0; result = new UNDEFINED()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/expression-008.js b/js/tests/ecma_2/Exceptions/expression-008.js new file mode 100644 index 000000000000..caa891254c7a --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-008.js @@ -0,0 +1,38 @@ +/** + File Name: expression-008 + Corresponds To: 11.2.2-3-n.js + ECMA Section: 11.2.2. The new operator + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-008"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var NULL = null; + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = new NULL(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "NULL = null; result = new NULL()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/expression-009.js b/js/tests/ecma_2/Exceptions/expression-009.js new file mode 100644 index 000000000000..2aa63b6a6d50 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-009.js @@ -0,0 +1,39 @@ +/** + File Name: expression-009 + Corresponds to: ecma/Expressions/11.2.2-4-n.js + ECMA Section: 11.2.2. The new operator + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-009"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var STRING = ""; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = new STRING(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "STRING = ''; result = new STRING()" + + " (threw " + exception +")", + expect, + result ); + + test(); \ No newline at end of file diff --git a/js/tests/ecma_2/Exceptions/expression-010.js b/js/tests/ecma_2/Exceptions/expression-010.js new file mode 100644 index 000000000000..bb21aba26260 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-010.js @@ -0,0 +1,40 @@ +/** + File Name: expression-010.js + Corresponds To: 11.2.2-5-n.js + ECMA Section: 11.2.2. The new operator + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-010"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var NUMBER = 0; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = new NUMBER(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "NUMBER=0, result = new NUMBER()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/expression-011.js b/js/tests/ecma_2/Exceptions/expression-011.js new file mode 100644 index 000000000000..71c601a3b46f --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-011.js @@ -0,0 +1,40 @@ +/** + File Name: expression-011.js + Corresponds To: ecma/Expressions/11.2.2-6-n.js + ECMA Section: 11.2.2. The new operator + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-011"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var BOOLEAN = true; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var OBJECT = new BOOLEAN(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "BOOLEAN = true; result = new BOOLEAN()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/expression-012.js b/js/tests/ecma_2/Exceptions/expression-012.js new file mode 100644 index 000000000000..31eb0996bbd2 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-012.js @@ -0,0 +1,41 @@ +/** + File Name: expression-012.js + Corresponds To: ecma/Expressions/11.2.2-6-n.js + ECMA Section: 11.2.2. The new operator + Description: + http://scopus/bugsplat/show_bug.cgi?id=327765 + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-012"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + var BUGNUMBER= "327765"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var STRING = new String("hi"); + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = new STRING(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "STRING = new String(\"hi\"); result = new STRING()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/expression-013.js b/js/tests/ecma_2/Exceptions/expression-013.js new file mode 100644 index 000000000000..cc75a7747c52 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-013.js @@ -0,0 +1,41 @@ +/** + File Name: expression-013.js + Corresponds To: ecma/Expressions/11.2.2-8-n.js + ECMA Section: 11.2.2. The new operator + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-013"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + var BUGNUMBER= "327765"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var NUMBER = new Number(1); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = new NUMBER(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "NUMBER = new Number(1); result = new NUMBER()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/expression-014.js b/js/tests/ecma_2/Exceptions/expression-014.js new file mode 100644 index 000000000000..4a09cd140a46 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-014.js @@ -0,0 +1,43 @@ +/** + File Name: expression-014.js + Corresponds To: ecma/Expressions/11.2.2-9-n.js + ECMA Section: 11.2.2. The new operator + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-014.js"; + var VERSION = "ECMA_1"; + var TITLE = "The new operator"; + var BUGNUMBER= "327765"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var BOOLEAN = new Boolean(); + + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = new BOOLEAN(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "BOOLEAN = new Boolean(); result = new BOOLEAN()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/expression-015.js b/js/tests/ecma_2/Exceptions/expression-015.js new file mode 100644 index 000000000000..09577fc1b0a8 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-015.js @@ -0,0 +1,37 @@ +/** + File Name: expression-015.js + Corresponds To: ecma/Expressions/11.2.3-2-n.js + ECMA Section: 11.2.3. Function Calls + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-015"; + var VERSION = "JS1_4"; + var TITLE = "Function Calls"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("result = 3.valueOf();"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "3.valueOf()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/expression-016.js b/js/tests/ecma_2/Exceptions/expression-016.js new file mode 100644 index 000000000000..4a551106a7e0 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-016.js @@ -0,0 +1,37 @@ +/** + File Name: expression-016.js + Corresponds To: ecma/Expressions/11.2.3-3-n.js + ECMA Section: 11.2.3. Function Calls + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-016"; + var VERSION = "JS1_4"; + var TITLE = "Function Calls"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = (void 0).valueOf(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "(void 0).valueOf()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/expression-017.js b/js/tests/ecma_2/Exceptions/expression-017.js new file mode 100644 index 000000000000..949cf3f57348 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-017.js @@ -0,0 +1,37 @@ +/** + File Name: expression-07.js + Corresponds To: ecma/Expressions/11.2.3-4-n.js + ECMA Section: 11.2.3. Function Calls + Description: + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-017"; + var VERSION = "JS1_4"; + var TITLE = "Function Calls"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = nullvalueOf(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "null.valueOf()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/expression-018.js b/js/tests/ecma_2/Exceptions/expression-018.js new file mode 100644 index 000000000000..219bf9f12c41 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-018.js @@ -0,0 +1,39 @@ +/** + File Name: expression-018.js + Corresponds To: 11.4.1-n.js + ECMA Section: 11.4.1 the Delete Operator + Description: returns true if the property could be deleted + returns false if it could not be deleted + Author: christine@netscape.com + Date: 7 july 1997 + +*/ + var SECTION = "expression-018"; + var VERSION = "JS1_4"; + var TITLE = "The delete operator"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("result = delete(x = new Date());"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "delete ( x = new Date() )" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/expression-019.js b/js/tests/ecma_2/Exceptions/expression-019.js new file mode 100644 index 000000000000..0ef02cb609e4 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-019.js @@ -0,0 +1,41 @@ +/** + File Name: expression-019.js + Corresponds To: 11.2.2-7-n.js + ECMA Section: 11.2.2. The new operator + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-019"; + var VERSION = "JS1_4"; + var TITLE = "The new operator"; + var BUGNUMBER= "327765"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var STRING = new String("hi"); + result = new STRING(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var STRING = new String(\"hi\"); result = new STRING();" + + " (threw " + exception + ")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/expression-020.js b/js/tests/ecma_2/Exceptions/expression-020.js new file mode 100644 index 000000000000..5683b4c9e1d6 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/expression-020.js @@ -0,0 +1,66 @@ +/** + File Name: expression-020.js + Corresponds To: Expression/11.2.3-7-n.js + ECMA Section: 11.2.3. Function Calls + Description: + + The production CallExpression : MemberExpression Arguments is evaluated as + follows: + + 1.Evaluate MemberExpression. + 2.Evaluate Arguments, producing an internal list of argument values + (section 0). + 3.Call GetValue(Result(1)). + 4.If Type(Result(3)) is not Object, generate a runtime error. + 5.If Result(3) does not implement the internal [[Call]] method, generate a + runtime error. + 6.If Type(Result(1)) is Reference, Result(6) is GetBase(Result(1)). Otherwise, + Result(6) is null. + 7.If Result(6) is an activation object, Result(7) is null. Otherwise, Result(7) is + the same as Result(6). + 8.Call the [[Call]] method on Result(3), providing Result(7) as the this value + and providing the list Result(2) as the argument values. + 9.Return Result(8). + + The production CallExpression : CallExpression Arguments is evaluated in + exactly the same manner, except that the contained CallExpression is + evaluated in step 1. + + Note: Result(8) will never be of type Reference if Result(3) is a native + ECMAScript object. Whether calling a host object can return a value of + type Reference is implementation-dependent. + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "expression-020"; + var VERSION = "ECMA_1"; + var TITLE = "Calling eval indirectly"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + +// this.eval() is no longer legal syntax. + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = this.eval("NaN"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "result = this.eval(\"NaN\")" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/function-001.js b/js/tests/ecma_2/Exceptions/function-001.js new file mode 100644 index 000000000000..e411c2d24c5b --- /dev/null +++ b/js/tests/ecma_2/Exceptions/function-001.js @@ -0,0 +1,64 @@ +/** + * File Name: boolean-001.js + * Description: + * + * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=99232 + * + * eval("function f(){}function g(){}") at top level is an error for JS1.2 + * and above (missing ; between named function expressions), but declares f + * and g as functions below 1.2. + * + * Fails to produce error regardless of version: + * js> version(100) + * 120 + * js> eval("function f(){}function g(){}") + * js> version(120); + * 100 + * js> eval("function f(){}function g(){}") + * js> + * Author: christine@netscape.com + * Date: 11 August 1998 + */ + var SECTION = "function-001.js"; + var VERSION = "JS1_1"; + var TITLE = "functions not separated by semicolons are errors in version 120 and higher"; + var BUGNUMBER="99232"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "fail"; + var exception = "no exception thrown"; + + try { + eval("function f(){}function g(){}"); + } catch ( e ) { + result = "pass!" + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "eval(\"function f(){}function g(){}\") (threw "+exception, + "pass", + result ); + + test(); + + +function test() { + for ( tc=0; tc < testcases.length; tc++ ) { + testcases[tc].passed = writeTestCaseResult( + testcases[tc].expect, + testcases[tc].actual, + testcases[tc].description +" = "+ + testcases[tc].actual ); + + testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; + } + stopTest(); + return ( testcases ); +} diff --git a/js/tests/ecma_2/Exceptions/global-001.js b/js/tests/ecma_2/Exceptions/global-001.js new file mode 100644 index 000000000000..3b1bd98f0df6 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/global-001.js @@ -0,0 +1,43 @@ +/** + File Name: global-001 + Corresponds To: ecma/GlobalObject/15.1-1-n.js + ECMA Section: The global object + Description: + + The global object does not have a [[Construct]] property; it is not + possible to use the global object as a constructor with the new operator. + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "global-001"; + var VERSION = "ECMA_1"; + var TITLE = "The Global Object"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = new this(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "result = new this()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/global-002.js b/js/tests/ecma_2/Exceptions/global-002.js new file mode 100644 index 000000000000..2453c295b19e --- /dev/null +++ b/js/tests/ecma_2/Exceptions/global-002.js @@ -0,0 +1,43 @@ +/** + File Name: global-002 + Corresponds To: ecma/GlobalObject/15.1-2-n.js + ECMA Section: The global object + Description: + + The global object does not have a [[Construct]] property; it is not + possible to use the global object as a constructor with the new operator. + + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "global-002"; + var VERSION = "JS1_4"; + var TITLE = "The Global Object"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = this(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "result = this()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/lexical-001.js b/js/tests/ecma_2/Exceptions/lexical-001.js new file mode 100644 index 000000000000..528a57347f91 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-001.js @@ -0,0 +1,49 @@ +/** + File Name: lexical-001.js + CorrespondsTo: ecma/LexicalConventions/7.2.js + ECMA Section: 7.2 Line Terminators + Description: - readability + - separate tokens + - may occur between any two tokens + - cannot occur within any token, not even a string + - affect the process of automatic semicolon insertion. + + white space characters are: + unicode name formal name string representation + \u000A line feed \n + \u000D carriage return \r + + this test uses onerror to capture line numbers. because + we use on error, we can only have one test case per file. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "lexical-001"; + var VERSION = "JS1_4"; + var TITLE = "Line Terminators"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = eval("\r\n\expect"); + } catch ( e ) { + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "OBJECT = new Object; result = new OBJECT()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/lexical-002.js b/js/tests/ecma_2/Exceptions/lexical-002.js new file mode 100644 index 000000000000..b1521c2a44de --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-002.js @@ -0,0 +1,49 @@ +/** + File Name: lexical-002.js + Corresponds To: ecma/LexicalConventions/7.2-3-n.js + ECMA Section: 7.2 Line Terminators + Description: - readability + - separate tokens + - may occur between any two tokens + - cannot occur within any token, not even a string + - affect the process of automatic semicolon insertion. + + white space characters are: + unicode name formal name string representation + \u000A line feed \n + \u000D carriage return \r + + this test uses onerror to capture line numbers. because + we use on error, we can only have one test case per file. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "lexical-002"; + var VERSION = "JS1_4"; + var TITLE = "Line Terminators"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + result = eval("\r\n\expect"); + } catch ( e ) { + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "result=eval(\"\r\nexpect\")" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/lexical-003.js b/js/tests/ecma_2/Exceptions/lexical-003.js new file mode 100644 index 000000000000..a622d12bf811 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-003.js @@ -0,0 +1,41 @@ +/** + File Name: lexical-003.js + Corresponds To: 7.3-13-n.js + ECMA Section: 7.3 Comments + Description: + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-003.js"; + var VERSION = "JS1_4"; + var TITLE = "Comments"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("/*\n/* nested comment */\n*/\n"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "/*/*nested comment*/ */" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/lexical-004.js b/js/tests/ecma_2/Exceptions/lexical-004.js new file mode 100644 index 000000000000..64758385b2c7 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-004.js @@ -0,0 +1,49 @@ +/** + File Name: lexical-004.js + Corresponds To: ecma/LexicalExpressions/7.4.1-1-n.js + ECMA Section: 7.4.1 + + Description: + + Reserved words cannot be used as identifiers. + + ReservedWord :: + Keyword + FutureReservedWord + NullLiteral + BooleanLiteral + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-004"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var null = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var null = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/lexical-005.js b/js/tests/ecma_2/Exceptions/lexical-005.js new file mode 100644 index 000000000000..a9cdd6b12e63 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-005.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-005.js + Corresponds To: 7.4.1-2.js + ECMA Section: 7.4.1 + + Description: + + Reserved words cannot be used as identifiers. + + ReservedWord :: + Keyword + FutureReservedWord + NullLiteral + BooleanLiteral + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-005"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("true = false;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "true = false" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/lexical-006.js b/js/tests/ecma_2/Exceptions/lexical-006.js new file mode 100644 index 000000000000..89c45f3b475f --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-006.js @@ -0,0 +1,55 @@ +/** + File Name: lexical-006.js + Corresponds To: 7.4.2-1.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-006"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("break = new Object();"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "break = new Object()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/lexical-007.js b/js/tests/ecma_2/Exceptions/lexical-007.js new file mode 100644 index 000000000000..d34afe4bee69 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-007.js @@ -0,0 +1,48 @@ +/** + File Name: lexical-005.js + Corresponds To: 7.4.1-3-n.js + ECMA Section: 7.4.1 + + Description: + + Reserved words cannot be used as identifiers. + + ReservedWord :: + Keyword + FutureReservedWord + NullLiteral + BooleanLiteral + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-005"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("false = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "false = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/lexical-008.js b/js/tests/ecma_2/Exceptions/lexical-008.js new file mode 100644 index 000000000000..f819eaee1a6b --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-008.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-008.js + Corresponds To: 7.4.3-1-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-008.js"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("case = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "case = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-009.js b/js/tests/ecma_2/Exceptions/lexical-009.js new file mode 100644 index 000000000000..39fc71ab3c06 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-009.js @@ -0,0 +1,49 @@ +/** + File Name: lexical-009 + Corresponds To: 7.4.3-2-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-009"; + var VERSION = "ECMA_1"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("debugger = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "debugger = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-010.js b/js/tests/ecma_2/Exceptions/lexical-010.js new file mode 100644 index 000000000000..9e9f6648dbb0 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-010.js @@ -0,0 +1,48 @@ +/** + File Name: lexical-010.js + Corresponds To: 7.4.3-3-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-010"; + var VERSION = "ECMA_1"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("export = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "export = true" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/lexical-011.js b/js/tests/ecma_2/Exceptions/lexical-011.js new file mode 100644 index 000000000000..1c054f2ad8ac --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-011.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-011.js + Corresponds To: 7.4.3-4-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-011"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("super = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "super = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-012.js b/js/tests/ecma_2/Exceptions/lexical-012.js new file mode 100644 index 000000000000..e4579fd95c6a --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-012.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-012.js + Corresponds To: 7.4.3-5-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-012"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("catch = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "catch = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-013.js b/js/tests/ecma_2/Exceptions/lexical-013.js new file mode 100644 index 000000000000..699d06a9f9c6 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-013.js @@ -0,0 +1,49 @@ +/** + File Name: lexical-013.js + Corresponds To: 7.4.3-6-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-013"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("default = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "default = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-014.js b/js/tests/ecma_2/Exceptions/lexical-014.js new file mode 100644 index 000000000000..41b12ff9d7c0 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-014.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-014.js + Corresponds To: 7.4.3-7-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-014.js"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("extends = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "extends = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-015.js b/js/tests/ecma_2/Exceptions/lexical-015.js new file mode 100644 index 000000000000..7cbcc049f6ad --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-015.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-015.js + Corresponds To: 7.4.3-8-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-015"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("switch = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "switch = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-016.js b/js/tests/ecma_2/Exceptions/lexical-016.js new file mode 100644 index 000000000000..812655038c22 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-016.js @@ -0,0 +1,48 @@ +/** + File Name: lexical-016 + Corresponds To: 7.4.3-9-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-016"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("class = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "class = true" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/lexical-017.js b/js/tests/ecma_2/Exceptions/lexical-017.js new file mode 100644 index 000000000000..96849b769949 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-017.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-017.js + Corresponds To: 7.4.3-10-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-017"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("do = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "do = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + + diff --git a/js/tests/ecma_2/Exceptions/lexical-018.js b/js/tests/ecma_2/Exceptions/lexical-018.js new file mode 100644 index 000000000000..5d46c5f289e6 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-018.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-018 + Corresponds To: 7.4.3-11-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-018"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("finally = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "finally = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-019.js b/js/tests/ecma_2/Exceptions/lexical-019.js new file mode 100644 index 000000000000..9f01fc0adf37 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-019.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-019.js + Corresponds To: 7.4.3-12-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-019"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("throw = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "throw = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-020.js b/js/tests/ecma_2/Exceptions/lexical-020.js new file mode 100644 index 000000000000..362a3d572e50 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-020.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-020.js + Corresponds To 7.4.3-13-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-020"; + var VERSION = "JS1_4"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("const = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "const = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-021.js b/js/tests/ecma_2/Exceptions/lexical-021.js new file mode 100644 index 000000000000..9fb3edee3e35 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-021.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-021.js + Corresponds To: 7.4.3-14-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-021.js"; + var VERSION = "ECMA_1"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("enum = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "enum = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-022.js b/js/tests/ecma_2/Exceptions/lexical-022.js new file mode 100644 index 000000000000..54f256a60dd4 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-022.js @@ -0,0 +1,50 @@ +/** + File Name: lexical-022 + Corresponds To 7.4.3-15-n.js + ECMA Section: 7.4.3 + + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-022.js"; + var VERSION = "ECMA_1"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("import = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "import = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-023.js b/js/tests/ecma_2/Exceptions/lexical-023.js new file mode 100644 index 000000000000..0715a3d39238 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-023.js @@ -0,0 +1,49 @@ +/** + File Name: lexical-023.js + Corresponds To: 7.4.3-16-n.js + ECMA Section: 7.4.3 + Description: + The following words are used as keywords in proposed extensions and are + therefore reserved to allow for the possibility of future adoption of + those extensions. + + FutureReservedWord :: one of + case debugger export super + catch default extends switch + class do finally throw + const enum import try + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "lexical-023.js"; + var VERSION = "ECMA_1"; + var TITLE = "Future Reserved Words"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("try = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "try = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-024.js b/js/tests/ecma_2/Exceptions/lexical-024.js new file mode 100644 index 000000000000..d7317914e13c --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-024.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-024 + Corresponds To: 7.4.2-1-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-024"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var break;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var break" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-025.js b/js/tests/ecma_2/Exceptions/lexical-025.js new file mode 100644 index 000000000000..16a44d60e278 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-025.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-025.js + Corresponds To 7.4.2-2-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-025"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var for;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var for" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-026.js b/js/tests/ecma_2/Exceptions/lexical-026.js new file mode 100644 index 000000000000..73aea73f0d51 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-026.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-026.js + Corresponds To: 7.4.2-3-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-026"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var new;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var new" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-027.js b/js/tests/ecma_2/Exceptions/lexical-027.js new file mode 100644 index 000000000000..b8f8593055d0 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-027.js @@ -0,0 +1,58 @@ +/** + File Name: lexical-027.js + Corresponds To: 7.4.2-4-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + var + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-027"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var var;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var var" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-028.js b/js/tests/ecma_2/Exceptions/lexical-028.js new file mode 100644 index 000000000000..a985527def1e --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-028.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-028.js + Corresponds To: 7.4.2-5-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-028"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var continue=true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var continue=true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-029.js b/js/tests/ecma_2/Exceptions/lexical-029.js new file mode 100644 index 000000000000..0b38cbeb5e78 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-029.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-029.js + Corresponds To: 7.4.2-6.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-029"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var function = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var function = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-030.js b/js/tests/ecma_2/Exceptions/lexical-030.js new file mode 100644 index 000000000000..bc854724f2f8 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-030.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-030.js + Corresponds To: 7.4.2-7-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-030"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var return = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var return = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-031.js b/js/tests/ecma_2/Exceptions/lexical-031.js new file mode 100644 index 000000000000..d2251ba854d4 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-031.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-031.js + Corresponds To: 7.4.2-8-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-031"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var return;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var return" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-032.js b/js/tests/ecma_2/Exceptions/lexical-032.js new file mode 100644 index 000000000000..5ac71cbddcf5 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-032.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-032.js + Corresponds To: 7.4.2-9-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-032"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("delete = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "delete = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-033.js b/js/tests/ecma_2/Exceptions/lexical-033.js new file mode 100644 index 000000000000..2a357fe0f5b1 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-033.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-033.js + Corresponds To: 7.4.2-10.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-033"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("if = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "if = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-034.js b/js/tests/ecma_2/Exceptions/lexical-034.js new file mode 100644 index 000000000000..d6c03a243644 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-034.js @@ -0,0 +1,55 @@ +/** + File Name: 7.4.2-11-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-034"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("this = true"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "this = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-035.js b/js/tests/ecma_2/Exceptions/lexical-035.js new file mode 100644 index 000000000000..f5fca592fbf5 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-035.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-035.js + Correpsonds To: 7.4.2-12-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-035"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var while"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var while" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-036.js b/js/tests/ecma_2/Exceptions/lexical-036.js new file mode 100644 index 000000000000..3512c9b721a0 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-036.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-036.js + Corresponds To: 7.4.2-13-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-036"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("else = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "else = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-037.js b/js/tests/ecma_2/Exceptions/lexical-037.js new file mode 100644 index 000000000000..641c9de47766 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-037.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-037.js + Corresponds To: 7.4.2-14-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-028"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var in;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var in" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-038.js b/js/tests/ecma_2/Exceptions/lexical-038.js new file mode 100644 index 000000000000..f44b6b3cf679 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-038.js @@ -0,0 +1,56 @@ +/** + File Name: lexical-038.js + Corresponds To: 7.4.2-15-n.js + ECMA Section: 7.4.2 + + Description: + The following tokens are ECMAScript keywords and may not be used as + identifiers in ECMAScript programs. + + Syntax + + Keyword :: one of + break for new var + continue function return void + delete if this while + else in typeof with + + This test verifies that the keyword cannot be used as an identifier. + Functioinal tests of the keyword may be found in the section corresponding + to the function of the keyword. + + Author: christine@netscape.com + Date: 12 november 1997 + +*/ + var SECTION = "lexical-038"; + var VERSION = "JS1_4"; + var TITLE = "Keywords"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("typeof = true;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "typeof = true" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-039.js b/js/tests/ecma_2/Exceptions/lexical-039.js new file mode 100644 index 000000000000..e40b21b9a1f6 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-039.js @@ -0,0 +1,43 @@ +/** + File Name: lexical-039 + Corresponds To: 7.5-2-n.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "lexical-039"; + var VERSION = "JS1_4"; + var TITLE = "Identifiers"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var 0abc;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var 0abc" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-040.js b/js/tests/ecma_2/Exceptions/lexical-040.js new file mode 100644 index 000000000000..fb306c1d0ff7 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-040.js @@ -0,0 +1,43 @@ +/** + File Name: lexical-040.js + Corresponds To: 7.5-2.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "lexical-040"; + var VERSION = "JS1_4"; + var TITLE = "Identifiers"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var 1abc;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var 1abc" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-041.js b/js/tests/ecma_2/Exceptions/lexical-041.js new file mode 100644 index 000000000000..da830f8e220a --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-041.js @@ -0,0 +1,45 @@ +/** + File Name: lexical-041.js + Corresponds To: 7.5-8-n.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "lexical-041"; + var VERSION = "ECMA_1"; + var TITLE = "Identifiers"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var @abc;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var @abc" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-042.js b/js/tests/ecma_2/Exceptions/lexical-042.js new file mode 100644 index 000000000000..88ee50951cf6 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-042.js @@ -0,0 +1,46 @@ +/** + File Name: lexical-042.js + Corresponds To: 7.5-9-n.js + ECMA Section: 7.5 Identifiers + Description: Identifiers are of unlimited length + - can contain letters, a decimal digit, _, or $ + - the first character cannot be a decimal digit + - identifiers are case sensitive + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "lexical-042"; + var VERSION = "JS1_4"; + var TITLE = "Identifiers"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("var 123;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "var 123" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-043.js b/js/tests/ecma_2/Exceptions/lexical-043.js new file mode 100644 index 000000000000..65948fbebc5a --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-043.js @@ -0,0 +1,54 @@ +/** + File Name: lexical-043.js + Corresponds To: 7.7.3-3-n.js + ECMA Section: 7.7.3 Numeric Literals + + Description: + + This is a regression test for + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=122884 + + Waldemar's comments: + + A numeric literal that starts with either '08' or '09' is interpreted as a + decimal literal; it should be an error instead. (Strictly speaking, according + to ECMA v1 such literals should be interpreted as two integers -- a zero + followed by a decimal number whose first digit is 8 or 9, but this is a bug in + ECMA that will be fixed in v2. In any case, there is no place in the grammar + where two consecutive numbers would be legal.) + + Author: christine@netscape.com + Date: 15 june 1998 + +*/ + var SECTION = "lexical-043"; + var VERSION = "JS1_4"; + var TITLE = "Numeric Literals"; + var BUGNUMBER="122884"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("0099;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "0099" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/lexical-044.js b/js/tests/ecma_2/Exceptions/lexical-044.js new file mode 100644 index 000000000000..5262cc8ffd9e --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-044.js @@ -0,0 +1,55 @@ +/** + File Name: lexical-044.js + Corresponds To: 7.7.3-4-n.js + ECMA Section: 7.7.3 Numeric Literals + + Description: + + This is a regression test for + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=122884 + + Waldemar's comments: + + A numeric literal that starts with either '08' or '09' is interpreted as a + decimal literal; it should be an error instead. (Strictly speaking, according + to ECMA v1 such literals should be interpreted as two integers -- a zero + followed by a decimal number whose first digit is 8 or 9, but this is a bug in + ECMA that will be fixed in v2. In any case, there is no place in the grammar + where two consecutive numbers would be legal.) + + Author: christine@netscape.com + Date: 15 june 1998 + +*/ + var SECTION = "lexical-044"; + var VERSION = "JS1_4"; + var TITLE = "Numeric Literals"; + var BUGNUMBER="122884"; + + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("0079;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "0079" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/lexical-045.js b/js/tests/ecma_2/Exceptions/lexical-045.js new file mode 100644 index 000000000000..40fae0dab0a5 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-045.js @@ -0,0 +1,54 @@ +/** + File Name: lexical-043.js + Corresponds To: 7.7.3-5-n.js + ECMA Section: 7.7.3 Numeric Literals + + Description: + + This is a regression test for + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=122884 + + Waldemar's comments: + + A numeric literal that starts with either '08' or '09' is interpreted as a + decimal literal; it should be an error instead. (Strictly speaking, according + to ECMA v1 such literals should be interpreted as two integers -- a zero + followed by a decimal number whose first digit is 8 or 9, but this is a bug in + ECMA that will be fixed in v2. In any case, there is no place in the grammar + where two consecutive numbers would be legal.) + + Author: christine@netscape.com + Date: 15 june 1998 + +*/ + var SECTION = "lexical-045"; + var VERSION = "JS1_4"; + var TITLE = "Numeric Literals"; + var BUGNUMBER="122884"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("0099;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "0099" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/lexical-046.js b/js/tests/ecma_2/Exceptions/lexical-046.js new file mode 100644 index 000000000000..b895c4abfe9d --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-046.js @@ -0,0 +1,54 @@ +/** + File Name: lexical-046.js + Corresponds To: 7.7.3-6-n.js + ECMA Section: 7.7.3 Numeric Literals + + Description: + + This is a regression test for + http://scopus.mcom.com/bugsplat/show_bug.cgi?id=122884 + + Waldemar's comments: + + A numeric literal that starts with either '08' or '09' is interpreted as a + decimal literal; it should be an error instead. (Strictly speaking, according + to ECMA v1 such literals should be interpreted as two integers -- a zero + followed by a decimal number whose first digit is 8 or 9, but this is a bug in + ECMA that will be fixed in v2. In any case, there is no place in the grammar + where two consecutive numbers would be legal.) + + Author: christine@netscape.com + Date: 15 june 1998 + +*/ + var SECTION = "lexical-046"; + var VERSION = "JS1_4"; + var TITLE = "Numeric Literals"; + var BUGNUMBER="122884"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("079"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "079" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/lexical-047.js b/js/tests/ecma_2/Exceptions/lexical-047.js new file mode 100644 index 000000000000..b5e35489b8a5 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-047.js @@ -0,0 +1,47 @@ +/** + File Name: lexical-047.js + Corresponds To: 7.8.1-7-n.js + ECMA Section: 7.8.1 + Description: + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "lexical-047"; + var VERSION = "JS1_4"; + var TITLE = "for loops"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var counter = 0; + eval("for ( counter = 0\n" + + "counter <= 1\n" + + "counter++ )\n" + + "{\n" + + "result += \": got to inner loop\";\n" + + "}\n"); + + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "line breaks within a for expression" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-048.js b/js/tests/ecma_2/Exceptions/lexical-048.js new file mode 100644 index 000000000000..39a0600ad858 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-048.js @@ -0,0 +1,41 @@ + /** + File Name: lexical-048.js + Corresponds To: 7.8.1-1.js + ECMA Section: 7.8.1 Rules of Automatic Semicolon Insertion + Description: + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "lexical-048"; + var VERSION = "JS1_4"; + var TITLE = "The Rules of Automatic Semicolon Insertion"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var counter = 0; + eval( "for ( counter = 0;\ncounter <= 1\ncounter++ ) {\nresult += \": got inside for loop\")"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "line breaks within a for expression" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-049.js b/js/tests/ecma_2/Exceptions/lexical-049.js new file mode 100644 index 000000000000..e03cfec0e409 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-049.js @@ -0,0 +1,46 @@ + /** + File Name: lexical-049 + Corresponds To: 7.8.1-1.js + ECMA Section: 7.8.1 Rules of Automatic Semicolon Insertioin + Description: + Author: christine@netscape.com + Date: 15 september 1997 +*/ + var SECTION = "lexical-049"; + var VERSION = "JS1_4"; + var TITLE = "The Rules of Automatic Semicolon Insertion"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var counter = 0; + eval("for ( counter = 0\n" + + "counter <= 1;\n" + + "counter++ )\n" + + "{\n" + + "result += \": got inside for loop\";\n" + + "}\n"); + + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "line breaks within a for expression" + + " (threw " + exception +")", + expect, + result ); + + test(); + + diff --git a/js/tests/ecma_2/Exceptions/lexical-050.js b/js/tests/ecma_2/Exceptions/lexical-050.js new file mode 100644 index 000000000000..bc871a7e2dda --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-050.js @@ -0,0 +1,42 @@ +/** + File Name: lexical-050.js + Corresponds to: 7.8.2-1-n.js + ECMA Section: 7.8.2 Examples of Automatic Semicolon Insertion + Description: compare some specific examples of the automatic + insertion rules in the EMCA specification. + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "lexical-050"; + var VERSION = "JS1_4"; + var TITLE = "Examples of Automatic Semicolon Insertion"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("{ 1 2 } 3"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "{ 1 2 } 3" + + " (threw " + exception +")", + expect, + result ); + + test(); + + + diff --git a/js/tests/ecma_2/Exceptions/lexical-051.js b/js/tests/ecma_2/Exceptions/lexical-051.js new file mode 100644 index 000000000000..68e6b44258a7 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-051.js @@ -0,0 +1,42 @@ +/** + File Name: lexical-051.js + Corresponds to: 7.8.2-3-n.js + ECMA Section: 7.8.2 Examples of Automatic Semicolon Insertion + Description: compare some specific examples of the automatic + insertion rules in the EMCA specification. + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "lexical-051"; + var VERSION = "JS1_4"; + var TITLE = "Examples of Automatic Semicolon Insertion"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("for (a; b\n) result += \": got to inner loop\";") + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "for (a; b\n)" + + " (threw " + exception +")", + expect, + result ); + + test(); + + + diff --git a/js/tests/ecma_2/Exceptions/lexical-052.js b/js/tests/ecma_2/Exceptions/lexical-052.js new file mode 100644 index 000000000000..49aa7c761dfc --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-052.js @@ -0,0 +1,44 @@ +/** + File Name: lexical-052.js + Corresponds to: 7.8.2-4-n.js + ECMA Section: 7.8.2 Examples of Automatic Semicolon Insertion + Description: compare some specific examples of the automatic + insertion rules in the EMCA specification. + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "lexical-052"; + var VERSION = "JS1_4"; + var TITLE = "Examples of Automatic Semicolon Insertion"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + MyFunction(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "calling return indirectly" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyFunction() { + var s = "return"; + eval(s); +} diff --git a/js/tests/ecma_2/Exceptions/lexical-053.js b/js/tests/ecma_2/Exceptions/lexical-053.js new file mode 100644 index 000000000000..6e3ae99bd670 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-053.js @@ -0,0 +1,42 @@ +/** + File Name: lexical-053.js + Corresponds to: 7.8.2-7-n.js + ECMA Section: 7.8.2 Examples of Automatic Semicolon Insertion + Description: compare some specific examples of the automatic + insertion rules in the EMCA specification. + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "lexical-053"; + var VERSION = "JS1_4"; + var TITLE = "Examples of Automatic Semicolon Insertion"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + a = true + b = false + + eval('if (a > b)\nelse result += ": got to else statement"'); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "calling return indirectly" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/lexical-054.js b/js/tests/ecma_2/Exceptions/lexical-054.js new file mode 100644 index 000000000000..c4b9e9f654b5 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/lexical-054.js @@ -0,0 +1,43 @@ +/** + File Name: lexical-054.js + Corresponds to: 7.8.2-7-n.js + ECMA Section: 7.8.2 Examples of Automatic Semicolon Insertion + Description: compare some specific examples of the automatic + insertion rules in the EMCA specification. + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "lexical-054"; + var VERSION = "JS1_4"; + var TITLE = "Examples of Automatic Semicolon Insertion"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + a=0; + b=1; + c=2; + d=3; + eval("if (a > b)\nelse c = d"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "if (a > b)\nelse c = d" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/number-001.js b/js/tests/ecma_2/Exceptions/number-001.js new file mode 100644 index 000000000000..90f439aabbff --- /dev/null +++ b/js/tests/ecma_2/Exceptions/number-001.js @@ -0,0 +1,51 @@ +/** + File Name: number-001 + Corresponds To: 15.7.4.2-2-n.js + ECMA Section: 15.7.4.2.2 Number.prototype.toString() + Description: + If the radix is the number 10 or not supplied, then this number value is + given as an argument to the ToString operator; the resulting string value + is returned. + + If the radix is supplied and is an integer from 2 to 36, but not 10, the + result is a string, the choice of which is implementation dependent. + + The toString function is not generic; it generates a runtime error if its + this value is not a Number object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "number-001"; + var VERSION = "JS1_4"; + + startTest(); + writeHeaderToLog( SECTION + " Number.prototype.toString()"); + + var testcases = new Array(); + var tc = 0; + + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + + try { + object= new Object(); + object.toString = Number.prototype.toString; + result = object.toString(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "object = new Object(); object.toString = Number.prototype.toString; object.toString()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/number-002.js b/js/tests/ecma_2/Exceptions/number-002.js new file mode 100644 index 000000000000..170c10ce58ad --- /dev/null +++ b/js/tests/ecma_2/Exceptions/number-002.js @@ -0,0 +1,44 @@ +/** + File Name: number-002.js + Corresponds To: ecma/Number/15.7.4.3-2-n.js + ECMA Section: 15.7.4.3.1 Number.prototype.valueOf() + Description: + Returns this number value. + + The valueOf function is not generic; it generates a runtime error if its + this value is not a Number object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "number-002"; + var VERSION = "JS1_4"; + + startTest(); + writeHeaderToLog( SECTION + " Number.prototype.valueOf()"); + + var testcases = new Array(); + var tc = 0; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + object= new Object(); + object.toString = Number.prototype.valueOf; + result = object.toString(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "object = new Object(); object.valueOf = Number.prototype.valueOf; object.valueOf()" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/number-003.js b/js/tests/ecma_2/Exceptions/number-003.js new file mode 100644 index 000000000000..edba36bb4df5 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/number-003.js @@ -0,0 +1,46 @@ +/** + File Name: number-003.js + Corresponds To: 15.7.4.3-3.js + ECMA Section: 15.7.4.3.1 Number.prototype.valueOf() + Description: + Returns this number value. + + The valueOf function is not generic; it generates a runtime error if its + this value is not a Number object. Therefore it cannot be transferred to + other kinds of objects for use as a method. + + Author: christine@netscape.com + Date: 16 september 1997 +*/ + var SECTION = "number-003"; + var VERSION = "JS1_4"; + + var tc = 0; + var testcases = new Array(); + + startTest(); + writeHeaderToLog( SECTION + " Number.prototype.valueOf()"); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + VALUE_OF = Number.prototype.valueOf; + OBJECT = new String("Infinity"); + OBJECT.valueOf = VALUE_OF; + result = OBJECT.valueOf(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "Assigning Number.prototype.valueOf as the valueOf of a String object " + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/statement-001.js b/js/tests/ecma_2/Exceptions/statement-001.js new file mode 100644 index 000000000000..928a04d747d6 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/statement-001.js @@ -0,0 +1,44 @@ +/** + File Name: statement-001.js + Corresponds To: 12.6.2-9-n.js + ECMA Section: 12.6.2 The for Statement + + 1. first expression is not present. + 2. second expression is not present + 3. third expression is not present + + + Author: christine@netscape.com + Date: 15 september 1997 +*/ + + var SECTION = "statement-001.js"; +// var SECTION = "12.6.2-9-n"; + var VERSION = "ECMA_1"; + var TITLE = "The for statment"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + var tc = 0; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("for (i) {\n}"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "for(i) {}" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/statement-002.js b/js/tests/ecma_2/Exceptions/statement-002.js new file mode 100644 index 000000000000..4fddd4a4efa7 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/statement-002.js @@ -0,0 +1,68 @@ +/** + File Name: statement-002.js + Corresponds To: 12.6.3-1.js + ECMA Section: 12.6.3 The for...in Statement + Description: + The production IterationStatement : for ( LeftHandSideExpression in Expression ) + Statement is evaluated as follows: + + 1. Evaluate the Expression. + 2. Call GetValue(Result(1)). + 3. Call ToObject(Result(2)). + 4. Let C be "normal completion". + 5. Get the name of the next property of Result(3) that doesn't have the + DontEnum attribute. If there is no such property, go to step 14. + 6. Evaluate the LeftHandSideExpression ( it may be evaluated repeatedly). + 7. Call PutValue(Result(6), Result(5)). PutValue( V, W ): + 1. If Type(V) is not Reference, generate a runtime error. + 2. Call GetBase(V). + 3. If Result(2) is null, go to step 6. + 4. Call the [[Put]] method of Result(2), passing GetPropertyName(V) + for the property name and W for the value. + 5. Return. + 6. Call the [[Put]] method for the global object, passing + GetPropertyName(V) for the property name and W for the value. + 7. Return. + 8. Evaluate Statement. + 9. If Result(8) is a value completion, change C to be "normal completion + after value V" where V is the value carried by Result(8). + 10. If Result(8) is a break completion, go to step 14. + 11. If Result(8) is a continue completion, go to step 5. + 12. If Result(8) is a return completion, return Result(8). + 13. Go to step 5. + 14. Return C. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "statement-002"; + var VERSION = "JS1_4"; + var TITLE = "The for..in statment"; + + var testcases = new Array(); + var tc = 0; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + for ( var i, p in this) { + result += this[p]; + } + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "more than one member expression" + + " (threw " + exception +")", + expect, + result ); + + test(); diff --git a/js/tests/ecma_2/Exceptions/statement-003.js b/js/tests/ecma_2/Exceptions/statement-003.js new file mode 100644 index 000000000000..c7ffc7f9ba1b --- /dev/null +++ b/js/tests/ecma_2/Exceptions/statement-003.js @@ -0,0 +1,77 @@ +/** + File Name: statement-003 + Corresponds To: 12.6.3-7-n.js + ECMA Section: 12.6.3 The for...in Statement + Description: + The production IterationStatement : for ( LeftHandSideExpression in Expression ) + Statement is evaluated as follows: + + 1. Evaluate the Expression. + 2. Call GetValue(Result(1)). + 3. Call ToObject(Result(2)). + 4. Let C be "normal completion". + 5. Get the name of the next property of Result(3) that doesn't have the + DontEnum attribute. If there is no such property, go to step 14. + 6. Evaluate the LeftHandSideExpression ( it may be evaluated repeatedly). + 7. Call PutValue(Result(6), Result(5)). PutValue( V, W ): + 1. If Type(V) is not Reference, generate a runtime error. + 2. Call GetBase(V). + 3. If Result(2) is null, go to step 6. + 4. Call the [[Put]] method of Result(2), passing GetPropertyName(V) + for the property name and W for the value. + 5. Return. + 6. Call the [[Put]] method for the global object, passing + GetPropertyName(V) for the property name and W for the value. + 7. Return. + 8. Evaluate Statement. + 9. If Result(8) is a value completion, change C to be "normal completion + after value V" where V is the value carried by Result(8). + 10. If Result(8) is a break completion, go to step 14. + 11. If Result(8) is a continue completion, go to step 5. + 12. If Result(8) is a return completion, return Result(8). + 13. Go to step 5. + 14. Return C. + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "statement-003"; + var VERSION = "JS1_4"; + var TITLE = "The for..in statment"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + var tc = 0; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var o = new MyObject(); + var result = 0; + + eval("for ( this in o) {\n" + + "result += this[p];\n" + + "}\n"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "bad left-hand side expression" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyObject() { + this.value = 2; + this[0] = 4; + return this; +} diff --git a/js/tests/ecma_2/Exceptions/statement-004.js b/js/tests/ecma_2/Exceptions/statement-004.js new file mode 100644 index 000000000000..9eee4e605e9f --- /dev/null +++ b/js/tests/ecma_2/Exceptions/statement-004.js @@ -0,0 +1,49 @@ +/** + File Name: statement-004.js + Corresponds To: 12.6.3-1.js + ECMA Section: 12.6.3 The for...in Statement + Description: + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "statement-004"; + var VERSION = "JS1_4"; + var TITLE = "The for..in statment"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + var tc = 0; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var o = new MyObject(); + + eval("for ( \"a\" in o) {\n" + + "result += this[p];\n" + + "}"); + + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "bad left-hand side expression" + + " (threw " + exception +")", + expect, + result ); + + test(); + + +function MyObject() { + this.value = 2; + this[0] = 4; + return this; +} diff --git a/js/tests/ecma_2/Exceptions/statement-005.js b/js/tests/ecma_2/Exceptions/statement-005.js new file mode 100644 index 000000000000..50933b03b7e0 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/statement-005.js @@ -0,0 +1,48 @@ +/** + File Name: statement-005.js + Corresponds To: 12.6.3-8-n.js + ECMA Section: 12.6.3 The for...in Statement + Description: + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "statement-005"; + var VERSION = "JS1_4"; + var TITLE = "The for..in statment"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var testcases = new Array(); + var tc = 0; + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var o = new MyObject(); + result = 0; + + eval("for (1 in o) {\n" + + "result += this[p];" + + "}\n"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "bad left-hand side expression" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyObject() { + this.value = 2; + this[0] = 4; + return this; +} diff --git a/js/tests/ecma_2/Exceptions/statement-006.js b/js/tests/ecma_2/Exceptions/statement-006.js new file mode 100644 index 000000000000..1fe03259eac2 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/statement-006.js @@ -0,0 +1,48 @@ +/** + File Name: statement-006.js + Corresponds To: 12.6.3-9-n.js + ECMA Section: 12.6.3 The for...in Statement + Description: + + Author: christine@netscape.com + Date: 11 september 1997 +*/ + var SECTION = "statement-006"; + var VERSION = "JS1_4"; + var TITLE = "The for..in statment"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var o = new MyObject(); + var result = 0; + for ( var o in foo) { + result += this[o]; + } + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "object is not defined" + + " (threw " + exception +")", + expect, + result ); + + test(); + +function MyObject() { + this.value = 2; + this[0] = 4; + return this; +} \ No newline at end of file diff --git a/js/tests/ecma_2/Exceptions/statement-007.js b/js/tests/ecma_2/Exceptions/statement-007.js new file mode 100644 index 000000000000..506578b4d908 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/statement-007.js @@ -0,0 +1,39 @@ +/** + File Name: statement-007.js + Corresponds To: 12.7-1-n.js + ECMA Section: 12.7 The continue statement + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "statement-007"; + var VERSION = "JS1_4"; + var TITLE = "The continue statment"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("continue;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "continue outside of an iteration statement" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/statement-008.js b/js/tests/ecma_2/Exceptions/statement-008.js new file mode 100644 index 000000000000..e293964c1290 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/statement-008.js @@ -0,0 +1,39 @@ +/** + File Name: statement-008.js + Corresponds To: 12.8-1-n.js + ECMA Section: 12.8 The break statement + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "statement-008"; + var VERSION = "JS1_4"; + var TITLE = "The break in statment"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("break;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "break outside of an iteration statement" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/statement-009.js b/js/tests/ecma_2/Exceptions/statement-009.js new file mode 100644 index 000000000000..a0f65a29b4ea --- /dev/null +++ b/js/tests/ecma_2/Exceptions/statement-009.js @@ -0,0 +1,37 @@ +/** + File Name: 12.9-1-n.js + ECMA Section: 12.9 The return statement + Description: + + Author: christine@netscape.com + Date: 12 november 1997 +*/ + var SECTION = "12.9-1-n"; + var VERSION = "ECMA_1"; + + startTest(); + writeHeaderToLog( SECTION + " The return statement"); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + eval("return;"); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "return outside of a function" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/string-001.js b/js/tests/ecma_2/Exceptions/string-001.js new file mode 100644 index 000000000000..9ba39afb1a32 --- /dev/null +++ b/js/tests/ecma_2/Exceptions/string-001.js @@ -0,0 +1,50 @@ +/** + File Name: string-001.js + Corresponds To: 15.5.4.2-2-n.js + ECMA Section: 15.5.4.2 String.prototype.toString() + + Description: Returns this string value. Note that, for a String + object, the toString() method happens to return the same + thing as the valueOf() method. + + The toString function is not generic; it generates a + runtime error if its this value is not a String object. + Therefore it connot be transferred to the other kinds of + objects for use as a method. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + var SECTION = "string-001"; + var VERSION = "JS1_4"; + var TITLE = "String.prototype.toString"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + OBJECT = new Object(); + OBJECT.toString = String.prototype.toString(); + result = OBJECT.toString(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "OBJECT = new Object; "+ + " OBJECT.toString = String.prototype.toString; OBJECT.toString()" + + " (threw " + exception +")", + expect, + result ); + + test(); + diff --git a/js/tests/ecma_2/Exceptions/string-002.js b/js/tests/ecma_2/Exceptions/string-002.js new file mode 100644 index 000000000000..857271efe07e --- /dev/null +++ b/js/tests/ecma_2/Exceptions/string-002.js @@ -0,0 +1,49 @@ +/** + File Name: string-002.js + Corresponds To: 15.5.4.3-3-n.js + ECMA Section: 15.5.4.3 String.prototype.valueOf() + + Description: Returns this string value. + + The valueOf function is not generic; it generates a + runtime error if its this value is not a String object. + Therefore it connot be transferred to the other kinds of + objects for use as a method. + + Author: christine@netscape.com + Date: 1 october 1997 +*/ + var SECTION = "string-002"; + var VERSION = "JS1_4"; + var TITLE = "String.prototype.valueOf"; + + startTest(); + writeHeaderToLog( SECTION + " "+ TITLE); + + var tc = 0; + var testcases = new Array(); + + var result = "Failed"; + var exception = "No exception thrown"; + var expect = "Passed"; + + try { + var OBJECT =new Object(); + OBJECT.valueOf = String.prototype.valueOf; + result = OBJECT.valueOf(); + } catch ( e ) { + result = expect; + exception = e.toString(); + } + + testcases[tc++] = new TestCase( + SECTION, + "OBJECT = new Object; OBJECT.valueOf = String.prototype.valueOf;"+ + "result = OBJECT.valueOf();" + + " (threw " + exception +")", + expect, + result ); + + test(); + +