[webkit-changes] cvs commit: LayoutTests/fast/js/kde/resources Array.js Boolean.js Date.js Error.js GlobalObject.js KNOWN_FAILURES Number.js Object.js Prototype.js README RegExp.js StringObject.js assignments.js base.js cast.js comment-1.js comment-2.js completion.js conditional.js const.js constructor_length.js crash-1.js crash-2.js delete.js empty.js encode_decode_uri.js eval.js evil-n.js exception_propagation.js exceptions.js function.js function_arguments.js function_constructor.js function_length.js garbage-n.js inbuilt_function_proto.js inbuilt_function_tostring.js iteration.js j-comment-3.js j-comment-4.js literals.js math.js md5-1.js md5-2.js object_prototype.js object_prototype_tostring.js operators.js parse.js prototype_length.js prototype_proto.js scope.js shell.js statements.js string-1-n.js string-2-n.js var_decl_init.js

Maciej mjs at opensource.apple.com
Mon Dec 26 15:07:40 PST 2005


mjs         05/12/26 15:07:39

  Modified:    .        ChangeLog
  Added:       fast/js/kde Array-expected.txt Array.html
                        Boolean-expected.txt Boolean.html Date-expected.txt
                        Date.html Error-expected.txt Error.html
                        GlobalObject-expected.txt GlobalObject.html
                        Number-expected.txt Number.html Object-expected.txt
                        Object.html Prototype-expected.txt Prototype.html
                        RegExp-expected.txt RegExp.html
                        StringObject-expected.txt StringObject.html
                        assignments-expected.txt assignments.html
                        cast-expected.txt cast.html comment-1-expected.txt
                        comment-1.html comment-2-expected.txt
                        comment-2.html completion-expected.txt
                        completion.html conditional-expected.txt
                        conditional.html const-expected.txt const.html
                        constructor_length-expected.txt
                        constructor_length.html crash-1-expected.txt
                        crash-1.html crash-2-expected.txt crash-2.html
                        delete-expected.txt delete.html empty-expected.txt
                        empty.html encode_decode_uri-expected.txt
                        encode_decode_uri.html eval-expected.txt eval.html
                        evil-n-expected.txt evil-n.html
                        exception_propagation-expected.txt
                        exception_propagation.html exceptions-expected.txt
                        exceptions.html function-expected.txt function.html
                        function_arguments-expected.txt
                        function_arguments.html
                        function_constructor-expected.txt
                        function_constructor.html
                        function_length-expected.txt function_length.html
                        garbage-n-expected.txt garbage-n.html
                        inbuilt_function_proto-expected.txt
                        inbuilt_function_proto.html
                        inbuilt_function_tostring-expected.txt
                        inbuilt_function_tostring.html
                        iteration-expected.txt iteration.html
                        j-comment-3-expected.txt j-comment-3.html
                        j-comment-4-expected.txt j-comment-4.html
                        literals-expected.txt literals.html
                        math-expected.txt math.html md5-1-expected.txt
                        md5-1.html md5-2-expected.txt md5-2.html
                        object_prototype-expected.txt object_prototype.html
                        object_prototype_tostring-expected.txt
                        object_prototype_tostring.html
                        operators-expected.txt operators.html
                        parse-expected.txt parse.html
                        prototype_length-expected.txt prototype_length.html
                        prototype_proto-expected.txt prototype_proto.html
                        scope-expected.txt scope.html
                        statements-expected.txt statements.html
                        string-1-n-expected.txt string-1-n.html
                        string-2-n-expected.txt string-2-n.html
                        var_decl_init-expected.txt var_decl_init.html
               fast/js/kde/resources Array.js Boolean.js Date.js Error.js
                        GlobalObject.js KNOWN_FAILURES Number.js Object.js
                        Prototype.js README RegExp.js StringObject.js
                        assignments.js base.js cast.js comment-1.js
                        comment-2.js completion.js conditional.js const.js
                        constructor_length.js crash-1.js crash-2.js
                        delete.js empty.js encode_decode_uri.js eval.js
                        evil-n.js exception_propagation.js exceptions.js
                        function.js function_arguments.js
                        function_constructor.js function_length.js
                        garbage-n.js inbuilt_function_proto.js
                        inbuilt_function_tostring.js iteration.js
                        j-comment-3.js j-comment-4.js literals.js math.js
                        md5-1.js md5-2.js object_prototype.js
                        object_prototype_tostring.js operators.js parse.js
                        prototype_length.js prototype_proto.js scope.js
                        shell.js statements.js string-1-n.js string-2-n.js
                        var_decl_init.js
  Log:
          Rubber stamped by Geoff.
  
  	- land JavaScript tests from the kde version of kjs
  
          * fast/js/kde/Array-expected.txt: Added.
          * fast/js/kde/Array.html: Added.
          * fast/js/kde/Boolean-expected.txt: Added.
          * fast/js/kde/Boolean.html: Added.
          * fast/js/kde/Date-expected.txt: Added.
          * fast/js/kde/Date.html: Added.
          * fast/js/kde/Error-expected.txt: Added.
          * fast/js/kde/Error.html: Added.
          * fast/js/kde/GlobalObject-expected.txt: Added.
          * fast/js/kde/GlobalObject.html: Added.
          * fast/js/kde/Number-expected.txt: Added.
          * fast/js/kde/Number.html: Added.
          * fast/js/kde/Object-expected.txt: Added.
          * fast/js/kde/Object.html: Added.
          * fast/js/kde/Prototype-expected.txt: Added.
          * fast/js/kde/Prototype.html: Added.
          * fast/js/kde/RegExp-expected.txt: Added.
          * fast/js/kde/RegExp.html: Added.
          * fast/js/kde/StringObject-expected.txt: Added.
          * fast/js/kde/StringObject.html: Added.
          * fast/js/kde/assignments-expected.txt: Added.
          * fast/js/kde/assignments.html: Added.
          * fast/js/kde/cast-expected.txt: Added.
          * fast/js/kde/cast.html: Added.
          * fast/js/kde/comment-1-expected.txt: Added.
          * fast/js/kde/comment-1.html: Added.
          * fast/js/kde/comment-2-expected.txt: Added.
          * fast/js/kde/comment-2.html: Added.
          * fast/js/kde/completion-expected.txt: Added.
          * fast/js/kde/completion.html: Added.
          * fast/js/kde/conditional-expected.txt: Added.
          * fast/js/kde/conditional.html: Added.
          * fast/js/kde/const-expected.txt: Added.
          * fast/js/kde/const.html: Added.
          * fast/js/kde/constructor_length-expected.txt: Added.
          * fast/js/kde/constructor_length.html: Added.
          * fast/js/kde/crash-1-expected.txt: Added.
          * fast/js/kde/crash-1.html: Added.
          * fast/js/kde/crash-2-expected.txt: Added.
          * fast/js/kde/crash-2.html: Added.
          * fast/js/kde/delete-expected.txt: Added.
          * fast/js/kde/delete.html: Added.
          * fast/js/kde/empty-expected.txt: Added.
          * fast/js/kde/empty.html: Added.
          * fast/js/kde/encode_decode_uri-expected.txt: Added.
          * fast/js/kde/encode_decode_uri.html: Added.
          * fast/js/kde/eval-expected.txt: Added.
          * fast/js/kde/eval.html: Added.
          * fast/js/kde/evil-n-expected.txt: Added.
          * fast/js/kde/evil-n.html: Added.
          * fast/js/kde/exception_propagation-expected.txt: Added.
          * fast/js/kde/exception_propagation.html: Added.
          * fast/js/kde/exceptions-expected.txt: Added.
          * fast/js/kde/exceptions.html: Added.
          * fast/js/kde/function-expected.txt: Added.
          * fast/js/kde/function.html: Added.
          * fast/js/kde/function_arguments-expected.txt: Added.
          * fast/js/kde/function_arguments.html: Added.
          * fast/js/kde/function_constructor-expected.txt: Added.
          * fast/js/kde/function_constructor.html: Added.
          * fast/js/kde/function_length-expected.txt: Added.
          * fast/js/kde/function_length.html: Added.
          * fast/js/kde/garbage-n-expected.txt: Added.
          * fast/js/kde/garbage-n.html: Added.
          * fast/js/kde/inbuilt_function_proto-expected.txt: Added.
          * fast/js/kde/inbuilt_function_proto.html: Added.
          * fast/js/kde/inbuilt_function_tostring-expected.txt: Added.
          * fast/js/kde/inbuilt_function_tostring.html: Added.
          * fast/js/kde/iteration-expected.txt: Added.
          * fast/js/kde/iteration.html: Added.
          * fast/js/kde/j-comment-3-expected.txt: Added.
          * fast/js/kde/j-comment-3.html: Added.
          * fast/js/kde/j-comment-4-expected.txt: Added.
          * fast/js/kde/j-comment-4.html: Added.
          * fast/js/kde/literals-expected.txt: Added.
          * fast/js/kde/literals.html: Added.
          * fast/js/kde/math-expected.txt: Added.
          * fast/js/kde/math.html: Added.
          * fast/js/kde/md5-1-expected.txt: Added.
          * fast/js/kde/md5-1.html: Added.
          * fast/js/kde/md5-2-expected.txt: Added.
          * fast/js/kde/md5-2.html: Added.
          * fast/js/kde/object_prototype-expected.txt: Added.
          * fast/js/kde/object_prototype.html: Added.
          * fast/js/kde/object_prototype_tostring-expected.txt: Added.
          * fast/js/kde/object_prototype_tostring.html: Added.
          * fast/js/kde/operators-expected.txt: Added.
          * fast/js/kde/operators.html: Added.
          * fast/js/kde/parse-expected.txt: Added.
          * fast/js/kde/parse.html: Added.
          * fast/js/kde/prototype_length-expected.txt: Added.
          * fast/js/kde/prototype_length.html: Added.
          * fast/js/kde/prototype_proto-expected.txt: Added.
          * fast/js/kde/prototype_proto.html: Added.
          * fast/js/kde/resources/Array.js: Added.
          * fast/js/kde/resources/Boolean.js: Added.
          * fast/js/kde/resources/Date.js: Added.
          * fast/js/kde/resources/Error.js: Added.
          * fast/js/kde/resources/GlobalObject.js: Added.
          * fast/js/kde/resources/KNOWN_FAILURES: Added.
          * fast/js/kde/resources/Number.js: Added.
          * fast/js/kde/resources/Object.js: Added.
          * fast/js/kde/resources/Prototype.js: Added.
          * fast/js/kde/resources/README: Added.
          * fast/js/kde/resources/RegExp.js: Added.
          * fast/js/kde/resources/StringObject.js: Added.
          * fast/js/kde/resources/assignments.js: Added.
          * fast/js/kde/resources/base.js: Added.
          * fast/js/kde/resources/cast.js: Added.
          * fast/js/kde/resources/comment-1.js: Added.
          * fast/js/kde/resources/comment-2.js: Added.
          * fast/js/kde/resources/completion.js: Added.
          * fast/js/kde/resources/conditional.js: Added.
          * fast/js/kde/resources/const.js: Added.
          * fast/js/kde/resources/constructor_length.js: Added.
          * fast/js/kde/resources/crash-1.js: Added.
          * fast/js/kde/resources/crash-2.js: Added.
          * fast/js/kde/resources/delete.js: Added.
          * fast/js/kde/resources/empty.js: Added.
          * fast/js/kde/resources/encode_decode_uri.js: Added.
          * fast/js/kde/resources/eval.js: Added.
          * fast/js/kde/resources/evil-n.js: Added.
          * fast/js/kde/resources/exception_propagation.js: Added.
          * fast/js/kde/resources/exceptions.js: Added.
          * fast/js/kde/resources/function.js: Added.
          * fast/js/kde/resources/function_arguments.js: Added.
          * fast/js/kde/resources/function_constructor.js: Added.
          * fast/js/kde/resources/function_length.js: Added.
          * fast/js/kde/resources/garbage-n.js: Added.
          * fast/js/kde/resources/inbuilt_function_proto.js: Added.
          * fast/js/kde/resources/inbuilt_function_tostring.js: Added.
          * fast/js/kde/resources/iteration.js: Added.
          * fast/js/kde/resources/j-comment-3.js: Added.
          * fast/js/kde/resources/j-comment-4.js: Added.
          * fast/js/kde/resources/literals.js: Added.
          * fast/js/kde/resources/math.js: Added.
          * fast/js/kde/resources/md5-1.js: Added.
          * fast/js/kde/resources/md5-2.js: Added.
          * fast/js/kde/resources/object_prototype.js: Added.
          * fast/js/kde/resources/object_prototype_tostring.js: Added.
          * fast/js/kde/resources/operators.js: Added.
          * fast/js/kde/resources/parse.js: Added.
          * fast/js/kde/resources/prototype_length.js: Added.
          * fast/js/kde/resources/prototype_proto.js: Added.
          * fast/js/kde/resources/scope.js: Added.
          * fast/js/kde/resources/shell.js: Added.
          * fast/js/kde/resources/statements.js: Added.
          * fast/js/kde/resources/string-1-n.js: Added.
          * fast/js/kde/resources/string-2-n.js: Added.
          * fast/js/kde/resources/var_decl_init.js: Added.
          * fast/js/kde/scope-expected.txt: Added.
          * fast/js/kde/scope.html: Added.
          * fast/js/kde/statements-expected.txt: Added.
          * fast/js/kde/statements.html: Added.
          * fast/js/kde/string-1-n-expected.txt: Added.
          * fast/js/kde/string-1-n.html: Added.
          * fast/js/kde/string-2-n-expected.txt: Added.
          * fast/js/kde/string-2-n.html: Added.
          * fast/js/kde/var_decl_init-expected.txt: Added.
          * fast/js/kde/var_decl_init.html: Added.
  
  Revision  Changes    Path
  1.186     +167 -0    LayoutTests/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/LayoutTests/ChangeLog,v
  retrieving revision 1.185
  retrieving revision 1.186
  diff -u -r1.185 -r1.186
  --- ChangeLog	25 Dec 2005 05:11:41 -0000	1.185
  +++ ChangeLog	26 Dec 2005 23:07:04 -0000	1.186
  @@ -1,3 +1,170 @@
  +2005-12-26  Maciej Stachowiak  <mjs at apple.com>
  +
  +        Rubber stamped by Geoff.
  +
  +	- land JavaScript tests from the kde version of kjs
  +
  +        * fast/js/kde/Array-expected.txt: Added.
  +        * fast/js/kde/Array.html: Added.
  +        * fast/js/kde/Boolean-expected.txt: Added.
  +        * fast/js/kde/Boolean.html: Added.
  +        * fast/js/kde/Date-expected.txt: Added.
  +        * fast/js/kde/Date.html: Added.
  +        * fast/js/kde/Error-expected.txt: Added.
  +        * fast/js/kde/Error.html: Added.
  +        * fast/js/kde/GlobalObject-expected.txt: Added.
  +        * fast/js/kde/GlobalObject.html: Added.
  +        * fast/js/kde/Number-expected.txt: Added.
  +        * fast/js/kde/Number.html: Added.
  +        * fast/js/kde/Object-expected.txt: Added.
  +        * fast/js/kde/Object.html: Added.
  +        * fast/js/kde/Prototype-expected.txt: Added.
  +        * fast/js/kde/Prototype.html: Added.
  +        * fast/js/kde/RegExp-expected.txt: Added.
  +        * fast/js/kde/RegExp.html: Added.
  +        * fast/js/kde/StringObject-expected.txt: Added.
  +        * fast/js/kde/StringObject.html: Added.
  +        * fast/js/kde/assignments-expected.txt: Added.
  +        * fast/js/kde/assignments.html: Added.
  +        * fast/js/kde/cast-expected.txt: Added.
  +        * fast/js/kde/cast.html: Added.
  +        * fast/js/kde/comment-1-expected.txt: Added.
  +        * fast/js/kde/comment-1.html: Added.
  +        * fast/js/kde/comment-2-expected.txt: Added.
  +        * fast/js/kde/comment-2.html: Added.
  +        * fast/js/kde/completion-expected.txt: Added.
  +        * fast/js/kde/completion.html: Added.
  +        * fast/js/kde/conditional-expected.txt: Added.
  +        * fast/js/kde/conditional.html: Added.
  +        * fast/js/kde/const-expected.txt: Added.
  +        * fast/js/kde/const.html: Added.
  +        * fast/js/kde/constructor_length-expected.txt: Added.
  +        * fast/js/kde/constructor_length.html: Added.
  +        * fast/js/kde/crash-1-expected.txt: Added.
  +        * fast/js/kde/crash-1.html: Added.
  +        * fast/js/kde/crash-2-expected.txt: Added.
  +        * fast/js/kde/crash-2.html: Added.
  +        * fast/js/kde/delete-expected.txt: Added.
  +        * fast/js/kde/delete.html: Added.
  +        * fast/js/kde/empty-expected.txt: Added.
  +        * fast/js/kde/empty.html: Added.
  +        * fast/js/kde/encode_decode_uri-expected.txt: Added.
  +        * fast/js/kde/encode_decode_uri.html: Added.
  +        * fast/js/kde/eval-expected.txt: Added.
  +        * fast/js/kde/eval.html: Added.
  +        * fast/js/kde/evil-n-expected.txt: Added.
  +        * fast/js/kde/evil-n.html: Added.
  +        * fast/js/kde/exception_propagation-expected.txt: Added.
  +        * fast/js/kde/exception_propagation.html: Added.
  +        * fast/js/kde/exceptions-expected.txt: Added.
  +        * fast/js/kde/exceptions.html: Added.
  +        * fast/js/kde/function-expected.txt: Added.
  +        * fast/js/kde/function.html: Added.
  +        * fast/js/kde/function_arguments-expected.txt: Added.
  +        * fast/js/kde/function_arguments.html: Added.
  +        * fast/js/kde/function_constructor-expected.txt: Added.
  +        * fast/js/kde/function_constructor.html: Added.
  +        * fast/js/kde/function_length-expected.txt: Added.
  +        * fast/js/kde/function_length.html: Added.
  +        * fast/js/kde/garbage-n-expected.txt: Added.
  +        * fast/js/kde/garbage-n.html: Added.
  +        * fast/js/kde/inbuilt_function_proto-expected.txt: Added.
  +        * fast/js/kde/inbuilt_function_proto.html: Added.
  +        * fast/js/kde/inbuilt_function_tostring-expected.txt: Added.
  +        * fast/js/kde/inbuilt_function_tostring.html: Added.
  +        * fast/js/kde/iteration-expected.txt: Added.
  +        * fast/js/kde/iteration.html: Added.
  +        * fast/js/kde/j-comment-3-expected.txt: Added.
  +        * fast/js/kde/j-comment-3.html: Added.
  +        * fast/js/kde/j-comment-4-expected.txt: Added.
  +        * fast/js/kde/j-comment-4.html: Added.
  +        * fast/js/kde/literals-expected.txt: Added.
  +        * fast/js/kde/literals.html: Added.
  +        * fast/js/kde/math-expected.txt: Added.
  +        * fast/js/kde/math.html: Added.
  +        * fast/js/kde/md5-1-expected.txt: Added.
  +        * fast/js/kde/md5-1.html: Added.
  +        * fast/js/kde/md5-2-expected.txt: Added.
  +        * fast/js/kde/md5-2.html: Added.
  +        * fast/js/kde/object_prototype-expected.txt: Added.
  +        * fast/js/kde/object_prototype.html: Added.
  +        * fast/js/kde/object_prototype_tostring-expected.txt: Added.
  +        * fast/js/kde/object_prototype_tostring.html: Added.
  +        * fast/js/kde/operators-expected.txt: Added.
  +        * fast/js/kde/operators.html: Added.
  +        * fast/js/kde/parse-expected.txt: Added.
  +        * fast/js/kde/parse.html: Added.
  +        * fast/js/kde/prototype_length-expected.txt: Added.
  +        * fast/js/kde/prototype_length.html: Added.
  +        * fast/js/kde/prototype_proto-expected.txt: Added.
  +        * fast/js/kde/prototype_proto.html: Added.
  +        * fast/js/kde/resources/Array.js: Added.
  +        * fast/js/kde/resources/Boolean.js: Added.
  +        * fast/js/kde/resources/Date.js: Added.
  +        * fast/js/kde/resources/Error.js: Added.
  +        * fast/js/kde/resources/GlobalObject.js: Added.
  +        * fast/js/kde/resources/KNOWN_FAILURES: Added.
  +        * fast/js/kde/resources/Number.js: Added.
  +        * fast/js/kde/resources/Object.js: Added.
  +        * fast/js/kde/resources/Prototype.js: Added.
  +        * fast/js/kde/resources/README: Added.
  +        * fast/js/kde/resources/RegExp.js: Added.
  +        * fast/js/kde/resources/StringObject.js: Added.
  +        * fast/js/kde/resources/assignments.js: Added.
  +        * fast/js/kde/resources/base.js: Added.
  +        * fast/js/kde/resources/cast.js: Added.
  +        * fast/js/kde/resources/comment-1.js: Added.
  +        * fast/js/kde/resources/comment-2.js: Added.
  +        * fast/js/kde/resources/completion.js: Added.
  +        * fast/js/kde/resources/conditional.js: Added.
  +        * fast/js/kde/resources/const.js: Added.
  +        * fast/js/kde/resources/constructor_length.js: Added.
  +        * fast/js/kde/resources/crash-1.js: Added.
  +        * fast/js/kde/resources/crash-2.js: Added.
  +        * fast/js/kde/resources/delete.js: Added.
  +        * fast/js/kde/resources/empty.js: Added.
  +        * fast/js/kde/resources/encode_decode_uri.js: Added.
  +        * fast/js/kde/resources/eval.js: Added.
  +        * fast/js/kde/resources/evil-n.js: Added.
  +        * fast/js/kde/resources/exception_propagation.js: Added.
  +        * fast/js/kde/resources/exceptions.js: Added.
  +        * fast/js/kde/resources/function.js: Added.
  +        * fast/js/kde/resources/function_arguments.js: Added.
  +        * fast/js/kde/resources/function_constructor.js: Added.
  +        * fast/js/kde/resources/function_length.js: Added.
  +        * fast/js/kde/resources/garbage-n.js: Added.
  +        * fast/js/kde/resources/inbuilt_function_proto.js: Added.
  +        * fast/js/kde/resources/inbuilt_function_tostring.js: Added.
  +        * fast/js/kde/resources/iteration.js: Added.
  +        * fast/js/kde/resources/j-comment-3.js: Added.
  +        * fast/js/kde/resources/j-comment-4.js: Added.
  +        * fast/js/kde/resources/literals.js: Added.
  +        * fast/js/kde/resources/math.js: Added.
  +        * fast/js/kde/resources/md5-1.js: Added.
  +        * fast/js/kde/resources/md5-2.js: Added.
  +        * fast/js/kde/resources/object_prototype.js: Added.
  +        * fast/js/kde/resources/object_prototype_tostring.js: Added.
  +        * fast/js/kde/resources/operators.js: Added.
  +        * fast/js/kde/resources/parse.js: Added.
  +        * fast/js/kde/resources/prototype_length.js: Added.
  +        * fast/js/kde/resources/prototype_proto.js: Added.
  +        * fast/js/kde/resources/scope.js: Added.
  +        * fast/js/kde/resources/shell.js: Added.
  +        * fast/js/kde/resources/statements.js: Added.
  +        * fast/js/kde/resources/string-1-n.js: Added.
  +        * fast/js/kde/resources/string-2-n.js: Added.
  +        * fast/js/kde/resources/var_decl_init.js: Added.
  +        * fast/js/kde/scope-expected.txt: Added.
  +        * fast/js/kde/scope.html: Added.
  +        * fast/js/kde/statements-expected.txt: Added.
  +        * fast/js/kde/statements.html: Added.
  +        * fast/js/kde/string-1-n-expected.txt: Added.
  +        * fast/js/kde/string-1-n.html: Added.
  +        * fast/js/kde/string-2-n-expected.txt: Added.
  +        * fast/js/kde/string-2-n.html: Added.
  +        * fast/js/kde/var_decl_init-expected.txt: Added.
  +        * fast/js/kde/var_decl_init.html: Added.
  +
   2005-12-24  Mitz Pettel  <opendarwin.org at mitzpettel.com>
   
           Reviewed by eseidel.
  
  
  
  1.1                  LayoutTests/fast/js/kde/Array-expected.txt
  
  Index: Array-expected.txt
  ===================================================================
  PASS Array().length is 0
  PASS (new Array()).length is 0
  PASS (new Array(3)).length is 3
  PASS (new Array(11, 22)).length is 2
  PASS (new Array(11, 22))[0] is 11
  PASS Array(11, 22)[1] is 22
  PASS (new Array(11, 22))[3] is undefined.
  PASS String(new Array(11, 22)) is '11,22'
  PASS var a = []; a[0] = 33; a[0] is 33
  PASS var a = []; a[0] = 33; a.length is 1
  PASS var a = [11, 22]; a.length = 1; String(a); is '11'
  PASS var a = [11, 22]; a.length = 1; a.length; is 1
  FAIL caught; should be true. Was false
  FAIL ename should be RangeError. Was 
  PASS caught; is true
  PASS ename is 'RangeError'
  PASS var a = [11, 22]; a.length = 1; a[1]; is undefined.
  PASS Array().toString() is ''
  PASS Array(3).toString() is ',,'
  PASS Array(11, 22).toString() is '11,22'
  PASS String(Array(11, 22).concat(33)) is '11,22,33'
  PASS String(Array(2).concat(33, 44)) is ',,33,44'
  PASS String(Array(2).concat(Array(2))) is ',,,'
  PASS String(Array(11,22).concat(Array(33,44))) is '11,22,33,44'
  PASS String(Array(1,2).concat(3,Array(4,5))) is '1,2,3,4,5'
  PASS var a = new Array(1,2,3); delete a[1]; String(a.concat(4)) is '1,,3,4'
  PASS [1,2,3,4].slice(1, 3).toString() is '2,3'
  PASS [1,2,3,4].slice(-3, -1).toString() is '2,3'
  PASS [1,2].slice(-9, 0).length is 0
  PASS [1,2].slice(1).toString() is '2'
  PASS [1,2].slice().toString() is '1,2'
  PASS (new Array('a')).length is 1
  PASS (new Array('a'))[0] is 'a'
  PASS (new Array('a'))[1] is undefined.
  PASS Array('a').length is 1
  PASS Array('a')[0] is 'a'
  PASS String(Array()) is ''
  PASS String(Array('a','b')) is 'a,b'
  PASS [].length is 0
  PASS ['a'].length is 1
  PASS ['a'][0] is 'a'
  PASS ['a',,'c'][2] is 'c'
  PASS forInSum([]) is ''
  PASS forInSum(Array()) is ''
  PASS forInSum(Array('a')) is 'a'
  PASS forInSum(a0) is ''
  PASS forInSum(a1) is 'a'
  PASS String([3,1,'2'].sort()) is '1,2,3'
  PASS String([,'x','aa'].sort()) is 'aa,x,'
  PASS var a = ['aa', 'b', 'cccc', 'ddd']; String(a.sort(comp)) is 'b,aa,ddd,cccc'
  PASS [0, Infinity].sort(function(a, b) { return a - b }).toString() is '0,Infinity'
  PASS [].unshift('a') is 1
  PASS ['c'].unshift('a', 'b') is 3
  PASS var a = []; a.unshift('a'); String(a) is 'a'
  PASS var a = ['c']; a.unshift('a', 'b'); String(a) is 'a,b,c'
  PASS String(['a', 'b', 'c'].splice(1, 2, 'x', 'y')) is 'b,c'
  FAIL arr.length should be 40. Was 0
  FAIL arr[maxint] should be test. Was undefined
  FAIL arr.length should be 40. Was 0
  PASS arr[maxint] is undefined
  PASS arr.length is maxint
  PASS arr[maxint-1] is "test2"
  FAIL propnames.length should be 3. Was 4
  PASS propnames[0] is '0'
  PASS propnames[1] is '1'
  FAIL propnames[2] should be 2. Was 1
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/Array.html
  
  Index: Array.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/Array.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/Boolean-expected.txt
  
  Index: Boolean-expected.txt
  ===================================================================
  PASS Boolean() is false
  PASS Boolean(true) is true
  PASS Boolean(false) is false
  PASS (new Boolean(true)).valueOf() is true
  PASS (new Boolean(false)).valueOf() is false
  PASS (new Boolean(Boolean(true))).valueOf() is true
  PASS true.valueOf() === true is true
  PASS false.toString() === 'false' is true
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/Boolean.html
  
  Index: Boolean.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/Boolean.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/Date-expected.txt
  
  Index: Date-expected.txt
  ===================================================================
  Start Of Test
  
  PASS isNaN(Date.prototype.valueOf()) is true
  PASS d.getMinutes() is 45
  PASS d.getUTCMinutes() is 45
  PASS d.getDay() is 6
  PASS d.getMonth() is 2
  PASS d.getFullYear() is 2002
  PASS Number(d) is 1017492323515
  PASS Boolean(d) is true
  PASS (new Date(100)).valueOf() is 100
  PASS (new Date(true)).valueOf() is 1
  PASS (new Date(false)).valueOf() is 0
  PASS typeof (new Date()).toString() is 'string'
  PASS typeof ('' + new Date()) is 'string'
  PASS typeof (new Date() + new Date()) is 'string'
  PASS isNaN(Number(new Date('foo'))) is true
  PASS new Date(10001) - new Date(10000) is 1
  PASS '' - new Date(10000) is -10000
  PASS 2 * new Date(10000) is 20000
  PASS var d = new Date(); d == String(d) is true
  PASS d0.getHours() is 0
  PASS d1.getUTCHours() is 0
  PASS d1.getUTCHours() is 11
  PASS d2.getMilliseconds() is 11
  PASS d2.getSeconds() is 11
  PASS d2.getMilliseconds() is 22
  PASS d2.getMinutes() is 11
  PASS d2.getSeconds() is 22
  PASS d2.getMilliseconds() is 33
  PASS d2.getHours() is 11
  PASS d2.getMinutes() is 22
  PASS d2.getSeconds() is 33
  PASS d2.getMilliseconds() is 44
  PASS d2.getMonth() is 3
  PASS d2.getDate() is 20
  PASS d2.getFullYear() is 1976
  PASS d2.getMonth() is 3
  PASS d2.getDate() is 20
  PASS d2.setYear(0), d2.getFullYear() is 1900
  PASS d2.setYear(1), d2.getFullYear() is 1901
  PASS d2.setYear(99), d2.getFullYear() is 1999
  FAIL d2.setYear(100), d2.getFullYear() should be 100. Was 2000
  PASS d2.setYear(2050), d2.getFullYear() is 2050
  FAIL d2.setYear(1899), d2.getFullYear() should be 1899. Was 3799
  PASS d2.setYear(2000), d2.getFullYear() is 2000
  PASS d2.setYear(2100), d2.getFullYear() is 2100
  PASS dateRef.getDay() is 6
  PASS dateRef.getDate() is 5
  PASS dateRef.getMonth() is 10
  PASS dateRef.getYear() is 94
  PASS dateRef.getFullYear() is 1994
  PASS dateRef.getMinutes() is 15
  PASS dateRef.getSeconds() is 30
  PASS dateRef.getUTCDay() is 6
  PASS dateRef.getUTCDate() is 5
  PASS dateRef.getUTCMonth() is 10
  PASS dateRef.getUTCFullYear() is 1994
  PASS dateRef.getUTCHours() is 13
  PASS dateRef.getUTCMinutes() is 15
  PASS dateRef.getUTCSeconds() is 30
  FAIL d.toUTCString() should be Sat, 05 Nov 1994 13:15:30 GMT. Was Invalid Date
  FAIL d.toUTCString().replace('GMT', '+0000') should be Sat, 05 Nov 1994 13:15:30 +0000. Was Invalid Date
  FAIL dateRef.getDay() should be 4. Was 3
  FAIL dateRef.getDate() should be 5. Was 4
  PASS dateRef.getMonth() is 10
  PASS dateRef.getFullYear() is 2065
  PASS dateRef.getMinutes() is 15
  PASS dateRef.getSeconds() is 30
  FAIL dateRef.getUTCDay() should be 4. Was 3
  FAIL dateRef.getUTCDate() should be 5. Was 4
  PASS dateRef.getUTCMonth() is 10
  PASS dateRef.getUTCFullYear() is 2065
  PASS dateRef.getUTCHours() is 13
  PASS dateRef.getUTCMinutes() is 15
  PASS dateRef.getUTCSeconds() is 30
  FAIL dateRef.getDay() should be 3. Was 2
  FAIL dateRef.getDate() should be 5. Was 4
  PASS dateRef.getMonth() is 10
  PASS dateRef.getFullYear() is 2064
  PASS dateRef.getMinutes() is 15
  PASS dateRef.getSeconds() is 30
  FAIL dateRef.getUTCDay() should be 3. Was 2
  FAIL dateRef.getUTCDate() should be 5. Was 4
  PASS dateRef.getUTCMonth() is 10
  PASS dateRef.getUTCFullYear() is 2064
  PASS dateRef.getUTCHours() is 13
  PASS dateRef.getUTCMinutes() is 15
  PASS dateRef.getUTCSeconds() is 30
  FAIL d.toUTCString().replace('GMT', '+0000') should be Tue, 05 Nov 2024 13:15:30 +0000. Was Invalid Date
  FAIL d.toUTCString().replace('GMT', '+0000') should be Mon, 05 Nov 2040 13:15:30 +0000. Was Invalid Date
  FAIL d.toUTCString().replace('GMT', '+0000') should be Fri, 05 Nov 2100 13:15:30 +0000. Was Invalid Date
  FAIL d.toUTCString().replace('GMT', '+0000') should be Thu, 04 Nov 2004 22:15:30 +0000. Was Invalid Date
  PASS (new Date('Dec 25 1995 1:30 PM UTC')).valueOf() is 819898200000
  PASS (new Date('Dec 25 1995 1:30 pm UTC')).valueOf() is 819898200000
  PASS (new Date('Dec 25 1995 1:30 AM UTC')).valueOf() is 819855000000
  PASS (new Date('Dec 25 1995 1:30 am UTC')).valueOf() is 819855000000
  PASS (new Date('Dec 25 1995 12:00 PM UTC')).valueOf() is 819892800000
  PASS (new Date('Dec 25 1995 12:00 AM UTC')).valueOf() is 819849600000
  PASS (new Date('Dec 25 1995 00:00 AM UTC')).valueOf() is 819849600000
  PASS (new Date('Dec 25 1995 00:00 PM UTC')).valueOf() is 819892800000
  PASS isNaN(new Date('Dec 25 1995 13:30 AM UTC')).valueOf() is true
  PASS new Date('Sat, 01 Dec 2000 08:00:00 GMT').getMonth() is 11
  PASS new Date('01 Jan 99 22:00 +0100').getFullYear() is 1999
  PASS new Date('May 09 1999 13:12:40 GMT').getDate() is 9
  PASS new Date('Wednesday February 09 1999 13:12:40 GMT').getMonth() is 1
  PASS new Date('Wednesday January 09 1999 13:12:40 GMT').getFullYear() is 1999
  PASS new Date('Wednesday January 09 13:12:40 GMT 1999').getFullYear() is 1999
  PASS new Date('Wednesday January 06 13:12:40 GMT 2100').getFullYear() is 2100
  PASS (new Date('\n21\rFeb\f\v\t 2004')).getFullYear() is 2004
  PASS (new Date('Dec 25 1995 gmt')).valueOf() is 819849600000
  PASS (new Date('Dec 25 1995 utc')).valueOf() is 819849600000
  PASS new Date('3/31/2005').getDate() is 31
  PASS new Date('3/31/2005').getHours() is 0
  PASS new Date('7/31/2005').getHours() is 0
  PASS new Date('3/31/2005 GMT').getFullYear() is 2005
  PASS new Date('3/31/2005 12:45:15').getDate() is 31
  PASS new Date('3/31/2005 12:45:15').getMonth() is 2
  PASS new Date('3/31/2005 12:45:15').getSeconds() is 15
  PASS new Date('2003/02/03').getMonth() is 1
  PASS new Date('2003/02/03 02:01:04 UTC').getSeconds() is 4
  PASS jul27Num is Date.parse(jul27Str).valueOf()
  PASS typeof Date.parse(0) is 'number'
  PASS isNaN(Date.parse(0)) is true
  PASS Date.parse(new String(jul27Str)).valueOf() is jul27Num
  PASS isNaN(Number(new Date('01 ANF 2000'))) is true
  PASS isNaN(Number(new Date('ANF 01 2000'))) is true
  PASS oldHours is d.getHours()
  PASS Date.UTC(1800, 0, 1) is -5364662400000
  PASS Date.UTC(1800, 2, 1) is -5359564800000
  PASS Date.UTC(1899, 0, 1) is -2240524800000
  PASS Date.UTC(1900, 0, 1) is -2208988800000
  PASS Date.UTC(1960, 0, 1) is -315619200000
  PASS Date.UTC(1970, 0, 1) is 0
  PASS Date.UTC(3000, 0, 1) is 32503680000000
  PASS (new Date(-5364662400000)).valueOf() is -5364662400000
  PASS (new Date(-2240524800000)).valueOf() is -2240524800000
  PASS (new Date(-2208988800000)).valueOf() is -2208988800000
  PASS (new Date(-315619200000)).valueOf() is -315619200000
  PASS (new Date(0)).valueOf() is 0
  PASS (new Date(32503680000000)).valueOf() is 32503680000000
  PASS d.getDay() is 5
  PASS d.getYear() == 1100 || d.getYear() == 3000 is true
  PASS d.getFullYear() is 3000
  PASS d.getDay() is 3
  PASS d.getHours() is 0
  PASS new Date('3/31/2099').getFullYear() is 2099
  PASS new Date('3/31/2099').getMonth() is 2
  PASS d.valueOf() is 32503680000000
  PASS d.getUTCDay() is 3
  PASS d.getUTCHours() is 0
  PASS d.getFullYear() is 1899
  PASS d.getYear() == -1 || d.getYear() == 1899 is true
  PASS d.getDay() is 0
  PASS d.getHours() is 0
  PASS d.getUTCDay() is 3
  PASS d.getUTCDay() is 0
  PASS d.toUTCString().replace('GMT', '+0000') is 'Sun, 01 Jan 1899 00:00:00 +0000'
  PASS Number(new Date(8.64E15)) is 8.64E15
  PASS Number(new Date(-8.64E15)) is -8.64E15
  PASS isNaN(new Date(8.6400001E15)) is true
  PASS isNaN(new Date(-8.6400001E15)) is true
  PASS (new Date('January29,2005')).getDate() is 29
  FAIL (new Date('12/25/1995 ::')).valueOf() should be 819874800000. Was NaN
  End Of Test
  
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/Date.html
  
  Index: Date.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/Date.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/Error-expected.txt
  
  Index: Error-expected.txt
  ===================================================================
  PASS Error('msg').message is 'msg'
  PASS (new Error('msg')).message is 'msg'
  PASS (new Error('msg')).name is 'Error'
  PASS Object.prototype.toString.apply(Error()) is '[object Error]'
  PASS Object.prototype.toString.apply(Error) is '[object Function]'
  PASS Object.prototype.toString.apply(EvalError) is '[object Function]'
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/Error.html
  
  Index: Error.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/Error.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/GlobalObject-expected.txt
  
  Index: GlobalObject-expected.txt
  ===================================================================
  PASS h.charCodeAt(1) is 239
  PASS u.charCodeAt(1) is 4660
  PASS escape(h) is 'a%EFc'
  PASS escape(u) is 'a%u1234c'
  PASS escape(z) is '%00'
  PASS unescape(escape(h)) is h
  PASS unescape(escape(u)) is u
  PASS unescape(escape(z)) is z
  PASS isNaN(NaN) is true
  PASS isNaN('NaN') is true
  PASS isNaN('1') is false
  PASS isFinite(1) is true
  PASS isFinite('1') is true
  PASS isFinite('a') is false
  PASS isNaN(parseInt("Hello", 8)) is true
  PASS isNaN(parseInt("FFF", 10)) is true
  PASS isNaN(parseInt(".5", 10)) is true
  PASS isFinite(Infinity) is false
  PASS isFinite('Infinity') is false
  PASS isNaN(parseInt()) is true
  PASS isNaN(parseInt('')) is true
  PASS isNaN(parseInt(' ')) is true
  PASS isNaN(parseInt('a')) is true
  PASS parseInt(1) is 1
  PASS parseInt(1234567890123456) is 1234567890123456
  PASS parseInt(1.2) is 1
  PASS parseInt(' 2.3') is 2
  PASS parseInt('0x10') is 16
  PASS parseInt('11', 0) is 11
  PASS parseInt('F', 16) is 15
  PASS isNaN(parseInt('10', 40)) is true
  PASS parseInt('3x') is 3
  PASS parseInt('3 x') is 3
  PASS isNaN(parseInt('Infinity')) is true
  PASS parseInt("15") is 15
  PASS parseInt("017") is 15
  PASS parseInt("0xf") is 15
  PASS parseInt("15", 0) is 15
  PASS parseInt("15", 10) is 15
  PASS parseInt("F", 16) is 15
  PASS parseInt("17", 8) is 15
  PASS parseInt("15.99", 10) is 15
  PASS parseInt("FXX123", 16) is 15
  PASS parseInt("1111", 2) is 15
  PASS parseInt("15*3", 10) is 15
  PASS parseInt("0x7", 10) is 0
  PASS parseInt("1x7", 10) is 1
  PASS isNaN(parseFloat()) is true
  PASS isNaN(parseFloat('')) is true
  PASS isNaN(parseFloat(' ')) is true
  PASS isNaN(parseFloat('a')) is true
  PASS parseFloat(1) is 1
  PASS parseFloat(' 2.3') is 2.3
  PASS parseFloat('3.1 x', 3) is 3.1
  PASS parseFloat('3.1x', 3) is 3.1
  PASS isFinite(parseFloat('Infinity')) is false
  PASS delete NaN is false
  PASS delete Infinity is false
  PASS delete undefined is false
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/GlobalObject.html
  
  Index: GlobalObject.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/GlobalObject.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/Number-expected.txt
  
  Index: Number-expected.txt
  ===================================================================
  PASS Number() is 0
  PASS Number(1) is 1
  PASS Number(1.1) is 1.1
  PASS Number('1.2') is 1.2
  PASS isNaN(Number('a')) is true
  PASS (new Number()).valueOf() is 0
  PASS (new Number(.4)).valueOf() is 0.4
  PASS (new Number('1.')).valueOf() is 1
  PASS isNaN(new Number('a')) is true
  PASS isNaN(Number.NaN) is true
  PASS Number.NEGATIVE_INFINITY is -Infinity
  PASS Number.POSITIVE_INFINITY is Infinity
  PASS (1).toString() is '1'
  PASS typeof (1).toString() is 'string'
  PASS (10).toString(16) is 'a'
  FAIL (8.5).toString(16) should be 8.8. Was 8
  FAIL (-8.5).toString(16) should be -8.8. Was fffffff8
  FAIL Number.NaN.toString(16) should be NaN. Was 0
  FAIL Number.POSITIVE_INFINITY.toString(16) should be Infinity. Was 0
  FAIL Number.NEGATIVE_INFINITY.toString(16) should be -Infinity. Was 0
  FAIL Number.MAX_VALUE.toString(2).length should be 1024. Was 1
  PASS (1).valueOf() is 1
  PASS typeof (1).valueOf() is 'number'
  PASS Number(1234.567).toFixed(0) is "1235"
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/Number.html
  
  Index: Number.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/Number.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/Object-expected.txt
  
  Index: Object-expected.txt
  ===================================================================
  PASS typeof Object() is 'object'
  PASS var o = Object(); o.x = 11; o.x; is 11
  PASS Object(1).valueOf() is 1
  PASS Object(true).valueOf() is true
  PASS Object('s').valueOf() is 's'
  PASS typeof (new Object()) is 'object'
  PASS (new Object(1)).valueOf() is 1
  PASS (new Object(true)).valueOf() is true
  PASS (new Object('s')).valueOf() is 's'
  PASS String(Object()) is '[object Object]'
  PASS Object().toString() is '[object Object]'
  PASS String(Object().valueOf()) is '[object Object]'
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/Object.html
  
  Index: Object.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/Object.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/Prototype-expected.txt
  
  Index: Prototype-expected.txt
  ===================================================================
  PASS s.area() is 9
  PASS b.name is 'a book'
  PASS b.author is 'Fred'
  PASS delete Boolean.prototype is false
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/Prototype.html
  
  Index: Prototype.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/Prototype.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/RegExp-expected.txt
  
  Index: RegExp-expected.txt
  ===================================================================
  PASS (new RegExp()).source is ''
  PASS Boolean(new RegExp()) is true
  PASS isNaN(Number(new RegExp())) is true
  PASS RegExp(/x/).source is 'x'
  PASS RegExp('x', 'g').global is true
  PASS RegExp('x').source is 'x'
  PASS new RegExp('x').source is 'x'
  PASS (/a/).global is false
  PASS typeof (/a/).global is 'boolean'
  PASS rg.global is true
  PASS (/a/).ignoreCase is false
  PASS ri.ignoreCase is true
  PASS (/a/).multiline is false
  PASS rm.multiline is true
  PASS rg.toString() is '/a/g'
  PASS ri.toString() is '/a/i'
  PASS rm.toString() is '/a/m'
  PASS rg.global is true
  PASS ri.ignoreCase is true
  PASS rm.multiline is true
  PASS Boolean(/a/.test) is true
  PASS /(b)c/.exec('abcd').toString() is "bc,b"
  PASS /(b)c/.exec('abcd').length is 2
  PASS /(b)c/.exec('abcd').index is 1
  PASS /(b)c/.exec('abcd').input is 'abcd'
  PASS rs.source is 'foo'
  PASS var r = new RegExp(/x/); r.global=true; r.lastIndex = -1; typeof r.test('a') is 'boolean'
  PASS 'abcdefghi'.match(/(abc)def(ghi)/).toString() is 'abcdefghi,abc,ghi'
  PASS /(abc)def(ghi)/.exec('abcdefghi').toString() is 'abcdefghi,abc,ghi'
  PASS RegExp.$1 is 'abc'
  PASS RegExp.$2 is 'ghi'
  PASS RegExp.$3 is ''
  PASS 'abcdefghi'.match(/(a(b(c(d(e)f)g)h)i)/).toString() is 'abcdefghi,abcdefghi,bcdefgh,cdefg,def,e'
  PASS RegExp.$1 is 'abcdefghi'
  PASS RegExp.$2 is 'bcdefgh'
  PASS RegExp.$3 is 'cdefg'
  PASS RegExp.$4 is 'def'
  PASS RegExp.$5 is 'e'
  PASS RegExp.$6 is ''
  PASS '(100px 200px 150px 15px)'.match(/\((\d+)(px)* (\d+)(px)* (\d+)(px)* (\d+)(px)*\)/).toString() is '(100px 200px 150px 15px),100,px,200,px,150,px,15,px'
  PASS RegExp.$1 is '100'
  PASS RegExp.$3 is '200'
  PASS RegExp.$5 is '150'
  PASS RegExp.$7 is '15'
  PASS ''.match(/((\d+)(px)* (\d+)(px)* (\d+)(px)* (\d+)(px)*)/) is null
  FAIL RegExp.$1 should be . Was 100
  FAIL RegExp.$3 should be . Was 200
  FAIL RegExp.$5 should be . Was 150
  FAIL RegExp.$7 should be . Was 15
  PASS 'faure at kde.org'.match(invalidChars) == null is true
  PASS 'faure-kde at kde.org'.match(invalidChars) == null is false
  PASS 'test1test2'.replace('test','X') is 'X1test2'
  PASS 'test1test2'.replace(/\d/,'X') is 'testXtest2'
  PASS '1test2test3'.replace(/\d/,'') is 'test2test3'
  PASS 'test1test2'.replace(/test/g,'X') is 'X1X2'
  PASS '1test2test3'.replace(/\d/g,'') is 'testtest'
  PASS '1test2test3'.replace(/x/g,'') is '1test2test3'
  PASS 'test1test2'.replace(/(te)(st)/g,'$2$1') is 'stte1stte2'
  PASS 'foo+bar'.replace(/\+/g,'%2B') is 'foo%2Bbar'
  FAIL caught should be true. Was false
  PASS 'foo'.replace(/z?/g,'x') is 'xfxoxox'
  PASS 'test test'.replace(/\s*/g,'') is 'testtest'
  PASS 'abc$%@'.replace(/[^0-9a-z]*/gi,'') is 'abc'
  PASS 'ab'.replace(/[^\d\.]*/gi,'') is ''
  PASS '1ab'.replace(/[^\d\.]*/gi,'') is '1'
  PASS '1test2test3blah'.split(/test/).toString() is '1,2,3blah'
  PASS reg.exec(str).toString() is '98 ,98 '
  PASS reg.lastIndex is 3
  PASS RegExp.$1 is '98 '
  PASS RegExp.$2 is ''
  PASS reg.exec(str).toString() is '76 ,76 '
  PASS reg.lastIndex is 6
  PASS RegExp.$1 is '76 '
  PASS RegExp.$2 is ''
  PASS reg.exec(str) is null
  PASS reg.lastIndex is 0
  PASS myRe=/d(b+)d/g; myArray = myRe.exec('cdbbdbsbz'); myRe.lastIndex is 5
  PASS reg.ignoreCase == true is true
  PASS reg.global === false is true
  PASS reg.multiline === false is true
  PASS reg.test('UGO') is true
  PASS reg.x = 1; reg.x is 1
  PASS var r2 = reg; r2.x = 2; reg.x is 2
  PASS str.match(re).toString() is 'Chapter 3.4.5.1,Chapter 3.4.5.1,.1'
  PASS str.match(/d/gi).toString() is 'D,d'
  PASS /\u0061/.source is '\\u0061'
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/RegExp.html
  
  Index: RegExp.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/RegExp.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/StringObject-expected.txt
  
  Index: StringObject-expected.txt
  ===================================================================
  PASS 'abc'.length is 3
  PASS (new String('abcd')).length is 4
  PASS String('abcde').length is 5
  PASS 'abc'.charAt(0) is 'a'
  PASS 'abc'.charAt(1) is 'b'
  PASS 'abc'.charAt(-1) is ''
  PASS 'abc'.charAt(99) is ''
  PASS 'abc'.charAt() is 'a'
  PASS 'ab'.indexOf('a') is 0
  PASS 'ab'.indexOf('b') is 1
  PASS 'ab'.indexOf('x') is -1
  PASS 'ab'.indexOf('') is 0
  PASS ''.indexOf('') is 0
  PASS 'ab'.indexOf('a', -1) is 0
  PASS 'ab'.indexOf('b', 1) is 1
  PASS 'ab'.indexOf('a', 1) is -1
  PASS ' '.indexOf('', 1) is 1
  PASS String('abc').search(/b/) is 1
  PASS String('xyz').search(/b/) is -1
  PASS String('abcb').match(/b/) + '' is 'b'
  PASS typeof String('abc').match(/b/) is 'object'
  PASS 'xyz'.match(/b/) is null
  PASS 'xyz'.match(/b/g) is null
  PASS String('aabab'.match(/ab/g)) is 'ab,ab'
  PASS String('aabab'.match(/(a)(b)/)) is 'ab,a,b'
  PASS String('aabab'.match(/(a)(b)/g)) is 'ab,ab'
  PASS String('abc'.match(/./g)) is 'a,b,c'
  PASS String('abc'.match(/.*/g)) is 'abc,'
  PASS var reg = /ab/g; 'aabab'.match(reg); reg.lastIndex is 0
  PASS var reg = /ab/g; 'aabab'.match(reg).length is 2
  PASS var reg = /ab/g; 'xxx'.match(reg); reg.lastIndex is 0
  PASS var reg = /ab/g; 'xxx'.match(reg) is null
  PASS myRe=/d(b+)d/g; 'cdbbdbsbz'.match(myRe)[0] is 'dbbd'
  PASS 'abcd'.replace(/b./, 'xy') is 'axyd'
  PASS 'abcd'.replace('bc', 'x') is 'axd'
  PASS 'abcd'.replace('x', 'y') is 'abcd'
  PASS 'abcd'.replace(/(ab)(cd)/,'$2$1') is 'cdab'
  PASS 'abcd'.replace(/(ab)(cd)/,'$2$1$') is 'cdab$'
  PASS 'BEGINabcEND'.replace(/abc/,'x$') is 'BEGINx$END'
  PASS f2c('The value is 212F') is 'The value is 100C'
  PASS f2c_str is '212F'
  PASS f2c_p1 is '212'
  PASS f2c_offset is 13
  PASS f2c_s is 'The value is 212F'
  PASS 'axb'.split('x').length is 2
  PASS 'axb'.split('x')[0] is 'a'
  PASS 'axb'.split('x')[1] is 'b'
  PASS String('abc'.split('')) is 'a,b,c'
  PASS String('abc'.split(new RegExp())) is 'a,b,c'
  PASS ''.split('').length is 0
  PASS 'axb'.split('x', 0).length is 0
  PASS 'axb'.split('x', 0)[0] is undefined
  PASS 'axb'.split('x', 1).length is 1
  PASS 'axb'.split('x', 99).length is 2
  PASS 'axb'.split('y') + '' is 'axb'
  PASS 'axb'.split('y').length is 1
  PASS ''.split('x') + '' is ''
  PASS 'abc'.split() + '' is 'abc'
  PASS 'axxb'.split(/x/) + '' is 'a,,b'
  PASS 'axxb'.split(/x+/) + '' is 'a,b'
  PASS 'axxb'.split(/x*/) + '' is 'a,b'
  PASS 'abcdef'.slice(2, 5) is 'cde'
  PASS 'abcdefghijklmnopqrstuvwxyz1234567890'.slice(-32, -6) is 'efghijklmnopqrstuvwxyz1234'
  PASS 'abC1'.toUpperCase() is 'ABC1'
  PASS 'AbC2'.toLowerCase() is 'abc2'
  PASS 'abc'[0] is 'a'
  PASS 'abc'[-1] is undefined.
  PASS 'abc'[10] is undefined.
  FAIL 'abc'[10] should be x. Was undefined
  PASS bar is html
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/StringObject.html
  
  Index: StringObject.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/StringObject.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/assignments-expected.txt
  
  Index: assignments-expected.txt
  ===================================================================
  PASS var i = 1; i is 1
  PASS j = k = 2 is 2
  PASS var i; i is undefined.
  PASS var i = 1; i <<= 2 is 4
  PASS var i = 8; i >>= 1 is 4
  PASS var i = 1; i >>= 2 is 0
  PASS var i = -8; i >>= 24 is -1
  PASS var i = 8; i >>>= 2 is 2
  PASS var i = -8; i >>>= 24 is 255
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/assignments.html
  
  Index: assignments.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/assignments.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/cast-expected.txt
  
  Index: cast-expected.txt
  ===================================================================
  PASS Boolean(1) === true is true
  PASS var s = String; s(1) === '1' is true
  PASS n = Number; n(true) === 1 is true
  PASS String(Array('a', 'b'	)) is 'a,b'
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/cast.html
  
  Index: cast.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/cast.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/comment-1-expected.txt
  
  Index: comment-1-expected.txt
  ===================================================================
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/comment-1.html
  
  Index: comment-1.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/comment-1.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/comment-2-expected.txt
  
  Index: comment-2-expected.txt
  ===================================================================
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/comment-2.html
  
  Index: comment-2.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/comment-2.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/completion-expected.txt
  
  Index: completion-expected.txt
  ===================================================================
  PASS foo(), i is 2
  PASS caught is true
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/completion.html
  
  Index: completion.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/completion.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/conditional-expected.txt
  
  Index: conditional-expected.txt
  ===================================================================
  PASS true ? 1 : 2 is 1
  PASS false ? 1 : 2 is 2
  PASS 'abc' ? 1 : 2 is 1
  PASS null ? 1 : 2 is 2
  PASS undefined ? 1 : 2 is 2
  PASS /*var a=1;if (undefined) a = 2;*/ a is 1
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/conditional.html
  
  Index: conditional.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/conditional.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/const-expected.txt
  
  Index: const-expected.txt
  ===================================================================
  PASS c is 11
  PASS c is 11
  PASS v is 1
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/const.html
  
  Index: const.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/const.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/constructor_length-expected.txt
  
  Index: constructor_length-expected.txt
  ===================================================================
  PASS Object.length is 1
  PASS Function.length is 1
  PASS Array.length is 1
  PASS String.length is 1
  PASS Boolean.length is 1
  PASS Number.length is 1
  PASS Date.length is 7
  PASS RegExp.length is 2
  PASS Error.length is 1
  PASS EvalError.length is 1
  PASS RangeError.length is 1
  PASS ReferenceError.length is 1
  PASS SyntaxError.length is 1
  PASS TypeError.length is 1
  PASS URIError.length is 1
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/constructor_length.html
  
  Index: constructor_length.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/constructor_length.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/crash-1-expected.txt
  
  Index: crash-1-expected.txt
  ===================================================================
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/crash-1.html
  
  Index: crash-1.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/crash-1.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/crash-2-expected.txt
  
  Index: crash-2-expected.txt
  ===================================================================
  OK. Caught an exception
  
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/crash-2.html
  
  Index: crash-2.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/crash-2.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/delete-expected.txt
  
  Index: delete-expected.txt
  ===================================================================
  PASS a = 1; delete a; is true
  PASS delete nonexistant; is true
  PASS delete NaN is false
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/delete.html
  
  Index: delete.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/delete.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/empty-expected.txt
  
  Index: empty-expected.txt
  ===================================================================
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/empty.html
  
  Index: empty.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/empty.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/encode_decode_uri-expected.txt
  
  Index: encode_decode_uri-expected.txt
  ===================================================================
  FAIL checkWithFunctions(encodeURI,decodeURI) should be true. Was false
  FAIL checkWithFunctions(encodeURIComponent,decodeURIComponent) should be true. Was false
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/encode_decode_uri.html
  
  Index: encode_decode_uri.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/encode_decode_uri.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/eval-expected.txt
  
  Index: eval-expected.txt
  ===================================================================
  PASS eval.length is 1
  PASS eval('this') is this
  PASS bx is 99
  PASS cx is 99
  PASS Skipping test for deprecated Object.prototype.eval()
  PASS lotto() is 0
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/eval.html
  
  Index: eval.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/eval.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/evil-n-expected.txt
  
  Index: evil-n-expected.txt
  ===================================================================
  FAIL (new Error()).message should be undefined. Was Unknown error
  PASS ''.split(/.*/).length is 0
  FAIL window.successfullyParsed should be undefined. Was true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/evil-n.html
  
  Index: evil-n.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/evil-n.js"></script>
  <script>
  shouldBeUndefined("window.successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/exception_propagation-expected.txt
  
  Index: exception_propagation-expected.txt
  ===================================================================
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/exception_propagation.html
  
  Index: exception_propagation.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/exception_propagation.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/exceptions-expected.txt
  
  Index: exceptions-expected.txt
  ===================================================================
  Except a lot of errors. They should all be caught and lead to PASS
  
  testing throw() .......... PASS
  
  testing throw() .......... PASS
  
  ReferenceError .......... PASS
  
  error propagation in functions .......... PASS
  
  catch
  
  finally
  
  Math() error .......... PASS
  
  Abort while() on error .......... PASS
  
  undefined .......... FAIL
  
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/exceptions.html
  
  Index: exceptions.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/exceptions.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/function-expected.txt
  
  Index: function-expected.txt
  ===================================================================
  PASS empty1() is undefined
  PASS empty2() is undefined
  PASS obj.func(11) is 66
  PASS c.x is 11
  PASS f('bbbbb') is 'bbbbb'
  PASS foo() is '|'
  PASS foo('bar') is '|bar|'
  PASS foo('bar', 'x') is '|bar|x|'
  PASS foo2(7) is 0
  PASS foo3(0, 99) is 2
  PASS foo3(1, 99).length is 2
  PASS nest0(2,3) is 36
  PASS (new Function('return 11;'))() is 11
  PASS (new Function('', 'return 22;'))() is 22
  PASS (new Function('a', 'b', 'return a*b;'))(11, 3) is 33
  PASS (new Function(' a ', ' b ', 'return a*b;'))(11, 4) is 44
  PASS (new Function(' a,b ', ' c ', 'return a*b;'))(11, 5) is 55
  PASS (new Function(' a,b ', ' c3 ', 'return a*b;'))(11, 6) is 66
  PASS funcp3.length is 3
  PASS (function(a, b, c, d) { }).length is 4
  PASS (new Function('a', 'b', '')).length is 2
  PASS f4(4) is 24
  PASS f5(11) is 11
  PASS f5.arguments is null
  PASS arr[0] is 99
  PASS arr[0] is 99
  PASS typeof orgFuncClone is 'function'
  PASS orgFuncClone('world') is 'Hello world'
  PASS groupClone(1, 2) is 9
  FAIL String(Math.sin) should be function sin() { [native code] } . Was (Internal Function)
  PASS shadow() is 2
  PASS nestedret is 'outer nest'
  PASS not_nestedret is 'global nest'
  PASS sample.prototype.prototype is undefined.
  PASS sample.prototype.constructor == sample is true
  PASS caught is true
  PASS functionWithVarOverride(1) is 2
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/function.html
  
  Index: function.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/function.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/function_arguments-expected.txt
  
  Index: function_arguments-expected.txt
  ===================================================================
  PASS mf.arguments is expected[expno++]
  PASS mf.arguments[0] is expected[expno++]
  PASS mf.arguments[0] is expected[expno++]
  PASS mf.arguments[0] is expected[expno++]
  PASS mf.arguments[0] is expected[expno++]
  PASS mf.arguments[0] is expected[expno++]
  PASS mf.arguments[0] is expected[expno++]
  PASS mf.arguments[0] is expected[expno++]
  PASS mf.arguments[0] is expected[expno++]
  PASS mf.arguments is expected[expno++]
  PASS ReadOnlyOK is true
  PASS DontDeleteOK is true
  PASS DontEnumOK is true
  PASS arg0 is 1
  PASS arg1 is 2
  PASS arg2 is 3
  PASS arglength is 3
  PASS newarg0 is 1
  PASS newarg1 is 2
  PASS newarg2 is 999
  PASS newx is 888
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/function_arguments.html
  
  Index: function_arguments.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/function_arguments.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/function_constructor-expected.txt
  
  Index: function_constructor-expected.txt
  ===================================================================
  PASS myfunc.prototype.constructor.__proto__ == Function.prototype is true
  PASS myfunc.prototype.constructor.__proto__.__proto__ == Object.prototype is true
  PASS myfunc.prototype.constructor == myfunc is true
  PASS Function.prototype.constructor == Function is true
  PASS myfunc.prototype.toString == Object.prototype.toString is true
  PASS myfunc.toString == Function.prototype.toString is true
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/function_constructor.html
  
  Index: function_constructor.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/function_constructor.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/function_length-expected.txt
  
  Index: function_length-expected.txt
  ===================================================================
  PASS Array.prototype.toString.length is 0
  PASS Array.prototype.toLocaleString.length is 0
  FAIL Array.prototype.concat.length should be 0. Was 1
  PASS Array.prototype.join.length is 1
  PASS Array.prototype.pop.length is 0
  PASS Array.prototype.push.length is 1
  PASS Array.prototype.reverse.length is 0
  PASS Array.prototype.shift.length is 0
  PASS Array.prototype.slice.length is 2
  PASS Array.prototype.sort.length is 1
  PASS Array.prototype.splice.length is 2
  PASS Array.prototype.unshift.length is 1
  PASS Boolean.prototype.toString.length is 0
  PASS Boolean.prototype.valueOf.length is 0
  PASS Date.prototype.toString.length is 0
  PASS Date.prototype.toUTCString.length is 0
  PASS Date.prototype.toDateString.length is 0
  PASS Date.prototype.toTimeString.length is 0
  PASS Date.prototype.toLocaleString.length is 0
  PASS Date.prototype.toLocaleDateString.length is 0
  PASS Date.prototype.toLocaleTimeString.length is 0
  PASS Date.prototype.valueOf.length is 0
  PASS Date.prototype.getTime.length is 0
  PASS Date.prototype.getFullYear.length is 0
  PASS Date.prototype.getUTCFullYear.length is 0
  PASS Date.prototype.toGMTString.length is 0
  PASS Date.prototype.getMonth.length is 0
  PASS Date.prototype.getUTCMonth.length is 0
  PASS Date.prototype.getDate.length is 0
  PASS Date.prototype.getUTCDate.length is 0
  PASS Date.prototype.getDay.length is 0
  PASS Date.prototype.getUTCDay.length is 0
  PASS Date.prototype.getHours.length is 0
  PASS Date.prototype.getUTCHours.length is 0
  PASS Date.prototype.getMinutes.length is 0
  PASS Date.prototype.getUTCMinutes.length is 0
  PASS Date.prototype.getSeconds.length is 0
  PASS Date.prototype.getUTCSeconds.length is 0
  PASS Date.prototype.getMilliseconds.length is 0
  PASS Date.prototype.getUTCMilliseconds.length is 0
  PASS Date.prototype.getTimezoneOffset.length is 0
  PASS Date.prototype.setTime.length is 1
  PASS Date.prototype.setMilliseconds.length is 1
  PASS Date.prototype.setUTCMilliseconds.length is 1
  PASS Date.prototype.setSeconds.length is 2
  PASS Date.prototype.setUTCSeconds.length is 2
  PASS Date.prototype.setMinutes.length is 3
  PASS Date.prototype.setUTCMinutes.length is 3
  PASS Date.prototype.setHours.length is 4
  PASS Date.prototype.setUTCHours.length is 4
  PASS Date.prototype.setDate.length is 1
  PASS Date.prototype.setUTCDate.length is 1
  PASS Date.prototype.setMonth.length is 2
  PASS Date.prototype.setUTCMonth.length is 2
  PASS Date.prototype.setFullYear.length is 3
  PASS Date.prototype.setUTCFullYear.length is 3
  PASS Date.prototype.setYear.length is 1
  PASS Date.prototype.getYear.length is 0
  PASS Date.prototype.toGMTString.length is 0
  PASS Error.prototype.toString.length is 0
  PASS eval.length is 1
  PASS parseInt.length is 2
  PASS parseFloat.length is 1
  PASS isNaN.length is 1
  PASS isFinite.length is 1
  PASS escape.length is 1
  PASS unescape.length is 1
  PASS Math.abs.length is 1
  PASS Math.acos.length is 1
  PASS Math.asin.length is 1
  PASS Math.atan.length is 1
  PASS Math.atan2.length is 2
  PASS Math.ceil.length is 1
  PASS Math.cos.length is 1
  PASS Math.exp.length is 1
  PASS Math.floor.length is 1
  PASS Math.log.length is 1
  PASS Math.max.length is 2
  PASS Math.min.length is 2
  PASS Math.pow.length is 2
  PASS Math.random.length is 0
  PASS Math.round.length is 1
  PASS Math.sin.length is 1
  PASS Math.sqrt.length is 1
  PASS Math.tan.length is 1
  PASS Object.prototype.toString.length is 0
  PASS Object.prototype.valueOf.length is 0
  PASS RegExp.prototype.exec.length is 0
  PASS RegExp.prototype.test.length is 0
  PASS RegExp.prototype.toString.length is 0
  PASS String.fromCharCode.length is 1
  PASS String.prototype.toString.length is 0
  PASS String.prototype.valueOf.length is 0
  PASS String.prototype.charAt.length is 1
  PASS String.prototype.charCodeAt.length is 1
  PASS String.prototype.indexOf.length is 1
  PASS String.prototype.lastIndexOf.length is 1
  PASS String.prototype.match.length is 1
  PASS String.prototype.replace.length is 2
  PASS String.prototype.search.length is 1
  PASS String.prototype.slice.length is 2
  PASS String.prototype.split.length is 2
  PASS String.prototype.substr.length is 2
  PASS String.prototype.substring.length is 2
  PASS String.prototype.toLowerCase.length is 0
  PASS String.prototype.toUpperCase.length is 0
  PASS String.prototype.big.length is 0
  PASS String.prototype.small.length is 0
  PASS String.prototype.blink.length is 0
  PASS String.prototype.bold.length is 0
  PASS String.prototype.fixed.length is 0
  PASS String.prototype.italics.length is 0
  PASS String.prototype.strike.length is 0
  PASS String.prototype.sub.length is 0
  PASS String.prototype.sup.length is 0
  PASS String.prototype.fontcolor.length is 1
  PASS String.prototype.fontsize.length is 1
  PASS String.prototype.anchor.length is 1
  PASS String.prototype.link.length is 1
  PASS Number.prototype.toString.length is 1
  PASS Number.prototype.valueOf.length is 0
  PASS Number.prototype.toFixed.length is 1
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/function_length.html
  
  Index: function_length.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/function_length.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/garbage-n-expected.txt
  
  Index: garbage-n-expected.txt
  ===================================================================
  PASS window.successfullyParsed is undefined.
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/garbage-n.html
  
  Index: garbage-n.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/garbage-n.js"></script>
  <script>
  shouldBeUndefined("window.successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/inbuilt_function_proto-expected.txt
  
  Index: inbuilt_function_proto-expected.txt
  ===================================================================
  PASS Object.prototype.toString.__proto__ is Function.prototype
  PASS Object.prototype.valueOf.__proto__ is Function.prototype
  PASS Array.prototype.toString.__proto__ is Function.prototype
  PASS Array.prototype.toLocaleString.__proto__ is Function.prototype
  PASS Array.prototype.concat.__proto__ is Function.prototype
  PASS Array.prototype.join.__proto__ is Function.prototype
  PASS Array.prototype.pop.__proto__ is Function.prototype
  PASS Array.prototype.push.__proto__ is Function.prototype
  PASS Array.prototype.reverse.__proto__ is Function.prototype
  PASS Array.prototype.shift.__proto__ is Function.prototype
  PASS Array.prototype.slice.__proto__ is Function.prototype
  PASS Array.prototype.sort.__proto__ is Function.prototype
  PASS Array.prototype.splice.__proto__ is Function.prototype
  PASS Array.prototype.unshift.__proto__ is Function.prototype
  PASS String.prototype.toString.__proto__ is Function.prototype
  PASS String.prototype.valueOf.__proto__ is Function.prototype
  PASS String.prototype.charAt.__proto__ is Function.prototype
  PASS String.prototype.charCodeAt.__proto__ is Function.prototype
  PASS String.prototype.indexOf.__proto__ is Function.prototype
  PASS String.prototype.lastIndexOf.__proto__ is Function.prototype
  PASS String.prototype.match.__proto__ is Function.prototype
  PASS String.prototype.replace.__proto__ is Function.prototype
  PASS String.prototype.search.__proto__ is Function.prototype
  PASS String.prototype.slice.__proto__ is Function.prototype
  PASS String.prototype.split.__proto__ is Function.prototype
  PASS String.prototype.substr.__proto__ is Function.prototype
  PASS String.prototype.substring.__proto__ is Function.prototype
  PASS String.prototype.toLowerCase.__proto__ is Function.prototype
  PASS String.prototype.toUpperCase.__proto__ is Function.prototype
  PASS String.prototype.big.__proto__ is Function.prototype
  PASS String.prototype.small.__proto__ is Function.prototype
  PASS String.prototype.blink.__proto__ is Function.prototype
  PASS String.prototype.bold.__proto__ is Function.prototype
  PASS String.prototype.fixed.__proto__ is Function.prototype
  PASS String.prototype.italics.__proto__ is Function.prototype
  PASS String.prototype.strike.__proto__ is Function.prototype
  PASS String.prototype.sub.__proto__ is Function.prototype
  PASS String.prototype.sup.__proto__ is Function.prototype
  PASS String.prototype.fontcolor.__proto__ is Function.prototype
  PASS String.prototype.fontsize.__proto__ is Function.prototype
  PASS String.prototype.anchor.__proto__ is Function.prototype
  PASS String.prototype.link.__proto__ is Function.prototype
  PASS Boolean.prototype.toString.__proto__ is Function.prototype
  PASS Boolean.prototype.valueOf.__proto__ is Function.prototype
  PASS Date.prototype.toString.__proto__ is Function.prototype
  PASS Date.prototype.toUTCString.__proto__ is Function.prototype
  PASS Date.prototype.toDateString.__proto__ is Function.prototype
  PASS Date.prototype.toTimeString.__proto__ is Function.prototype
  PASS Date.prototype.toLocaleString.__proto__ is Function.prototype
  PASS Date.prototype.toLocaleDateString.__proto__ is Function.prototype
  PASS Date.prototype.toLocaleTimeString.__proto__ is Function.prototype
  PASS Date.prototype.valueOf.__proto__ is Function.prototype
  PASS Date.prototype.getTime.__proto__ is Function.prototype
  PASS Date.prototype.getFullYear.__proto__ is Function.prototype
  PASS Date.prototype.getUTCFullYear.__proto__ is Function.prototype
  PASS Date.prototype.toGMTString.__proto__ is Function.prototype
  PASS Date.prototype.getMonth.__proto__ is Function.prototype
  PASS Date.prototype.getUTCMonth.__proto__ is Function.prototype
  PASS Date.prototype.getDate.__proto__ is Function.prototype
  PASS Date.prototype.getUTCDate.__proto__ is Function.prototype
  PASS Date.prototype.getDay.__proto__ is Function.prototype
  PASS Date.prototype.getUTCDay.__proto__ is Function.prototype
  PASS Date.prototype.getHours.__proto__ is Function.prototype
  PASS Date.prototype.getUTCHours.__proto__ is Function.prototype
  PASS Date.prototype.getMinutes.__proto__ is Function.prototype
  PASS Date.prototype.getUTCMinutes.__proto__ is Function.prototype
  PASS Date.prototype.getSeconds.__proto__ is Function.prototype
  PASS Date.prototype.getUTCSeconds.__proto__ is Function.prototype
  PASS Date.prototype.getMilliseconds.__proto__ is Function.prototype
  PASS Date.prototype.getUTCMilliseconds.__proto__ is Function.prototype
  PASS Date.prototype.getTimezoneOffset.__proto__ is Function.prototype
  PASS Date.prototype.setTime.__proto__ is Function.prototype
  PASS Date.prototype.setMilliseconds.__proto__ is Function.prototype
  PASS Date.prototype.setUTCMilliseconds.__proto__ is Function.prototype
  PASS Date.prototype.setSeconds.__proto__ is Function.prototype
  PASS Date.prototype.setUTCSeconds.__proto__ is Function.prototype
  PASS Date.prototype.setMinutes.__proto__ is Function.prototype
  PASS Date.prototype.setUTCMinutes.__proto__ is Function.prototype
  PASS Date.prototype.setHours.__proto__ is Function.prototype
  PASS Date.prototype.setUTCHours.__proto__ is Function.prototype
  PASS Date.prototype.setDate.__proto__ is Function.prototype
  PASS Date.prototype.setUTCDate.__proto__ is Function.prototype
  PASS Date.prototype.setMonth.__proto__ is Function.prototype
  PASS Date.prototype.setUTCMonth.__proto__ is Function.prototype
  PASS Date.prototype.setFullYear.__proto__ is Function.prototype
  PASS Date.prototype.setUTCFullYear.__proto__ is Function.prototype
  PASS Date.prototype.setYear.__proto__ is Function.prototype
  PASS Date.prototype.getYear.__proto__ is Function.prototype
  PASS Date.prototype.toGMTString.__proto__ is Function.prototype
  PASS RegExp.prototype.exec.__proto__ is Function.prototype
  PASS RegExp.prototype.test.__proto__ is Function.prototype
  PASS RegExp.prototype.toString.__proto__ is Function.prototype
  PASS Error.prototype.toString.__proto__ is Function.prototype
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/inbuilt_function_proto.html
  
  Index: inbuilt_function_proto.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/inbuilt_function_proto.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/inbuilt_function_tostring-expected.txt
  
  Index: inbuilt_function_tostring-expected.txt
  ===================================================================
  FAIL StripSpaces(eval.toString()) should be functioneval(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(parseInt.toString()) should be functionparseInt(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(parseFloat.toString()) should be functionparseFloat(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(isNaN.toString()) should be functionisNaN(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(isFinite.toString()) should be functionisFinite(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(escape.toString()) should be functionescape(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(unescape.toString()) should be functionunescape(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(kjsprint.toString()) should be functionkjsprint(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Object.prototype.toString.toString()) should be functiontoString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Object.prototype.toLocaleString.toString()) should be functiontoLocaleString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Object.prototype.valueOf.toString()) should be functionvalueOf(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Object.prototype.hasOwnProperty.toString()) should be functionhasOwnProperty(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Object.prototype.isPrototypeOf.toString()) should be functionisPrototypeOf(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Object.prototype.propertyIsEnumerable.toString()) should be functionpropertyIsEnumerable(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Function.prototype.toString.toString()) should be functiontoString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Function.prototype.apply.toString()) should be functionapply(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Function.prototype.call.toString()) should be functioncall(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Array.prototype.toString.toString()) should be functiontoString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Array.prototype.toLocaleString.toString()) should be functiontoLocaleString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Array.prototype.concat.toString()) should be functionconcat(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Array.prototype.join.toString()) should be functionjoin(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Array.prototype.pop.toString()) should be functionpop(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Array.prototype.push.toString()) should be functionpush(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Array.prototype.reverse.toString()) should be functionreverse(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Array.prototype.shift.toString()) should be functionshift(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Array.prototype.slice.toString()) should be functionslice(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Array.prototype.sort.toString()) should be functionsort(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Array.prototype.splice.toString()) should be functionsplice(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Array.prototype.unshift.toString()) should be functionunshift(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.toString.toString()) should be functiontoString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.valueOf.toString()) should be functionvalueOf(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.charAt.toString()) should be functioncharAt(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.charCodeAt.toString()) should be functioncharCodeAt(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.concat.toString()) should be functionconcat(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.indexOf.toString()) should be functionindexOf(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.lastIndexOf.toString()) should be functionlastIndexOf(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.match.toString()) should be functionmatch(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.replace.toString()) should be functionreplace(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.search.toString()) should be functionsearch(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.slice.toString()) should be functionslice(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.split.toString()) should be functionsplit(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.substr.toString()) should be functionsubstr(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.substring.toString()) should be functionsubstring(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.toLowerCase.toString()) should be functiontoLowerCase(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.toUpperCase.toString()) should be functiontoUpperCase(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.big.toString()) should be functionbig(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.small.toString()) should be functionsmall(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.blink.toString()) should be functionblink(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.bold.toString()) should be functionbold(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.fixed.toString()) should be functionfixed(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.italics.toString()) should be functionitalics(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.strike.toString()) should be functionstrike(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.sub.toString()) should be functionsub(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.sup.toString()) should be functionsup(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.fontcolor.toString()) should be functionfontcolor(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.fontsize.toString()) should be functionfontsize(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.anchor.toString()) should be functionanchor(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(String.prototype.link.toString()) should be functionlink(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Boolean.prototype.toString.toString()) should be functiontoString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Boolean.prototype.valueOf.toString()) should be functionvalueOf(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Number.prototype.toString.toString()) should be functiontoString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Number.prototype.toLocaleString.toString()) should be functiontoLocaleString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Number.prototype.valueOf.toString()) should be functionvalueOf(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Number.prototype.toFixed.toString()) should be functiontoFixed(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Number.prototype.toExponential.toString()) should be functiontoExponential(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Number.prototype.toPrecision.toString()) should be functiontoPrecision(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.abs.toString()) should be functionabs(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.acos.toString()) should be functionacos(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.asin.toString()) should be functionasin(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.atan.toString()) should be functionatan(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.atan2.toString()) should be functionatan2(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.ceil.toString()) should be functionceil(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.cos.toString()) should be functioncos(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.exp.toString()) should be functionexp(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.floor.toString()) should be functionfloor(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.log.toString()) should be functionlog(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.max.toString()) should be functionmax(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.min.toString()) should be functionmin(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.pow.toString()) should be functionpow(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.random.toString()) should be functionrandom(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.round.toString()) should be functionround(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.sin.toString()) should be functionsin(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.sqrt.toString()) should be functionsqrt(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Math.tan.toString()) should be functiontan(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.toString.toString()) should be functiontoString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.toUTCString.toString()) should be functiontoUTCString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.toDateString.toString()) should be functiontoDateString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.toTimeString.toString()) should be functiontoTimeString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.toLocaleString.toString()) should be functiontoLocaleString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.toLocaleDateString.toString()) should be functiontoLocaleDateString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.toLocaleTimeString.toString()) should be functiontoLocaleTimeString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.valueOf.toString()) should be functionvalueOf(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getTime.toString()) should be functiongetTime(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getFullYear.toString()) should be functiongetFullYear(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getUTCFullYear.toString()) should be functiongetUTCFullYear(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.toGMTString.toString()) should be functiontoGMTString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getMonth.toString()) should be functiongetMonth(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getUTCMonth.toString()) should be functiongetUTCMonth(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getDate.toString()) should be functiongetDate(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getUTCDate.toString()) should be functiongetUTCDate(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getDay.toString()) should be functiongetDay(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getUTCDay.toString()) should be functiongetUTCDay(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getHours.toString()) should be functiongetHours(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getUTCHours.toString()) should be functiongetUTCHours(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getMinutes.toString()) should be functiongetMinutes(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getUTCMinutes.toString()) should be functiongetUTCMinutes(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getSeconds.toString()) should be functiongetSeconds(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getUTCSeconds.toString()) should be functiongetUTCSeconds(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getMilliseconds.toString()) should be functiongetMilliseconds(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getUTCMilliseconds.toString()) should be functiongetUTCMilliseconds(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getTimezoneOffset.toString()) should be functiongetTimezoneOffset(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setTime.toString()) should be functionsetTime(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setMilliseconds.toString()) should be functionsetMilliseconds(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setUTCMilliseconds.toString()) should be functionsetUTCMilliseconds(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setSeconds.toString()) should be functionsetSeconds(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setUTCSeconds.toString()) should be functionsetUTCSeconds(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setMinutes.toString()) should be functionsetMinutes(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setUTCMinutes.toString()) should be functionsetUTCMinutes(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setHours.toString()) should be functionsetHours(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setUTCHours.toString()) should be functionsetUTCHours(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setDate.toString()) should be functionsetDate(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setUTCDate.toString()) should be functionsetUTCDate(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setMonth.toString()) should be functionsetMonth(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setUTCMonth.toString()) should be functionsetUTCMonth(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setFullYear.toString()) should be functionsetFullYear(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setUTCFullYear.toString()) should be functionsetUTCFullYear(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.setYear.toString()) should be functionsetYear(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.getYear.toString()) should be functiongetYear(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Date.prototype.toGMTString.toString()) should be functiontoGMTString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(RegExp.prototype.exec.toString()) should be functionexec(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(RegExp.prototype.test.toString()) should be functiontest(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(RegExp.prototype.toString.toString()) should be functiontoString(){[nativecode]}. Was (InternalFunction)
  FAIL StripSpaces(Error.prototype.toString.toString()) should be functiontoString(){[nativecode]}. Was (InternalFunction)
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/inbuilt_function_tostring.html
  
  Index: inbuilt_function_tostring.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/inbuilt_function_tostring.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/iteration-expected.txt
  
  Index: iteration-expected.txt
  ===================================================================
  PASS count is 10
  PASS count is 5
  PASS count is 10
  PASS properties is 'a=11;b=22;'
  PASS list is '[0]=100;[1]=101;'
  PASS list is '123'
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/iteration.html
  
  Index: iteration.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/iteration.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/j-comment-3-expected.txt
  
  Index: j-comment-3-expected.txt
  ===================================================================
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/j-comment-3.html
  
  Index: j-comment-3.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/j-comment-3.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/j-comment-4-expected.txt
  
  Index: j-comment-4-expected.txt
  ===================================================================
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/j-comment-4.html
  
  Index: j-comment-4.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/j-comment-4.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/literals-expected.txt
  
  Index: literals-expected.txt
  ===================================================================
  PASS x is 1
  PASS 0x0 is 0
  PASS 0xF is 15
  PASS 0xFF is 255
  PASS 01 is 1
  PASS 010 is 8
  PASS 09 is 9
  PASS 019 is 19
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/literals.html
  
  Index: literals.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/literals.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/math-expected.txt
  
  Index: math-expected.txt
  ===================================================================
  PASS isNegativeZero(negativeZero) is true
  PASS isNegativeZero(0) is false
  PASS String()+Math.E is '2.718281828459045'
  PASS String()+Math.LN2 is '0.6931471805599453'
  PASS String()+Math.LN10 is '2.302585092994046'
  PASS String()+Math.LOG2E is '1.4426950408889634'
  PASS String()+Math.LOG10E is '0.43429448190325176'
  PASS String()+Math.PI is '3.141592653589793'
  PASS String()+Math.SQRT1_2 is '0.7071067811865476'
  PASS String()+Math.SQRT2 is '1.4142135623730951'
  PASS String()+Number.NaN is 'NaN'
  PASS String()+Number.NEGATIVE_INFINITY is '-Infinity'
  PASS String()+Number.POSITIVE_INFINITY is 'Infinity'
  PASS Math.abs(-5) is 5
  PASS Math.acos(0) is Math.PI/2
  PASS Math.acos(1) is 0
  PASS Math.ceil(1.1) is 2
  PASS String()+Math.sqrt(2) is String()+Math.SQRT2
  PASS Math.ceil(1.6) is 2
  PASS Math.round(0) is 0
  PASS isNegativeZero(Math.round(0)) is false
  PASS isNegativeZero(Math.round(negativeZero)) is true
  PASS Math.round(0.2) is 0
  PASS isNegativeZero(Math.round(-0.2)) is true
  PASS isNegativeZero(Math.round(-0.5)) is true
  PASS Math.round(1.1) is 1
  PASS Math.round(1.6) is 2
  PASS Math.round(-3.5) is -3
  PASS Math.round(-3.6) is -4
  PASS isNaN(Math.round()) is true
  PASS isNaN(Math.round(NaN)) is true
  PASS Math.round(-Infinity) is -Infinity
  PASS Math.round(Infinity) is Infinity
  PASS Math.round(99999999999999999999.99) is 100000000000000000000
  PASS Math.round(-99999999999999999999.99) is -100000000000000000000
  PASS Math.log(Math.E*Math.E) is 2
  PASS isNaN(Math.log(NaN)) is true
  PASS isNaN(Math.log(-1)) is true
  PASS isFinite(Math.log(0)) is false
  PASS Math.log(1) is 0
  PASS isFinite(Math.log(Infinity)) is false
  PASS isNegativeZero(Math.min(negativeZero, 0)) is true
  PASS isFinite(Math.max()) is false
  PASS Math.max(1) is 1
  PASS Math.max(1, 2, 3) is 3
  PASS isNaN(Math.max(1,NaN,3)) is true
  PASS !isNegativeZero(Math.max(negativeZero, 0)) is true
  PASS list is ''
  PASS delete my.v is true
  PASS my.v is undefined.
  PASS delete Math.PI is false
  PASS my = myfunc, myfunc(4) is 5
  PASS Boolean(Math) is true
  PASS isNaN(Number(Math)); is true
  PASS Math.abs===Math.abs is true
  PASS Math.abs===Math.round is false
  PASS list is 'a,b,'
  PASS list is ''
  PASS list is 'myprop,'
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/math.html
  
  Index: math.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/math.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/md5-1-expected.txt
  
  Index: md5-1-expected.txt
  ===================================================================
  PASS MD5('kde') is '186cf28b76f2264e9fea8fcf91cb4f5d'
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/md5-1.html
  
  Index: md5-1.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/md5-1.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/md5-2-expected.txt
  
  Index: md5-2-expected.txt
  ===================================================================
  PASS hexMD5('kde') is '186cf28b76f2264e9fea8fcf91cb4f5d'
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/md5-2.html
  
  Index: md5-2.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/md5-2.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/object_prototype-expected.txt
  
  Index: object_prototype-expected.txt
  ===================================================================
  PASS sub.x is 1
  PASS sub.y is 2
  PASS sub.hasOwnProperty('x') is false
  PASS sub.hasOwnProperty('y') is true
  PASS sub.x is 6
  PASS sub.hasOwnProperty('x') is true
  PASS sub.y is undefined
  PASS sub.hasOwnProperty('y') is false
  PASS obj.hasClass1 is true
  PASS obj.hasClass2 is true
  PASS obj.hasClass3 is true
  PASS Class1.prototype.isPrototypeOf(obj) is true
  PASS Class2.prototype.isPrototypeOf(obj) is true
  PASS Class3.prototype.isPrototypeOf(obj) is true
  PASS obj.isPrototypeOf(Class1.prototype) is false
  PASS obj.isPrototypeOf(Class2.prototype) is false
  PASS obj.isPrototypeOf(Class3.prototype) is false
  PASS Class1.prototype.isPrototypeOf(Class2.prototype) is true
  PASS Class2.prototype.isPrototypeOf(Class1.prototype) is false
  PASS Class1.prototype.isPrototypeOf(Class3.prototype) is true
  PASS Class3.prototype.isPrototypeOf(Class1.prototype) is false
  PASS Class2.prototype.isPrototypeOf(Class3.prototype) is true
  PASS Class3.prototype.isPrototypeOf(Class2.prototype) is false
  PASS Class1.prototype.prototype is undefined.
  PASS myfunc.length is 3
  PASS myfunc.someproperty is 4
  PASS myfunc.propertyIsEnumerable('length') is false
  PASS myfunc.propertyIsEnumerable('someproperty') is true
  PASS checkEnumerable(myfunc,'length') is false
  PASS checkEnumerable(myfunc,'someproperty') is true
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/object_prototype.html
  
  Index: object_prototype.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/object_prototype.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/object_prototype_tostring-expected.txt
  
  Index: object_prototype_tostring-expected.txt
  ===================================================================
  PASS _array.toString() is "[object Array]"
  PASS _string.toString() is "[object String]"
  PASS _boolean.toString() is "[object Boolean]"
  PASS _number.toString() is "[object Number]"
  PASS _object.toString() is "[object Object]"
  PASS _date.toString() is "[object Date]"
  PASS _regexp.toString() is "[object RegExp]"
  PASS _error.toString() is "[object Error]"
  PASS _function.toString() is "[object Function]"
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/object_prototype_tostring.html
  
  Index: object_prototype_tostring.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/object_prototype_tostring.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/operators-expected.txt
  
  Index: operators-expected.txt
  ===================================================================
  PASS !undefined is true
  PASS !null is true
  PASS !!true is true
  PASS !false is true
  PASS !!1 is true
  PASS !0 is true
  PASS !!'a' is true
  PASS !'' is true
  PASS var i = 0; ++i; is 1
  PASS var i = 0; ++i; i is 1
  PASS var i = 0; i++; is 0
  PASS var i = 0; i++; i is 1
  PASS var i = true; i++ is 1
  PASS var i = true; i++; i is 2
  PASS var i = 0; --i; is -1
  PASS var i = 0; --i; i is -1
  PASS var i = 0; i--; is 0
  PASS var i = 0; i--; i is -1
  PASS var i = true; i-- is 1
  PASS var i = true; i--; i is 0
  PASS ~0 is -1
  PASS ~1 is -2
  PASS ~Math.pow(2, 33) is -1
  PASS ~(Math.pow(2, 32) + Math.pow(2, 31) + 2) is 2147483645
  PASS ~null is -1
  PASS 3 & 1 is 1
  PASS 2 | true is 3
  PASS '3' ^ 1 is 2
  PASS 3^4&5 is 7
  PASS 2|4^5 is 3
  PASS 1 << 2 is 4
  PASS 8 >> 1 is 4
  PASS 1 >> 2 is 0
  PASS -8 >> 24 is -1
  PASS 8 >>> 2 is 2
  PASS -8 >>> 24 is 255
  PASS (-2200000000 >> 1) << 1 is 2094967296
  PASS 1+2 is 3
  PASS 'a'+'b' is 'ab'
  PASS 'a'+2 is 'a2'
  PASS '2'+'-1' is '2-1'
  PASS true+'a' is 'truea'
  PASS 'a' + null is 'anull'
  PASS true+1 is 2
  PASS false+null is 0
  PASS 1-3 is -2
  PASS isNaN('a'-3) is true
  PASS '3'-'-1' is 4
  PASS '4'-2 is 2
  PASS true-false is 1
  PASS false-1 is -1
  PASS null-true is -1
  PASS 2 * 3 is 6
  PASS true * 3 is 3
  PASS 2 * '3' is 6
  PASS 6 / 4 is 1.5
  PASS '6' / '2' is 3
  PASS isNaN('x' / 1) is true
  PASS isNaN(1 / NaN) is true
  PASS isNaN(Infinity / Infinity) is true
  PASS Infinity / 0 is Infinity
  PASS -Infinity / 0 is -Infinity
  PASS Infinity / 1 is Infinity
  PASS -Infinity / 1 is -Infinity
  PASS 1 / Infinity == +0 is true
  PASS 1 / -Infinity == -0 is true
  PASS isNaN(0/0) is true
  PASS 0 / 1 === 0 is true
  PASS 0 / -1 === -0 is true
  PASS 1 / 0 is Infinity
  PASS -1 / 0 is -Infinity
  PASS 6 % 4 is 2
  PASS '-6' % 4 is -2
  PASS 2==2 is true
  PASS 1==2 is false
  PASS 1<2 is true
  PASS 1<=2 is true
  PASS 2<1 is false
  PASS 2<=1 is false
  PASS 2>1 is true
  PASS 2>=1 is true
  PASS 1>=2 is false
  PASS 1>2 is false
  PASS 'abc' == 'abc' is true
  PASS 'abc' != 'xyz' is true
  PASS true == true is true
  PASS false == false is true
  PASS true != false is true
  PASS 'a' != null is true
  PASS 'a' != undefined is true
  PASS null == null is true
  PASS null == undefined is true
  PASS undefined == undefined is true
  PASS NaN != NaN is true
  PASS true != undefined is true
  PASS true != null is true
  PASS false != undefined is true
  PASS false != null is true
  PASS '0' == 0 is true
  PASS 1 == '1' is true
  PASS NaN != NaN is true
  PASS NaN != 0 is true
  PASS NaN != undefined is true
  PASS true == 1 is true
  PASS true != 2 is true
  PASS 1 == true is true
  PASS false == 0 is true
  PASS 0 == false is true
  PASS 'abc' < 'abx' is true
  PASS 'abc' < 'abcd' is true
  PASS 'abc' < 'abc' is false
  PASS 'abcd' < 'abcd' is false
  PASS 'abx' < 'abc' is false
  PASS 'abc' <= 'abc' is true
  PASS 'abc' <= 'abx' is true
  PASS 'abx' <= 'abc' is false
  PASS 'abcd' <= 'abc' is false
  PASS 'abc' <= 'abcd' is true
  PASS 'abc' > 'abx' is false
  PASS 'abc' > 'abc' is false
  PASS 'abcd' > 'abc' is true
  PASS 'abx' > 'abc' is true
  PASS 'abc' > 'abcd' is false
  PASS 'abc' >= 'abc' is true
  PASS 'abcd' >= 'abc' is true
  PASS 'abx' >= 'abc' is true
  PASS 'abc' >= 'abx' is false
  PASS 'abc' >= 'abx' is false
  PASS 'abc' >= 'abcd' is false
  PASS 'abc' <= 0 is false
  PASS '' <= 0 is true
  PASS ' ' <= 0 is true
  PASS null <= 0 is true
  PASS 0 <= 'abc' is false
  PASS 0 <= '' is true
  PASS 0 <= null is true
  PASS null <= null is true
  PASS 6 < '52' is true
  PASS 6 < '72' is true
  PASS NaN < 0 is false
  PASS NaN <= 0 is false
  PASS NaN > 0 is false
  PASS NaN >= 0 is false
  PASS 0 === false is false
  PASS null === null is true
  PASS NaN === NaN is false
  PASS 0.0 === 0 is true
  PASS 'abc' === 'abc' is true
  PASS 'a' === 'x' is false
  PASS true === true is true
  PASS false === false is true
  PASS true === false is false
  PASS Math === Math is true
  PASS Math === Boolean is false
  PASS Infinity === Infinity is true
  PASS 0 !== 0 is false
  PASS 0 !== 1 is true
  PASS typeof undefined is 'undefined'
  PASS typeof null is 'object'
  PASS typeof true is 'boolean'
  PASS typeof false is 'boolean'
  PASS typeof 1 is 'number'
  PASS typeof 'a' is 'string'
  PASS typeof shouldBe is 'function'
  PASS typeof Number.NaN is 'number'
  PASS 11 && 22 is 22
  PASS null && true is null
  PASS 11 || 22 is 11
  PASS null || 'a' is 'a'
  PASS void 1 is undefined.
  PASS 1 in [1, 2] is true
  PASS 3 in [1, 2] is false
  PASS 'a' in { a:1, b:2 } is true
  PASS (new Boolean()) instanceof Boolean is true
  PASS (new Boolean()) instanceof Number is false
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/operators.html
  
  Index: operators.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/operators.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/parse-expected.txt
  
  Index: parse-expected.txt
  ===================================================================
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/parse.html
  
  Index: parse.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/parse.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/prototype_length-expected.txt
  
  Index: prototype_length-expected.txt
  ===================================================================
  PASS Object.prototype.length is undefined
  PASS Function.prototype.length is 0
  PASS Array.prototype.length is 0
  PASS String.prototype.length is 0
  PASS Boolean.prototype.length is undefined
  PASS Number.prototype.length is undefined
  PASS Date.prototype.length is undefined
  PASS RegExp.prototype.length is undefined
  PASS Error.prototype.length is undefined
  PASS Array.prototype.length is 6
  PASS Function.prototype.length is 0
  PASS String.prototype.length is 0
  PASS delete Array.prototype.length is false
  PASS delete Function.prototype.length is false
  PASS delete String.prototype.length is false
  PASS foundArrayPrototypeLength is false
  PASS foundFunctionPrototypeLength is false
  PASS foundStringPrototypeLength is false
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/prototype_length.html
  
  Index: prototype_length.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/prototype_length.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/prototype_proto-expected.txt
  
  Index: prototype_proto-expected.txt
  ===================================================================
  PASS Object.prototype.__proto__ == Object.prototype is false
  PASS Function.prototype.__proto__ is Object.prototype
  PASS Array.prototype.__proto__ is Object.prototype
  PASS String.prototype.__proto__ is Object.prototype
  PASS Boolean.prototype.__proto__ is Object.prototype
  PASS Number.prototype.__proto__ is Object.prototype
  PASS Date.prototype.__proto__ is Object.prototype
  PASS RegExp.prototype.__proto__ is Object.prototype
  PASS Error.prototype.__proto__ is Object.prototype
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/prototype_proto.html
  
  Index: prototype_proto.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/prototype_proto.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/scope-expected.txt
  
  Index: scope-expected.txt
  ===================================================================
  PASS f(2) is 22
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/scope.html
  
  Index: scope.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/scope.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/statements-expected.txt
  
  Index: statements-expected.txt
  ===================================================================
  PASS testSwitch(0) is 'abcd'
  PASS testSwitch(1) is 'bcd'
  PASS testSwitch(2) is 'd'
  PASS testSwitch(false) is ''
  PASS testSwitch2(1) is 'a'
  PASS testSwitch2(2) is 'b'
  PASS testSwitch2(3) is 'd'
  PASS testSwitch2(-1) is 'cd'
  PASS testSwitch2('x') is 'cd'
  PASS testSwitch3(0) is 'cde'
  PASS testSwitch3(3) is 'de'
  PASS testSwitch3(4) is 'e'
  PASS testSwitch4(0) is 'ab'
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/statements.html
  
  Index: statements.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/statements.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/string-1-n-expected.txt
  
  Index: string-1-n-expected.txt
  ===================================================================
  PASS window.successfullyParsed is undefined.
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/string-1-n.html
  
  Index: string-1-n.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/string-1-n.js"></script>
  <script>
  shouldBeUndefined("window.successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/string-2-n-expected.txt
  
  Index: string-2-n-expected.txt
  ===================================================================
  PASS window.successfullyParsed is undefined.
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/string-2-n.html
  
  Index: string-2-n.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/string-2-n.js"></script>
  <script>
  shouldBeUndefined("window.successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/var_decl_init-expected.txt
  
  Index: var_decl_init-expected.txt
  ===================================================================
  PASS varInFunction() is true
  PASS varInVarList() is true
  PASS varListOrder() is true
  PASS varInBlock() is true
  PASS varInIf() is true
  PASS varInElse() is true
  PASS varInDoWhile() is true
  PASS varInWhile() is true
  PASS varInFor() is true
  PASS varInForIn() is true
  PASS varInWith() is true
  PASS varInCase() is true
  PASS varInLabel() is true
  PASS varInCatch() is true
  PASS varInFinally() is true
  PASS varInTry() is true
  PASS varInForInitExpr() is true
  PASS varInSubFunction() is true
  PASS varGlobal is 1
  PASS overrideVar is 1
  PASS overrideVar2 is 2
  PASS successfullyParsed is true
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/var_decl_init.html
  
  Index: var_decl_init.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  <html>
    <!-- This file allows to run a javascript test in another browser.
         Simply change the script inclusion at the end of the file -->
  <script src="resources/base.js"></script>
  <script>
  if (window.layoutTestController)
      layoutTestController.dumpAsText();
  
  function testPassed(msg)
  {
      document.write("<b><font color=green>PASS</font></b> " + msg + "<br>");
  }
  
  function testFailed(msg)
  {
      document.write("<b><font color=red>FAIL</font></b> " + msg + "<br>");
  }
  
  function debug(a) 
  { 
      document.write("<p> " + a + "</p>"); 
  }
  </script>
  
  <script src="resources/var_decl_init.js"></script>
  <script>
  shouldBeTrue("successfullyParsed");
  </script>
  </html>
  
  
  1.1                  LayoutTests/fast/js/kde/resources/Array.js
  
  Index: Array.js
  ===================================================================
  // 15.4 Array Objects
  // (c) 2001 Harri Porten <porten at kde.org>
  
  shouldBe("Array().length", "0");
  shouldBe("(new Array()).length", "0");
  shouldBe("(new Array(3)).length", "3");
  shouldBe("(new Array(11, 22)).length", "2");
  shouldBe("(new Array(11, 22))[0]", "11");
  shouldBe("Array(11, 22)[1]", "22");
  shouldBeUndefined("(new Array(11, 22))[3]");
  shouldBe("String(new Array(11, 22))", "'11,22'");
  shouldBe("var a = []; a[0] = 33; a[0]", "33");
  shouldBe("var a = []; a[0] = 33; a.length", "1");
  shouldBe("var a = [11, 22]; a.length = 1; String(a);", "'11'");
  shouldBe("var a = [11, 22]; a.length = 1; a.length;", "1");
  
  // range checks
  var caught = false;
  var ename = "";
  try {
    [].length = -1;
  } catch (e) {
    // expect Range Error
    caught = true;
    ename = e.name;
  }
  
  shouldBeTrue("caught;");
  shouldBe("ename", "'RangeError'");
  
  caught = false;
  ename = "";
  try {
    new Array(Infinity);
  } catch (e) {
    // expect Range Error
    caught = true;
    ename = e.name;
  }
  shouldBeTrue("caught;");
  shouldBe("ename", "'RangeError'");
  
  shouldBeUndefined("var a = [11, 22]; a.length = 1; a[1];");
  shouldBe("Array().toString()", "''");
  shouldBe("Array(3).toString()", "',,'");
  shouldBe("Array(11, 22).toString()", "'11,22'");
  shouldBe("String(Array(11, 22).concat(33))", "'11,22,33'");
  shouldBe("String(Array(2).concat(33, 44))", "',,33,44'");
  shouldBe("String(Array(2).concat(Array(2)))", "',,,'");
  shouldBe("String(Array(11,22).concat(Array(33,44)))", "'11,22,33,44'");
  shouldBe("String(Array(1,2).concat(3,Array(4,5)))", "'1,2,3,4,5'");
  shouldBe("var a = new Array(1,2,3); delete a[1]; String(a.concat(4))", "'1,,3,4'");
  
  shouldBe("[1,2,3,4].slice(1, 3).toString()", "'2,3'");
  shouldBe("[1,2,3,4].slice(-3, -1).toString()", "'2,3'");
  shouldBe("[1,2].slice(-9, 0).length", "0");
  shouldBe("[1,2].slice(1).toString()", "'2'");
  shouldBe("[1,2].slice().toString()", "'1,2'");
  
  // 2nd set.
  shouldBe("(new Array('a')).length", "1");
  shouldBe("(new Array('a'))[0]", "'a'");
  shouldBeUndefined("(new Array('a'))[1]");
  
  shouldBe("Array('a').length", "1");
  shouldBe("Array('a')[0]", "'a'");
  
  shouldBe("String(Array())", "''");
  shouldBe("String(Array('a','b'))", "'a,b'");
  
  shouldBe("[].length", "0");
  shouldBe("['a'].length", "1");
  shouldBe("['a'][0]", "'a'");
  shouldBe("['a',,'c'][2]", "'c'");
  
  function forInSum(_a) {
    var s = '';
    for (i in _a)
      s += _a[i];
    return s;
  }
  
  shouldBe("forInSum([])", "''");
  shouldBe("forInSum(Array())", "''");
  shouldBe("forInSum(Array('a'))", "'a'");
  
  var a0 = [];
  shouldBe("forInSum(a0)", "''");
  
  var a1 = [ 'a' ];
  shouldBe("forInSum(a1)", "'a'");
  
  shouldBe("String([3,1,'2'].sort())", "'1,2,3'");
  shouldBe("String([,'x','aa'].sort())", "'aa,x,'"); // don't assume 'x'>undefined !
  
  // sort by length
  function comp(a, b) {
    var la = String(a).length;
    var lb = String(b).length;
    if (la < lb)
      return -1;
    else if (la > lb)
      return 1;
    else
      return 0;
  }
  shouldBe("var a = ['aa', 'b', 'cccc', 'ddd']; String(a.sort(comp))", "'b,aa,ddd,cccc'");
  
  // +/-Infinity as function return value
  shouldBe("[0, Infinity].sort(function(a, b) { return a - b }).toString()",
  	 "'0,Infinity'");
  
  // Array.unshift()
  shouldBe("[].unshift('a')", "1");
  shouldBe("['c'].unshift('a', 'b')", "3");
  shouldBe("var a = []; a.unshift('a'); String(a)", "'a'");
  shouldBe("var a = ['c']; a.unshift('a', 'b'); String(a)", "'a,b,c'");
  
  // Array.splice()
  shouldBe("String(['a', 'b', 'c'].splice(1, 2, 'x', 'y'))", "'b,c'");
  
  var maxint = Math.pow(2,32)-1;
  var arr = new Array();
  
  // 2^32 should not be treated as a valid array index, i.e.
  // setting the property on the array should not result in
  // the length being modified
  
  arr.length = 40;
  arr[maxint] = "test";
  shouldBe("arr.length","40");
  shouldBe("arr[maxint]","\"test\"");
  delete arr[maxint];
  shouldBe("arr.length","40");
  shouldBe("arr[maxint]","undefined");
  arr[maxint-1] = "test2";
  shouldBe("arr.length","maxint");
  shouldBe("arr[maxint-1]","\"test2\"");
  
  arr = new Array('a','b','c');
  arr.__proto__ = { 1: 'x' };
  var propnames = new Array();
  for (i in arr)
    propnames.push(i);
  propnames.sort();
  shouldBe("propnames.length","3");
  shouldBe("propnames[0]","'0'");
  shouldBe("propnames[1]","'1'");
  shouldBe("propnames[2]","'2'");
  
  function testToString() {
    // backup
    var backupNumberToString = Number.prototype.toString;
    var backupNumberToLocaleString = Number.prototype.toLocaleString;
    var backupRegExpToString = RegExp.prototype.toString;
    var backupRegExpToLocaleString = RegExp.prototype.toLocaleString;
  
    // change functions
    Number.prototype.toString = function() { return "toString"; }
    Number.prototype.toLocaleString = function() { return "toLocaleString"; }
    RegExp.prototype.toString = function() { return "toString2"; }
    RegExp.prototype.toLocaleString = function() { return "toLocaleString2"; }
  
    // the tests
    shouldBe("[1].toString()", "'1'");
    shouldBe("[1].toLocaleString()", "'toLocaleString'");
    Number.prototype.toLocaleString = "invalid";
    shouldBe("[1].toLocaleString()", "'1'");
    shouldBe("[/r/].toString()", "'toString2'");
    shouldBe("[/r/].toLocaleString()", "'toLocaleString2'");
    RegExp.prototype.toLocaleString = "invalid";
    shouldBe("[/r/].toLocaleString()", "'toString2'");
  
    var caught = false;
    try {
      [{ toString : 0 }].toString();
    } catch (e) {
      caught = true;
    }
    shouldBeTrue("caught");
  
    // restore
    Number.prototype.toString = backupNumberToString;
    Number.prototype.toLocaleString = backupNumberToLocaleString;
    RegExp.prototype.toString = backupRegExpToString;
    RegExp.prototype.toLocaleString = backupRegExpToLocaleString;
  }
  
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/Boolean.js
  
  Index: Boolean.js
  ===================================================================
  shouldBe("Boolean()", "false");
  shouldBe("Boolean(true)", "true");
  shouldBe("Boolean(false)", "false");
  shouldBe("(new Boolean(true)).valueOf()", "true");
  shouldBe("(new Boolean(false)).valueOf()", "false");
  shouldBe("(new Boolean(Boolean(true))).valueOf()", "true");
  shouldBeTrue("true.valueOf() === true");
  shouldBeTrue("false.toString() === 'false'");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/Date.js
  
  Index: Date.js
  ===================================================================
  debug("Start Of Test");
  
  shouldBeTrue("isNaN(Date.prototype.valueOf())");
  
  var d = new Date(1017492323515); // Sat Mar 30 13:45:23 GMT+0100 (CET) 2002
  // shouldBe("d.getUTCHours()", "12");
  // shouldBe("d.getHours()", "12");
  shouldBe("d.getMinutes()", "45");
  shouldBe("d.getUTCMinutes()", "45");
  shouldBe("d.getDay()", "6");
  shouldBe("d.getMonth()", "2");
  shouldBe("d.getFullYear()", "2002");
  
  // string/number conversions
  shouldBe("Number(d)", "1017492323515");
  shouldBe("Boolean(d)", "true");
  shouldBe("(new Date(100)).valueOf()", "100");
  shouldBe("(new Date(true)).valueOf()", "1");
  shouldBe("(new Date(false)).valueOf()", "0");
  shouldBe("typeof (new Date()).toString()", "'string'");
  shouldBe("typeof ('' + new Date())", "'string'");
  shouldBe("typeof (new Date() + new Date())", "'string'");
  shouldBeTrue("isNaN(Number(new Date('foo')))");
  shouldBe("new Date(10001) - new Date(10000)", "1");
  shouldBe("'' - new Date(10000)", "-10000");
  shouldBe("2 * new Date(10000)", "20000");
  shouldBe("var d = new Date(); d == String(d)", "true");
  
  var d0 = new Date(2004, 0, 1, 0, 0, 0, 0);
  shouldBe("d0.getHours()","0");
  
  var d1 = new Date(Date.UTC(2004, 0, 1, 0, 0, 0, 0));
  shouldBe("d1.getUTCHours()","0");
  d1.setUTCHours(1999,6,9);
  d1.setUTCHours(11,22,33);
  shouldBe("d1.getUTCHours()","11");
  
  var d2 = new Date();
  d2.setMilliseconds(11);
  shouldBe("d2.getMilliseconds()", "11");
  d2.setSeconds(11, 22);
  shouldBe("d2.getSeconds()", "11");
  shouldBe("d2.getMilliseconds()", "22");
  d2.setMinutes(11, 22, 33);
  shouldBe("d2.getMinutes()", "11");
  shouldBe("d2.getSeconds()", "22");
  shouldBe("d2.getMilliseconds()", "33");
  d2.setHours(11, 22, 33, 44);
  shouldBe("d2.getHours()", "11");
  shouldBe("d2.getMinutes()", "22");
  shouldBe("d2.getSeconds()", "33");
  shouldBe("d2.getMilliseconds()", "44");
  d2.setMonth(3, 20);
  shouldBe("d2.getMonth()", "3");
  shouldBe("d2.getDate()", "20");
  d2.setFullYear(1976, 3, 20);
  shouldBe("d2.getFullYear()", "1976");
  shouldBe("d2.getMonth()", "3");
  shouldBe("d2.getDate()", "20");
  
  // ### fix: shouldBe("d2.setYear(-1), d2.getFullYear()", "-1");
  shouldBe("d2.setYear(0), d2.getFullYear()", "1900");
  shouldBe("d2.setYear(1), d2.getFullYear()", "1901");
  shouldBe("d2.setYear(99), d2.getFullYear()", "1999");
  shouldBe("d2.setYear(100), d2.getFullYear()", "100");
  shouldBe("d2.setYear(2050), d2.getFullYear()", "2050");
  shouldBe("d2.setYear(1899), d2.getFullYear()", "1899");
  shouldBe("d2.setYear(2000), d2.getFullYear()", "2000");
  shouldBe("d2.setYear(2100), d2.getFullYear()", "2100");
  
  // date parsing
  // from kdelibs/kdecore/tests/krfcdatetest.cpp
    var dateRef = new Date('Thu Nov 5 1994 18:15:30 GMT+0500');
    //  debug(dateRef);
    shouldBe( "dateRef.getDay()", "6"); // It was in fact a Saturday
    shouldBe( "dateRef.getDate()", "5");
    shouldBe( "dateRef.getMonth()", "10");
    shouldBe( "dateRef.getYear()", "94"); // like NS, and unlike IE, by default
    shouldBe( "dateRef.getFullYear()", "1994");
    shouldBe( "dateRef.getMinutes()", "15");
    shouldBe( "dateRef.getSeconds()", "30");
    shouldBe( "dateRef.getUTCDay()", "6"); // It was in fact a Saturday
    shouldBe( "dateRef.getUTCDate()", "5");
    shouldBe( "dateRef.getUTCMonth()", "10");
    shouldBe( "dateRef.getUTCFullYear()", "1994");
    shouldBe( "dateRef.getUTCHours()", "13");
    shouldBe( "dateRef.getUTCMinutes()", "15");
    shouldBe( "dateRef.getUTCSeconds()", "30");
  
    d = new Date('Thu Nov 5 1994 18:15:30 GMT+05:00');
    shouldBe( "d.toUTCString()", "dateRef.toUTCString()");
    shouldBe( "d.toUTCString().replace('GMT', '+0000')", "'Sat, 05 Nov 1994 13:15:30 +0000'"); // It was in fact a Saturday
  
    dateRef = new Date('Thu Nov 5 2065 18:15:30 GMT+0500');
    //  debug(dateRef);
    shouldBe( "dateRef.getDay()", "4");
    shouldBe( "dateRef.getDate()", "5");
    shouldBe( "dateRef.getMonth()", "10");
  //  shouldBe( "dateRef.getYear()", "65"); // Should this be 65 or 165 ??
    shouldBe( "dateRef.getFullYear()", "2065");
    shouldBe( "dateRef.getMinutes()", "15");
    shouldBe( "dateRef.getSeconds()", "30");
    shouldBe( "dateRef.getUTCDay()", "4");
    shouldBe( "dateRef.getUTCDate()", "5");
    shouldBe( "dateRef.getUTCMonth()", "10");
    shouldBe( "dateRef.getUTCFullYear()", "2065");
    shouldBe( "dateRef.getUTCHours()", "13");
    shouldBe( "dateRef.getUTCMinutes()", "15");
    shouldBe( "dateRef.getUTCSeconds()", "30");
  
    dateRef = new Date('Wed Nov 5 2064 18:15:30 GMT+0500'); // Leap year
    //  debug(dateRef);
    shouldBe( "dateRef.getDay()", "3");
    shouldBe( "dateRef.getDate()", "5");
    shouldBe( "dateRef.getMonth()", "10");
  //  shouldBe( "dateRef.getYear()", "64"); // Should this be 64 or 164 ??
    shouldBe( "dateRef.getFullYear()", "2064");
    shouldBe( "dateRef.getMinutes()", "15");
    shouldBe( "dateRef.getSeconds()", "30");
    shouldBe( "dateRef.getUTCDay()", "3");
    shouldBe( "dateRef.getUTCDate()", "5");
    shouldBe( "dateRef.getUTCMonth()", "10");
    shouldBe( "dateRef.getUTCFullYear()", "2064");
    shouldBe( "dateRef.getUTCHours()", "13");
    shouldBe( "dateRef.getUTCMinutes()", "15");
    shouldBe( "dateRef.getUTCSeconds()", "30");
  
  /*
    // Shouldn't this work?
    dateRef = new Date('Sat Nov 5 1864 18:15:30 GMT+0500');
    //  debug(dateRef);
    shouldBe( "dateRef.getDay()", "6");
    shouldBe( "dateRef.getDate()", "5");
    shouldBe( "dateRef.getMonth()", "10");
  //  shouldBe( "dateRef.getYear()", "64"); // Should this be 64 ??
    shouldBe( "dateRef.getFullYear()", "1864");
    shouldBe( "dateRef.getMinutes()", "15");
    shouldBe( "dateRef.getSeconds()", "30");
    shouldBe( "dateRef.getUTCDay()", "3");
    shouldBe( "dateRef.getUTCDate()", "5");
    shouldBe( "dateRef.getUTCMonth()", "10");
    shouldBe( "dateRef.getUTCFullYear()", "1864");
    shouldBe( "dateRef.getUTCHours()", "13");
    shouldBe( "dateRef.getUTCMinutes()", "15");
    shouldBe( "dateRef.getUTCSeconds()", "30");
  */
  
    d = new Date('Tue Nov 5 2024 18:15:30 GMT+05:00');
    shouldBe( "d.toUTCString().replace('GMT', '+0000')", "'Tue, 05 Nov 2024 13:15:30 +0000'");
    d = new Date('Mon Nov 5 2040 18:15:30 GMT+05:00');
    shouldBe( "d.toUTCString().replace('GMT', '+0000')", "'Mon, 05 Nov 2040 13:15:30 +0000'");
    d = new Date('Fri Nov 5 2100 18:15:30 GMT+05:00');
    shouldBe( "d.toUTCString().replace('GMT', '+0000')", "'Fri, 05 Nov 2100 13:15:30 +0000'");
    d = new Date('Fri Nov 5 2004 03:15:30 GMT+05:00'); // Timezone crosses day barrier
    shouldBe( "d.toUTCString().replace('GMT', '+0000')", "'Thu, 04 Nov 2004 22:15:30 +0000'");
  
  // AM/PM
  shouldBe("(new Date('Dec 25 1995 1:30 PM UTC')).valueOf()", "819898200000");
  shouldBe("(new Date('Dec 25 1995 1:30 pm UTC')).valueOf()", "819898200000");
  shouldBe("(new Date('Dec 25 1995 1:30 AM UTC')).valueOf()", "819855000000");
  shouldBe("(new Date('Dec 25 1995 1:30 am UTC')).valueOf()", "819855000000");
  shouldBe("(new Date('Dec 25 1995 12:00 PM UTC')).valueOf()", "819892800000");
  shouldBe("(new Date('Dec 25 1995 12:00 AM UTC')).valueOf()", "819849600000");
  shouldBe("(new Date('Dec 25 1995 00:00 AM UTC')).valueOf()", "819849600000");
  shouldBe("(new Date('Dec 25 1995 00:00 PM UTC')).valueOf()", "819892800000");
  shouldBeTrue("isNaN(new Date('Dec 25 1995 13:30 AM UTC')).valueOf()");
  
  /*
    // Don't work in any other browsers
    d = new Date('Wednesday, 05-Nov-94 13:15:30 GMT');
    shouldBe( "d.toUTCString()", "dateRef.toUTCString()");
  
    d = new Date('Wed, 05-Nov-1994 13:15:30 GMT');
    shouldBe( "d.toUTCString()", "dateRef.toUTCString()");
  
    d = new Date('Wed, 05-November-1994 13:15:30 GMT');
    shouldBe( "d.toUTCString()", "dateRef.toUTCString()");
  
    // Works only in EST/EDT
    d = new Date('November 5, 1994 08:15:30');
    debug(d);
    shouldBe( "d.toUTCString()", "dateRef.toUTCString()");
  
    var dateRef2 = new Date('July 1, 2004 10:00 EDT');
    d = new Date('July 1, 2004 10:00');
    debug(d);
    shouldBe( "d.toUTCString()", "dateRef2.toUTCString()");
  
    shouldBe("new Date('Wednesday 09-Nov-99 13:12:40 GMT').getMonth()", "10"); // not parsed in moz
    shouldBe("new Date('Sat, 01-Dec-2000 08:00:00 GMT').getMonth()", "11"); // not parsed in moz
  */
  
  shouldBe("new Date('Sat, 01 Dec 2000 08:00:00 GMT').getMonth()", "11");
  shouldBe("new Date('01 Jan 99 22:00 +0100').getFullYear()", "1999");
  shouldBe("new Date('May 09 1999 13:12:40 GMT').getDate()", "9");
  shouldBe("new Date('Wednesday February 09 1999 13:12:40 GMT').getMonth()", "1");
  shouldBe("new Date('Wednesday January 09 1999 13:12:40 GMT').getFullYear()", "1999");
  shouldBe("new Date('Wednesday January 09 13:12:40 GMT 1999').getFullYear()", "1999");
  shouldBe("new Date('Wednesday January 06 13:12:40 GMT 2100').getFullYear()", "2100");
  shouldBe("(new Date('\\n21\\rFeb\\f\\v\\t 2004')).getFullYear()", "2004"); // ws
  shouldBe("(new Date('Dec 25 1995 gmt')).valueOf()", "819849600000");
  shouldBe("(new Date('Dec 25 1995 utc')).valueOf()", "819849600000");
  
  // Those two fail in Konqueror, due to time_t being limited to 2037 !
  // moved to evil-n.js shouldBe("new Date('3/31/2099').getFullYear()", "2099");
  // moved to evil-n.js shouldBe("new Date('3/31/2099').getMonth()", "2");
  //shouldBe("new Date('3/31/2099').getDate()",31);
  
  shouldBe("new Date('3/31/2005').getDate()", "31");
  shouldBe("new Date('3/31/2005').getHours()", "0");
  shouldBe("new Date('7/31/2005').getHours()", "0"); // DST
  shouldBe("new Date('3/31/2005 GMT').getFullYear()", "2005");
  shouldBe("new Date('3/31/2005 12:45:15').getDate()", "31");
  shouldBe("new Date('3/31/2005 12:45:15').getMonth()", "2");
  shouldBe("new Date('3/31/2005 12:45:15').getSeconds()", "15");
  shouldBe("new Date('2003/02/03').getMonth()", "1");
  // ### not sure how to interpret this: new Date('25/12/2005') 
  // ### shouldBe("new Date('1950/02/03').getFullYear()", "1950");
  shouldBe("new Date('2003/02/03 02:01:04 UTC').getSeconds()", "4");
  
  var jul27Str = 'July 27, 2003'
  var jul27Num = new Date(jul27Str).valueOf();
  shouldBe("jul27Num", "Date.parse(jul27Str).valueOf()");
  // expect NaN, not undefined
  shouldBe("typeof Date.parse(0)", "'number'");
  shouldBeTrue("isNaN(Date.parse(0))");
  // parse string *object*
  shouldBe("Date.parse(new String(jul27Str)).valueOf()", "jul27Num");
  
  // invalid dates
  shouldBeTrue("isNaN(Number(new Date('01 ANF 2000')))"); // middle of JANFEB :)
  shouldBeTrue("isNaN(Number(new Date('ANF 01 2000')))");
  
  d = new Date("January 1, 2000");
  var oldHours = d.getHours();
  d.setMonth(8);
  shouldBe("oldHours", "d.getHours()");
  
  // some time values in different (implementation) ranges
  shouldBe("Date.UTC(1800, 0, 1)", "-5364662400000");
  shouldBe("Date.UTC(1800, 2, 1)", "-5359564800000"); // one day after Feb 28th
  shouldBe("Date.UTC(1899, 0, 1)", "-2240524800000");
  shouldBe("Date.UTC(1900, 0, 1)", "-2208988800000");
  shouldBe("Date.UTC(1960, 0, 1)", "-315619200000");
  shouldBe("Date.UTC(1970, 0, 1)", "0");
  shouldBe("Date.UTC(3000, 0, 1)", "32503680000000");
  
  // same dates as above
  shouldBe("(new Date(-5364662400000)).valueOf()", "-5364662400000");
  shouldBe("(new Date(-2240524800000)).valueOf()", "-2240524800000");
  shouldBe("(new Date(-2208988800000)).valueOf()", "-2208988800000");
  shouldBe("(new Date(-315619200000)).valueOf()", "-315619200000");
  shouldBe("(new Date(0)).valueOf()", "0");
  shouldBe("(new Date(32503680000000)).valueOf()", "32503680000000");
  
  d = new Date(2010, 0, 1);
  //shouldBe("d.valueOf()", "32503676400000");
  shouldBe("d.getDay()", "5");
  
  // large and small year numbers
  d = new Date(3000, 0, 1);
  //shouldBe("d.valueOf()", "32503676400000");
  //shouldBe("(new Date(3000, 0, 1)).valueOf()", "Date.UTC(3000, 0, 1)");
  shouldBeTrue("d.getYear() == 1100 || d.getYear() == 3000");
  shouldBe("d.getFullYear()", "3000");
  shouldBe("d.getDay()", "3");
  shouldBe("d.getHours()", "0");
  shouldBe("new Date('3/31/2099').getFullYear()", "2099");
  shouldBe("new Date('3/31/2099').getMonth()", "2");
  
  d = new Date(Date.UTC(3000, 0, 1));
  shouldBe("d.valueOf()", "32503680000000");
  shouldBe("d.getUTCDay()", "3");
  shouldBe("d.getUTCHours()", "0");
  
  d = new Date(1899, 0, 1);
  shouldBe("d.getFullYear()", "1899");
  shouldBeTrue("d.getYear() == -1 || d.getYear() == 1899"); // Moz or IE
  shouldBe("d.getDay()", "0");
  shouldBe("d.getHours()", "0");
  
  d = new Date(Date.UTC(3000, 0, 1));
  shouldBe("d.getUTCDay()", "3");
  
  d = new Date(Date.UTC(1899, 0, 1));
  shouldBe("d.getUTCDay()", "0");
  shouldBe( "d.toUTCString().replace('GMT', '+0000')", "'Sun, 01 Jan 1899 00:00:00 +0000'");
  
  // out of range values. have to be caught by TimeClip()
  shouldBe("Number(new Date(8.64E15))", "8.64E15");
  shouldBe("Number(new Date(-8.64E15))", "-8.64E15");
  shouldBeTrue("isNaN(new Date(8.6400001E15))");;
  shouldBeTrue("isNaN(new Date(-8.6400001E15))");;
  
  // other browsers don't mind the missing space
  shouldBe("(new Date('January29,2005')).getDate()", "29");
  
  shouldBe("(new Date('12/25/1995 ::')).valueOf()",
  	 "(new Date('12/25/1995')).valueOf()");
  
  debug("End Of Test");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/Error.js
  
  Index: Error.js
  ===================================================================
  // Error constructor called as a function
  shouldBe("Error('msg').message", "'msg'");
  
  // Error Constructor called as part of a new expression
  shouldBe("(new Error('msg')).message", "'msg'");
  // moved to evil-n.js shouldBeUndefined("(new Error()).message");
  shouldBe("(new Error('msg')).name", "'Error'");
  
  shouldBe("Object.prototype.toString.apply(Error())", "'[object Error]'");
  shouldBe("Object.prototype.toString.apply(Error)", "'[object Function]'");
  shouldBe("Object.prototype.toString.apply(EvalError)", "'[object Function]'");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/GlobalObject.js
  
  Index: GlobalObject.js
  ===================================================================
  var h = "a\xefc";
  var u = "a\u1234c";
  var z = "\x00";
  
  shouldBe("h.charCodeAt(1)", "239");
  shouldBe("u.charCodeAt(1)", "4660");
  shouldBe("escape(h)", "'a%EFc'");
  shouldBe("escape(u)", "'a%u1234c'");
  shouldBe("escape(z)", "'%00'");
  shouldBe("unescape(escape(h))", "h");
  shouldBe("unescape(escape(u))", "u");
  shouldBe("unescape(escape(z))", "z");
  
  shouldBeTrue("isNaN(NaN)");
  shouldBeTrue("isNaN('NaN')");
  shouldBeFalse("isNaN('1')");
  
  shouldBeTrue("isFinite(1)");
  shouldBeTrue("isFinite('1')");
  
  // all should return NaN because 1st char is non-number
  shouldBeFalse("isFinite('a')");
  shouldBe('isNaN(parseInt("Hello", 8))', "true");
  shouldBe('isNaN(parseInt("FFF", 10))', "true");
  shouldBe('isNaN(parseInt(".5", 10))', "true");
  
  shouldBeFalse("isFinite(Infinity)");
  shouldBeFalse("isFinite('Infinity')");
  
  shouldBeTrue("isNaN(parseInt())");
  shouldBeTrue("isNaN(parseInt(''))");
  shouldBeTrue("isNaN(parseInt(' '))");
  shouldBeTrue("isNaN(parseInt('a'))");
  shouldBe("parseInt(1)", "1");
  shouldBe("parseInt(1234567890123456)", "1234567890123456");
  shouldBe("parseInt(1.2)", "1");
  shouldBe("parseInt(' 2.3')", "2");
  shouldBe("parseInt('0x10')", "16");
  shouldBe("parseInt('11', 0)", "11");
  shouldBe("parseInt('F', 16)", "15");
  
  shouldBeTrue("isNaN(parseInt('10', 40))");
  shouldBe("parseInt('3x')", "3");
  shouldBe("parseInt('3 x')", "3");
  shouldBeTrue("isNaN(parseInt('Infinity'))");
  
  // all should return 15
  shouldBe('parseInt("15")', "15");
  shouldBe('parseInt("017")', "15"); /// The spec says it's ok, and even encouraged, to parse this as 17!
  shouldBe('parseInt("0xf")', "15");
  shouldBe('parseInt("15", 0)', "15");
  shouldBe('parseInt("15", 10)', "15");
  shouldBe('parseInt("F", 16)', "15");
  shouldBe('parseInt("17", 8)', "15");
  shouldBe('parseInt("15.99", 10)', "15");
  shouldBe('parseInt("FXX123", 16)', "15");
  shouldBe('parseInt("1111", 2)', "15");
  shouldBe('parseInt("15*3", 10)', "15");
  
  // this should be 0
  shouldBe('parseInt("0x7", 10)', "0");
  shouldBe('parseInt("1x7", 10)', "1");
  
  shouldBeTrue("isNaN(parseFloat())");
  shouldBeTrue("isNaN(parseFloat(''))");
  shouldBeTrue("isNaN(parseFloat(' '))");
  shouldBeTrue("isNaN(parseFloat('a'))");
  shouldBe("parseFloat(1)", "1");
  shouldBe("parseFloat(' 2.3')", "2.3");
  shouldBe("parseFloat('3.1 x', 3)", "3.1");
  shouldBe("parseFloat('3.1x', 3)", "3.1");
  shouldBeFalse("isFinite(parseFloat('Infinity'))");
  shouldBeFalse("delete NaN");
  shouldBeFalse("delete Infinity");
  shouldBeFalse("delete undefined");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/KNOWN_FAILURES
  
  Index: KNOWN_FAILURES
  ===================================================================
  evil-n.js
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/Number.js
  
  Index: Number.js
  ===================================================================
  shouldBe("Number()", "0");
  shouldBe("Number(1)", "1");
  shouldBe("Number(1.1)", "1.1");
  shouldBe("Number('1.2')", "1.2");
  shouldBe("isNaN(Number('a'))", "true");
  
  shouldBe("(new Number()).valueOf()", "0");
  shouldBe("(new Number(.4)).valueOf()", "0.4");
  shouldBe("(new Number('1.')).valueOf()", "1");
  shouldBe("isNaN(new Number('a'))", "true");
  
  shouldBe("isNaN(Number.NaN)", "true");
  shouldBe("Number.NEGATIVE_INFINITY", "-Infinity");
  shouldBe("Number.POSITIVE_INFINITY", "Infinity");
  // with (Number)
  //   shouldBe("POSITIVE_INFINITY", "Infinity");
  
  shouldBe("(1).toString()", "'1'");
  shouldBe("typeof (1).toString()", "'string'");
  shouldBe("(10).toString(16)", "'a'");
  shouldBe("(8.5).toString(16)", "'8.8'");
  shouldBe("(-8.5).toString(16)", "'-8.8'");
  shouldBe("Number.NaN.toString(16)", "'NaN'");
  shouldBe("Number.POSITIVE_INFINITY.toString(16)", "'Infinity'");
  shouldBe("Number.NEGATIVE_INFINITY.toString(16)", "'-Infinity'");
  shouldBe("Number.MAX_VALUE.toString(2).length", "1024");
  shouldBe("(1).valueOf()", "1");
  shouldBe("typeof (1).valueOf()", "'number'");
  
  function toFixedOrException(val,fractionDigits)
  {
    var s = "";
    try {
      s = String(Number(val).toFixed(fractionDigits));
    }
    catch (e) {
      s = String(e);
    }
    return s;
  }
  
  shouldBe("Number(1234.567).toFixed(0)","\"1235\"");
  shouldBe("Number(1234.567).toFixed(undefined)","\"1235\"");
  shouldBe("Number(0).toFixed(7)","\"0.0000000\"");
  shouldBe("Number(0.003).toFixed(0)","\"0\"");
  shouldBe("Number(40.1234567890123).toFixed(7)","\"40.1234568\"");
  shouldBe("Number(-40.1234567890123).toFixed(7)","\"-40.1234568\"");
  shouldBe("Number(4).toFixed(7)","\"4.0000000\"");
  shouldBe("Number(0.000056).toFixed(7)","\"0.0000560\"");
  shouldBe("Number(NaN).toFixed(7)","\"NaN\"");
  shouldBe("Number(Infinity).toFixed(7)","\"Infinity\"");
  shouldBe("Number(-Infinity).toFixed(7)","\"-Infinity\"");
  shouldBe("Number(Math.pow(10,4)).toFixed(13)","\"10000.0000000000000\"");
  shouldBe("Number(Math.pow(10,17)).toFixed(16)","\"100000000000000000.0000000000000000\"");
  shouldBe("Number(Math.pow(10,18)).toFixed(17)","\"1000000000000000000.00000000000000000\"");
  shouldBe("Number(Math.pow(10,19)).toFixed(18)","\"10000000000000000000.000000000000000000\"");
  shouldBe("Number(Math.pow(10,17)).toFixed(20)","\"100000000000000000.00000000000000000000\"");
  shouldBe("Number(Math.pow(10,18)).toFixed(20)","\"1000000000000000000.00000000000000000000\"");
  shouldBe("Number(Math.pow(10,19)).toFixed(20)","\"10000000000000000000.00000000000000000000\"");
  shouldBe("Number(Math.pow(10,20)).toFixed(20)","\"100000000000000000000.00000000000000000000\"");
  shouldBe("Number(Math.pow(10,21)).toFixed(20)","\"1e+21\"");
  shouldBeTrue("toFixedOrException(2,-1).indexOf('Range') >= 0");
  shouldBe("toFixedOrException(2,0)","\"2\"");
  shouldBe("toFixedOrException(2,20)","\"2.00000000000000000000\"");
  shouldBeTrue("toFixedOrException(2,21).indexOf('Range') >= 0");
  
  
  
  
  shouldBe("Number(NaN).toExponential()","\"NaN\"");
  shouldBe("Number(Infinity).toExponential()","\"Infinity\"");
  shouldBe("Number(-Infinity).toExponential()","\"-Infinity\"");
  shouldBe("Number(NaN).toExponential(4)","\"NaN\"");
  shouldBe("Number(Infinity).toExponential(4)","\"Infinity\"");
  shouldBe("Number(-Infinity).toExponential(4)","\"-Infinity\"");
  shouldBe("Number(123.456).toExponential()","\"1.23456e+2\"");
  shouldBeTrue("try { Number(123.456).toExponential(-1) } catch (e) { String(e).indexOf('Range') >= 0; }");
  shouldBe("Number(123.456).toExponential(0)","\"1e+2\"");
  shouldBe("Number(123.456).toExponential(1)","\"1.2e+2\"");
  shouldBe("Number(123.456).toExponential(2)","\"1.23e+2\"");
  shouldBe("Number(123.456).toExponential(3)","\"1.235e+2\"");
  shouldBe("Number(123.456).toExponential(4)","\"1.2346e+2\"");
  shouldBe("Number(123.456).toExponential(5)","\"1.23456e+2\"");
  shouldBe("Number(123.456).toExponential(6)","\"1.234560e+2\"");
  shouldBe("Number(123.456).toExponential(7)","\"1.2345600e+2\"");
  shouldBe("Number(123.456).toExponential(8)","\"1.23456000e+2\"");
  shouldBe("Number(123.456).toExponential(9)","\"1.234560000e+2\"");
  shouldBe("Number(123.456).toExponential(10)","\"1.2345600000e+2\"");
  shouldBe("Number(123.456).toExponential(11)","\"1.23456000000e+2\"");
  shouldBe("Number(123.456).toExponential(12)","\"1.234560000000e+2\"");
  shouldBe("Number(123.456).toExponential(13)","\"1.2345600000000e+2\"");
  shouldBe("Number(123.456).toExponential(14)","\"1.23456000000000e+2\"");
  shouldBe("Number(123.456).toExponential(15)","\"1.234560000000000e+2\"");
  shouldBe("Number(123.456).toExponential(16)","\"1.2345600000000000e+2\"");
  shouldBe("Number(123.456).toExponential(17)","\"1.23456000000000000e+2\"");
  shouldBe("Number(123.456).toExponential(18)","\"1.234560000000000000e+2\"");
  shouldBe("Number(123.456).toExponential(19)","\"1.2345600000000000000e+2\"");
  shouldBe("Number(123.456).toExponential(20)","\"1.23456000000000000000e+2\"");
  shouldBeTrue("try { Number(123.456).toExponential(21) } catch (e) { String(e).indexOf('Range') >= 0; }");
  shouldBe("Number(.000123456).toExponential()","\"1.23456e-4\"");
  shouldBeTrue("try { Number(.000123456).toExponential(-1) } catch (e) { String(e).indexOf('Range') >= 0; }");
  shouldBe("Number(.000123456).toExponential(0)","\"1e-4\"");
  shouldBe("Number(.000123456).toExponential(1)","\"1.2e-4\"");
  shouldBe("Number(.000123456).toExponential(2)","\"1.23e-4\"");
  shouldBe("Number(.000123456).toExponential(3)","\"1.235e-4\"");
  shouldBe("Number(.000123456).toExponential(4)","\"1.2346e-4\"");
  shouldBe("Number(.000123456).toExponential(5)","\"1.23456e-4\"");
  shouldBe("Number(.000123456).toExponential(6)","\"1.234560e-4\"");
  shouldBe("Number(.000123456).toExponential(7)","\"1.2345600e-4\"");
  shouldBe("Number(.000123456).toExponential(8)","\"1.23456000e-4\"");
  shouldBe("Number(.000123456).toExponential(9)","\"1.234560000e-4\"");
  shouldBe("Number(.000123456).toExponential(10)","\"1.2345600000e-4\"");
  shouldBe("Number(.000123456).toExponential(11)","\"1.23456000000e-4\"");
  shouldBe("Number(.000123456).toExponential(12)","\"1.234560000000e-4\"");
  shouldBe("Number(.000123456).toExponential(13)","\"1.2345600000000e-4\"");
  shouldBe("Number(.000123456).toExponential(14)","\"1.23456000000000e-4\"");
  shouldBe("Number(.000123456).toExponential(15)","\"1.234560000000000e-4\"");
  shouldBe("Number(.000123456).toExponential(16)","\"1.2345600000000000e-4\"");
  shouldBe("Number(.000123456).toExponential(17)","\"1.23456000000000000e-4\"");
  shouldBe("Number(.000123456).toExponential(18)","\"1.234560000000000000e-4\"");
  shouldBe("Number(.000123456).toExponential(19)","\"1.2345600000000000000e-4\"");
  shouldBe("Number(.000123456).toExponential(20)","\"1.23456000000000000000e-4\"");
  shouldBeTrue("try { Number(.000123456).toExponential(21) } catch (e) { String(e).indexOf('Range') >= 0; }");
  shouldBe("Number(123.4567890123456789012).toExponential()","\"1.2345678901234568e+2\"");
  shouldBeTrue("try { Number(123.4567890123456789012).toExponential(-1) } catch (e) { String(e).indexOf('Range') >= 0; }");
  shouldBe("Number(123.4567890123456789012).toExponential(0)","\"1e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(1)","\"1.2e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(2)","\"1.23e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(3)","\"1.235e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(4)","\"1.2346e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(5)","\"1.23457e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(6)","\"1.234568e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(7)","\"1.2345679e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(8)","\"1.23456789e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(9)","\"1.234567890e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(10)","\"1.2345678901e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(11)","\"1.23456789012e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(12)","\"1.234567890123e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(13)","\"1.2345678901235e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(14)","\"1.23456789012346e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(15)","\"1.234567890123457e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(16)","\"1.2345678901234570e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(17)","\"1.23456789012345700e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(18)","\"1.234567890123457100e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(19)","\"1.2345678901234570000e+2\"");
  shouldBe("Number(123.4567890123456789012).toExponential(20)","\"1.23456789012345700000e+2\"");
  shouldBeTrue("try { Number(123.4567890123456789012).toExponential(21) } catch (e) { String(e).indexOf('Range') >= 0; }");
  shouldBe("Number(.0000000000000000000001).toExponential()","\"1e-22\"");
  shouldBe("Number(.0000000000000000000012).toExponential()","\"1.2e-21\"");
  shouldBe("Number(.0000000000000000000123).toExponential()","\"1.23e-20\"");
  shouldBe("Number(.0000000000000000000123).toExponential()","\"1.23e-20\"");
  shouldBe("Number(.0000000000000000001234).toExponential()","\"1.234e-19\"");
  shouldBe("Number(.0000000000000000012345).toExponential()","\"1.2345e-18\"");
  shouldBe("Number(.0000000000000000123456).toExponential()","\"1.23456e-17\"");
  shouldBe("Number(.0000000000000001234567).toExponential()","\"1.234567e-16\"");
  shouldBe("Number(.0000000000000012345678).toExponential()","\"1.2345678e-15\"");
  shouldBe("Number(.0000000000000123456789).toExponential()","\"1.23456789e-14\"");
  shouldBe("Number(.0000000000001234567890).toExponential()","\"1.23456789e-13\"");
  shouldBe("Number(.0000000000012345678901).toExponential()","\"1.2345678901e-12\"");
  shouldBe("Number(.0000000000123456789012).toExponential()","\"1.23456789012e-11\"");
  shouldBe("Number(.0000000001234567890123).toExponential()","\"1.234567890123e-10\"");
  shouldBe("Number(.0000000012345678901234).toExponential()","\"1.2345678901234e-9\"");
  shouldBe("Number(.0000000123456789012345).toExponential()","\"1.23456789012345e-8\"");
  shouldBe("Number(.0000001234567890123456).toExponential()","\"1.234567890123456e-7\"");
  shouldBe("Number(.0000012345678901234567).toExponential()","\"1.2345678901234567e-6\"");
  shouldBe("Number(.0000123456789012345678).toExponential()","\"1.2345678901234568e-5\"");
  shouldBe("Number(.0001234567890123456789).toExponential()","\"1.2345678901234567e-4\"");
  shouldBe("Number(.0012345678901234567890).toExponential()","\"1.2345678901234567e-3\"");
  shouldBe("Number(.0123456789012345678901).toExponential()","\"1.2345678901234568e-2\"");
  shouldBe("Number(1.234567890123456789012).toExponential()","\"1.2345678901234567e+0\"");
  shouldBe("Number(12.34567890123456789012).toExponential()","\"1.2345678901234567e+1\"");
  shouldBe("Number(123.4567890123456789012).toExponential()","\"1.2345678901234568e+2\"");
  shouldBe("Number(1234.567890123456789012).toExponential()","\"1.234567890123457e+3\"");
  shouldBe("Number(12345.67890123456789012).toExponential()","\"1.2345678901234567e+4\"");
  shouldBe("Number(123456.7890123456789012).toExponential()","\"1.2345678901234567e+5\"");
  shouldBe("Number(1234567.890123456789012).toExponential()","\"1.2345678901234567e+6\"");
  shouldBe("Number(12345678.90123456789012).toExponential()","\"1.2345678901234567e+7\"");
  shouldBe("Number(123456789.0123456789012).toExponential()","\"1.2345678901234567e+8\"");
  shouldBe("Number(1234567890.123456789012).toExponential()","\"1.2345678901234567e+9\"");
  shouldBe("Number(12345678901.23456789012).toExponential()","\"1.2345678901234568e+10\"");
  shouldBe("Number(123456789012.3456789012).toExponential()","\"1.2345678901234567e+11\"");
  shouldBe("Number(1234567890123.456789012).toExponential()","\"1.2345678901234568e+12\"");
  shouldBe("Number(12345678901234.56789012).toExponential()","\"1.2345678901234568e+13\"");
  shouldBe("Number(123456789012345.6789012).toExponential()","\"1.2345678901234567e+14\"");
  shouldBe("Number(1234567890123456.789012).toExponential()","\"1.2345678901234568e+15\"");
  shouldBe("Number(12345678901234567.89012).toExponential()","\"1.2345678901234568e+16\"");
  shouldBe("Number(123456789012345678.9012).toExponential()","\"1.2345678901234568e+17\"");
  shouldBe("Number(1234567890123456789.012).toExponential()","\"1.2345678901234568e+18\"");
  shouldBe("Number(12345678901234567890.12).toExponential()","\"1.2345678901234567e+19\"");
  shouldBe("Number(123456789012345678901.2).toExponential()","\"1.2345678901234568e+20\"");
  
  shouldBeTrue("try { Number(1).toPrecision(-1); } catch (e) { String(e).indexOf('Range') >= 0; }");
  shouldBeTrue("try { Number(1).toPrecision(0); } catch (e) { String(e).indexOf('Range') >= 0; }");
  shouldBe("try { Number(1).toPrecision(1); } catch (e) { String(e); }","\"1\"");
  shouldBe("try { Number(1).toPrecision(21); } catch (e) { String(e); }","\"1.00000000000000000000\"");
  shouldBeTrue("try { Number(1).toPrecision(22); } catch (e) { String(e).indexOf('Range') >= 0; }");
  shouldBe("Number(NaN).toPrecision()","\"NaN\"");
  shouldBe("Number(NaN).toPrecision(1)","\"NaN\"");
  shouldBe("Number(Infinity).toPrecision()","\"Infinity\"");
  shouldBe("Number(Infinity).toPrecision(1)","\"Infinity\"");
  shouldBe("Number(-Infinity).toPrecision()","\"-Infinity\"");
  shouldBe("Number(-Infinity).toPrecision(1)","\"-Infinity\"");
  shouldBe("Number(.0000000012345).toPrecision(2)","\"1.2e-9\"");
  shouldBe("Number(.000000012345).toPrecision(2)","\"1.2e-8\"");
  shouldBe("Number(.00000012345).toPrecision(2)","\"1.2e-7\"");
  shouldBe("Number(.0000012345).toPrecision(2)","\"0.0000012\"");
  shouldBe("Number(.000012345).toPrecision(2)","\"0.000012\"");
  shouldBe("Number(.00012345).toPrecision(2)","\"0.00012\"");
  shouldBe("Number(.0012345).toPrecision(2)","\"0.0012\"");
  shouldBe("Number(.012345).toPrecision(2)","\"0.012\"");
  shouldBe("Number(.12345).toPrecision(2)","\"0.12\"");
  shouldBe("Number(1.2345).toPrecision(2)","\"1.2\"");
  shouldBe("Number(12.345).toPrecision(2)","\"12\"");
  shouldBe("Number(123.45).toPrecision(2)","\"1.2e+2\"");
  shouldBe("Number(1234.5).toPrecision(2)","\"1.2e+3\"");
  shouldBe("Number(12345).toPrecision(2)","\"1.2e+4\"");
  shouldBe("Number(12345.67).toPrecision(4)","\"1.235e+4\"");
  shouldBe("Number(12344.67).toPrecision(4)","\"1.234e+4\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision()","\"0.00012345678901234567\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(1)","\"0.0001\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(2)","\"0.00012\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(3)","\"0.000123\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(4)","\"0.0001235\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(5)","\"0.00012346\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(6)","\"0.000123457\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(7)","\"0.0001234568\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(8)","\"0.00012345679\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(9)","\"0.000123456789\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(10)","\"0.0001234567890\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(11)","\"0.00012345678901\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(12)","\"0.000123456789012\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(13)","\"0.0001234567890123\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(14)","\"0.00012345678901235\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(15)","\"0.000123456789012346\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(16)","\"0.0001234567890123457\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(17)","\"0.00012345678901234568\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(18)","\"0.000123456789012345680\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(19)","\"0.0001234567890123456800\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(20)","\"0.00012345678901234567000\"");
  shouldBe("Number(0.0001234567890123456789012345).toPrecision(21)","\"0.000123456789012345680000\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision()","\"12345.678901234567\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(1)","\"1e+4\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(2)","\"1.2e+4\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(3)","\"1.23e+4\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(4)","\"1.235e+4\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(5)","\"12346\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(6)","\"12345.7\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(7)","\"12345.68\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(8)","\"12345.679\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(9)","\"12345.6789\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(10)","\"12345.67890\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(11)","\"12345.678901\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(12)","\"12345.6789012\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(13)","\"12345.67890123\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(14)","\"12345.678901235\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(15)","\"12345.6789012346\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(16)","\"12345.67890123457\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(17)","\"12345.678901234568\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(18)","\"12345.6789012345660\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(19)","\"12345.67890123456800\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(20)","\"12345.678901234565000\"");
  shouldBe("Number(12345.67890123456789012345).toPrecision(21)","\"12345.6789012345670000\"");
  shouldBe("Number(0).toPrecision()","\"0\"");
  shouldBe("Number(0).toPrecision(1)","\"0\"");
  shouldBe("Number(0).toPrecision(2)","\"0.0\"");
  shouldBe("Number(0).toPrecision(3)","\"0.00\"");
  shouldBe("Number(0).toPrecision(4)","\"0.000\"");
  shouldBe("Number(0).toPrecision(5)","\"0.0000\"");
  shouldBe("Number(0).toPrecision(6)","\"0.00000\"");
  shouldBe("Number(0).toPrecision(7)","\"0.000000\"");
  shouldBe("Number(0).toPrecision(8)","\"0.0000000\"");
  shouldBe("Number(0).toPrecision(9)","\"0.00000000\"");
  shouldBe("Number(0).toPrecision(10)","\"0.000000000\"");
  shouldBe("Number(0).toPrecision(11)","\"0.0000000000\"");
  shouldBe("Number(0).toPrecision(12)","\"0.00000000000\"");
  shouldBe("Number(0).toPrecision(13)","\"0.000000000000\"");
  shouldBe("Number(0).toPrecision(14)","\"0.0000000000000\"");
  shouldBe("Number(0).toPrecision(15)","\"0.00000000000000\"");
  shouldBe("Number(0).toPrecision(16)","\"0.000000000000000\"");
  shouldBe("Number(0).toPrecision(17)","\"0.0000000000000000\"");
  shouldBe("Number(0).toPrecision(18)","\"0.00000000000000000\"");
  shouldBe("Number(0).toPrecision(19)","\"0.000000000000000000\"");
  shouldBe("Number(0).toPrecision(20)","\"0.0000000000000000000\"");
  shouldBe("Number(0).toPrecision(21)","\"0.00000000000000000000\"");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/Object.js
  
  Index: Object.js
  ===================================================================
  shouldBe("typeof Object()", "'object'");
  shouldBe("var o = Object(); o.x = 11; o.x;", "11"); // wanted behaviour ?
  // shouldBe("Object(undefined)", ???);
  // shouldBe("Object(null)", ???);
  shouldBe("Object(1).valueOf()", "1");
  shouldBe("Object(true).valueOf()", "true");
  shouldBe("Object('s').valueOf()", "'s'");
  
  shouldBe("typeof (new Object())", "'object'");
  // shouldBe("new Object(undefined)", ???);
  // shouldBe("new Object(null)", ???);
  shouldBe("(new Object(1)).valueOf()", "1");
  shouldBe("(new Object(true)).valueOf()", "true");
  shouldBe("(new Object('s')).valueOf()", "'s'");
  
  shouldBe("String(Object())", "'[object Object]'");
  shouldBe("Object().toString()", "'[object Object]'");
  shouldBe("String(Object().valueOf())", "'[object Object]'");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/Prototype.js
  
  Index: Prototype.js
  ===================================================================
  ///////////////////////////////////////////////////////
  
  function Square(x)
  {
    this.x = x;
  }
  
  new Square(0); // create prototype
  
  function Square_area() { return this.x * this.x; }
  Square.prototype.area = Square_area;
  var s = new Square(3);
  shouldBe("s.area()", "9");
  
  ///////////////////////////////////////////////////////
  
  function Item(name){ 
    this.name = name;
  }
  
  function Book(name, author){
    this.base = Item;         // set Item constructor as method of Book object
    this.base(name);           // set the value of name property
    this.author = author;
  }
  Book.prototype = new Item;
  var b = new Book("a book", "Fred");        // create object instance
  //edebug(e"b.name"));
  shouldBe("b.name", "'a book'");
  shouldBe("b.author", "'Fred'");                  // outpus "Fred" 
  
  ///////////////////////////////////////////////////////
  
  shouldBe("delete Boolean.prototype", "false");
  
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/README
  
  Index: README
  ===================================================================
  ========================================================================
                          The KDE JavaScript Test Suite
  ========================================================================
  
  This is a collection of JavaScript (aka ECMAScript) code snipplets
  used to test the KDE JavaScript library (dubbed kjs). Most of them
  once triggered a bug in the implementation of the
  interpreter. Allthough these bugs are probably fixed by now theses
  tests can still be used for regression testing.
  
  NOTE:
  
  Don't confuse this code with the HTML bindings for the khtml
  widget. Those are implemented in a seperate module residing in
  kdelibs/khtml/ecma. Test for those can be found elsewhere.
  
  USAGE:
  
  You can evaluate .js files with a binary called 'testkjs' as long as
  they contain pure ECMAScript code without any references to browser
  specific properties. To build 'testkjs' simply invoke 'make check'
  inside of the kdelibs/kjs source directory.  Most tests rely on helper
  functions like shouldBe(). Those are collected in base.js and have to
  be evaluated before the actual test. testkjs accepts multiple input
  files in the command line. Therefore a typical test run might look
  like this:
  
  testkjs base.js operators.js
  
  For temporary debugging you may use the debug() function which prints
  its output to stderr.
  
  NAMING CONVENTION:
  
    *.js  regular test
  j-*.js  JavaScript/JScript extensions not covered by ECMA
  *-n.js  code that is supposed to trigger a parse/compile error
  
  FUTURE:
  
  All tests could easily be run in a row by a script. If they all stick
  to a unified output format (e.g. via shouldBe()) all results can be
  parsed and analyzed automatically. Maybe to a summary HTML page.  In
  case the test suite grows we would need to provide more info about
  each test. This could look like:
  
  startTest("ECMA 15.4.2", "Testing the Array Constructor");
  // ...
  endTest();
  
  PLEA:
  
  In case you find any yet unknown bug please reduce it to a minimal test case
  either send it to me or add it to this repository yourself.
  
  
    Harri Porten <porten at kde.org>
  
  
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/RegExp.js
  
  Index: RegExp.js
  ===================================================================
  shouldBe("(new RegExp()).source", "''");
  shouldBe("Boolean(new RegExp())", "true");
  shouldBeTrue("isNaN(Number(new RegExp()))");
  
  // RegExp constructor called as a function
  shouldBe("RegExp(/x/).source", "'x'");
  //shouldBe("RegExp(/x/, 'g').source", "'/x/'"); // can't supply flags when constructing one RegExp from another, says mozilla
  shouldBe("RegExp('x', 'g').global", "true");
  shouldBe("RegExp('x').source", "'x'");
  
  // RegExp constructor
  shouldBe("new RegExp('x').source", "'x'");
  
  var ri = /a/i;
  var rm = /a/m;
  var rg = /a/g;
  
  shouldBeFalse("(/a/).global");
  shouldBe("typeof (/a/).global", "'boolean'");
  shouldBeTrue("rg.global");
  shouldBeFalse("(/a/).ignoreCase");
  shouldBeTrue("ri.ignoreCase");
  shouldBeFalse("(/a/).multiline");
  shouldBeTrue("rm.multiline");
  shouldBe("rg.toString()", "'/a/g'");
  shouldBe("ri.toString()", "'/a/i'");
  shouldBe("rm.toString()", "'/a/m'");
  
  // check properety attributes
  rg.global = false;
  shouldBeTrue("rg.global");
  ri.ignoreCase = false;
  shouldBeTrue("ri.ignoreCase");
  rm.multiline = false;
  shouldBeTrue("rm.multiline");
  
  shouldBe("Boolean(/a/.test)", "true");
  shouldBe("/(b)c/.exec('abcd').toString()", "\"bc,b\"");
  shouldBe("/(b)c/.exec('abcd').length", "2");
  shouldBe("/(b)c/.exec('abcd').index", "1");
  shouldBe("/(b)c/.exec('abcd').input", "'abcd'");
  
  var rs = /foo/;
  rs.source = "bar";
  shouldBe("rs.source", "'foo'");
  
  shouldBe("var r = new RegExp(/x/); r.global=true; r.lastIndex = -1; typeof r.test('a')", "'boolean'");
  
  shouldBe("'abcdefghi'.match(/(abc)def(ghi)/).toString()","'abcdefghi,abc,ghi'");
  shouldBe("/(abc)def(ghi)/.exec('abcdefghi').toString()","'abcdefghi,abc,ghi'");
  shouldBe("RegExp.$1","'abc'");
  shouldBe("RegExp.$2","'ghi'");
  shouldBe("RegExp.$3","''");
  
  shouldBe("'abcdefghi'.match(/(a(b(c(d(e)f)g)h)i)/).toString()", "'abcdefghi,abcdefghi,bcdefgh,cdefg,def,e'");
  shouldBe("RegExp.$1","'abcdefghi'");
  shouldBe("RegExp.$2","'bcdefgh'");
  shouldBe("RegExp.$3","'cdefg'");
  shouldBe("RegExp.$4","'def'");
  shouldBe("RegExp.$5","'e'");
  shouldBe("RegExp.$6","''");
  
  shouldBe("'(100px 200px 150px 15px)'.match(/\\((\\d+)(px)* (\\d+)(px)* (\\d+)(px)* (\\d+)(px)*\\)/).toString()","'(100px 200px 150px 15px),100,px,200,px,150,px,15,px'");
  shouldBe("RegExp.$1","'100'");
  shouldBe("RegExp.$3","'200'");
  shouldBe("RegExp.$5","'150'");
  shouldBe("RegExp.$7","'15'");
  shouldBe("''.match(/\((\\d+)(px)* (\\d+)(px)* (\\d+)(px)* (\\d+)(px)*\)/)","null");
  shouldBe("RegExp.$1","''");
  shouldBe("RegExp.$3","''");
  shouldBe("RegExp.$5","''");
  shouldBe("RegExp.$7","''");
  
  var invalidChars = /[^@\.\w]/g; // #47092
  shouldBe("'faure at kde.org'.match(invalidChars) == null", "true");
  shouldBe("'faure-kde at kde.org'.match(invalidChars) == null", "false");
  
  shouldBe("'test1test2'.replace('test','X')","'X1test2'");
  shouldBe("'test1test2'.replace(/\\d/,'X')","'testXtest2'");
  shouldBe("'1test2test3'.replace(/\\d/,'')","'test2test3'");
  shouldBe("'test1test2'.replace(/test/g,'X')","'X1X2'");
  shouldBe("'1test2test3'.replace(/\\d/g,'')","'testtest'");
  shouldBe("'1test2test3'.replace(/x/g,'')","'1test2test3'");
  shouldBe("'test1test2'.replace(/(te)(st)/g,'$2$1')","'stte1stte2'");
  shouldBe("'foo+bar'.replace(/\\+/g,'%2B')", "'foo%2Bbar'");
  var caught = false; try { new RegExp("+"); } catch (e) { caught = true; }
  shouldBeTrue("caught"); // #40435
  shouldBe("'foo'.replace(/z?/g,'x')", "'xfxoxox'");
  shouldBe("'test test'.replace(/\\s*/g,'')","'testtest'"); // #50985
  shouldBe("'abc$%@'.replace(/[^0-9a-z]*/gi,'')","'abc'"); // #50848
  shouldBe("'ab'.replace(/[^\\d\\.]*/gi,'')","''"); // #75292
  shouldBe("'1ab'.replace(/[^\\d\\.]*/gi,'')","'1'"); // #75292
  
  shouldBe("'1test2test3blah'.split(/test/).toString()","'1,2,3blah'");
  var reg = /(\d\d )/g;
  var str = new String('98 76 blah');
  shouldBe("reg.exec(str).toString()","'98 ,98 '");
  shouldBe("reg.lastIndex","3");
  shouldBe("RegExp.$1","'98 '");
  shouldBe("RegExp.$2","''");
  
  shouldBe("reg.exec(str).toString()","'76 ,76 '");
  shouldBe("reg.lastIndex","6");
  shouldBe("RegExp.$1","'76 '");
  shouldBe("RegExp.$2","''");
  
  shouldBe("reg.exec(str)","null");
  shouldBe("reg.lastIndex","0");
  
  // http://www.devguru.com/Technologies/ecmascript/quickref/regexp_lastindex.html
  // Looks IE-only though
  //shouldBe( "var re=/ships*\s/; re.exec('the hardships of traveling'); re.lastIndex", "14" );
  //shouldBe( "var re=/ships*\s/; str='the hardships of traveling'; re.exec(str); re.exec(str); re.lastIndex", "0" );
  
  // http://devedge.netscape.com/library/manuals/2000/javascript/1.5/guide/regexp.html
  shouldBe( "myRe=/d(b+)d/g; myArray = myRe.exec('cdbbdbsbz'); myRe.lastIndex", "5" );
  
  reg = /^u/i;
  shouldBeTrue("reg.ignoreCase == true");
  shouldBeTrue("reg.global === false");
  shouldBeTrue("reg.multiline === false");
  shouldBeTrue("reg.test('UGO')");
  
  // regexp are writable ?
  shouldBe("reg.x = 1; reg.x", "1");
  // shared data ?
  shouldBe("var r2 = reg; r2.x = 2; reg.x", "2");
  
  var str = new String("For more information, see Chapter 3.4.5.1");
  re = /(chapter \d+(\.\d)*)/i;
  // This returns the array containing Chapter 3.4.5.1,Chapter 3.4.5.1,.1
  // 'Chapter 3.4.5.1' is the first match and the first value remembered from (Chapter \d+(\.\d)*).
  // '.1' is the second value remembered from (\.\d)
  shouldBe("str.match(re).toString()","'Chapter 3.4.5.1,Chapter 3.4.5.1,.1'");
  
  str = "abcDdcba";
  // The returned array contains D, d.
  shouldBe("str.match(/d/gi).toString()","'D,d'");
  
  // unicode escape sequence
  shouldBe("/\\u0061/.source", "'\\\\u0061'");
  shouldBe("'abc'.match(/\\u0062/).toString()", "'b'");
  
  shouldBe("Object.prototype.toString.apply(RegExp.prototype)",
  	 "'[object RegExp]'");
  
  // not sure what this should return. most importantly
  // it doesn't throw an exception
  shouldBe("typeof RegExp.prototype.toString()", "'string'");
  
  debug("Done.");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/StringObject.js
  
  Index: StringObject.js
  ===================================================================
  // String object
  shouldBe("'abc'.length", "3");
  shouldBe("(new String('abcd')).length", "4");
  shouldBe("String('abcde').length", "5");
  
  // String.charAt()
  shouldBe("'abc'.charAt(0)", "'a'");
  shouldBe("'abc'.charAt(1)", "'b'");
  shouldBe("'abc'.charAt(-1)", "''");
  shouldBe("'abc'.charAt(99)", "''");
  shouldBe("'abc'.charAt()", "'a'");
  
  // String.prototype.indexOf()
  shouldBe("'ab'.indexOf('a')", "0");
  shouldBe("'ab'.indexOf('b')", "1");
  shouldBe("'ab'.indexOf('x')", "-1");
  shouldBe("'ab'.indexOf('')", "0");
  shouldBe("''.indexOf('')", "0");
  shouldBe("'ab'.indexOf('a', -1)", "0");
  shouldBe("'ab'.indexOf('b', 1)", "1");
  shouldBe("'ab'.indexOf('a', 1)", "-1");
  shouldBe("'  '.indexOf('', 1)", "1");
  
  // String.prototype.search()
  shouldBe("String('abc').search(/b/)", "1");
  shouldBe("String('xyz').search(/b/)", "-1");
  
  // String.prototype.match()
  shouldBe("String('abcb').match(/b/) + ''", "'b'");
  shouldBe("typeof String('abc').match(/b/)", "'object'");
  shouldBe("'xyz'.match(/b/)", "null");
  shouldBe("'xyz'.match(/b/g)", "null");
  shouldBe("String('aabab'.match(/ab/g))", "'ab,ab'");
  shouldBe("String('aabab'.match(/(a)(b)/))","'ab,a,b'");
  shouldBe("String('aabab'.match(/(a)(b)/g))","'ab,ab'");
  shouldBe("String('abc'.match(/./g))","'a,b,c'");
  shouldBe("String('abc'.match(/.*/g))","'abc,'");
  // match() doesn't modify lastIndex (at least in moz)
  shouldBe("var reg = /ab/g; 'aabab'.match(reg); reg.lastIndex", "0");
  shouldBe("var reg = /ab/g; 'aabab'.match(reg).length", "2");
  shouldBe("var reg = /ab/g; 'xxx'.match(reg); reg.lastIndex", "0");
  shouldBe("var reg = /ab/g; 'xxx'.match(reg)", "null");
  shouldBe( "myRe=/d(b+)d/g;  'cdbbdbsbz'.match(myRe)[0]", "'dbbd'" );
  
  // String.prototype.replace()
  shouldBe("'abcd'.replace(/b./, 'xy')", "'axyd'");
  shouldBe("'abcd'.replace('bc', 'x')", "'axd'");
  shouldBe("'abcd'.replace('x', 'y')", "'abcd'");
  shouldBe("'abcd'.replace(/(ab)(cd)/,'$2$1')", "'cdab'");
  shouldBe("'abcd'.replace(/(ab)(cd)/,'$2$1$')", "'cdab$'");
  shouldBe("'BEGINabcEND'.replace(/abc/,'x$')", "'BEGINx$END'");
  
  var f2c_str, f2c_p1, f2c_offset, f2c_s;
  function f2c(x) {
      var s = String(x)
      var test = /(\d+(?:\.\d*)?)F\b/g
      return s.replace(test,
            function (str,p1,offset,s) {
               f2c_str=str; f2c_p1=p1; f2c_offset=offset; f2c_s=s;
               return ((p1-32) * 5/9) + "C";
            }
         )
   }
  
  shouldBe("f2c('The value is 212F')", "'The value is 100C'");
  shouldBe("f2c_str", "'212F'");
  shouldBe("f2c_p1", "'212'");
  shouldBe("f2c_offset", "13");
  shouldBe("f2c_s", "'The value is 212F'");
  
  // String.prototype.split()
  shouldBe("'axb'.split('x').length", "2");
  shouldBe("'axb'.split('x')[0]", "'a'");
  shouldBe("'axb'.split('x')[1]", "'b'");
  shouldBe("String('abc'.split(''))", "'a,b,c'");
  shouldBe("String('abc'.split(new RegExp()))", "'a,b,c'");
  shouldBe("''.split('').length", "0");
  shouldBe("'axb'.split('x', 0).length", "0");
  shouldBe("'axb'.split('x', 0)[0]", "undefined");
  shouldBe("'axb'.split('x', 1).length", "1");
  shouldBe("'axb'.split('x', 99).length", "2");
  shouldBe("'axb'.split('y') + ''", "'axb'");
  shouldBe("'axb'.split('y').length", "1");
  shouldBe("''.split('x') + ''", "''");
  shouldBe("'abc'.split() + ''", "'abc'");
  shouldBe("'axxb'.split(/x/) + ''", "'a,,b'");
  shouldBe("'axxb'.split(/x+/) + ''", "'a,b'");
  shouldBe("'axxb'.split(/x*/) + ''", "'a,b'");  // NS 4.7 is wrong here
  // moved to evil-n.js shouldBe("''.split(/.*/).length", "0");
  
  // String.prototype.slice()
  shouldBe("'abcdef'.slice(2, 5)", "'cde'");
  shouldBe("'abcdefghijklmnopqrstuvwxyz1234567890'.slice(-32, -6)",
  	 "'efghijklmnopqrstuvwxyz1234'");
  
  shouldBe("'abC1'.toUpperCase()", "'ABC1'");
  shouldBe("'AbC2'.toLowerCase()", "'abc2'");
  
  // warning: prototype modification below
  shouldBe("'abc'[0]", "'a'");
  shouldBeUndefined("'abc'[-1]");
  shouldBeUndefined("'abc'[10]");
  String.prototype[10] = "x";
  shouldBe("'abc'[10]", "'x'");
  
  var foo = "This is a test.";
  var bar = foo.link( "javascript:foo( 'This ', 'is ', 'a test' )");
  var html = "<a href=\"javascript:foo( 'This ', 'is ', 'a test' )\">This is a test.</a>"
  shouldBe("bar", "html");
  
  
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/assignments.js
  
  Index: assignments.js
  ===================================================================
  // simple assignment
  shouldBe("var i = 1; i", "1");
  shouldBe("j = k = 2", "2");
  shouldBeUndefined("var i; i");
  
  // compound assignments
  shouldBe("var i = 1; i <<= 2", "4");
  shouldBe("var i = 8; i >>= 1", "4");
  shouldBe("var i = 1; i >>= 2", "0");
  shouldBe("var i = -8; i >>= 24", "-1");
  shouldBe("var i = 8; i >>>= 2", "2");
  shouldBe("var i = -8; i >>>= 24", "255");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/base.js
  
  Index: base.js
  ===================================================================
  // Utility functions for JS test suite
  // (c) 2001 Harri Porten <porten at kde.org>
  
  function testPassed(msg)
  {
    debug("PASS. " + msg);
  }
  
  function testFailed(msg)
  {
    debug("FAIL. " + msg);
    // regtest.reportResult(false, msg);  
  }
  
  function shouldBe(_a, _b)
  {
    if (typeof _a != "string" || typeof _b != "string")
      debug("WARN: shouldBe() expects string arguments");
    var _av = eval(_a);
    var _bv = eval(_b);
  
    if (_av === _bv)
      testPassed(_a + " is " + _b);
    else
      testFailed(_a + " should be " + _bv + ". Was " + _av);
  }
  
  function shouldBeTrue(_a) { shouldBe(_a, "true"); }
  
  function shouldBeFalse(_a) { shouldBe(_a, "false"); }
  
  function shouldBeUndefined(_a)
  {
    var _av = eval(_a);
    if (typeof _av == "undefined")
      testPassed(_a + " is undefined.");
    else
      testFailed(_a + " should be undefined. Was " + _av);
  }
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/cast.js
  
  Index: cast.js
  ===================================================================
  shouldBeTrue("Boolean(1) === true");
  shouldBeTrue("var s = String; s(1) === '1'");
  shouldBeTrue("n = Number; n(true) === 1");
  shouldBe("String(Array('a', 'b'	))", "'a,b'");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/comment-1.js
  
  Index: comment-1.js
  ===================================================================
  // comment with linebreak
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/comment-2.js
  
  Index: comment-2.js
  ===================================================================
  // comment with linebreak
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/completion.js
  
  Index: completion.js
  ===================================================================
  var i = 1;
  
  function foo() {
    i = 2;
    return;
    i = 3;
  }
  
  shouldBe("foo(), i", "2");
  
  var caught = false;
  try { eval("return;"); } catch(e) { caught = true; }
  shouldBeTrue("caught");
  
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/conditional.js
  
  Index: conditional.js
  ===================================================================
  shouldBe("true ? 1 : 2", "1");
  shouldBe("false ? 1 : 2", "2");
  shouldBe("'abc' ? 1 : 2", "1");
  shouldBe("null ? 1 : 2", "2");
  shouldBe("undefined ? 1 : 2", "2");
  var a = 1;
  if ( undefined )
    a = 2;
  shouldBe("/*var a=1;if (undefined) a = 2;*/ a", "1");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/const.js
  
  Index: const.js
  ===================================================================
  // constant definition
  const c = 11;
  shouldBe("c", "11");
  
  // attempt to redefine should have no effect
  c = 22;
  shouldBe("c", "11");
  
  const dummy = 0;
  for (var v = 0;;) {
    ++v;
    shouldBe("v", "1");
    break;
  }
  
  // ### check for forbidden redeclaration
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/constructor_length.js
  
  Index: constructor_length.js
  ===================================================================
  shouldBe("Object.length","1");
  shouldBe("Function.length","1");
  shouldBe("Array.length","1");
  shouldBe("String.length","1");
  shouldBe("Boolean.length","1");
  shouldBe("Number.length","1");
  shouldBe("Date.length","7");
  shouldBe("RegExp.length","2");
  shouldBe("Error.length","1");
  shouldBe("EvalError.length","1");
  shouldBe("RangeError.length","1");
  shouldBe("ReferenceError.length","1");
  shouldBe("SyntaxError.length","1");
  shouldBe("TypeError.length","1");
  shouldBe("URIError.length","1");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/crash-1.js
  
  Index: crash-1.js
  ===================================================================
  // infinite recursion
  try {
    var v = [];
    v[0] = v;
    v.toString();
  } catch (e) {
    debug("OK. Caught an exception.");
  }
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/crash-2.js
  
  Index: crash-2.js
  ===================================================================
  // infinite recursion 2
  function foo() {
     foo();
  }
  
  try {
    foo();
  } catch (e) {
    debug("OK. Caught an exception");
  }
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/delete.js
  
  Index: delete.js
  ===================================================================
  shouldBe("a = 1; delete a;", "true");
  shouldBe("delete nonexistant;", "true");
  shouldBe("delete NaN", "false");
  
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/empty.js
  
  Index: empty.js
  ===================================================================
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/encode_decode_uri.js
  
  Index: encode_decode_uri.js
  ===================================================================
  /*
  
  var enc = encodeURI;
  var dec = decodeURI;
  //var enc = encodeURIComponent;
  //var dec = decodeURIComponent;
  
  function printstr(i,j)
  {
    var str;
    if (j == undefined)
      str = "x"+String.fromCharCode(i)+"x";
    else
      str = "x"+String.fromCharCode(i)+String.fromCharCode(j)+"x";
    var encoded = "(exception)";
    var decoded = "(unknown)";
    try {
      encoded = enc(str);
      decoded = "(exception)";
      decoded = dec(encoded);
    }
    catch (e) {
    }
  
    var prefix = i;
    if (j != undefined)
      prefix += "/" + j;
  
    var match;
    if (encoded == "(exception)" || decoded == "(exception)")
      match = "";
    else if (str == decoded)
      match = " (match)";
    else
      match = " (nomatch)";
  
    print(prefix+": encoded "+encoded+" decoded "+decoded+" "+match);
  }
  
  for (var charcode = 0; charcode <= 0xFFFF; charcode++)
    printstr(charcode);
  
  for (var charcode = 0xDC00; charcode <= 0xDFFF; charcode++)
    printstr(0xD800,charcode);
  
  for (var charcode = 0xD800; charcode <= 0xDBFF; charcode++)
    printstr(charcode,0xD800);
  
  */
  
  // --------------------------------------------------------------------------------
  
  var resolution = 13; // set to 1 for 100% coverage
  
  function checkEncodeException(encodeFunction,c1,c2)
  {
    var str;
    if (c2 == undefined)
      str = "x"+String.fromCharCode(c1)+"x";
    else
      str = "x"+String.fromCharCode(c1)+String.fromCharCode(c2)+"x";
  
    try {
      encodeFunction(str);
  //    print("checkEncodeException("+c1+","+c2+"): false");
      return false;
    }
    catch (e) {
  //    print("checkEncodeException("+c1+","+c2+"): true");
      return true;
    }
  }
  
  function checkEncodeDecode(encodeFunction,decodeFunction,c1,c2)
  {
    var str;
    if (c2 == undefined)
      str = "x"+String.fromCharCode(c1)+"x";
    else
      str = "x"+String.fromCharCode(c1)+String.fromCharCode(c2)+"x";
  
    try {
      var encoded = encodeFunction(str);
      var decoded = decodeFunction(encoded);
  
  //    print("checkEncodeDecode("+c1+","+c2+"): "+(str == decoded));
      return (str == decoded);
    }
    catch (e) {
  //    print("checkEncodeDecode("+c1+","+c2+"): false (exception)");
      return false;
    }
  }
  
  
  
  function checkWithFunctions(encodeFunction,decodeFunction)
  {
    var passes = 0;
    var failures = 0;
  
    // 0-0xD800 and 0xDC00-0xFFF
  
    for (var charcode = 0; charcode < 0xD800; charcode += resolution) {
      if (checkEncodeDecode(encodeFunction,decodeFunction,charcode))
        passes++;
      else
        failures++;
    }
  
    for (var charcode = 0xE000; charcode <= 0xFFFF; charcode += resolution) {
      if (checkEncodeDecode(encodeFunction,decodeFunction,charcode))
        passes++;
      else
        failures++;
    }
  
    // 0xDC00-0xDFFF
  
    for (var charcode = 0xDC00; charcode <= 0xDFFF; charcode += resolution) {
      if (checkEncodeException(encodeFunction,charcode))
        passes++;
      else
        failures++;
    }
  
    // 0xD800-0xDBFF followed by 0xDC00-0xDFFF
  
    for (var charcode = 0xD800; charcode < 0xDC00; charcode += resolution) {
      if (checkEncodeDecode(encodeFunction,decodeFunction,charcode,0xDC00))
        passes++;
      else
        failures++;
    }
  
    for (var charcode = 0xDC00; charcode < 0xE000; charcode += resolution) {
      if (checkEncodeDecode(encodeFunction,decodeFunction,0xD800,charcode))
        passes++;
      else
        failures++;
    }
  
    // 0xD800-0xDBFF _not_ followed by 0xDC00-0xDFFF
  
    for (var charcode = 0; charcode < 0xDC00; charcode += resolution) {
      if (checkEncodeException(encodeFunction,0xD800,charcode))
        passes++;
      else
        failures++;
    }
  
    for (var charcode = 0xE000; charcode <= 0xFFFF; charcode += resolution) {
      if (checkEncodeException(encodeFunction,0xD800,charcode))
        passes++;
      else
        failures++;
    }
  
  //  print("passes = "+passes);
  //  print("failures = "+failures);
  
    return (failures == 0);
  }
  
  
  
  
  
  
  shouldBe("checkWithFunctions(encodeURI,decodeURI)","true");
  shouldBe("checkWithFunctions(encodeURIComponent,decodeURIComponent)","true");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/eval.js
  
  Index: eval.js
  ===================================================================
  shouldBe("eval.length", "1");
  shouldBe("eval('this')", "this");
  
  function MyObject() {
    this.x = 99;
  }
  
  eval("b = new MyObject();");
  var bx = b.x   // rule out side effects of eval() in shouldBe() test function
  shouldBe("bx", "99");
  
  
  eval("var c = new MyObject();"); // the 'var' makes a difference
  var cx = c.x;
  shouldBe("cx", "99");
  
  // KDE bug #45679
  if (true.eval) {
    var o = { str:1 };
    shouldBe("o.eval('str')", "1");
    shouldBe("o.eval('this')", "this");
  } else {
    testPassed("Skipping test for deprecated Object.prototype.eval()");
  }
  
  // problem from within khtml
  function lotto() {
    // j must be accessible to eval()
    for (var j = 0; j < 1; j++)
      return eval('j');
  }
  shouldBe("lotto()", "0");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/evil-n.js
  
  Index: evil-n.js
  ===================================================================
  shouldBeUndefined("(new Error()).message");
  
  // the empty match isn't taken in account
  shouldBe("''.split(/.*/).length", "0");
  
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/exception_propagation.js
  
  Index: exception_propagation.js
  ===================================================================
  var global = this;
  function myfunc() {
  }
  function throwex() {
    throw new Error("test exception");
  }
  
  //---------------------------
  var func_ret_with_ex_func = 4;
  try {
    func_ret_with_ex_func = throwex()();
  }
  catch (e) {
  }
  shouldBe("func_ret_with_ex_func", "4");
  
  // ---------------------------------
  
  var func_ret_from_ex_throw_args = 4;
  try {
    func_ret_from_ex_throw_args = Math.abs(throwex());
  }
  catch (e) {
  }
  shouldBe("func_ret_from_ex_throw_args", "4");
  
  // ---------------------------------
  
  var set_from_throw_func_args = 4;
  try {
    throwex()(set_from_throw_func_args = 1);
  }
  catch (e) {
  }
  shouldBe("set_from_throw_func_args","4");
  
  // ---------------------------------
  
  var set_from_func_throw_args = 4;
  try {
    myfunc(throwex(), set_from_func_throw_args = 1);
  }
  catch (e) {
  }
  shouldBe("set_from_func_throw_args","4");
  
  // ---------------------------------
  
  var set_from_before_func_throw_args = 4;
  try {
    myfunc(set_from_before_func_throw_args = 1, throwex());
  }
  catch (e) {
  }
  shouldBe("set_from_before_func_throw_args","1");
  
  // ---------------------------------
  
  // ### move to function.js
  var function_param_order = "";
  function aparam() {
    function_param_order += "a";
  }
  function bparam() {
    function_param_order += "b";
  }
  function cparam() {
    function_param_order += "c";
  }
  myfunc(aparam(),bparam(),cparam());
  shouldBe("function_param_order","'abc'");
  
  // ---------------------------------
  // ### move to function.js
  var new_param_order = "";
  function anewparam() {
    new_param_order += "a";
  }
  function bnewparam() {
    new_param_order += "b";
  }
  function cnewparam() {
    new_param_order += "c";
  }
  new myfunc(anewparam(),bnewparam(),cnewparam());
  shouldBe("new_param_order","'abc'");
  
  // ---------------------------------
  // ### move to function.js
  var elision_param_order = "";
  function aelision() {
    elision_param_order += "a";
  }
  function belision() {
    elision_param_order += "b";
  }
  function celision() {
    elision_param_order += "c";
  }
  [aelision(),belision(),celision()];
  shouldBe("elision_param_order","'abc'");
  
  // ---------------------------------
  // ### move to function.js
  var comma_order = "";
  function acomma() {
    comma_order += "a";
  }
  function bcomma() {
    comma_order += "b";
  }
  function ccomma() {
    comma_order += "c";
  }
  acomma(),bcomma(),ccomma();
  shouldBe("comma_order","'abc'");
  
  // ---------------------------------
  
  function checkOperator(op,name) {
    var code =(
      "global."+name+"_part1 = 4;\n"+
      "try {\n"+
      "  ("+name+"_part1 = 1) "+op+" throwex();\n"+
      "}\n"+
      "catch (e) {\n"+
      "}\n"+
      "shouldBe('"+name+"_part1', '1');\n"+
      "global."+name+"_part2 = 4;\n"+
      "try {\n"+
      "  throwex() "+op+" ("+name+"_part2 = 1);\n"+
      "}\n"+
      "catch (e) {\n"+
      "}\n"+
      "shouldBe('"+name+"_part2', '4');\n");
  //  print("\n\n\n");
  //  print(code);
    eval(code);
  }
  
  checkOperator("==","OpEqEq");
  checkOperator("!=","OpNotEq");
  checkOperator("===","OpStrEq");
  checkOperator("!==","OpStrNEq");
  // ### these generate a syntax error in mozilla - kjs should do the same (?)
  //checkOperator("+=","OpPlusEq");
  //checkOperator("-=","OpMinusEq");
  //checkOperator("*=","OpMultEq");
  //checkOperator("/=","OpDivEq");
  //                  OpPlusPlus,
  //		  OpMinusMinus,
  checkOperator("<","OpLess");
  checkOperator("<=","OpLessEq");
  checkOperator(">","OpGreater");
  checkOperator(">=","OpGreaterEq");
  //checkOperator("&=","OpAndEq");
  //checkOperator("^=","OpXOrEq");
  //checkOperator("|=","OpOrEq");
  //checkOperator("%=","OpModEq");
  checkOperator("&&","OpAnd");
  checkOperator("||","OpOr");
  checkOperator("&","OpBitAnd");
  checkOperator("^","OpBitXOr");
  checkOperator("|","OpBitOr");
  checkOperator("<<","OpLShift");
  checkOperator(">>","OpRShift");
  checkOperator(">>>","OpURShift");
  //		  OpIn,
  checkOperator("instanceof","OpInstanceOf");
  
  // ---------------------------------
  var set_from_if_stmt = 4;
  try {
    if (throwex()) {
      set_from_if_stmt = 1;
    }
  }
  catch (e) {
  }
  shouldBe("set_from_if_stmt","4");
  
  // ---------------------------------
  var set_from_if_else_stmt = 4;
  try {
    if (throwex()) {
      set_from_if_else_stmt = 1;
    }
    else {
      undefined;
    }
  }
  catch (e) {
  }
  shouldBe("set_from_if_else_stmt","4");
  
  // ---------------------------------
  
  var set_from_else_in_if_else_stmt = 4;
  try {
    if (throwex()) {
      undefined;
    }
    else {
      set_from_else_in_if_else_stmt = 1;
    }
  }
  catch (e) {
  }
  shouldBe("set_from_else_in_if_else_stmt","4");
  
  // ---------------------------------
  
  var comma_left = 4;
  try {
    comma_left = 1, throwex();
  }
  catch (e) {
  }
  shouldBe("comma_left","1");
  
  // ---------------------------------
  
  var comma_left = 4;
  try {
     throwex(), comma_left = 1;
  }
  catch (e) {
  }
  shouldBe("comma_left","4");
  
  var vardecl_assign_throws = 4;
  try {
    var vardecl_assign_throws = throwex();
  }
  catch (e) {
  }
  shouldBe("vardecl_assign_throws","4");
  
  // ---------------------------------
  
  var var_assign_before_throw_run = false;
  function var_assign_before_throw() {
    var_assign_before_throw_run = true;
    return 1;
  }
  
  var var_assign_after_throw_run = false;
  function var_assign_after_throw() {
    var_assign_after_throw_run = true;
    return 1;
  }
  
  try {
    var var_assign1 = var_assign_before_throw(),
        var_assign2 = throwex(),
        var_assign1 = var_assign_before_throw();
  }
  catch (e) {
  }
  shouldBe("var_assign_before_throw_run","true");
  shouldBe("var_assign_after_throw_run","false");
  
  // ---------------------------------
  
  var do_val = 4;
  try {
    do {
      do_val++;
    }
    while (throwex());
  }
  catch (e) {
  }
  shouldBe("do_val","5");
  
  // ---------------------------------
  var while_val = 4;
  try {
    while (throwex()) {
      while_val++;
    }
  }
  catch (e) {
  }
  shouldBe("while_val","4");
  
  // ---------------------------------
  var for_val_part1_throw2 = 4;
  try {
    for (for_val_part1_throw2 = 1; throwex(); ) {
    }
  }
  catch (e) {
  }
  shouldBe("for_val_part1_throw2","1");
  
  // ---------------------------------
  var for_val_part1_throw3 = 4;
  try {
    for (for_val_part1_throw3 = 1; ; throwex()) {
    }
  }
  catch (e) {
  }
  shouldBe("for_val_part1_throw3","1");
  
  // ---------------------------------
  var for_val_part2_throw1 = 4;
  try {
    for (throwex(); for_val_part2_throw1 = 1; ) {
    }
  }
  catch (e) {
  }
  shouldBe("for_val_part2_throw1","4");
  
  // ---------------------------------
  var for_val_part2_throw3 = 4;
  try {
    for (; for_val_part2_throw3 = 1; throwex()) {
    }
  }
  catch (e) {
  }
  shouldBe("for_val_part2_throw3","1");
  
  // ---------------------------------
  var for_val_part3_throw1 = 4;
  try {
    for (throwex(); ; for_val_part3_throw1 = 1) {
    }
  }
  catch (e) {
  }
  shouldBe("for_val_part3_throw1","4");
  
  // ---------------------------------
  var for_val_part3_throw2 = 4;
  try {
    for (; throwex(); for_val_part3_throw2 = 1) {
    }
  }
  catch (e) {
  }
  shouldBe("for_val_part3_throw2","4");
  
  // ---------------------------------
  var for_val_part1_throwbody = 4;
  try {
    for (for_val_part1_throwbody = 1; ;) {
      throwex();
    }
  }
  catch (e) {
  }
  shouldBe("for_val_part1_throwbody","1");
  
  // ---------------------------------
  var for_val_part2_throwbody = 4;
  try {
    for (; for_val_part2_throwbody = 1; ) {
      throwex();
    }
  }
  catch (e) {
  }
  shouldBe("for_val_part2_throwbody","1");
  
  // ---------------------------------
  var for_val_part3_throwbody = 4;
  try {
    for (; ; for_val_part3_throwbody = 1) {
      throwex();
    }
  }
  catch (e) {
  }
  shouldBe("for_val_part3_throwbody","4");
  
  // ---------------------------------
  // ### mozilla gives a syntax error on for (throwex() in forin_test_obj)... should we?
  var forin_test_obj = new Object();
  forin_test_obj.a = 1;
  forin_test_obj.b = 2;
  forin_test_obj.c = 3;
  var forin_count = 4;
  function forin_lexpr() {
  //  if (forincount == 1);
  //    throwex();
    return new Object();
  }
  try {
    for (throwex() in forin_test_obj) {
      forin_count++;
    }
  }
  catch (e) {
  }
  shouldBe("forin_count","4");
  
  // ---------------------------------
  var set_inside_with_throw = 4;
  try {
    with (throwex()) {
      set_inside_with_throw = 1;
    }
  }
  catch (e) {
  }
  shouldBe("set_inside_with_throw","4");
  
  // ---------------------------------
  var set_inside_with_cantconverttoobject = 4;
  try {
    with (undefined) {
      print("FAIL. This message should not be displayed");
      set_inside_with_cantconverttoobject = 1;
    }
  }
  catch (e) {
  }
  shouldBe("set_inside_with_cantconverttoobject","4");
  // ### test case, sw
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/exceptions.js
  
  Index: exceptions.js
  ===================================================================
  function shouldBe(a, b, c)
  {
    if ( a == b )
     debug(c+" .......... PASS");
    else
     debug(c+" .......... FAIL");
  }
  
  function testThrow()
  {
    var caught = false;
    try {
      throw 99;
    } catch (e) {
      caught = true;
    }
    shouldBe(caught, true, "testing throw()");
  }
  
  // same as above but lacking a semicolon after throw
  function testThrow2()
  {
    var caught = false;
    try {
      throw 99
    } catch (e) {
      caught = true;
    }
    shouldBe(caught, true, "testing throw()");
  }
  
  function testReferenceError()
  {
    var err = "noerror";
    var caught = false;
    try {
      var dummy = nonexistant; // throws reference error
    } catch (e) {
      caught = true;
      err = e.name;
    }
    // test err
    shouldBe(caught, true, "ReferenceError");
  }
  
  function testFunctionErrorHelper()
  {
     var a = b;  // throws reference error
  }
  
  function testFunctionError()
  {
    var caught = false;
    try {
      testFunctionErrorHelper();
    } catch (e) {
      caught = true;
    }
    shouldBe(caught, true, "error propagation in functions");
  }
  
  function testMathFunctionError()
  {
    var caught = false;
    try {
      Math();
    } catch (e) {
      debug("catch");
      caught = true;
    } finally {
      debug("finally");
    }
    shouldBe(caught, true, "Math() error");
  }
  
  function testWhileAbortion()
  {
    var caught = 0;
    try { 
      while (a=b, 1) { 	// "endless error" in condition
        ;
      }
    } catch (e) {
      caught++;
    }
  
    try { 
      while (1) {
        var a = b;	// error in body
      }
    } catch (e) {
      caught++;
    }
    shouldBe(caught, 2, "Abort while() on error");
  }
  
  debug("Except a lot of errors. They should all be caught and lead to PASS");
  testThrow();
  testThrow2();
  testReferenceError();
  testFunctionError();
  testMathFunctionError();
  testWhileAbortion();
  
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/function.js
  
  Index: function.js
  ===================================================================
  ///////////////////////////////
  // empty bodies
  
  function empty1() { ; }
  shouldBe("empty1()", "undefined");
  
  function empty2() { }
  shouldBe("empty2()", "undefined");
  
  var g = 2;
  var obj = new Object();
  with (obj) {
    obj.func = function(a) { return g*l*a; };
  }
  obj.l = 3;
  
  shouldBe("obj.func(11)", "66");
  
  ///////////////////////////////
  
  function ctor(xx) {
    this.x = xx;
    this.dummy = new Array();  // once broke the returned completion
  }
  
  c = new ctor(11);
  shouldBe("c.x", "11");
  
  ///////////////////////////////
  // anonymous functions
  ///////////////////////////////
  
  f = function (arg) {
    return arg;
  };
  
  
  shouldBe("f('bbbbb')", "'bbbbb'");
  
  
  function f() {return 1;};
  
  // just verify that this can be parsed
  Math.round(function anon() { });
  
  ///////////////////////////////
  // arguments object
  ///////////////////////////////
  
  function foo() {
    var result = "|";
    for (i = 0; i < arguments.length; i++)
      result += arguments[i] + "|";
    return result;
  }
  
  shouldBe("foo()", "'|'");
  shouldBe("foo('bar')", "'|bar|'");
  shouldBe("foo('bar', 'x')", "'|bar|x|'");
  
  function foo2(a) {
    var i = 0;
    for(a in arguments) // should NOT be enumerable
      i++;
    return i;
  }
  
  shouldBe("foo2(7)", "0");
  
  // I have my doubts about the standard conformance of this
  function foo3(i, j) {
    switch(i) {
      case 0:
         return foo3.arguments.length;
      case 1:
         return foo3.arguments;
      case 2:
         return foo3.j;
    }
  }
  
  shouldBe("foo3(0, 99)", "2");
  shouldBe("foo3(1, 99).length", "2");
  //shouldBe("foo3(2, 99)", "99"); // IE doesn't support this either
  
  ///////////////////////////////
  // nested function declarations
  ///////////////////////////////
  
  function nest0(a, b)
  {
    function nest1(c) { return c*c; }
    return nest1(a*b);
  }
  shouldBe("nest0(2,3)", "36");
  
  ///////////////////////////////
  // Function object
  ///////////////////////////////
  
  shouldBe("(new Function('return 11;'))()", "11");
  shouldBe("(new Function('', 'return 22;'))()", "22");
  shouldBe("(new Function('a', 'b', 'return a*b;'))(11, 3)", "33");
  shouldBe("(new Function(' a ', ' b ', 'return a*b;'))(11, 4)", "44");
  shouldBe("(new Function(' a,b ', ' c ', 'return a*b;'))(11, 5)", "55");
  shouldBe("(new Function(' a,b ', ' c3 ', 'return a*b;'))(11, 6)", "66");
  
  
  ///////////////////////////////
  // length property
  function funcp3(a, b, c) { }
  shouldBe("funcp3.length", "3");
  shouldBe("(function(a, b, c, d) { }).length", "4");
  shouldBe("(new Function('a', 'b', '')).length", "2");
  
  // recursive call
  function f4(i)
  {
     return i == 1 ? 1 : i*f4(i-1);
  }
  
  shouldBe("f4(4)", "24");
  
  function f5(a) {
    return f6();
  }
  
  function f6() { 
    return f5.arguments[0];
  }
  
  shouldBe("f5(11)", "11");
  shouldBe("f5.arguments", "null");
  
  ///////////////////////////////
  // calling conventions
  ///////////////////////////////
  
  function manipulate(x) {
     x[0] = 99;		// should operate on reference
     x = "nothing";	// should detach
  }
  var arr = new Array(1, 2, 3);
  manipulate(arr);
  shouldBe("arr[0]", "99");
  arr = [1, 2, 3];
  manipulate(arr);
  shouldBe("arr[0]", "99");
  
  ///////////////////////////////
  // toString() on functions
  ///////////////////////////////
  
  function orgFunc(s) { return 'Hello ' + s; }
  eval("var orgFuncClone = " + orgFunc);
  shouldBe("typeof orgFuncClone", "'function'");
  shouldBe("orgFuncClone('world')", "'Hello world'");
  
  function groupFunc(a, b) { return (a+b)*3; } // check for () being preserved
  eval("var groupClone = " + groupFunc);
  shouldBe("groupClone(1, 2)", "9");
  
  var sinStr = '\nfunction sin() {\n    [native code]\n}\n'
  shouldBe("String(Math.sin)", "sinStr");
  
  ///////////////////////////////
  // shadowed functions
  ///////////////////////////////
  
  function shadow() { return 1; }
  function shadow() { return 2; }
  shouldBe("shadow()", "2");
  
  ///////////////////////////////
  // nested functions
  
  var nest_property = "global nest";
  
  function nested_outer() {
  
    function nested_inner() {
      return nest_property;
    }
  
  }
  
  function not_nested() {
    return nest_property;
  }
  
  nested_outer.nest_property = "outer nest";
  
  var nested = nested_outer.nested_inner;
  var nestedret = nested();
  shouldBe("nestedret","'outer nest'");
  
  var not_nestedret = not_nested();
  shouldBe("not_nestedret","'global nest'");
  
  ///////////////////////////////
  // other properties
  ///////////////////////////////
  function sample() { }
  shouldBeUndefined("sample.prototype.prototype");
  shouldBeTrue("sample.prototype.constructor == sample");
  
  var caught = false;
  try {
    sample.apply(1, 1); // invalid argument
  } catch(dummy) {
    caught = true;
  }
  shouldBeTrue("caught");
  
  
  function functionWithVarOverride(a) {
    var a = 2;
    return a;
  }
  
  shouldBe("functionWithVarOverride(1)", "2");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/function_arguments.js
  
  Index: function_arguments.js
  ===================================================================
  // check value of arguments inside recursion
  
  var expected = [null,99,1,2,3,3,2,1,99,null];
  var expno = 0;
  
  var x = 0;
  shouldBe("mf.arguments", "expected[expno++]");
  function mf(a,b) {
    shouldBe("mf.arguments[0]", "expected[expno++]");
    x++;
    if (x < 4)
      mf(x,1);
    shouldBe("mf.arguments[0]", "expected[expno++]");
    return b;
  }
  mf(99);
  shouldBe("mf.arguments", "expected[expno++]");
  
  
  // check internal properties of arguments
  
  // Delete
  
  
  // DontEnum
  var foundArgs = false;
  
  var ReadOnlyOK = false;
  var DontDeleteOK = false;
  var DontEnumOK = false;
  function f(a,b,c) {
  
    // ReadOnly
    var newargs = new Object();
    var oldargs = f.arguments;
    f.arguments = newargs;
    ReadOnlyOK = (f.arguments == oldargs);
  
    // DontDelete
    DontDeleteOK = !delete(f.arguments);
    if (f.arguments != oldargs)
      DontDeleteOK = false;
  
    // DontEnum
    var foundArgs = false;
    for (i in f) {
      if (f == "arguments")
        foundArgs = true;
    }
    DontEnumOK = !foundArgs;
  }
  f(1,2,3);
  shouldBeTrue("ReadOnlyOK");
  shouldBeTrue("DontDeleteOK");
  shouldBeTrue("DontEnumOK");
  
  // Check that parameter variables are bound to the corresponding
  // elements in the arguments array
  var arg0 = null;
  var arg1 = null;
  var arg2 = null;
  var newarg0 = null;
  var newarg1 = null;
  var newarg2 = null;
  var newx = null;
  var arglength = 0;
  
  function dupargs(x,x,x)
  {
    arg0 = arguments[0];
    arg1 = arguments[1];
    arg2 = arguments[2];
    arglength = arguments.length;
    x = 999;
    newarg0 = arguments[0];
    newarg1 = arguments[1];
    newarg2 = arguments[2];
    arguments[2] = 888;
    newx = x;
  }
  
  dupargs(1,2,3);
  
  shouldBe("arg0","1");
  shouldBe("arg1","2");
  shouldBe("arg2","3");
  shouldBe("arglength","3");
  shouldBe("newarg0","1");
  shouldBe("newarg1","2");
  shouldBe("newarg2","999");
  shouldBe("newx","888");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/function_constructor.js
  
  Index: function_constructor.js
  ===================================================================
  var myfunc = Function();
  shouldBe("myfunc.prototype.constructor.__proto__ == Function.prototype","true");
  shouldBe("myfunc.prototype.constructor.__proto__.__proto__ == Object.prototype","true");
  shouldBe("myfunc.prototype.constructor == myfunc","true");
  shouldBe("Function.prototype.constructor == Function","true");
  shouldBe("myfunc.prototype.toString == Object.prototype.toString","true");
  shouldBe("myfunc.toString == Function.prototype.toString","true");
  
  //printValue("myfunc"); = "(Internal function)" ### should display code
  //printValue("myfunc.prototype.constructor"); = "(Internal function)" ### should display code
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/function_length.js
  
  Index: function_length.js
  ===================================================================
  shouldBe("Array.prototype.toString.length","0");
  shouldBe("Array.prototype.toLocaleString.length","0");
  shouldBe("Array.prototype.concat.length","0");
  shouldBe("Array.prototype.join.length","1");
  shouldBe("Array.prototype.pop.length","0");
  shouldBe("Array.prototype.push.length","1");
  shouldBe("Array.prototype.reverse.length","0");
  shouldBe("Array.prototype.shift.length","0");
  shouldBe("Array.prototype.slice.length","2"); // 15.4.4.10
  shouldBe("Array.prototype.sort.length","1");
  shouldBe("Array.prototype.splice.length","2"); // 15.4.4.12
  shouldBe("Array.prototype.unshift.length","1");
  shouldBe("Boolean.prototype.toString.length","0");
  shouldBe("Boolean.prototype.valueOf.length","0");
  shouldBe("Date.prototype.toString.length","0");
  shouldBe("Date.prototype.toUTCString.length","0");
  shouldBe("Date.prototype.toDateString.length","0");
  shouldBe("Date.prototype.toTimeString.length","0");
  shouldBe("Date.prototype.toLocaleString.length","0");
  shouldBe("Date.prototype.toLocaleDateString.length","0");
  shouldBe("Date.prototype.toLocaleTimeString.length","0");
  shouldBe("Date.prototype.valueOf.length","0");
  shouldBe("Date.prototype.getTime.length","0");
  shouldBe("Date.prototype.getFullYear.length","0");
  shouldBe("Date.prototype.getUTCFullYear.length","0");
  shouldBe("Date.prototype.toGMTString.length","0");
  shouldBe("Date.prototype.getMonth.length","0");
  shouldBe("Date.prototype.getUTCMonth.length","0");
  shouldBe("Date.prototype.getDate.length","0");
  shouldBe("Date.prototype.getUTCDate.length","0");
  shouldBe("Date.prototype.getDay.length","0");
  shouldBe("Date.prototype.getUTCDay.length","0");
  shouldBe("Date.prototype.getHours.length","0");
  shouldBe("Date.prototype.getUTCHours.length","0");
  shouldBe("Date.prototype.getMinutes.length","0");
  shouldBe("Date.prototype.getUTCMinutes.length","0");
  shouldBe("Date.prototype.getSeconds.length","0");
  shouldBe("Date.prototype.getUTCSeconds.length","0");
  shouldBe("Date.prototype.getMilliseconds.length","0");
  shouldBe("Date.prototype.getUTCMilliseconds.length","0");
  shouldBe("Date.prototype.getTimezoneOffset.length","0");
  shouldBe("Date.prototype.setTime.length","1");
  shouldBe("Date.prototype.setMilliseconds.length","1");
  shouldBe("Date.prototype.setUTCMilliseconds.length","1");
  shouldBe("Date.prototype.setSeconds.length","2");
  shouldBe("Date.prototype.setUTCSeconds.length","2");
  shouldBe("Date.prototype.setMinutes.length","3");
  shouldBe("Date.prototype.setUTCMinutes.length","3");
  shouldBe("Date.prototype.setHours.length","4");
  shouldBe("Date.prototype.setUTCHours.length","4");
  shouldBe("Date.prototype.setDate.length","1");
  shouldBe("Date.prototype.setUTCDate.length","1");
  shouldBe("Date.prototype.setMonth.length","2");
  shouldBe("Date.prototype.setUTCMonth.length","2");
  shouldBe("Date.prototype.setFullYear.length","3");
  shouldBe("Date.prototype.setUTCFullYear.length","3");
  shouldBe("Date.prototype.setYear.length","1");
  shouldBe("Date.prototype.getYear.length","0");
  shouldBe("Date.prototype.toGMTString.length","0");
  shouldBe("Error.prototype.toString.length","0");
  shouldBe("eval.length","1");
  shouldBe("parseInt.length","2");
  shouldBe("parseFloat.length","1");
  shouldBe("isNaN.length","1");
  shouldBe("isFinite.length","1");
  shouldBe("escape.length","1");
  shouldBe("unescape.length","1");
  shouldBe("Math.abs.length","1");
  shouldBe("Math.acos.length","1");
  shouldBe("Math.asin.length","1");
  shouldBe("Math.atan.length","1");
  shouldBe("Math.atan2.length","2");
  shouldBe("Math.ceil.length","1");
  shouldBe("Math.cos.length","1");
  shouldBe("Math.exp.length","1");
  shouldBe("Math.floor.length","1");
  shouldBe("Math.log.length","1");
  shouldBe("Math.max.length","2");
  shouldBe("Math.min.length","2");
  shouldBe("Math.pow.length","2");
  shouldBe("Math.random.length","0");
  shouldBe("Math.round.length","1");
  shouldBe("Math.sin.length","1");
  shouldBe("Math.sqrt.length","1");
  shouldBe("Math.tan.length","1");
  shouldBe("Object.prototype.toString.length","0");
  shouldBe("Object.prototype.valueOf.length","0");
  shouldBe("RegExp.prototype.exec.length","0");
  shouldBe("RegExp.prototype.test.length","0");
  shouldBe("RegExp.prototype.toString.length","0");
  shouldBe("String.fromCharCode.length","1");
  shouldBe("String.prototype.toString.length","0");
  shouldBe("String.prototype.valueOf.length","0");
  shouldBe("String.prototype.charAt.length","1");
  shouldBe("String.prototype.charCodeAt.length","1");
  shouldBe("String.prototype.indexOf.length","1");
  shouldBe("String.prototype.lastIndexOf.length","1");
  shouldBe("String.prototype.match.length","1");
  shouldBe("String.prototype.replace.length","2");
  shouldBe("String.prototype.search.length","1");
  shouldBe("String.prototype.slice.length","2"); // 15.5.4.13
  shouldBe("String.prototype.split.length","2"); // 15.5.4.14
  shouldBe("String.prototype.substr.length","2");
  shouldBe("String.prototype.substring.length","2");
  shouldBe("String.prototype.toLowerCase.length","0");
  shouldBe("String.prototype.toUpperCase.length","0");
  shouldBe("String.prototype.big.length","0");
  shouldBe("String.prototype.small.length","0");
  shouldBe("String.prototype.blink.length","0");
  shouldBe("String.prototype.bold.length","0");
  shouldBe("String.prototype.fixed.length","0");
  shouldBe("String.prototype.italics.length","0");
  shouldBe("String.prototype.strike.length","0");
  shouldBe("String.prototype.sub.length","0");
  shouldBe("String.prototype.sup.length","0");
  shouldBe("String.prototype.fontcolor.length","1");
  shouldBe("String.prototype.fontsize.length","1");
  shouldBe("String.prototype.anchor.length","1");
  shouldBe("String.prototype.link.length","1");
  shouldBe("Number.prototype.toString.length", "1");
  shouldBe("Number.prototype.valueOf.length", "0");
  shouldBe("Number.prototype.toFixed.length", "1");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/garbage-n.js
  
  Index: garbage-n.js
  ===================================================================
  invalid code
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/inbuilt_function_proto.js
  
  Index: inbuilt_function_proto.js
  ===================================================================
  shouldBe("Object.prototype.toString.__proto__","Function.prototype");
  shouldBe("Object.prototype.valueOf.__proto__","Function.prototype");
  shouldBe("Array.prototype.toString.__proto__","Function.prototype");
  shouldBe("Array.prototype.toLocaleString.__proto__","Function.prototype");
  shouldBe("Array.prototype.concat.__proto__","Function.prototype");
  shouldBe("Array.prototype.join.__proto__","Function.prototype");
  shouldBe("Array.prototype.pop.__proto__","Function.prototype");
  shouldBe("Array.prototype.push.__proto__","Function.prototype");
  shouldBe("Array.prototype.reverse.__proto__","Function.prototype");
  shouldBe("Array.prototype.shift.__proto__","Function.prototype");
  shouldBe("Array.prototype.slice.__proto__","Function.prototype");
  shouldBe("Array.prototype.sort.__proto__","Function.prototype");
  shouldBe("Array.prototype.splice.__proto__","Function.prototype");
  shouldBe("Array.prototype.unshift.__proto__","Function.prototype");
  shouldBe("String.prototype.toString.__proto__","Function.prototype");
  shouldBe("String.prototype.valueOf.__proto__","Function.prototype");
  shouldBe("String.prototype.charAt.__proto__","Function.prototype");
  shouldBe("String.prototype.charCodeAt.__proto__","Function.prototype");
  shouldBe("String.prototype.indexOf.__proto__","Function.prototype");
  shouldBe("String.prototype.lastIndexOf.__proto__","Function.prototype");
  shouldBe("String.prototype.match.__proto__","Function.prototype");
  shouldBe("String.prototype.replace.__proto__","Function.prototype");
  shouldBe("String.prototype.search.__proto__","Function.prototype");
  shouldBe("String.prototype.slice.__proto__","Function.prototype");
  shouldBe("String.prototype.split.__proto__","Function.prototype");
  shouldBe("String.prototype.substr.__proto__","Function.prototype");
  shouldBe("String.prototype.substring.__proto__","Function.prototype");
  shouldBe("String.prototype.toLowerCase.__proto__","Function.prototype");
  shouldBe("String.prototype.toUpperCase.__proto__","Function.prototype");
  shouldBe("String.prototype.big.__proto__","Function.prototype");
  shouldBe("String.prototype.small.__proto__","Function.prototype");
  shouldBe("String.prototype.blink.__proto__","Function.prototype");
  shouldBe("String.prototype.bold.__proto__","Function.prototype");
  shouldBe("String.prototype.fixed.__proto__","Function.prototype");
  shouldBe("String.prototype.italics.__proto__","Function.prototype");
  shouldBe("String.prototype.strike.__proto__","Function.prototype");
  shouldBe("String.prototype.sub.__proto__","Function.prototype");
  shouldBe("String.prototype.sup.__proto__","Function.prototype");
  shouldBe("String.prototype.fontcolor.__proto__","Function.prototype");
  shouldBe("String.prototype.fontsize.__proto__","Function.prototype");
  shouldBe("String.prototype.anchor.__proto__","Function.prototype");
  shouldBe("String.prototype.link.__proto__","Function.prototype");
  shouldBe("Boolean.prototype.toString.__proto__","Function.prototype");
  shouldBe("Boolean.prototype.valueOf.__proto__","Function.prototype");
  shouldBe("Date.prototype.toString.__proto__","Function.prototype");
  shouldBe("Date.prototype.toUTCString.__proto__","Function.prototype");
  shouldBe("Date.prototype.toDateString.__proto__","Function.prototype");
  shouldBe("Date.prototype.toTimeString.__proto__","Function.prototype");
  shouldBe("Date.prototype.toLocaleString.__proto__","Function.prototype");
  shouldBe("Date.prototype.toLocaleDateString.__proto__","Function.prototype");
  shouldBe("Date.prototype.toLocaleTimeString.__proto__","Function.prototype");
  shouldBe("Date.prototype.valueOf.__proto__","Function.prototype");
  shouldBe("Date.prototype.getTime.__proto__","Function.prototype");
  shouldBe("Date.prototype.getFullYear.__proto__","Function.prototype");
  shouldBe("Date.prototype.getUTCFullYear.__proto__","Function.prototype");
  shouldBe("Date.prototype.toGMTString.__proto__","Function.prototype");
  shouldBe("Date.prototype.getMonth.__proto__","Function.prototype");
  shouldBe("Date.prototype.getUTCMonth.__proto__","Function.prototype");
  shouldBe("Date.prototype.getDate.__proto__","Function.prototype");
  shouldBe("Date.prototype.getUTCDate.__proto__","Function.prototype");
  shouldBe("Date.prototype.getDay.__proto__","Function.prototype");
  shouldBe("Date.prototype.getUTCDay.__proto__","Function.prototype");
  shouldBe("Date.prototype.getHours.__proto__","Function.prototype");
  shouldBe("Date.prototype.getUTCHours.__proto__","Function.prototype");
  shouldBe("Date.prototype.getMinutes.__proto__","Function.prototype");
  shouldBe("Date.prototype.getUTCMinutes.__proto__","Function.prototype");
  shouldBe("Date.prototype.getSeconds.__proto__","Function.prototype");
  shouldBe("Date.prototype.getUTCSeconds.__proto__","Function.prototype");
  shouldBe("Date.prototype.getMilliseconds.__proto__","Function.prototype");
  shouldBe("Date.prototype.getUTCMilliseconds.__proto__","Function.prototype");
  shouldBe("Date.prototype.getTimezoneOffset.__proto__","Function.prototype");
  shouldBe("Date.prototype.setTime.__proto__","Function.prototype");
  shouldBe("Date.prototype.setMilliseconds.__proto__","Function.prototype");
  shouldBe("Date.prototype.setUTCMilliseconds.__proto__","Function.prototype");
  shouldBe("Date.prototype.setSeconds.__proto__","Function.prototype");
  shouldBe("Date.prototype.setUTCSeconds.__proto__","Function.prototype");
  shouldBe("Date.prototype.setMinutes.__proto__","Function.prototype");
  shouldBe("Date.prototype.setUTCMinutes.__proto__","Function.prototype");
  shouldBe("Date.prototype.setHours.__proto__","Function.prototype");
  shouldBe("Date.prototype.setUTCHours.__proto__","Function.prototype");
  shouldBe("Date.prototype.setDate.__proto__","Function.prototype");
  shouldBe("Date.prototype.setUTCDate.__proto__","Function.prototype");
  shouldBe("Date.prototype.setMonth.__proto__","Function.prototype");
  shouldBe("Date.prototype.setUTCMonth.__proto__","Function.prototype");
  shouldBe("Date.prototype.setFullYear.__proto__","Function.prototype");
  shouldBe("Date.prototype.setUTCFullYear.__proto__","Function.prototype");
  shouldBe("Date.prototype.setYear.__proto__","Function.prototype");
  shouldBe("Date.prototype.getYear.__proto__","Function.prototype");
  shouldBe("Date.prototype.toGMTString.__proto__","Function.prototype");
  shouldBe("RegExp.prototype.exec.__proto__","Function.prototype");
  shouldBe("RegExp.prototype.test.__proto__","Function.prototype");
  shouldBe("RegExp.prototype.toString.__proto__","Function.prototype");
  shouldBe("Error.prototype.toString.__proto__","Function.prototype");
  
  
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/inbuilt_function_tostring.js
  
  Index: inbuilt_function_tostring.js
  ===================================================================
     function StripSpaces( s ) {
          for ( var currentChar = 0, strippedString="";
                  currentChar < s.length; currentChar++ )
          {
              if (!IsWhiteSpace(s.charAt(currentChar))) {
                  strippedString += s.charAt(currentChar);
              }
          }
          return strippedString;
      }
  
      function IsWhiteSpace( string ) {
          var cc = string.charCodeAt(0);
          switch (cc) {
              case (0x0009):
              case (0x000B):
              case (0x000C):
              case (0x0020):
              case (0x000A):
              case (0x000D):
              case ( 59 ): // let's strip out semicolons, too
                  return true;
                  break;
              default:
                  return false;
          }
      }
  
  
  shouldBe("StripSpaces(eval.toString())","\"functioneval(){[nativecode]}\"");
  shouldBe("StripSpaces(parseInt.toString())","\"functionparseInt(){[nativecode]}\"");
  shouldBe("StripSpaces(parseFloat.toString())","\"functionparseFloat(){[nativecode]}\"");
  shouldBe("StripSpaces(isNaN.toString())","\"functionisNaN(){[nativecode]}\"");
  shouldBe("StripSpaces(isFinite.toString())","\"functionisFinite(){[nativecode]}\"");
  shouldBe("StripSpaces(escape.toString())","\"functionescape(){[nativecode]}\"");
  shouldBe("StripSpaces(unescape.toString())","\"functionunescape(){[nativecode]}\"");
  shouldBe("StripSpaces(kjsprint.toString())","\"functionkjsprint(){[nativecode]}\"");
  
  shouldBe("StripSpaces(Object.prototype.toString.toString())","\"functiontoString(){[nativecode]}\"");
  shouldBe("StripSpaces(Object.prototype.toLocaleString.toString())","\"functiontoLocaleString(){[nativecode]}\"");
  shouldBe("StripSpaces(Object.prototype.valueOf.toString())","\"functionvalueOf(){[nativecode]}\"");
  shouldBe("StripSpaces(Object.prototype.hasOwnProperty.toString())","\"functionhasOwnProperty(){[nativecode]}\"");
  shouldBe("StripSpaces(Object.prototype.isPrototypeOf.toString())","\"functionisPrototypeOf(){[nativecode]}\"");
  shouldBe("StripSpaces(Object.prototype.propertyIsEnumerable.toString())","\"functionpropertyIsEnumerable(){[nativecode]}\"");
  
  shouldBe("StripSpaces(Function.prototype.toString.toString())","\"functiontoString(){[nativecode]}\"");
  shouldBe("StripSpaces(Function.prototype.apply.toString())","\"functionapply(){[nativecode]}\"");
  shouldBe("StripSpaces(Function.prototype.call.toString())","\"functioncall(){[nativecode]}\"");
  
  shouldBe("StripSpaces(Array.prototype.toString.toString())","\"functiontoString(){[nativecode]}\"");
  shouldBe("StripSpaces(Array.prototype.toLocaleString.toString())","\"functiontoLocaleString(){[nativecode]}\"");
  shouldBe("StripSpaces(Array.prototype.concat.toString())","\"functionconcat(){[nativecode]}\"");
  shouldBe("StripSpaces(Array.prototype.join.toString())","\"functionjoin(){[nativecode]}\"");
  shouldBe("StripSpaces(Array.prototype.pop.toString())","\"functionpop(){[nativecode]}\"");
  shouldBe("StripSpaces(Array.prototype.push.toString())","\"functionpush(){[nativecode]}\"");
  shouldBe("StripSpaces(Array.prototype.reverse.toString())","\"functionreverse(){[nativecode]}\"");
  shouldBe("StripSpaces(Array.prototype.shift.toString())","\"functionshift(){[nativecode]}\"");
  shouldBe("StripSpaces(Array.prototype.slice.toString())","\"functionslice(){[nativecode]}\"");
  shouldBe("StripSpaces(Array.prototype.sort.toString())","\"functionsort(){[nativecode]}\"");
  shouldBe("StripSpaces(Array.prototype.splice.toString())","\"functionsplice(){[nativecode]}\"");
  shouldBe("StripSpaces(Array.prototype.unshift.toString())","\"functionunshift(){[nativecode]}\"");
  
  shouldBe("StripSpaces(String.prototype.toString.toString())","\"functiontoString(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.valueOf.toString())","\"functionvalueOf(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.charAt.toString())","\"functioncharAt(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.charCodeAt.toString())","\"functioncharCodeAt(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.concat.toString())","\"functionconcat(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.indexOf.toString())","\"functionindexOf(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.lastIndexOf.toString())","\"functionlastIndexOf(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.match.toString())","\"functionmatch(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.replace.toString())","\"functionreplace(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.search.toString())","\"functionsearch(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.slice.toString())","\"functionslice(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.split.toString())","\"functionsplit(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.substr.toString())","\"functionsubstr(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.substring.toString())","\"functionsubstring(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.toLowerCase.toString())","\"functiontoLowerCase(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.toUpperCase.toString())","\"functiontoUpperCase(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.big.toString())","\"functionbig(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.small.toString())","\"functionsmall(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.blink.toString())","\"functionblink(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.bold.toString())","\"functionbold(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.fixed.toString())","\"functionfixed(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.italics.toString())","\"functionitalics(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.strike.toString())","\"functionstrike(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.sub.toString())","\"functionsub(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.sup.toString())","\"functionsup(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.fontcolor.toString())","\"functionfontcolor(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.fontsize.toString())","\"functionfontsize(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.anchor.toString())","\"functionanchor(){[nativecode]}\"");
  shouldBe("StripSpaces(String.prototype.link.toString())","\"functionlink(){[nativecode]}\"");
  
  shouldBe("StripSpaces(Boolean.prototype.toString.toString())","\"functiontoString(){[nativecode]}\"");
  shouldBe("StripSpaces(Boolean.prototype.valueOf.toString())","\"functionvalueOf(){[nativecode]}\"");
  
  shouldBe("StripSpaces(Number.prototype.toString.toString())","\"functiontoString(){[nativecode]}\"");
  shouldBe("StripSpaces(Number.prototype.toLocaleString.toString())","\"functiontoLocaleString(){[nativecode]}\"");
  shouldBe("StripSpaces(Number.prototype.valueOf.toString())","\"functionvalueOf(){[nativecode]}\"");
  shouldBe("StripSpaces(Number.prototype.toFixed.toString())","\"functiontoFixed(){[nativecode]}\"");
  shouldBe("StripSpaces(Number.prototype.toExponential.toString())","\"functiontoExponential(){[nativecode]}\"");
  shouldBe("StripSpaces(Number.prototype.toPrecision.toString())","\"functiontoPrecision(){[nativecode]}\"");
  
  shouldBe("StripSpaces(Math.abs.toString())","\"functionabs(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.acos.toString())","\"functionacos(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.asin.toString())","\"functionasin(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.atan.toString())","\"functionatan(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.atan2.toString())","\"functionatan2(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.ceil.toString())","\"functionceil(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.cos.toString())","\"functioncos(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.exp.toString())","\"functionexp(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.floor.toString())","\"functionfloor(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.log.toString())","\"functionlog(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.max.toString())","\"functionmax(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.min.toString())","\"functionmin(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.pow.toString())","\"functionpow(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.random.toString())","\"functionrandom(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.round.toString())","\"functionround(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.sin.toString())","\"functionsin(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.sqrt.toString())","\"functionsqrt(){[nativecode]}\"");
  shouldBe("StripSpaces(Math.tan.toString())","\"functiontan(){[nativecode]}\"");
  
  shouldBe("StripSpaces(Date.prototype.toString.toString())","\"functiontoString(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.toUTCString.toString())","\"functiontoUTCString(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.toDateString.toString())","\"functiontoDateString(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.toTimeString.toString())","\"functiontoTimeString(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.toLocaleString.toString())","\"functiontoLocaleString(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.toLocaleDateString.toString())","\"functiontoLocaleDateString(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.toLocaleTimeString.toString())","\"functiontoLocaleTimeString(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.valueOf.toString())","\"functionvalueOf(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getTime.toString())","\"functiongetTime(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getFullYear.toString())","\"functiongetFullYear(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getUTCFullYear.toString())","\"functiongetUTCFullYear(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.toGMTString.toString())","\"functiontoGMTString(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getMonth.toString())","\"functiongetMonth(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getUTCMonth.toString())","\"functiongetUTCMonth(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getDate.toString())","\"functiongetDate(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getUTCDate.toString())","\"functiongetUTCDate(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getDay.toString())","\"functiongetDay(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getUTCDay.toString())","\"functiongetUTCDay(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getHours.toString())","\"functiongetHours(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getUTCHours.toString())","\"functiongetUTCHours(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getMinutes.toString())","\"functiongetMinutes(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getUTCMinutes.toString())","\"functiongetUTCMinutes(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getSeconds.toString())","\"functiongetSeconds(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getUTCSeconds.toString())","\"functiongetUTCSeconds(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getMilliseconds.toString())","\"functiongetMilliseconds(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getUTCMilliseconds.toString())","\"functiongetUTCMilliseconds(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getTimezoneOffset.toString())","\"functiongetTimezoneOffset(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setTime.toString())","\"functionsetTime(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setMilliseconds.toString())","\"functionsetMilliseconds(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setUTCMilliseconds.toString())","\"functionsetUTCMilliseconds(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setSeconds.toString())","\"functionsetSeconds(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setUTCSeconds.toString())","\"functionsetUTCSeconds(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setMinutes.toString())","\"functionsetMinutes(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setUTCMinutes.toString())","\"functionsetUTCMinutes(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setHours.toString())","\"functionsetHours(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setUTCHours.toString())","\"functionsetUTCHours(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setDate.toString())","\"functionsetDate(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setUTCDate.toString())","\"functionsetUTCDate(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setMonth.toString())","\"functionsetMonth(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setUTCMonth.toString())","\"functionsetUTCMonth(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setFullYear.toString())","\"functionsetFullYear(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setUTCFullYear.toString())","\"functionsetUTCFullYear(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.setYear.toString())","\"functionsetYear(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.getYear.toString())","\"functiongetYear(){[nativecode]}\"");
  shouldBe("StripSpaces(Date.prototype.toGMTString.toString())","\"functiontoGMTString(){[nativecode]}\"");
  
  shouldBe("StripSpaces(RegExp.prototype.exec.toString())","\"functionexec(){[nativecode]}\"");
  shouldBe("StripSpaces(RegExp.prototype.test.toString())","\"functiontest(){[nativecode]}\"");
  shouldBe("StripSpaces(RegExp.prototype.toString.toString())","\"functiontoString(){[nativecode]}\"");
  
  shouldBe("StripSpaces(Error.prototype.toString.toString())","\"functiontoString(){[nativecode]}\"");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/iteration.js
  
  Index: iteration.js
  ===================================================================
  // 12.6.1
  var count = 0;
  do {
    count++;
  } while (count < 10);
  shouldBe("count", "10");
  
  count = 0;
  for (var i = 0; i < 10; i++) {
    if (i == 5)
      break;
    count++;
  }
  shouldBe("count", "5");
  
  // 12.6.3
  count = 0;
  for (i = 0; i < 10; i++) {
    count++;
  }
  shouldBe("count", "10");
  
  // 12.6.4
  obj = new Object();
  obj.a = 11;
  obj.b = 22;
  
  properties = "";
  for ( prop in obj )
    properties += (prop + "=" + obj[prop] + ";");
  
  shouldBe("properties", "'a=11;b=22;'");
  
  // now a test verifying the order. not standardized but common.
  obj.y = 33;
  obj.x = 44;
  properties = "";
  for ( prop in obj )
    properties += prop;
  // shouldBe("properties", "'abyx'");
  
  arr = new Array;
  arr[0] = 100;
  arr[1] = 101;
  list = "";
  for ( var j in arr ) {
    list += "[" + j + "]=" + arr[j] + ";";
  }
  shouldBe("list","'[0]=100;[1]=101;'");
  
  list = "";
  for (var a = [1,2,3], length = a.length, i = 0; i < length; i++) {
    list += a[i];
  }
  shouldBe("list", "'123'");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/j-comment-3.js
  
  Index: j-comment-3.js
  ===================================================================
  <!-- HTML comment (not ECMA)
  
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/j-comment-4.js
  
  Index: j-comment-4.js
  ===================================================================
  --> end of HTML comment (not ECMA)
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/literals.js
  
  Index: literals.js
  ===================================================================
  var x = 0;
  eval("\u0009 \u000B \u000C \u00A0x = 1;");
  shouldBe("x", "1");
  
  // hex (non-normative)
  shouldBe("0x0", "0");
  shouldBe("0xF", "15");
  shouldBe("0xFF", "255");
  
  // octal (non-normative)
  shouldBe("01", "1");
  shouldBe("010", "8");
  shouldBe("09", "9");
  shouldBe("019", "19");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/math.js
  
  Index: math.js
  ===================================================================
  var negativeZero = Math.atan2(-1, Infinity); // ### any nicer way?
  
  function isNegativeZero(n)
  {
    return n == 0 && 1 / n < 0;
  }
  
  // self tests
  shouldBeTrue("isNegativeZero(negativeZero)");
  shouldBeFalse("isNegativeZero(0)");
  
  // Constants
  shouldBe("String()+Math.E", "'2.718281828459045'");
  shouldBe("String()+Math.LN2", "'0.6931471805599453'");
  shouldBe("String()+Math.LN10", "'2.302585092994046'");
  shouldBe("String()+Math.LOG2E", "'1.4426950408889634'");
  shouldBe("String()+Math.LOG10E", "'0.43429448190325176'");
  shouldBe("String()+Math.PI", "'3.141592653589793'");
  shouldBe("String()+Math.SQRT1_2", "'0.7071067811865476'");
  shouldBe("String()+Math.SQRT2", "'1.4142135623730951'");
  
  shouldBe("String()+Number.NaN", "'NaN'");
  shouldBe("String()+Number.NEGATIVE_INFINITY", "'-Infinity'");
  shouldBe("String()+Number.POSITIVE_INFINITY", "'Infinity'");
  
  // Functions
  shouldBe("Math.abs(-5)", "5");
  shouldBe("Math.acos(0)", "Math.PI/2");
  shouldBe("Math.acos(1)", "0");
  shouldBe("Math.ceil(1.1)", "2");
  shouldBe("String()+Math.sqrt(2)", "String()+Math.SQRT2");
  shouldBe("Math.ceil(1.6)", "2");
  shouldBe("Math.round(0)", "0");
  shouldBeFalse("isNegativeZero(Math.round(0))");
  shouldBeTrue("isNegativeZero(Math.round(negativeZero))");
  shouldBe("Math.round(0.2)", "0");
  shouldBeTrue("isNegativeZero(Math.round(-0.2))");
  shouldBeTrue("isNegativeZero(Math.round(-0.5))");
  shouldBe("Math.round(1.1)", "1");
  shouldBe("Math.round(1.6)", "2");
  shouldBe("Math.round(-3.5)", "-3");
  shouldBe("Math.round(-3.6)", "-4");
  shouldBeTrue("isNaN(Math.round())");
  shouldBeTrue("isNaN(Math.round(NaN))");
  shouldBe("Math.round(-Infinity)", "-Infinity");
  shouldBe("Math.round(Infinity)", "Infinity");
  shouldBe("Math.round(99999999999999999999.99)", "100000000000000000000");
  shouldBe("Math.round(-99999999999999999999.99)", "-100000000000000000000");
  
  // Math.log()
  shouldBe("Math.log(Math.E*Math.E)", "2");
  shouldBeTrue("isNaN(Math.log(NaN))");
  shouldBeTrue("isNaN(Math.log(-1))");
  shouldBeFalse("isFinite(Math.log(0))");
  shouldBe("Math.log(1)", "0");
  shouldBeFalse("isFinite(Math.log(Infinity))");
  
  // Math.min()
  shouldBeTrue("isNegativeZero(Math.min(negativeZero, 0))");
  
  // Math.max()
  shouldBeFalse("isFinite(Math.max())");
  shouldBe("Math.max(1)", "1"); // NS 4.x and IE 5.x seem to know about 2 arg version only
  shouldBe("Math.max(1, 2, 3)", "3"); // NS 4.x and IE 5.x seem to know about 2 arg version only
  shouldBeTrue("isNaN(Math.max(1,NaN,3))");
  shouldBeTrue("!isNegativeZero(Math.max(negativeZero, 0))");
  
  
  list=""
  for ( var i in Math ) { list += i + ','; }
  shouldBe("list","''");
  
  var my = new Object;
  my.v = 1;
  
  // Deleting/assigning
  shouldBe("delete my.v", "true")
  shouldBeUndefined("my.v");
  shouldBe("delete Math.PI", "false")
  function myfunc( num ) { return num+1; }
  shouldBe("my = myfunc, myfunc(4)", "5");
  
  // Conversions
  shouldBe("Boolean(Math)", "true");
  shouldBeTrue("isNaN(Number(Math));");
  
  // Unicity
  shouldBe("Math.abs===Math.abs", "true")
  shouldBe("Math.abs===Math.round", "false")
  
  // Iteration
  obj = new Object;
  obj.a = 1;
  obj.b = 2;
  list=""
  for ( var i in obj ) { list += i + ','; }
  shouldBe("list","'a,b,'");
  
  // (check that Math's properties and functions are not enumerable)
  list=""
  for ( var i in Math ) { list += i + ','; }
  shouldBe("list","''");
  
  Math.myprop=true; // adding a custom property to the math object (why not?)
  list=""
  for ( var i in Math ) { list += i + ','; }
  shouldBe("list","'myprop,'");
  
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/md5-1.js
  
  Index: md5-1.js
  ===================================================================
  // shouldBe() (base.js) test at very end of this file (Harri)
  
  /*
  * md5.jvs 1.0b 27/06/96
  *
  * Javascript implementation of the RSA Data Security, Inc. MD5
  * Message-Digest Algorithm.
  *
  * Copyright (c) 1996 Henri Torgemane. All Rights Reserved.
  *
  * Permission to use, copy, modify, and distribute this software
  * and its documentation for any purposes and without
  * fee is hereby granted provided that this copyright notice
  * appears in all copies.
  *
  * Of course, this soft is provided "as is" without express or implied
  * warranty of any kind.
  
  */
  
  // $Id: md5-1.js,v 1.1 2005/12/26 23:07:30 mjs Exp $
  
  function array(n) {
      for(i=0;i<n;i++) this[i]=0;
      this.length=n;
  }
  
  /* Some basic logical functions had to be rewritten because of a bug in
  * Javascript.. Just try to compute 0xffffffff >> 4 with it..
  * Of course, these functions are slower than the original would be, but
  * at least, they work!
  */
  
  function integer(n) { return n%(0xffffffff+1); }
  
  function shr(a,b) {
      a=integer(a);
      b=integer(b);
      if (a-0x80000000>=0) {
  	a=a%0x80000000;
  	a>>=b;
  	a+=0x40000000>>(b-1);
      } else
  	a>>=b;
      return a;
  }
  
  function shl1(a) {
      a=a%0x80000000;
      if (a&0x40000000==0x40000000)
  	{
  	    a-=0x40000000;
  	    a*=2;
  	    a+=0x80000000;
  	} else
  	    a*=2;
      return a;
  }
  
  function shl(a,b) {
      a=integer(a);
      b=integer(b);
      for (var i=0;i<b;i++) a=shl1(a);
      return a;
  }
  
  function and(a,b) {
      a=integer(a);
      b=integer(b);
      var t1=(a-0x80000000);
      var t2=(b-0x80000000);
      if (t1>=0)
  	if (t2>=0)
  	    return ((t1&t2)+0x80000000);
  	else
  	    return (t1&b);
      else
  	if (t2>=0)
  	    return (a&t2);
  	else
  	    return (a&b);
  }
  
  function or(a,b) {
      a=integer(a);
      b=integer(b);
      var t1=(a-0x80000000);
      var t2=(b-0x80000000);
      if (t1>=0)
  	if (t2>=0)
  	    return ((t1|t2)+0x80000000);
  	else
  	    return ((t1|b)+0x80000000);
      else
  	if (t2>=0)
  	    return ((a|t2)+0x80000000);
  	else
  	    return (a|b);
  }
  
  function xor(a,b) {
      a=integer(a);
      b=integer(b);
      var t1=(a-0x80000000);
      var t2=(b-0x80000000);
      if (t1>=0)
  	if (t2>=0)
  	    return (t1^t2);
  	else
  	    return ((t1^b)+0x80000000);
      else
  	if (t2>=0)
  	    return ((a^t2)+0x80000000);
  	else
  	    return (a^b);
  }
  
  
  function not(a) {
      a=integer(a);
      return (0xffffffff-a);
  }
  
  /* Here begin the real algorithm */
  
  var state = new array(4);
  var count = new array(2);
  count[0] = 0;
  count[1] = 0;
  
  var buffer = new array(64);
  var transformBuffer = new array(16);
  var digestBits = new array(16);
  
  var S11 = 7;
  var S12 = 12;
  var S13 = 17;
  var S14 = 22;
  var S21 = 5;
  var S22 = 9;
  var S23 = 14;
  var S24 = 20;
  var S31 = 4;
  var S32 = 11;
  var S33 = 16;
  var S34 = 23;
  var S41 = 6;
  var S42 = 10;
  var S43 = 15;
  var S44 = 21;
  
  
  function F(x,y,z) {
      return or(and(x,y),and(not(x),z));
  }
  
  function G(x,y,z) {
      return or(and(x,z),and(y,not(z)));
  }
  
  function H(x,y,z) {
      return xor(xor(x,y),z);
  }
  
  function I(x,y,z) {
      return xor(y ,or(x , not(z)));
  }
  
  function rotateLeft(a,n) {
      return or(shl(a, n),(shr(a,(32 - n))));
  }
  
  function FF(a,b,c,d,x,s,ac) {
      a = a+F(b, c, d) + x + ac;
      a = rotateLeft(a, s);
      a = a+b;
      return a;
  }
  
  function GG(a,b,c,d,x,s,ac) {
      a = a+G(b, c, d) +x + ac;
      a = rotateLeft(a, s);
      a = a+b;
      return a;
  }
  
  function HH(a,b,c,d,x,s,ac) {
      a = a+H(b, c, d) + x + ac;
      a = rotateLeft(a, s);
      a = a+b;
      return a;
  }
  
  function II(a,b,c,d,x,s,ac) {
      a = a+I(b, c, d) + x + ac;
      a = rotateLeft(a, s);
      a = a+b;
      return a;
  }
  
  function transform(buf,offset) {
      var a=0, b=0, c=0, d=0;
      var x = transformBuffer;
  
      a = state[0];
      b = state[1];
      c = state[2];
      d = state[3];
  
      for (i = 0; i < 16; i++) {
  	x[i] = and(buf[i*4+offset],0xff);
  	for (j = 1; j < 4; j++) {
  	    x[i]+=shl(and(buf[i*4+j+offset] ,0xff), j * 8);
  	}
      }
  
      /* Round 1 */
      a = FF ( a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
      d = FF ( d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
      c = FF ( c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
      b = FF ( b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
      a = FF ( a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
      d = FF ( d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
      c = FF ( c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
      b = FF ( b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
      a = FF ( a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
      d = FF ( d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
      c = FF ( c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
      b = FF ( b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
      a = FF ( a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
      d = FF ( d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
      c = FF ( c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
      b = FF ( b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
  
      /* Round 2 */
      a = GG ( a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
      d = GG ( d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
      c = GG ( c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
      b = GG ( b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
      a = GG ( a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
      d = GG ( d, a, b, c, x[10], S22, 0x2441453); /* 22 */
      c = GG ( c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
      b = GG ( b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
      a = GG ( a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
      d = GG ( d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
      c = GG ( c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
      b = GG ( b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
      a = GG ( a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
      d = GG ( d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
      c = GG ( c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
      b = GG ( b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
  
      /* Round 3 */
      a = HH ( a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
      d = HH ( d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
      c = HH ( c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
      b = HH ( b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
      a = HH ( a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
      d = HH ( d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
      c = HH ( c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
      b = HH ( b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
      a = HH ( a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
      d = HH ( d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
      c = HH ( c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
      b = HH ( b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */
      a = HH ( a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
      d = HH ( d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
      c = HH ( c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
      b = HH ( b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */
  
      /* Round 4 */
      a = II ( a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
      d = II ( d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
      c = II ( c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
      b = II ( b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
      a = II ( a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
      d = II ( d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
      c = II ( c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
      b = II ( b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
      a = II ( a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
      d = II ( d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
      c = II ( c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
      b = II ( b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
      a = II ( a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
      d = II ( d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
      c = II ( c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
      b = II ( b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
  
      state[0] +=a;
      state[1] +=b;
      state[2] +=c;
      state[3] +=d;
  }
  
  function init() {
      count[0]=count[1] = 0;
      state[0] = 0x67452301;
      state[1] = 0xefcdab89;
      state[2] = 0x98badcfe;
      state[3] = 0x10325476;
      for (i = 0; i < digestBits.length; i++)
  	digestBits[i] = 0;
  }
  
  function update(b) {
      var index,i;
  
      index = and(shr(count[0],3) , 0x3f);
      if (count[0]<0xffffffff-7)
  	count[0] += 8;
      else {
  	count[1]++;
  	count[0]-=0xffffffff+1;
  	count[0]+=8;
      }
  
      buffer[index] = and(b,0xff);
      if (index >= 63) {
  	transform(buffer, 0);
      }
  }
  
  function finish() {
      var bits = new array(8);
      var padding;
      var i=0, index=0, padLen=0;
  
      for (i = 0; i < 4; i++) {
  	bits[i] = and(shr(count[0],(i * 8)), 0xff);
      }
  
      for (i = 0; i < 4; i++) {
  	bits[i+4]=and(shr(count[1],(i * 8)), 0xff);
      }
  
      index = and(shr(count[0], 3) ,0x3f);
      padLen = (index < 56) ? (56 - index) : (120 - index);
      padding = new array(64);
      padding[0] = 0x80;
      for (i=0;i<padLen;i++)
  	update(padding[i]);
  
      for (i=0;i<8;i++)
  	update(bits[i]);
  
      for (i = 0; i < 4; i++) {
  	for (j = 0; j < 4; j++) {
  	    digestBits[i*4+j] = and(shr(state[i], (j * 8)) , 0xff);
  	}
      }
  }
  
  /* End of the MD5 algorithm */
  
  function hexa(n) {
      var hexa_h = "0123456789abcdef";
      var hexa_c="";
      var hexa_m=n;
      for (hexa_i=0;hexa_i<8;hexa_i++) {
  	hexa_c=hexa_h.charAt(Math.abs(hexa_m)%16)+hexa_c;
  	hexa_m=Math.floor(hexa_m/16);
      }
      return hexa_c;
  }
  
  var ascii="01234567890123456789012345678901" +
  " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ"+
  "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
  
  function MD5(entree)
  {
      var l,s,k,ka,kb,kc,kd;
  
      init();
      for (k=0;k<entree.length;k++) {
  	l=entree.charAt(k);
  	update(ascii.lastIndexOf(l));
      }
      finish();
      ka=kb=kc=kd=0;
      for (i=0;i<4;i++) ka+=shl(digestBits[15-i], (i*8));
      for (i=4;i<8;i++) kb+=shl(digestBits[15-i], ((i-4)*8));
      for (i=8;i<12;i++) kc+=shl(digestBits[15-i], ((i-8)*8));
      for (i=12;i<16;i++) kd+=shl(digestBits[15-i], ((i-12)*8));
      s=hexa(kd)+hexa(kc)+hexa(kb)+hexa(ka);
      return s;
  }
  
  shouldBe("MD5('kde')", "'186cf28b76f2264e9fea8fcf91cb4f5d'");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/md5-2.js
  
  Index: md5-2.js
  ===================================================================
  shouldBe("hexMD5('kde')", "'186cf28b76f2264e9fea8fcf91cb4f5d'");
  
  /*
   * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
   * Digest Algorithm, as defined in RFC 1321.
   * Version 1.1 Copyright (C) Paul Johnston 1999 - 2002.
   * Code also contributed by Greg Holt
   * See http://pajhome.org.uk/site/legal.html for details.
   */
  
  /*
   * Add integers, wrapping at 2^32. This uses 16-bit operations internally
   * to work around bugs in some JS interpreters.
   */
  function safe_add(x, y)
  {
    var lsw = (x & 0xFFFF) + (y & 0xFFFF)
    var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
    return (msw << 16) | (lsw & 0xFFFF)
  }
  
  /*
   * Bitwise rotate a 32-bit number to the left.
   */
  function rol(num, cnt)
  {
    return (num << cnt) | (num >>> (32 - cnt))
  }
  
  /*
   * These functions implement the four basic operations the algorithm uses.
   */
  function cmn(q, a, b, x, s, t)
  {
    return safe_add(rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
  }
  function ff(a, b, c, d, x, s, t)
  {
    return cmn((b & c) | ((~b) & d), a, b, x, s, t)
  }
  function gg(a, b, c, d, x, s, t)
  {
    return cmn((b & d) | (c & (~d)), a, b, x, s, t)
  }
  function hh(a, b, c, d, x, s, t)
  {
    return cmn(b ^ c ^ d, a, b, x, s, t)
  }
  function ii(a, b, c, d, x, s, t)
  {
    return cmn(c ^ (b | (~d)), a, b, x, s, t)
  }
  
  /*
   * Calculate the MD5 of an array of little-endian words, producing an array
   * of little-endian words.
   */
  function coreMD5(x)
  {
    var a =  1732584193
    var b = -271733879
    var c = -1732584194
    var d =  271733878
  
    for(i = 0; i < x.length; i += 16)
    {
      var olda = a
      var oldb = b
      var oldc = c
      var oldd = d
  
      a = ff(a, b, c, d, x[i+ 0], 7 , -680876936)
      d = ff(d, a, b, c, x[i+ 1], 12, -389564586)
      c = ff(c, d, a, b, x[i+ 2], 17,  606105819)
      b = ff(b, c, d, a, x[i+ 3], 22, -1044525330)
      a = ff(a, b, c, d, x[i+ 4], 7 , -176418897)
      d = ff(d, a, b, c, x[i+ 5], 12,  1200080426)
      c = ff(c, d, a, b, x[i+ 6], 17, -1473231341)
      b = ff(b, c, d, a, x[i+ 7], 22, -45705983)
      a = ff(a, b, c, d, x[i+ 8], 7 ,  1770035416)
      d = ff(d, a, b, c, x[i+ 9], 12, -1958414417)
      c = ff(c, d, a, b, x[i+10], 17, -42063)
      b = ff(b, c, d, a, x[i+11], 22, -1990404162)
      a = ff(a, b, c, d, x[i+12], 7 ,  1804603682)
      d = ff(d, a, b, c, x[i+13], 12, -40341101)
      c = ff(c, d, a, b, x[i+14], 17, -1502002290)
      b = ff(b, c, d, a, x[i+15], 22,  1236535329)
  
      a = gg(a, b, c, d, x[i+ 1], 5 , -165796510)
      d = gg(d, a, b, c, x[i+ 6], 9 , -1069501632)
      c = gg(c, d, a, b, x[i+11], 14,  643717713)
      b = gg(b, c, d, a, x[i+ 0], 20, -373897302)
      a = gg(a, b, c, d, x[i+ 5], 5 , -701558691)
      d = gg(d, a, b, c, x[i+10], 9 ,  38016083)
      c = gg(c, d, a, b, x[i+15], 14, -660478335)
      b = gg(b, c, d, a, x[i+ 4], 20, -405537848)
      a = gg(a, b, c, d, x[i+ 9], 5 ,  568446438)
      d = gg(d, a, b, c, x[i+14], 9 , -1019803690)
      c = gg(c, d, a, b, x[i+ 3], 14, -187363961)
      b = gg(b, c, d, a, x[i+ 8], 20,  1163531501)
      a = gg(a, b, c, d, x[i+13], 5 , -1444681467)
      d = gg(d, a, b, c, x[i+ 2], 9 , -51403784)
      c = gg(c, d, a, b, x[i+ 7], 14,  1735328473)
      b = gg(b, c, d, a, x[i+12], 20, -1926607734)
  
      a = hh(a, b, c, d, x[i+ 5], 4 , -378558)
      d = hh(d, a, b, c, x[i+ 8], 11, -2022574463)
      c = hh(c, d, a, b, x[i+11], 16,  1839030562)
      b = hh(b, c, d, a, x[i+14], 23, -35309556)
      a = hh(a, b, c, d, x[i+ 1], 4 , -1530992060)
      d = hh(d, a, b, c, x[i+ 4], 11,  1272893353)
      c = hh(c, d, a, b, x[i+ 7], 16, -155497632)
      b = hh(b, c, d, a, x[i+10], 23, -1094730640)
      a = hh(a, b, c, d, x[i+13], 4 ,  681279174)
      d = hh(d, a, b, c, x[i+ 0], 11, -358537222)
      c = hh(c, d, a, b, x[i+ 3], 16, -722521979)
      b = hh(b, c, d, a, x[i+ 6], 23,  76029189)
      a = hh(a, b, c, d, x[i+ 9], 4 , -640364487)
      d = hh(d, a, b, c, x[i+12], 11, -421815835)
      c = hh(c, d, a, b, x[i+15], 16,  530742520)
      b = hh(b, c, d, a, x[i+ 2], 23, -995338651)
  
      a = ii(a, b, c, d, x[i+ 0], 6 , -198630844)
      d = ii(d, a, b, c, x[i+ 7], 10,  1126891415)
      c = ii(c, d, a, b, x[i+14], 15, -1416354905)
      b = ii(b, c, d, a, x[i+ 5], 21, -57434055)
      a = ii(a, b, c, d, x[i+12], 6 ,  1700485571)
      d = ii(d, a, b, c, x[i+ 3], 10, -1894986606)
      c = ii(c, d, a, b, x[i+10], 15, -1051523)
      b = ii(b, c, d, a, x[i+ 1], 21, -2054922799)
      a = ii(a, b, c, d, x[i+ 8], 6 ,  1873313359)
      d = ii(d, a, b, c, x[i+15], 10, -30611744)
      c = ii(c, d, a, b, x[i+ 6], 15, -1560198380)
      b = ii(b, c, d, a, x[i+13], 21,  1309151649)
      a = ii(a, b, c, d, x[i+ 4], 6 , -145523070)
      d = ii(d, a, b, c, x[i+11], 10, -1120210379)
      c = ii(c, d, a, b, x[i+ 2], 15,  718787259)
      b = ii(b, c, d, a, x[i+ 9], 21, -343485551)
  
      a = safe_add(a, olda)
      b = safe_add(b, oldb)
      c = safe_add(c, oldc)
      d = safe_add(d, oldd)
    }
    return [a, b, c, d]
  }
  
  /*
   * Convert an array of little-endian words to a hex string.
   */
  function binl2hex(binarray)
  {
    var hex_tab = "0123456789abcdef"
    var str = ""
    for(var i = 0; i < binarray.length * 4; i++)
    {
      str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
             hex_tab.charAt((binarray[i>>2] >> ((i%4)*8)) & 0xF)
    }
    return str
  }
  
  /*
   * Convert an array of little-endian words to a base64 encoded string.
   */
  function binl2b64(binarray)
  {
    var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
    var str = ""
    for(var i = 0; i < binarray.length * 32; i += 6)
    {
      str += tab.charAt(((binarray[i>>5] << (i%32)) & 0x3F) |
                        ((binarray[i>>5+1] >> (32-i%32)) & 0x3F))
    }
    return str
  }
  
  /*
   * Convert an 8-bit character string to a sequence of 16-word blocks, stored
   * as an array, and append appropriate padding for MD4/5 calculation.
   * If any of the characters are >255, the high byte is silently ignored.
   */
  function str2binl(str)
  {
    var nblk = ((str.length + 8) >> 6) + 1 // number of 16-word blocks
    var blks = new Array(nblk * 16)
    for(var i = 0; i < nblk * 16; i++) blks[i] = 0
    for(var i = 0; i < str.length; i++)
      blks[i>>2] |= (str.charCodeAt(i) & 0xFF) << ((i%4) * 8)
    blks[i>>2] |= 0x80 << ((i%4) * 8)
    blks[nblk*16-2] = str.length * 8
    return blks
  }
  
  /*
   * Convert a wide-character string to a sequence of 16-word blocks, stored as
   * an array, and append appropriate padding for MD4/5 calculation.
   */
  function strw2binl(str)
  {
    var nblk = ((str.length + 4) >> 5) + 1 // number of 16-word blocks
    var blks = new Array(nblk * 16)
    for(var i = 0; i < nblk * 16; i++) blks[i] = 0
    for(var i = 0; i < str.length; i++)
      blks[i>>1] |= str.charCodeAt(i) << ((i%2) * 16)
    blks[i>>1] |= 0x80 << ((i%2) * 16)
    blks[nblk*16-2] = str.length * 16
    return blks
  }
  
  /*
   * External interface
   */
  function hexMD5 (str) { return binl2hex(coreMD5( str2binl(str))) }
  function hexMD5w(str) { return binl2hex(coreMD5(strw2binl(str))) }
  function b64MD5 (str) { return binl2b64(coreMD5( str2binl(str))) }
  function b64MD5w(str) { return binl2b64(coreMD5(strw2binl(str))) }
  /* Backward compatibility */
  function calcMD5(str) { return binl2hex(coreMD5( str2binl(str))) }
  
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/object_prototype.js
  
  Index: object_prototype.js
  ===================================================================
  // Object.prototype.hasOwnProperty
  
  function MyClass()
  {
    this.y = 2;
  }
  
  MyClass.prototype = { x : 1 };
  
  var sub = new MyClass();
  shouldBe("sub.x","1");
  shouldBe("sub.y","2");
  shouldBe("sub.hasOwnProperty('x')","false");
  shouldBe("sub.hasOwnProperty('y')","true");
  sub.x = 6;
  shouldBe("sub.x","6");
  shouldBe("sub.hasOwnProperty('x')","true");
  delete sub.y;
  shouldBe("sub.y","undefined");
  shouldBe("sub.hasOwnProperty('y')","false");
  
  
  
  // Object.prototype.isPrototypeOf
  
  function Class1() {}
  function Class2() {}
  function Class3() {}
  
  Class1.prototype = new Object();
  Class1.prototype.hasClass1 = true;
  Class2.prototype = new Class1();
  Class2.prototype.hasClass2 = true;
  Class3.prototype = new Class2();
  Class3.prototype.hasClass3 = true;
  
  var obj = new Class3();
  shouldBe("obj.hasClass1","true");
  shouldBe("obj.hasClass2","true");
  shouldBe("obj.hasClass3","true");
  
  shouldBe("Class1.prototype.isPrototypeOf(obj)","true");
  shouldBe("Class2.prototype.isPrototypeOf(obj)","true");
  shouldBe("Class3.prototype.isPrototypeOf(obj)","true");
  shouldBe("obj.isPrototypeOf(Class1.prototype)","false");
  shouldBe("obj.isPrototypeOf(Class2.prototype)","false");
  shouldBe("obj.isPrototypeOf(Class3.prototype)","false");
  
  shouldBe("Class1.prototype.isPrototypeOf(Class2.prototype)","true");
  shouldBe("Class2.prototype.isPrototypeOf(Class1.prototype)","false");
  shouldBe("Class1.prototype.isPrototypeOf(Class3.prototype)","true");
  shouldBe("Class3.prototype.isPrototypeOf(Class1.prototype)","false");
  shouldBe("Class2.prototype.isPrototypeOf(Class3.prototype)","true");
  shouldBe("Class3.prototype.isPrototypeOf(Class2.prototype)","false");
  
  shouldBeUndefined("Class1.prototype.prototype");
  
  function checkEnumerable(obj,property)
  {
    for (var propname in obj) {
      if (propname == property)
        return true;
    }
    return false;
  }
  
  function myfunc(a,b,c)
  {
  }
  myfunc.someproperty = 4;
  
  shouldBe("myfunc.length","3");
  shouldBe("myfunc.someproperty","4");
  shouldBe("myfunc.propertyIsEnumerable('length')","false");
  shouldBe("myfunc.propertyIsEnumerable('someproperty')","true");
  shouldBe("checkEnumerable(myfunc,'length')","false");
  shouldBe("checkEnumerable(myfunc,'someproperty')","true");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/object_prototype_tostring.js
  
  Index: object_prototype_tostring.js
  ===================================================================
  var _array = new Array(1,2,3);
  _array.toString = Object.prototype.toString;
  shouldBe("_array.toString()","\"[object Array]\"");
  var _string = new String("test");
  _string.toString = Object.prototype.toString;
  shouldBe("_string.toString()","\"[object String]\"");
  var _boolean = new Boolean(true);
  _boolean.toString = Object.prototype.toString;
  shouldBe("_boolean.toString()","\"[object Boolean]\"");
  var _number = new Number(4);
  _number.toString = Object.prototype.toString;
  shouldBe("_number.toString()","\"[object Number]\"");
  var _object = new Object();
  _object.toString = Object.prototype.toString;
  shouldBe("_object.toString()","\"[object Object]\"");
  var _date = new Date();
  _date.toString = Object.prototype.toString;
  shouldBe("_date.toString()","\"[object Date]\"");
  var _regexp = new RegExp();
  _regexp.toString = Object.prototype.toString;
  shouldBe("_regexp.toString()","\"[object RegExp]\"");
  var _error = new Error();
  _error.toString = Object.prototype.toString;
  shouldBe("_error.toString()","\"[object Error]\"");
  var _function = new Function();
  _function.toString = Object.prototype.toString;
  shouldBe("_function.toString()","\"[object Function]\"");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/operators.js
  
  Index: operators.js
  ===================================================================
  // operator !
  shouldBeTrue("!undefined");
  shouldBeTrue("!null");
  shouldBeTrue("!!true");
  shouldBeTrue("!false");
  shouldBeTrue("!!1");
  shouldBeTrue("!0");
  shouldBeTrue("!!'a'");
  shouldBeTrue("!''");
  
  // increment
  shouldBe("var i = 0; ++i;", "1");
  shouldBe("var i = 0; ++i; i", "1");
  shouldBe("var i = 0; i++;", "0");
  shouldBe("var i = 0; i++; i", "1");
  shouldBe("var i = true; i++", "1");
  shouldBe("var i = true; i++; i", "2");
  
  // decrement
  shouldBe("var i = 0; --i;", "-1");
  shouldBe("var i = 0; --i; i", "-1");
  shouldBe("var i = 0; i--;", "0");
  shouldBe("var i = 0; i--; i", "-1");
  shouldBe("var i = true; i--", "1");
  shouldBe("var i = true; i--; i", "0");
  
  // bitwise operators
  shouldBe("~0", "-1");
  shouldBe("~1", "-2");
  shouldBe("~Math.pow(2, 33)", "-1"); // 32 bit overflow
  shouldBe("~(Math.pow(2, 32) + Math.pow(2, 31) + 2)",
           "2147483645"); // a signedness issue
  shouldBe("~null", "-1");
  shouldBe("3 & 1", "1");
  shouldBe("2 | true", "3");
  shouldBe("'3' ^ 1", "2");
  shouldBe("3^4&5", "7");
  shouldBe("2|4^5", "3");
  
  shouldBe("1 << 2", "4");
  shouldBe("8 >> 1", "4");
  shouldBe("1 >> 2", "0");
  shouldBe("-8 >> 24", "-1");
  shouldBe("8 >>> 2", "2");
  shouldBe("-8 >>> 24", "255");
  shouldBe("(-2200000000 >> 1) << 1", "2094967296");
  
  // addition
  shouldBe("1+2", "3");
  shouldBe("'a'+'b'", "'ab'");
  shouldBe("'a'+2", "'a2'");
  shouldBe("'2'+'-1'", "'2-1'");
  shouldBe("true+'a'", "'truea'");
  shouldBe("'a' + null", "'anull'");
  shouldBe("true+1", "2");
  shouldBe("false+null", "0");
  
  // substraction
  shouldBe("1-3", "-2");
  shouldBe("isNaN('a'-3)", "true");
  shouldBe("'3'-'-1'", "4");
  shouldBe("'4'-2", "2");
  shouldBe("true-false", "1");
  shouldBe("false-1", "-1");
  shouldBe("null-true", "-1");
  
  // multiplication
  shouldBe("2 * 3", "6");
  shouldBe("true * 3", "3");
  shouldBe("2 * '3'", "6");
  
  // division
  shouldBe("6 / 4", "1.5");
  //shouldBe("true / false", "Inf");
  shouldBe("'6' / '2'", "3");
  shouldBeTrue("isNaN('x' / 1)");
  shouldBeTrue("isNaN(1 / NaN)");
  shouldBeTrue("isNaN(Infinity / Infinity)");
  shouldBe("Infinity / 0", "Infinity");
  shouldBe("-Infinity / 0", "-Infinity");
  shouldBe("Infinity / 1", "Infinity");
  shouldBe("-Infinity / 1", "-Infinity");
  shouldBeTrue("1 / Infinity == +0");
  shouldBeTrue("1 / -Infinity == -0"); // how to check ?
  shouldBeTrue("isNaN(0/0)");
  shouldBeTrue("0 / 1 === 0");
  shouldBeTrue("0 / -1 === -0"); // how to check ?
  shouldBe("1 / 0", "Infinity");
  shouldBe("-1 / 0", "-Infinity");
  
  // modulo
  shouldBe("6 % 4", "2");
  shouldBe("'-6' % 4", "-2");
  
  shouldBe("2==2", "true");
  shouldBe("1==2", "false");
  
  shouldBe("1<2", "true");
  shouldBe("1<=2", "true");
  shouldBe("2<1", "false");
  shouldBe("2<=1", "false");
  
  shouldBe("2>1", "true");
  shouldBe("2>=1", "true");
  shouldBe("1>=2", "false");
  shouldBe("1>2", "false");
  
  shouldBe("'abc' == 'abc'", "true");
  shouldBe("'abc' != 'xyz'", "true");
  shouldBeTrue("true == true");
  shouldBeTrue("false == false");
  shouldBeTrue("true != false");
  shouldBeTrue("'a' != null");
  shouldBeTrue("'a' != undefined");
  shouldBeTrue("null == null");
  shouldBeTrue("null == undefined");
  shouldBeTrue("undefined == undefined");
  shouldBeTrue("NaN != NaN");
  shouldBeTrue("true != undefined");
  shouldBeTrue("true != null");
  shouldBeTrue("false != undefined");
  shouldBeTrue("false != null");
  shouldBeTrue("'0' == 0");
  shouldBeTrue("1 == '1'");
  shouldBeTrue("NaN != NaN");
  shouldBeTrue("NaN != 0");
  shouldBeTrue("NaN != undefined");
  shouldBeTrue("true == 1");
  shouldBeTrue("true != 2");
  shouldBeTrue("1 == true");
  shouldBeTrue("false == 0");
  shouldBeTrue("0 == false");
  
  shouldBe("'abc' < 'abx'", "true");
  shouldBe("'abc' < 'abcd'", "true");
  shouldBe("'abc' < 'abc'", "false");
  shouldBe("'abcd' < 'abcd'", "false");
  shouldBe("'abx' < 'abc'", "false");
  
  shouldBe("'abc' <= 'abc'", "true");
  shouldBe("'abc' <= 'abx'", "true");
  shouldBe("'abx' <= 'abc'", "false");
  shouldBe("'abcd' <= 'abc'", "false");
  shouldBe("'abc' <= 'abcd'", "true");
  
  shouldBe("'abc' > 'abx'", "false");
  shouldBe("'abc' > 'abc'", "false");
  shouldBe("'abcd' > 'abc'", "true");
  shouldBe("'abx' > 'abc'", "true");
  shouldBe("'abc' > 'abcd'", "false");
  
  shouldBe("'abc' >= 'abc'", "true");
  shouldBe("'abcd' >= 'abc'", "true");
  shouldBe("'abx' >= 'abc'", "true");
  shouldBe("'abc' >= 'abx'", "false");
  shouldBe("'abc' >= 'abx'", "false");
  shouldBe("'abc' >= 'abcd'", "false");
  
  // mixed strings and numbers - results validated in NS+moz+IE5
  shouldBeFalse("'abc' <= 0"); // #35246
  shouldBeTrue("'' <= 0");
  shouldBeTrue("' ' <= 0");
  shouldBeTrue("null <= 0");
  shouldBeFalse("0 <= 'abc'");
  shouldBeTrue("0 <= ''");
  shouldBeTrue("0 <= null");
  shouldBeTrue("null <= null");
  shouldBeTrue("6 < '52'");
  shouldBeTrue("6 < '72'"); // #36087
  shouldBe("NaN < 0", "false");
  shouldBe("NaN <= 0", "false");
  shouldBe("NaN > 0", "false");
  shouldBe("NaN >= 0", "false");
  
  // strict comparison ===
  shouldBe("0 === false", "false");
  //shouldBe("undefined === undefined", "true"); // aborts in IE5 (undefined is not defined ;)
  shouldBe("null === null", "true");
  shouldBe("NaN === NaN", "false");
  shouldBe("0.0 === 0", "true");
  shouldBe("'abc' === 'abc'", "true");
  shouldBe("'a' === 'x'", "false");
  shouldBe("true === true", "true");
  shouldBe("false === false", "true");
  shouldBe("true === false", "false");
  shouldBe("Math === Math", "true");
  shouldBe("Math === Boolean", "false");
  shouldBe("Infinity === Infinity", "true");
  
  // !==
  shouldBe("0 !== 0", "false");
  shouldBe("0 !== 1", "true");
  
  shouldBe("typeof undefined", "'undefined'");
  shouldBe("typeof null", "'object'");
  shouldBe("typeof true", "'boolean'");
  shouldBe("typeof false", "'boolean'");
  shouldBe("typeof 1", "'number'");
  shouldBe("typeof 'a'", "'string'");
  shouldBe("typeof shouldBe", "'function'");
  shouldBe("typeof Number.NaN", "'number'");
  
  shouldBe("11 && 22", "22");
  shouldBe("null && true", "null");
  shouldBe("11 || 22", "11");
  shouldBe("null || 'a'", "'a'");
  
  shouldBeUndefined("void 1");
  
  shouldBeTrue("1 in [1, 2]");
  shouldBeFalse("3 in [1, 2]");
  shouldBeTrue("'a' in { a:1, b:2 }");
  
  // instanceof
  // Those 2 lines don't parse in Netscape...
  shouldBe("(new Boolean()) instanceof Boolean", "true");
  shouldBe("(new Boolean()) instanceof Number", "false");
  
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/parse.js
  
  Index: parse.js
  ===================================================================
  function test() { return;}
  function test() { while(0) break; }
  function test() { while(0) continue; }
  
  function test() { return lab;}
  function test() { while(0) break lab; }
  function test() { while(0) continue lab; }
  
  function test() { return }
  function test() { while(0) break }
  function test() { while(0) continue }
  
  function test() { return 0 }
  function test() { while(0) break lab }
  function test() { while(0) continue lab }
  
  lab:
  
  a = 1
  b = 123 // comment
  c = 2
  c = 3 /* comment */
  d = 4
  
  // non-ascii identifier letters (not working copy of Mozilla?!)
  var ident = "";
  ident += "\u00E9"; // LATIN SMALL LETTER E WITH ACUTE
  ident += "\u0100"; // LATIN CAPITAL LETTER A WITH MACRON
  ident += "\u02af"; // LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
  ident += "\u0388"; // GREEK CAPITAL LETTER EPSILON WITH TONOS
  ident += "\u18A8"; // MONGOLIAN LETTER MANCHU ALI GALI BHA
  var code = "var " + ident + " = 11; " + ident + ";";
  var res = eval(code);
  shouldBe("res", "11");
  
  // invalid identifier letter
  var caught = false;
  try {
    eval("var f\xf7;"); // 
  } catch (e) {
    caught = true;
  }
  shouldBeTrue("caught");
  
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/prototype_length.js
  
  Index: prototype_length.js
  ===================================================================
  shouldBe("Object.prototype.length","undefined");
  shouldBe("Function.prototype.length","0");
  shouldBe("Array.prototype.length","0");
  shouldBe("String.prototype.length","0");
  shouldBe("Boolean.prototype.length","undefined");
  shouldBe("Number.prototype.length","undefined");
  shouldBe("Date.prototype.length","undefined");
  shouldBe("RegExp.prototype.length","undefined");
  shouldBe("Error.prototype.length","undefined");
  
  // check !ReadOnly
  Array.prototype.length = 6;
  shouldBe("Array.prototype.length","6");
  // check ReadOnly
  Function.prototype.length = 7;
  shouldBe("Function.prototype.length","0");
  String.prototype.length = 8;
  shouldBe("String.prototype.length","0");
  
  // check DontDelete
  shouldBe("delete Array.prototype.length","false");
  shouldBe("delete Function.prototype.length","false");
  shouldBe("delete String.prototype.length","false");
  
  // check DontEnum
  var foundArrayPrototypeLength = false;
  for (i in Array.prototype) { if (i == "length") foundArrayPrototypeLength = true; }
  shouldBe("foundArrayPrototypeLength","false");
  
  var foundFunctionPrototypeLength = false;
  for (i in Function.prototype) { if (i == "length") foundFunctionPrototypeLength = true; }
  shouldBe("foundFunctionPrototypeLength","false");
  
  var foundStringPrototypeLength = false;
  for (i in String.prototype) { if (i == "length") foundStringPrototypeLength = true; }
  shouldBe("foundStringPrototypeLength","false");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/prototype_proto.js
  
  Index: prototype_proto.js
  ===================================================================
  shouldBe("Object.prototype.__proto__ == Object.prototype","false");
  shouldBe("Function.prototype.__proto__","Object.prototype");
  shouldBe("Array.prototype.__proto__","Object.prototype");
  shouldBe("String.prototype.__proto__","Object.prototype");
  shouldBe("Boolean.prototype.__proto__","Object.prototype");
  shouldBe("Number.prototype.__proto__","Object.prototype");
  shouldBe("Date.prototype.__proto__","Object.prototype");
  shouldBe("RegExp.prototype.__proto__","Object.prototype");
  shouldBe("Error.prototype.__proto__","Object.prototype");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/scope.js
  
  Index: scope.js
  ===================================================================
  var b = new Boolean();
  b.x = 11;
  
  with (b) {
    f = function(a) { return a*x; } // remember scope chain
  }
  
  shouldBe("f(2)", "22");
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/shell.js
  
  Index: shell.js
  ===================================================================
  // Utility functions for JS test suite
  // (c) 2001 Harri Porten <porten at kde.org>
  
  function testPassed(msg)
  {
    debug("PASS. " + msg);
  }
  
  function testFailed(msg)
  {
    debug("FAIL. " + msg);
    regtest.reportResult(false, msg);  
  }
  
  function shouldBe(_a, _b)
  {
    if (typeof _a != "string" || typeof _b != "string")
      debug("WARN: shouldBe() expects string arguments");
    var _av = eval(_a);
    var _bv = eval(_b);
  
    if (_av === _bv)
      testPassed(_a + " is " + _b);
    else
      testFailed(_a + " should be " + _bv + ". Was " + _av);
  }
  
  function shouldBeTrue(_a) { shouldBe(_a, "true"); }
  
  function shouldBeFalse(_a) { shouldBe(_a, "false"); }
  
  function shouldBeUndefined(_a)
  {
    var _av = eval(_a);
    if (typeof _av == "undefined")
      testPassed(_a + " is undefined.");
    else
      testFailed(_a + " should be undefined. Was " + _av);
  }
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/statements.js
  
  Index: statements.js
  ===================================================================
  function testSwitch(v) {
    var result = "";
    switch (v) {
       case 0:
          result += 'a';
       case 1:
  	result += 'b';
       case 1:
          result += 'c';
       case 2:
          result += 'd';
          break;
    }
    return result;
  }
  
  shouldBe("testSwitch(0)", "'abcd'");
  shouldBe("testSwitch(1)", "'bcd'"); // IE agrees, NS disagrees
  shouldBe("testSwitch(2)", "'d'");
  shouldBe("testSwitch(false)", "''");
  
  function testSwitch2(v) {
    var result = "";
    switch (v) {
       case 1:
          result += 'a';
          break;
       case 2:
  	result += 'b';
          break;
       default:
          result += 'c';
       case 3:
          result += 'd';
          break;
    }
    return result;
  }
  
  shouldBe("testSwitch2(1)", "'a'");
  shouldBe("testSwitch2(2)", "'b'");
  shouldBe("testSwitch2(3)", "'d'");
  shouldBe("testSwitch2(-1)", "'cd'");
  shouldBe("testSwitch2('x')", "'cd'");
  
  function testSwitch3(v) {
    var result = "";
    switch (v) {
       default:
          result += 'c';
       case 3:
          result += 'd';
       case 4:
          result += 'e';
          break;
    }
    return result;
  };
  
  shouldBe("testSwitch3(0)", "'cde'");
  shouldBe("testSwitch3(3)", "'de'");
  shouldBe("testSwitch3(4)", "'e'");
  
  function testSwitch4(v) {
    var result = "";
    switch (v) {
       case 0:
          result += 'a';
          result += 'b';
          break;
    }
    return result;
  };
  
  shouldBe("testSwitch4(0)", "'ab'");
  
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/string-1-n.js
  
  Index: string-1-n.js
  ===================================================================
  "unterminated string
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/string-2-n.js
  
  Index: string-2-n.js
  ===================================================================
  "broken
  string"
  successfullyParsed = true
  
  
  
  1.1                  LayoutTests/fast/js/kde/resources/var_decl_init.js
  
  Index: var_decl_init.js
  ===================================================================
  var myvar = 1;
  
  function varInFunction() {
    return (myvar == undefined);
    var myvar = 2;
  }
  
  function varInVarList() {
    return (myvar == undefined);
    var a = 1, b = 0, myvar = 2;
  }
  
  function varListOrder() {
    var tmp = 0;
    var i = ++tmp, j = ++tmp;
    return j == 2;
  }
  
  function varInBlock() {
    return (myvar == undefined);
    {
      var myvar = 2;
    }
  }
  
  function varInIf() {
    return (myvar == undefined);
    if (false)
      var myvar = 2;
  }
  
  function varInElse() {
    return (myvar == undefined);
    if (true) {
    }
    else
      var myvar = 2;
  }
  
  function varInDoWhile() {
    return (myvar == undefined);
    do
      var myvar = 2;
    while (false);
  }
  
  function varInWhile() {
    return (myvar == undefined);
    while (false)
      var myvar = 2;
  }
  
  function varInFor() {
    return (myvar == undefined);
    var i;
    for (i = 0; i < 0; i++)
      var myvar = 2;
  }
  
  function varInForInitExpr() {
    return (myvar == undefined);
    for (var myvar = 2; i < 2; i++) {
    }
  }
  
  function varInForIn() {
    return (myvar == undefined);
    var o = new Object();
    var i;
    for (i in o)
      var myvar = 2;
  }
  
  function varInWith() {
    return (myvar == undefined);
    with (String)
      var myvar = 2;
  }
  
  function varInCase() {
    return (myvar == undefined);
    switch (1) {
      case 0:
        var myvar = 2;
      case 1:
    }
  }
  
  function varInLabel() {
    return (myvar == undefined);
  label1:
    var myvar = 2;
  }
  
  function varInCatch() {
    return (myvar == undefined);
    try {
    }
    catch (e) {
      var myvar = 2;
    }
  }
  
  function varInFinally() {
    return (myvar == undefined);
    try {
    }
    finally {
      var myvar = 2;
    }
  }
  
  function varInTry() {
    return (myvar == undefined);
    try {
      var myvar = 2;
    }
    catch (e) {
    }
    finally {
    }
  }
  
  function varInSubFunction() {
    return (myvar == 1);
    function subfunction() {
      var myvar = 2;
    }
  }
  
  if (!varGlobal)
    var varGlobal = 1;
  
  shouldBe("varInFunction()","true");
  shouldBe("varInVarList()","true");
  shouldBe("varListOrder()","true");
  shouldBe("varInBlock()","true");
  shouldBe("varInIf()","true");
  shouldBe("varInElse()","true");
  shouldBe("varInDoWhile()","true");
  shouldBe("varInWhile()","true");
  shouldBe("varInFor()","true");
  shouldBe("varInForIn()","true");
  shouldBe("varInWith()","true");
  shouldBe("varInCase()","true");
  shouldBe("varInLabel()","true");
  shouldBe("varInCatch()","true");
  shouldBe("varInFinally()","true");
  shouldBe("varInTry()","true");
  shouldBe("varInForInitExpr()","true");
  shouldBe("varInSubFunction()","true");
  shouldBe("varGlobal", "1");
  
  var overrideVar = 1;
  var overrideVar;
  shouldBe("overrideVar", "1");
  
  var overrideVar2 = 1;
  var overrideVar2 = 2;
  shouldBe("overrideVar2", "2");
  successfullyParsed = true
  
  
  



More information about the webkit-changes mailing list