1/**
2 *  File Name:          while-003
3 *  ECMA Section:
4 *  Description:        while statement
5 *
6 *  The while expression evaluates to true, Statement returns abrupt completion.
7 *
8 *  Author:             christine@netscape.com
9 *  Date:               11 August 1998
10 */
11    var SECTION = "while-003";
12    var VERSION = "ECMA_2";
13    var TITLE   = "while statement";
14
15    startTest();
16    writeHeaderToLog( SECTION + " "+ TITLE);
17
18    var tc = 0;
19    var testcases = new Array();
20
21    DoWhile( new DoWhileObject(
22                "while expression is true",
23                true,
24                "result = \"pass\";" ));
25
26    DoWhile( new DoWhileObject(
27             "while expression is 1",
28             1,
29            "result = \"pass\";" ));
30
31    DoWhile( new DoWhileObject(
32             "while expression is new Boolean(false)",
33             new Boolean(false),
34            "result = \"pass\";" ));
35
36    DoWhile( new DoWhileObject(
37             "while expression is new Object()",
38             new Object(),
39            "result = \"pass\";" ));
40
41    DoWhile( new DoWhileObject(
42             "while expression is \"hi\"",
43             "hi",
44            "result = \"pass\";" ));
45/*
46    DoWhile( new DoWhileObject(
47             "while expression has a continue in it",
48             "true",
49             "if ( i == void 0 ) i = 0; result=\"pass\"; if ( ++i == 1 ) {continue;} else {break;} result=\"fail\";"
50             ));
51*/
52    test();
53
54    function DoWhileObject( d, e, s ) {
55        this.description = d;
56        this.whileExpression = e;
57        this.statements = s;
58    }
59
60    function DoWhile( object ) {
61        result = "fail:  statements in while block were not evaluated";
62
63        while ( expression = object.whileExpression ) {
64            eval( object.statements );
65            break;
66        }
67
68        // verify that the while expression was evaluated
69
70        testcases[tc++] = new TestCase(
71            SECTION,
72            "verify that while expression was evaluated (should be "+
73                object.whileExpression +")",
74            "pass",
75            (object.whileExpression == expression ||
76               ( isNaN(object.whileExpression) && isNaN(expression) )
77             ) ? "pass" : "fail" );
78
79        testcases[tc++] = new TestCase(
80            SECTION,
81            object.description,
82            "pass",
83            result );
84    }