18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    File Name:          date-001.js
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Corresponds To:     15.9.5.2-2.js
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ECMA Section:       15.9.5.2 Date.prototype.toString
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Description:
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    This function returns a string value. The contents of the string are
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    implementation dependent, but are intended to represent the Date in a
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    convenient, human-readable form in the current time zone.
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    The toString function is not generic; it generates a runtime error if its
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    this value is not a Date object. Therefore it cannot be transferred to
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    other kinds of objects for use as a method.
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    This verifies that calling toString on an object that is not a string
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    generates a runtime error.
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Author:             christine@netscape.com
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Date:               12 november 1997
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    var SECTION = "date-001";
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    var VERSION = "JS1_4";
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    var TITLE   = "Date.prototype.toString";
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    startTest();
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    writeHeaderToLog( SECTION + " "+ TITLE);
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    var tc = 0;
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    var testcases = new Array();
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    var result = "Failed";
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    var exception = "No exception thrown";
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    var expect = "Passed";
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    try {
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    var OBJ = new MyObject( new Date(0) );
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        result = OBJ.toString();
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    } catch ( e ) {
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        result = expect;
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        exception = e.toString();
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    testcases[tc++] = new TestCase(
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        SECTION,
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        "OBJECT = new MyObject( new Date(0)) ; result = OBJ.toString()" +
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        " (threw " + exception +")",
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        expect,
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        result );
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    test();
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction MyObject( value ) {
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    this.value = value;
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    this.valueOf = new Function( "return this.value" );
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    this.toString = Date.prototype.toString;
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return this;
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
58