[Swfdec-commits] 4 commits - configure.ac test/gnash test/Makefile.am

Pekka Lampila medar at kemper.freedesktop.org
Thu Jul 3 16:41:05 PDT 2008


 configure.ac                                                     |    3 
 test/Makefile.am                                                 |    2 
 test/gnash/COPYING                                               |  676 ++++
 test/gnash/Makefile.am                                           |    5 
 test/gnash/README                                                |    5 
 test/gnash/actionscript.all/AsBroadcaster-5.swf                  |binary
 test/gnash/actionscript.all/AsBroadcaster-5.swf.trace            |    5 
 test/gnash/actionscript.all/AsBroadcaster-6.swf                  |binary
 test/gnash/actionscript.all/AsBroadcaster-6.swf.trace            |  109 
 test/gnash/actionscript.all/AsBroadcaster-7.swf                  |binary
 test/gnash/actionscript.all/AsBroadcaster-7.swf.trace            |  109 
 test/gnash/actionscript.all/AsBroadcaster-8.swf                  |binary
 test/gnash/actionscript.all/AsBroadcaster-8.swf.trace            |  109 
 test/gnash/actionscript.all/AsBroadcaster.as                     |  308 ++
 test/gnash/actionscript.all/AsBroadcaster.as.original            |  309 ++
 test/gnash/actionscript.all/ContextMenu-5.swf                    |binary
 test/gnash/actionscript.all/ContextMenu-5.swf.trace              |    2 
 test/gnash/actionscript.all/ContextMenu-6.swf                    |binary
 test/gnash/actionscript.all/ContextMenu-6.swf.trace              |    2 
 test/gnash/actionscript.all/ContextMenu-7.swf                    |binary
 test/gnash/actionscript.all/ContextMenu-7.swf.trace              |   19 
 test/gnash/actionscript.all/ContextMenu-8.swf                    |binary
 test/gnash/actionscript.all/ContextMenu-8.swf.trace              |   19 
 test/gnash/actionscript.all/ContextMenu.as                       |   81 
 test/gnash/actionscript.all/Error-5.swf                          |binary
 test/gnash/actionscript.all/Error-5.swf.trace                    |   21 
 test/gnash/actionscript.all/Error-6.swf                          |binary
 test/gnash/actionscript.all/Error-6.swf.trace                    |   24 
 test/gnash/actionscript.all/Error-7.swf                          |binary
 test/gnash/actionscript.all/Error-7.swf.trace                    |   24 
 test/gnash/actionscript.all/Error-8.swf                          |binary
 test/gnash/actionscript.all/Error-8.swf.trace                    |   24 
 test/gnash/actionscript.all/Error.as                             |   79 
 test/gnash/actionscript.all/Key-5.swf                            |binary
 test/gnash/actionscript.all/Key-5.swf.trace                      |   46 
 test/gnash/actionscript.all/Key-6.swf                            |binary
 test/gnash/actionscript.all/Key-6.swf.trace                      |   50 
 test/gnash/actionscript.all/Key-7.swf                            |binary
 test/gnash/actionscript.all/Key-7.swf.trace                      |   50 
 test/gnash/actionscript.all/Key-8.swf                            |binary
 test/gnash/actionscript.all/Key-8.swf.trace                      |   50 
 test/gnash/actionscript.all/Key.as                               |   99 
 test/gnash/actionscript.all/Makefile.am                          |  167 +
 test/gnash/actionscript.all/Mouse-5.swf                          |binary
 test/gnash/actionscript.all/Mouse-5.swf.trace                    |    8 
 test/gnash/actionscript.all/Mouse-6.swf                          |binary
 test/gnash/actionscript.all/Mouse-6.swf.trace                    |   16 
 test/gnash/actionscript.all/Mouse-7.swf                          |binary
 test/gnash/actionscript.all/Mouse-7.swf.trace                    |   16 
 test/gnash/actionscript.all/Mouse-8.swf                          |binary
 test/gnash/actionscript.all/Mouse-8.swf.trace                    |   16 
 test/gnash/actionscript.all/Mouse.as                             |   62 
 test/gnash/actionscript.all/Point-5.swf                          |binary
 test/gnash/actionscript.all/Point-5.swf.trace                    |    2 
 test/gnash/actionscript.all/Point-6.swf                          |binary
 test/gnash/actionscript.all/Point-6.swf.trace                    |    2 
 test/gnash/actionscript.all/Point-7.swf                          |binary
 test/gnash/actionscript.all/Point-7.swf.trace                    |    2 
 test/gnash/actionscript.all/Point-8.swf                          |binary
 test/gnash/actionscript.all/Point-8.swf.trace                    |  187 +
 test/gnash/actionscript.all/Point.as                             |  513 +++
 test/gnash/actionscript.all/README                               |   18 
 test/gnash/actionscript.all/REMOVED                              |    7 
 test/gnash/actionscript.all/Random-5.swf                         |binary
 test/gnash/actionscript.all/Random-5.swf.trace                   |   24 
 test/gnash/actionscript.all/Random-6.swf                         |binary
 test/gnash/actionscript.all/Random-6.swf.trace                   |   24 
 test/gnash/actionscript.all/Random-7.swf                         |binary
 test/gnash/actionscript.all/Random-7.swf.trace                   |   24 
 test/gnash/actionscript.all/Random-8.swf                         |binary
 test/gnash/actionscript.all/Random-8.swf.trace                   |   24 
 test/gnash/actionscript.all/Random.as                            |  137 
 test/gnash/actionscript.all/Random.as.original                   |  151 +
 test/gnash/actionscript.all/Rectangle-5.swf                      |binary
 test/gnash/actionscript.all/Rectangle-5.swf.trace                |    2 
 test/gnash/actionscript.all/Rectangle-6.swf                      |binary
 test/gnash/actionscript.all/Rectangle-6.swf.trace                |    2 
 test/gnash/actionscript.all/Rectangle-7.swf                      |binary
 test/gnash/actionscript.all/Rectangle-7.swf.trace                |    2 
 test/gnash/actionscript.all/Rectangle-8.swf                      |binary
 test/gnash/actionscript.all/Rectangle-8.swf.trace                |   97 
 test/gnash/actionscript.all/Rectangle.as                         |  281 +
 test/gnash/actionscript.all/Selection-5.swf                      |binary
 test/gnash/actionscript.all/Selection-5.swf.trace                |    9 
 test/gnash/actionscript.all/Selection-6.swf                      |binary
 test/gnash/actionscript.all/Selection-6.swf.trace                |   15 
 test/gnash/actionscript.all/Selection-7.swf                      |binary
 test/gnash/actionscript.all/Selection-7.swf.trace                |   15 
 test/gnash/actionscript.all/Selection-8.swf                      |binary
 test/gnash/actionscript.all/Selection-8.swf.trace                |   15 
 test/gnash/actionscript.all/Selection.as                         |   69 
 test/gnash/actionscript.all/TextFormat-5.swf                     |binary
 test/gnash/actionscript.all/TextFormat-5.swf.trace               |   64 
 test/gnash/actionscript.all/TextFormat-6.swf                     |binary
 test/gnash/actionscript.all/TextFormat-6.swf.trace               |   64 
 test/gnash/actionscript.all/TextFormat-7.swf                     |binary
 test/gnash/actionscript.all/TextFormat-7.swf.trace               |   64 
 test/gnash/actionscript.all/TextFormat-8.swf                     |binary
 test/gnash/actionscript.all/TextFormat-8.swf.trace               |   64 
 test/gnash/actionscript.all/TextFormat.as                        |  107 
 test/gnash/actionscript.all/TextSnapshot-5.swf                   |binary
 test/gnash/actionscript.all/TextSnapshot-5.swf.trace             |    1 
 test/gnash/actionscript.all/TextSnapshot-6.swf                   |binary
 test/gnash/actionscript.all/TextSnapshot-6.swf.trace             |   11 
 test/gnash/actionscript.all/TextSnapshot-7.swf                   |binary
 test/gnash/actionscript.all/TextSnapshot-7.swf.trace             |   11 
 test/gnash/actionscript.all/TextSnapshot-8.swf                   |binary
 test/gnash/actionscript.all/TextSnapshot-8.swf.trace             |   11 
 test/gnash/actionscript.all/TextSnapshot.as                      |   61 
 test/gnash/actionscript.all/Try-5.swf                            |binary
 test/gnash/actionscript.all/Try-5.swf.trace                      |   12 
 test/gnash/actionscript.all/Try-6.swf                            |binary
 test/gnash/actionscript.all/Try-6.swf.trace                      |   12 
 test/gnash/actionscript.all/Try-7.swf                            |binary
 test/gnash/actionscript.all/Try-7.swf.trace                      |   12 
 test/gnash/actionscript.all/Try-8.swf                            |binary
 test/gnash/actionscript.all/Try-8.swf.trace                      |   12 
 test/gnash/actionscript.all/Try.as                               |  188 +
 test/gnash/actionscript.all/UPDATED                              |    1 
 test/gnash/actionscript.all/Video-5.swf                          |binary
 test/gnash/actionscript.all/Video-5.swf.trace                    |    2 
 test/gnash/actionscript.all/Video-6.swf                          |binary
 test/gnash/actionscript.all/Video-6.swf.trace                    |   22 
 test/gnash/actionscript.all/Video-7.swf                          |binary
 test/gnash/actionscript.all/Video-7.swf.trace                    |   22 
 test/gnash/actionscript.all/Video-8.swf                          |binary
 test/gnash/actionscript.all/Video-8.swf.trace                    |   22 
 test/gnash/actionscript.all/Video.as                             |   64 
 test/gnash/actionscript.all/XMLNode-5.swf                        |binary
 test/gnash/actionscript.all/XMLNode-5.swf.trace                  |   31 
 test/gnash/actionscript.all/XMLNode-6.swf                        |binary
 test/gnash/actionscript.all/XMLNode-6.swf.trace                  |   31 
 test/gnash/actionscript.all/XMLNode-7.swf                        |binary
 test/gnash/actionscript.all/XMLNode-7.swf.trace                  |   31 
 test/gnash/actionscript.all/XMLNode-8.swf                        |binary
 test/gnash/actionscript.all/XMLNode-8.swf.trace                  |   31 
 test/gnash/actionscript.all/XMLNode.as                           |  113 
 test/gnash/actionscript.all/check.as                             |   89 
 test/gnash/actionscript.all/check.as.original                    |  125 
 test/gnash/actionscript.all/default.stas                         |   54 
 test/gnash/actionscript.all/default.sts                          |binary
 test/gnash/actionscript.all/delete-5.swf                         |binary
 test/gnash/actionscript.all/delete-5.swf.trace                   |   28 
 test/gnash/actionscript.all/delete-6.swf                         |binary
 test/gnash/actionscript.all/delete-6.swf.trace                   |   28 
 test/gnash/actionscript.all/delete-7.swf                         |binary
 test/gnash/actionscript.all/delete-7.swf.trace                   |   28 
 test/gnash/actionscript.all/delete-8.swf                         |binary
 test/gnash/actionscript.all/delete-8.swf.trace                   |   28 
 test/gnash/actionscript.all/delete.as                            |   77 
 test/gnash/actionscript.all/enumerate-5.swf                      |binary
 test/gnash/actionscript.all/enumerate-5.swf.trace                |    1 
 test/gnash/actionscript.all/enumerate-6.swf                      |binary
 test/gnash/actionscript.all/enumerate-6.swf.trace                |   19 
 test/gnash/actionscript.all/enumerate-7.swf                      |binary
 test/gnash/actionscript.all/enumerate-7.swf.trace                |   19 
 test/gnash/actionscript.all/enumerate-8.swf                      |binary
 test/gnash/actionscript.all/enumerate-8.swf.trace                |   19 
 test/gnash/actionscript.all/enumerate.as                         |  102 
 test/gnash/actionscript.all/pending/BitmapData-5.swf             |binary
 test/gnash/actionscript.all/pending/BitmapData-5.swf.trace       |    2 
 test/gnash/actionscript.all/pending/BitmapData-6.swf             |binary
 test/gnash/actionscript.all/pending/BitmapData-6.swf.trace       |    2 
 test/gnash/actionscript.all/pending/BitmapData-7.swf             |binary
 test/gnash/actionscript.all/pending/BitmapData-7.swf.trace       |    2 
 test/gnash/actionscript.all/pending/BitmapData-8.swf             |binary
 test/gnash/actionscript.all/pending/BitmapData-8.swf.trace       |   78 
 test/gnash/actionscript.all/pending/BitmapData.as                |  192 +
 test/gnash/actionscript.all/pending/Boolean-5.swf                |binary
 test/gnash/actionscript.all/pending/Boolean-5.swf.trace          |   32 
 test/gnash/actionscript.all/pending/Boolean-6.swf                |binary
 test/gnash/actionscript.all/pending/Boolean-6.swf.trace          |   32 
 test/gnash/actionscript.all/pending/Boolean-7.swf                |binary
 test/gnash/actionscript.all/pending/Boolean-7.swf.trace          |   32 
 test/gnash/actionscript.all/pending/Boolean-8.swf                |binary
 test/gnash/actionscript.all/pending/Boolean-8.swf.trace          |   32 
 test/gnash/actionscript.all/pending/Boolean.as                   |  108 
 test/gnash/actionscript.all/pending/Camera-5.swf                 |binary
 test/gnash/actionscript.all/pending/Camera-5.swf.trace           |    2 
 test/gnash/actionscript.all/pending/Camera-6.swf                 |binary
 test/gnash/actionscript.all/pending/Camera-6.swf.trace           |   15 
 test/gnash/actionscript.all/pending/Camera-7.swf                 |binary
 test/gnash/actionscript.all/pending/Camera-7.swf.trace           |   15 
 test/gnash/actionscript.all/pending/Camera-8.swf                 |binary
 test/gnash/actionscript.all/pending/Camera-8.swf.trace           |   15 
 test/gnash/actionscript.all/pending/Camera.as                    |   68 
 test/gnash/actionscript.all/pending/Function-5.swf               |binary
 test/gnash/actionscript.all/pending/Function-5.swf.trace         |  150 +
 test/gnash/actionscript.all/pending/Function-6.swf               |binary
 test/gnash/actionscript.all/pending/Function-6.swf.trace         |  210 +
 test/gnash/actionscript.all/pending/Function-7.swf               |binary
 test/gnash/actionscript.all/pending/Function-7.swf.trace         |  211 +
 test/gnash/actionscript.all/pending/Function-8.swf               |binary
 test/gnash/actionscript.all/pending/Function-8.swf.trace         |  211 +
 test/gnash/actionscript.all/pending/Function.as                  |  925 ++++++
 test/gnash/actionscript.all/pending/LoadVars-5.swf               |binary
 test/gnash/actionscript.all/pending/LoadVars-5.swf.trace         |    3 
 test/gnash/actionscript.all/pending/LoadVars-6.swf               |binary
 test/gnash/actionscript.all/pending/LoadVars-6.swf.trace         |   75 
 test/gnash/actionscript.all/pending/LoadVars-7.swf               |binary
 test/gnash/actionscript.all/pending/LoadVars-7.swf.trace         |   75 
 test/gnash/actionscript.all/pending/LoadVars-8.swf               |binary
 test/gnash/actionscript.all/pending/LoadVars-8.swf.trace         |   75 
 test/gnash/actionscript.all/pending/LoadVars.as                  |  222 +
 test/gnash/actionscript.all/pending/LocalConnection-5.swf        |binary
 test/gnash/actionscript.all/pending/LocalConnection-5.swf.trace  |    2 
 test/gnash/actionscript.all/pending/LocalConnection-6.swf        |binary
 test/gnash/actionscript.all/pending/LocalConnection-6.swf.trace  |   23 
 test/gnash/actionscript.all/pending/LocalConnection-7.swf        |binary
 test/gnash/actionscript.all/pending/LocalConnection-7.swf.trace  |   23 
 test/gnash/actionscript.all/pending/LocalConnection-8.swf        |binary
 test/gnash/actionscript.all/pending/LocalConnection-8.swf.trace  |   23 
 test/gnash/actionscript.all/pending/LocalConnection.as           |  114 
 test/gnash/actionscript.all/pending/Matrix-5.swf                 |binary
 test/gnash/actionscript.all/pending/Matrix-5.swf.trace           |    2 
 test/gnash/actionscript.all/pending/Matrix-6.swf                 |binary
 test/gnash/actionscript.all/pending/Matrix-6.swf.trace           |    2 
 test/gnash/actionscript.all/pending/Matrix-7.swf                 |binary
 test/gnash/actionscript.all/pending/Matrix-7.swf.trace           |    2 
 test/gnash/actionscript.all/pending/Matrix-8.swf                 |binary
 test/gnash/actionscript.all/pending/Matrix-8.swf.trace           |  163 +
 test/gnash/actionscript.all/pending/Matrix.as                    |  399 ++
 test/gnash/actionscript.all/pending/Microphone-5.swf             |binary
 test/gnash/actionscript.all/pending/Microphone-5.swf.trace       |    1 
 test/gnash/actionscript.all/pending/Microphone-6.swf             |binary
 test/gnash/actionscript.all/pending/Microphone-6.swf.trace       |   84 
 test/gnash/actionscript.all/pending/Microphone-7.swf             |binary
 test/gnash/actionscript.all/pending/Microphone-7.swf.trace       |   84 
 test/gnash/actionscript.all/pending/Microphone-8.swf             |binary
 test/gnash/actionscript.all/pending/Microphone-8.swf.trace       |   84 
 test/gnash/actionscript.all/pending/Microphone.as                |  184 +
 test/gnash/actionscript.all/pending/MovieClipLoader-5.swf        |binary
 test/gnash/actionscript.all/pending/MovieClipLoader-5.swf.trace  |    1 
 test/gnash/actionscript.all/pending/MovieClipLoader-6.swf        |binary
 test/gnash/actionscript.all/pending/MovieClipLoader-6.swf.trace  |    1 
 test/gnash/actionscript.all/pending/MovieClipLoader-7.swf        |binary
 test/gnash/actionscript.all/pending/MovieClipLoader-7.swf.trace  |  147 +
 test/gnash/actionscript.all/pending/MovieClipLoader-8.swf        |binary
 test/gnash/actionscript.all/pending/MovieClipLoader-8.swf.trace  |  147 +
 test/gnash/actionscript.all/pending/MovieClipLoader.as           |  347 ++
 test/gnash/actionscript.all/pending/MovieClipLoader.as.original  |  347 ++
 test/gnash/actionscript.all/pending/NetConnection-5.swf          |binary
 test/gnash/actionscript.all/pending/NetConnection-5.swf.trace    |    2 
 test/gnash/actionscript.all/pending/NetConnection-6.swf          |binary
 test/gnash/actionscript.all/pending/NetConnection-6.swf.trace    |   10 
 test/gnash/actionscript.all/pending/NetConnection-7.swf          |binary
 test/gnash/actionscript.all/pending/NetConnection-7.swf.trace    |   10 
 test/gnash/actionscript.all/pending/NetConnection-8.swf          |binary
 test/gnash/actionscript.all/pending/NetConnection-8.swf.trace    |   10 
 test/gnash/actionscript.all/pending/NetConnection.as             |   62 
 test/gnash/actionscript.all/pending/NetStream-5.swf              |binary
 test/gnash/actionscript.all/pending/NetStream-5.swf.trace        |    1 
 test/gnash/actionscript.all/pending/NetStream-6.swf              |binary
 test/gnash/actionscript.all/pending/NetStream-6.swf.trace        |   61 
 test/gnash/actionscript.all/pending/NetStream-7.swf              |binary
 test/gnash/actionscript.all/pending/NetStream-7.swf.trace        |   61 
 test/gnash/actionscript.all/pending/NetStream-8.swf              |binary
 test/gnash/actionscript.all/pending/NetStream-8.swf.trace        |   61 
 test/gnash/actionscript.all/pending/NetStream.as                 |  205 +
 test/gnash/actionscript.all/pending/Number-5.swf                 |binary
 test/gnash/actionscript.all/pending/Number-5.swf.trace           |  214 +
 test/gnash/actionscript.all/pending/Number-6.swf                 |binary
 test/gnash/actionscript.all/pending/Number-6.swf.trace           |  207 +
 test/gnash/actionscript.all/pending/Number-7.swf                 |binary
 test/gnash/actionscript.all/pending/Number-7.swf.trace           |  205 +
 test/gnash/actionscript.all/pending/Number-8.swf                 |binary
 test/gnash/actionscript.all/pending/Number-8.swf.trace           |  205 +
 test/gnash/actionscript.all/pending/Number.as                    |  585 ++++
 test/gnash/actionscript.all/pending/Object-5.swf                 |binary
 test/gnash/actionscript.all/pending/Object-5.swf.trace           |   84 
 test/gnash/actionscript.all/pending/Object-6.swf                 |binary
 test/gnash/actionscript.all/pending/Object-6.swf.trace           |  263 +
 test/gnash/actionscript.all/pending/Object-7.swf                 |binary
 test/gnash/actionscript.all/pending/Object-7.swf.trace           |  263 +
 test/gnash/actionscript.all/pending/Object-8.swf                 |binary
 test/gnash/actionscript.all/pending/Object-8.swf.trace           |  263 +
 test/gnash/actionscript.all/pending/Object.as                    |  854 +++++
 test/gnash/actionscript.all/pending/SharedObject-5.swf           |binary
 test/gnash/actionscript.all/pending/SharedObject-5.swf.trace     |    4 
 test/gnash/actionscript.all/pending/SharedObject-6.swf           |binary
 test/gnash/actionscript.all/pending/SharedObject-6.swf.trace     |   42 
 test/gnash/actionscript.all/pending/SharedObject-7.swf           |binary
 test/gnash/actionscript.all/pending/SharedObject-7.swf.trace     |   42 
 test/gnash/actionscript.all/pending/SharedObject-8.swf           |binary
 test/gnash/actionscript.all/pending/SharedObject-8.swf.trace     |   42 
 test/gnash/actionscript.all/pending/SharedObject.as              |  144 
 test/gnash/actionscript.all/pending/Sound-5.swf                  |binary
 test/gnash/actionscript.all/pending/Sound-5.swf.trace            |   95 
 test/gnash/actionscript.all/pending/Sound-6.swf                  |binary
 test/gnash/actionscript.all/pending/Sound-6.swf.trace            |   95 
 test/gnash/actionscript.all/pending/Sound-7.swf                  |binary
 test/gnash/actionscript.all/pending/Sound-7.swf.trace            |   95 
 test/gnash/actionscript.all/pending/Sound-8.swf                  |binary
 test/gnash/actionscript.all/pending/Sound-8.swf.trace            |   95 
 test/gnash/actionscript.all/pending/Sound.as                     |  231 +
 test/gnash/actionscript.all/pending/String-5.swf                 |binary
 test/gnash/actionscript.all/pending/String-5.swf.trace           |  259 +
 test/gnash/actionscript.all/pending/String-6.swf                 |binary
 test/gnash/actionscript.all/pending/String-6.swf.trace           |  275 +
 test/gnash/actionscript.all/pending/String-7.swf                 |binary
 test/gnash/actionscript.all/pending/String-7.swf.trace           |  275 +
 test/gnash/actionscript.all/pending/String-8.swf                 |binary
 test/gnash/actionscript.all/pending/String-8.swf.trace           |  275 +
 test/gnash/actionscript.all/pending/String.as                    |  905 ++++++
 test/gnash/actionscript.all/pending/TextField-5.swf              |binary
 test/gnash/actionscript.all/pending/TextField-5.swf.trace        |    1 
 test/gnash/actionscript.all/pending/TextField-6.swf              |binary
 test/gnash/actionscript.all/pending/TextField-6.swf.trace        |  420 ++
 test/gnash/actionscript.all/pending/TextField-7.swf              |binary
 test/gnash/actionscript.all/pending/TextField-7.swf.trace        |  420 ++
 test/gnash/actionscript.all/pending/TextField-8.swf              |binary
 test/gnash/actionscript.all/pending/TextField-8.swf.trace        |  421 ++
 test/gnash/actionscript.all/pending/TextField.as                 |  908 ++++++
 test/gnash/actionscript.all/pending/array-5.swf                  |binary
 test/gnash/actionscript.all/pending/array-5.swf.trace            |  485 +++
 test/gnash/actionscript.all/pending/array-6.swf                  |binary
 test/gnash/actionscript.all/pending/array-6.swf.trace            |  546 +++
 test/gnash/actionscript.all/pending/array-7.swf                  |binary
 test/gnash/actionscript.all/pending/array-7.swf.trace            |  556 +++
 test/gnash/actionscript.all/pending/array-8.swf                  |binary
 test/gnash/actionscript.all/pending/array-8.swf.trace            |  556 +++
 test/gnash/actionscript.all/pending/array.as                     | 1449 ++++++++++
 test/gnash/actionscript.all/pending/case-5.swf                   |binary
 test/gnash/actionscript.all/pending/case-5.swf.trace             |   24 
 test/gnash/actionscript.all/pending/case-6.swf                   |binary
 test/gnash/actionscript.all/pending/case-6.swf.trace             |   58 
 test/gnash/actionscript.all/pending/case-7.swf                   |binary
 test/gnash/actionscript.all/pending/case-7.swf.trace             |   52 
 test/gnash/actionscript.all/pending/case-8.swf                   |binary
 test/gnash/actionscript.all/pending/case-8.swf.trace             |   52 
 test/gnash/actionscript.all/pending/case.as                      |  333 ++
 test/gnash/actionscript.all/pending/getvariable-5.swf            |binary
 test/gnash/actionscript.all/pending/getvariable-5.swf.trace      |   53 
 test/gnash/actionscript.all/pending/getvariable-6.swf            |binary
 test/gnash/actionscript.all/pending/getvariable-6.swf.trace      |   58 
 test/gnash/actionscript.all/pending/getvariable-7.swf            |binary
 test/gnash/actionscript.all/pending/getvariable-7.swf.trace      |   58 
 test/gnash/actionscript.all/pending/getvariable-8.swf            |binary
 test/gnash/actionscript.all/pending/getvariable-8.swf.trace      |   58 
 test/gnash/actionscript.all/pending/getvariable.as               |  700 ++++
 test/gnash/actionscript.all/pending/ops-5.swf                    |binary
 test/gnash/actionscript.all/pending/ops-5.swf.trace              |  240 +
 test/gnash/actionscript.all/pending/ops-6.swf                    |binary
 test/gnash/actionscript.all/pending/ops-6.swf.trace              |  240 +
 test/gnash/actionscript.all/pending/ops-7.swf                    |binary
 test/gnash/actionscript.all/pending/ops-7.swf.trace              |  242 +
 test/gnash/actionscript.all/pending/ops-8.swf                    |binary
 test/gnash/actionscript.all/pending/ops-8.swf.trace              |  242 +
 test/gnash/actionscript.all/pending/ops.as                       |  812 +++++
 test/gnash/actionscript.all/pending/targetPath-5.swf             |binary
 test/gnash/actionscript.all/pending/targetPath-5.swf.trace       |    7 
 test/gnash/actionscript.all/pending/targetPath-6.swf             |binary
 test/gnash/actionscript.all/pending/targetPath-6.swf.trace       |   18 
 test/gnash/actionscript.all/pending/targetPath-7.swf             |binary
 test/gnash/actionscript.all/pending/targetPath-7.swf.trace       |   18 
 test/gnash/actionscript.all/pending/targetPath-8.swf             |binary
 test/gnash/actionscript.all/pending/targetPath-8.swf.trace       |   18 
 test/gnash/actionscript.all/pending/targetPath.as                |  165 +
 test/gnash/actionscript.all/pending/toString_valueOf-5.swf       |binary
 test/gnash/actionscript.all/pending/toString_valueOf-5.swf.trace |  127 
 test/gnash/actionscript.all/pending/toString_valueOf-6.swf       |binary
 test/gnash/actionscript.all/pending/toString_valueOf-6.swf.trace |  145 +
 test/gnash/actionscript.all/pending/toString_valueOf-7.swf       |binary
 test/gnash/actionscript.all/pending/toString_valueOf-7.swf.trace |  145 +
 test/gnash/actionscript.all/pending/toString_valueOf-8.swf       |binary
 test/gnash/actionscript.all/pending/toString_valueOf-8.swf.trace |  145 +
 test/gnash/actionscript.all/pending/toString_valueOf.as          |  485 +++
 test/gnash/actionscript.all/pending/with-5.swf                   |binary
 test/gnash/actionscript.all/pending/with-5.swf.trace             |   42 
 test/gnash/actionscript.all/pending/with-6.swf                   |binary
 test/gnash/actionscript.all/pending/with-6.swf.trace             |  100 
 test/gnash/actionscript.all/pending/with-7.swf                   |binary
 test/gnash/actionscript.all/pending/with-7.swf.trace             |  100 
 test/gnash/actionscript.all/pending/with-8.swf                   |binary
 test/gnash/actionscript.all/pending/with-8.swf.trace             |  100 
 test/gnash/actionscript.all/pending/with.as                      |  548 +++
 test/gnash/actionscript.all/swap-5.swf                           |binary
 test/gnash/actionscript.all/swap-5.swf.trace                     |    2 
 test/gnash/actionscript.all/swap-6.swf                           |binary
 test/gnash/actionscript.all/swap-6.swf.trace                     |    2 
 test/gnash/actionscript.all/swap-7.swf                           |binary
 test/gnash/actionscript.all/swap-7.swf.trace                     |    2 
 test/gnash/actionscript.all/swap-8.swf                           |binary
 test/gnash/actionscript.all/swap-8.swf.trace                     |    2 
 test/gnash/actionscript.all/swap.as                              |   46 
 test/gnash/actionscript.all/utils.as                             |   49 
 test/gnash/media/Bitstream-Vera-Sans.COPYRIGHT                   |  124 
 test/gnash/media/Bitstream-Vera-Sans.fdb                         |binary
 test/gnash/media/Makefile.am                                     |   22 
 test/gnash/media/README                                          |   67 
 test/gnash/media/default.orc                                     |   15 
 test/gnash/media/gnash.xml                                       |binary
 test/gnash/media/green.jpg                                       |binary
 test/gnash/media/green.swf                                       |binary
 test/gnash/media/lynch.jpg                                       |binary
 test/gnash/media/lynch.swf                                       |binary
 test/gnash/media/majorscale.sco                                  |   20 
 test/gnash/media/offspring.jpg                                   |binary
 test/gnash/media/offspring.swf                                   |binary
 test/gnash/media/sound1.mp3                                      |binary
 test/gnash/media/sound1.wav                                      |binary
 test/gnash/media/square.flv                                      |binary
 test/gnash/media/square.ogg                                      |binary
 test/gnash/media/vars.txt                                        |   35 
 test/gnash/media/vars2.txt                                       |    1 
 405 files changed, 28815 insertions(+), 1 deletion(-)

New commits:
commit 1a331bdaad473bda6bdb7cc2d3337e813679967f
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Fri Jul 4 02:33:14 2008 +0300

    Import actionscript.all/MovieClipLoader.as test from Gnash. Doesn't pass yet
    
    Removed _url from note () calls, so the output doesn't depend on file location

diff --git a/test/gnash/actionscript.all/pending/MovieClipLoader-5.swf b/test/gnash/actionscript.all/pending/MovieClipLoader-5.swf
new file mode 100644
index 0000000..7cdf5d8
Binary files /dev/null and b/test/gnash/actionscript.all/pending/MovieClipLoader-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/MovieClipLoader-5.swf.trace b/test/gnash/actionscript.all/pending/MovieClipLoader-5.swf.trace
new file mode 100644
index 0000000..abd55c7
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/MovieClipLoader-5.swf.trace
@@ -0,0 +1 @@
+totals
diff --git a/test/gnash/actionscript.all/pending/MovieClipLoader-6.swf b/test/gnash/actionscript.all/pending/MovieClipLoader-6.swf
new file mode 100644
index 0000000..7458758
Binary files /dev/null and b/test/gnash/actionscript.all/pending/MovieClipLoader-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/MovieClipLoader-6.swf.trace b/test/gnash/actionscript.all/pending/MovieClipLoader-6.swf.trace
new file mode 100644
index 0000000..abd55c7
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/MovieClipLoader-6.swf.trace
@@ -0,0 +1 @@
+totals
diff --git a/test/gnash/actionscript.all/pending/MovieClipLoader-7.swf b/test/gnash/actionscript.all/pending/MovieClipLoader-7.swf
new file mode 100644
index 0000000..2ac75a0
Binary files /dev/null and b/test/gnash/actionscript.all/pending/MovieClipLoader-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/MovieClipLoader-7.swf.trace b/test/gnash/actionscript.all/pending/MovieClipLoader-7.swf.trace
new file mode 100644
index 0000000..c130054
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/MovieClipLoader-7.swf.trace
@@ -0,0 +1,147 @@
+PASSED: typeOf(MovieClipLoader) == 'function' [MovieClipLoader.as:33]
+PASSED: typeOf(MovieClipLoader.prototype) == 'object' [MovieClipLoader.as:34]
+PASSED: MovieClipLoader.prototype.hasOwnProperty('loadClip') [MovieClipLoader.as:35]
+PASSED: MovieClipLoader.prototype.hasOwnProperty('unloadClip') [MovieClipLoader.as:36]
+PASSED: MovieClipLoader.prototype.hasOwnProperty('getProgress') [MovieClipLoader.as:37]
+PASSED: MovieClipLoader.prototype.hasOwnProperty('addListener') [MovieClipLoader.as:38]
+PASSED: MovieClipLoader.prototype.hasOwnProperty('removeListener') [MovieClipLoader.as:39]
+PASSED: MovieClipLoader.prototype.hasOwnProperty('broadcastMessage') [MovieClipLoader.as:40]
+PASSED: typeOf(MovieClipLoader._listeners) == 'undefined' [MovieClipLoader.as:41]
+PASSED: typeOf(mcl) == 'object' [MovieClipLoader.as:44]
+PASSED: mcl instanceOf MovieClipLoader [MovieClipLoader.as:45]
+PASSED: typeOf(mcl.loadClip) == 'function' [MovieClipLoader.as:47]
+PASSED: !mcl.hasOwnProperty('loadClip') [MovieClipLoader.as:48]
+PASSED: typeOf(mcl.unloadClip) == 'function' [MovieClipLoader.as:50]
+PASSED: !mcl.hasOwnProperty('unloadClip') [MovieClipLoader.as:51]
+PASSED: typeOf(mcl.getProgress) == 'function' [MovieClipLoader.as:53]
+PASSED: !mcl.hasOwnProperty('getProgress') [MovieClipLoader.as:54]
+PASSED: typeOf(mcl.addListener) == 'function' [MovieClipLoader.as:56]
+PASSED: !mcl.hasOwnProperty('addListener') [MovieClipLoader.as:57]
+PASSED: typeOf(mcl.removeListener) == 'function' [MovieClipLoader.as:59]
+PASSED: !mcl.hasOwnProperty('removeListener') [MovieClipLoader.as:60]
+PASSED: typeOf(mcl.broadcastMessage) == 'function' [MovieClipLoader.as:62]
+PASSED: !mcl.hasOwnProperty('broadcastMessage') [MovieClipLoader.as:63]
+PASSED: typeOf(mcl._listeners) == 'object' [MovieClipLoader.as:65]
+PASSED: mcl.hasOwnProperty('_listeners') [MovieClipLoader.as:66]
+PASSED: mcl._listeners.length == 1 [MovieClipLoader.as:67]
+PASSED: mcl._listeners[0] == mcl [MovieClipLoader.as:68]
+PASSED: ! mcl.loadClip() [MovieClipLoader.as:272]
+PASSED: ! mcl.loadClip( MEDIA(vars.txt) ) [MovieClipLoader.as:273]
+PASSED: ! mcl.loadClip( MEDIA(vars.txt), 'unexistent' ) [MovieClipLoader.as:275]
+PASSED: mcl.loadClip( MEDIA(unexistent), 'loadtarget' ) [MovieClipLoader.as:282]
+PASSED: arguments.length == 3 [MovieClipLoader.as:164]
+PASSED: target == expected.target [MovieClipLoader.as:165]
+NOTE: onLoadError called (URLNotFound)
+PASSED: mcl.loadClip( MEDIA(vars.txt), 'loadtarget' ) [MovieClipLoader.as:290]
+PASSED: arguments.length == 1 [MovieClipLoader.as:173]
+PASSED: target+"" != "" [MovieClipLoader.as:177]
+PASSED: target == expected.target [MovieClipLoader.as:178]
+NOTE: onLoadStart(_level0.loadtarget, ...) called
+PASSED: arguments.length == 3 [MovieClipLoader.as:188]
+PASSED: target == expected.target [MovieClipLoader.as:189]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:190]
+PASSED: typeof(bytesLoaded) == 'number' [MovieClipLoader.as:191]
+PASSED: typeof(bytesTotal) == 'number' [MovieClipLoader.as:192]
+PASSED: bytesTotal <= bytesTotal [MovieClipLoader.as:193]
+PASSED: this == mcl [MovieClipLoader.as:195]
+PASSED: typeof(tmp) == 'undefined' [MovieClipLoader.as:198]
+PASSED: typeof(prog) == 'object' [MovieClipLoader.as:201]
+PASSED: prog.__proto__ == undefined [MovieClipLoader.as:202]
+PASSED: prog.bytesLoaded == bytesLoaded [MovieClipLoader.as:203]
+PASSED: prog.bytesTotal == bytesTotal [MovieClipLoader.as:204]
+PASSED: progcount == 2 [MovieClipLoader.as:207]
+PASSED: progcopy.bytesLoaded == bytesLoaded [MovieClipLoader.as:208]
+PASSED: progcopy.bytesTotal == bytesTotal [MovieClipLoader.as:209]
+PASSED: arguments.length == 3 [MovieClipLoader.as:188]
+PASSED: target == expected.target [MovieClipLoader.as:189]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:190]
+PASSED: typeof(bytesLoaded) == 'number' [MovieClipLoader.as:191]
+PASSED: typeof(bytesTotal) == 'number' [MovieClipLoader.as:192]
+PASSED: bytesTotal <= bytesTotal [MovieClipLoader.as:193]
+PASSED: this == mcl [MovieClipLoader.as:195]
+PASSED: typeof(tmp) == 'undefined' [MovieClipLoader.as:198]
+PASSED: typeof(prog) == 'object' [MovieClipLoader.as:201]
+PASSED: prog.__proto__ == undefined [MovieClipLoader.as:202]
+PASSED: prog.bytesLoaded == bytesLoaded [MovieClipLoader.as:203]
+PASSED: prog.bytesTotal == bytesTotal [MovieClipLoader.as:204]
+PASSED: progcount == 2 [MovieClipLoader.as:207]
+PASSED: progcopy.bytesLoaded == bytesLoaded [MovieClipLoader.as:208]
+PASSED: progcopy.bytesTotal == bytesTotal [MovieClipLoader.as:209]
+NOTE: onLoadComplete(_level0.loadtarget, ...) called
+PASSED: arguments.length == 2 [MovieClipLoader.as:219]
+PASSED: target == expected.target [MovieClipLoader.as:220]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:221]
+PASSED: state.onLoadProgressCalls > 0 [MovieClipLoader.as:222]
+PASSED: typeof(n) == 'number' [MovieClipLoader.as:223]
+NOTE: onLoadComplete second arg is 0 (number)
+NOTE: onLoadInit(_level0.loadtarget, ...) called
+PASSED: arguments.length == 1 [MovieClipLoader.as:232]
+PASSED: target == expected.target [MovieClipLoader.as:233]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:234]
+PASSED: state.onLoadProgressCalls > 0 [MovieClipLoader.as:235]
+PASSED: state.onLoadCompleteCalls == 1 [MovieClipLoader.as:236]
+PASSED: this == mcl [MovieClipLoader.as:239]
+PASSED: typeof(prog) == 'object' [MovieClipLoader.as:298]
+PASSED: prog.__proto__ == undefined [MovieClipLoader.as:299]
+PASSED: prog.bytesLoaded == prog.bytesTotal [MovieClipLoader.as:300]
+PASSED: prog.bytesTotal == _level0.getBytesTotal() [MovieClipLoader.as:301]
+PASSED: mcl.loadClip( MEDIA(green.jpg), 'loadtarget' ) [MovieClipLoader.as:332]
+PASSED: arguments.length == 1 [MovieClipLoader.as:173]
+PASSED: target+"" != "" [MovieClipLoader.as:177]
+PASSED: target == expected.target [MovieClipLoader.as:178]
+NOTE: onLoadStart(_level0.loadtarget, ...) called
+PASSED: arguments.length == 3 [MovieClipLoader.as:188]
+PASSED: target == expected.target [MovieClipLoader.as:189]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:190]
+PASSED: typeof(bytesLoaded) == 'number' [MovieClipLoader.as:191]
+PASSED: typeof(bytesTotal) == 'number' [MovieClipLoader.as:192]
+PASSED: bytesTotal <= bytesTotal [MovieClipLoader.as:193]
+PASSED: this == mcl [MovieClipLoader.as:195]
+PASSED: typeof(tmp) == 'undefined' [MovieClipLoader.as:198]
+PASSED: typeof(prog) == 'object' [MovieClipLoader.as:201]
+PASSED: prog.__proto__ == undefined [MovieClipLoader.as:202]
+PASSED: prog.bytesLoaded == bytesLoaded [MovieClipLoader.as:203]
+PASSED: prog.bytesTotal == bytesTotal [MovieClipLoader.as:204]
+PASSED: progcount == 2 [MovieClipLoader.as:207]
+PASSED: progcopy.bytesLoaded == bytesLoaded [MovieClipLoader.as:208]
+PASSED: progcopy.bytesTotal == bytesTotal [MovieClipLoader.as:209]
+PASSED: arguments.length == 3 [MovieClipLoader.as:188]
+PASSED: target == expected.target [MovieClipLoader.as:189]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:190]
+PASSED: typeof(bytesLoaded) == 'number' [MovieClipLoader.as:191]
+PASSED: typeof(bytesTotal) == 'number' [MovieClipLoader.as:192]
+PASSED: bytesTotal <= bytesTotal [MovieClipLoader.as:193]
+PASSED: this == mcl [MovieClipLoader.as:195]
+PASSED: typeof(tmp) == 'undefined' [MovieClipLoader.as:198]
+PASSED: typeof(prog) == 'object' [MovieClipLoader.as:201]
+PASSED: prog.__proto__ == undefined [MovieClipLoader.as:202]
+PASSED: prog.bytesLoaded == bytesLoaded [MovieClipLoader.as:203]
+PASSED: prog.bytesTotal == bytesTotal [MovieClipLoader.as:204]
+PASSED: progcount == 2 [MovieClipLoader.as:207]
+PASSED: progcopy.bytesLoaded == bytesLoaded [MovieClipLoader.as:208]
+PASSED: progcopy.bytesTotal == bytesTotal [MovieClipLoader.as:209]
+NOTE: onLoadComplete(_level0.loadtarget, ...) called
+PASSED: arguments.length == 2 [MovieClipLoader.as:219]
+PASSED: target == expected.target [MovieClipLoader.as:220]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:221]
+PASSED: state.onLoadProgressCalls > 0 [MovieClipLoader.as:222]
+PASSED: typeof(n) == 'number' [MovieClipLoader.as:223]
+NOTE: onLoadComplete second arg is 0 (number)
+NOTE: onLoadInit(_level0.loadtarget, ...) called
+PASSED: arguments.length == 1 [MovieClipLoader.as:232]
+PASSED: target == expected.target [MovieClipLoader.as:233]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:234]
+PASSED: state.onLoadProgressCalls > 0 [MovieClipLoader.as:235]
+PASSED: state.onLoadCompleteCalls == 1 [MovieClipLoader.as:236]
+PASSED: this == mcl [MovieClipLoader.as:239]
+NOTE: _lockroot: false
+NOTE: ---- Target's root is _level0
+PASSED: _root == _level0 [MovieClipLoader.as:253]
+PASSED: _root == _level0.loadtarget [MovieClipLoader.as:255]
+NOTE: ---- After setting _lockroot to true, target's root is _level0.loadtarget
+PASSED: _root == _level0 [MovieClipLoader.as:258]
+NOTE: ---- After setting _lockroot to false, target's root is _level0
+PASSED: target._width == 170 [MovieClipLoader.as:263]
+PASSED: target._height == 170 [MovieClipLoader.as:264]
+NOTE: Number of onLoadProgress runs: 4 - tests: 60
+xcheck_totals: expected.totals + progCallbackTests
diff --git a/test/gnash/actionscript.all/pending/MovieClipLoader-8.swf b/test/gnash/actionscript.all/pending/MovieClipLoader-8.swf
new file mode 100644
index 0000000..8e96262
Binary files /dev/null and b/test/gnash/actionscript.all/pending/MovieClipLoader-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/MovieClipLoader-8.swf.trace b/test/gnash/actionscript.all/pending/MovieClipLoader-8.swf.trace
new file mode 100644
index 0000000..c130054
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/MovieClipLoader-8.swf.trace
@@ -0,0 +1,147 @@
+PASSED: typeOf(MovieClipLoader) == 'function' [MovieClipLoader.as:33]
+PASSED: typeOf(MovieClipLoader.prototype) == 'object' [MovieClipLoader.as:34]
+PASSED: MovieClipLoader.prototype.hasOwnProperty('loadClip') [MovieClipLoader.as:35]
+PASSED: MovieClipLoader.prototype.hasOwnProperty('unloadClip') [MovieClipLoader.as:36]
+PASSED: MovieClipLoader.prototype.hasOwnProperty('getProgress') [MovieClipLoader.as:37]
+PASSED: MovieClipLoader.prototype.hasOwnProperty('addListener') [MovieClipLoader.as:38]
+PASSED: MovieClipLoader.prototype.hasOwnProperty('removeListener') [MovieClipLoader.as:39]
+PASSED: MovieClipLoader.prototype.hasOwnProperty('broadcastMessage') [MovieClipLoader.as:40]
+PASSED: typeOf(MovieClipLoader._listeners) == 'undefined' [MovieClipLoader.as:41]
+PASSED: typeOf(mcl) == 'object' [MovieClipLoader.as:44]
+PASSED: mcl instanceOf MovieClipLoader [MovieClipLoader.as:45]
+PASSED: typeOf(mcl.loadClip) == 'function' [MovieClipLoader.as:47]
+PASSED: !mcl.hasOwnProperty('loadClip') [MovieClipLoader.as:48]
+PASSED: typeOf(mcl.unloadClip) == 'function' [MovieClipLoader.as:50]
+PASSED: !mcl.hasOwnProperty('unloadClip') [MovieClipLoader.as:51]
+PASSED: typeOf(mcl.getProgress) == 'function' [MovieClipLoader.as:53]
+PASSED: !mcl.hasOwnProperty('getProgress') [MovieClipLoader.as:54]
+PASSED: typeOf(mcl.addListener) == 'function' [MovieClipLoader.as:56]
+PASSED: !mcl.hasOwnProperty('addListener') [MovieClipLoader.as:57]
+PASSED: typeOf(mcl.removeListener) == 'function' [MovieClipLoader.as:59]
+PASSED: !mcl.hasOwnProperty('removeListener') [MovieClipLoader.as:60]
+PASSED: typeOf(mcl.broadcastMessage) == 'function' [MovieClipLoader.as:62]
+PASSED: !mcl.hasOwnProperty('broadcastMessage') [MovieClipLoader.as:63]
+PASSED: typeOf(mcl._listeners) == 'object' [MovieClipLoader.as:65]
+PASSED: mcl.hasOwnProperty('_listeners') [MovieClipLoader.as:66]
+PASSED: mcl._listeners.length == 1 [MovieClipLoader.as:67]
+PASSED: mcl._listeners[0] == mcl [MovieClipLoader.as:68]
+PASSED: ! mcl.loadClip() [MovieClipLoader.as:272]
+PASSED: ! mcl.loadClip( MEDIA(vars.txt) ) [MovieClipLoader.as:273]
+PASSED: ! mcl.loadClip( MEDIA(vars.txt), 'unexistent' ) [MovieClipLoader.as:275]
+PASSED: mcl.loadClip( MEDIA(unexistent), 'loadtarget' ) [MovieClipLoader.as:282]
+PASSED: arguments.length == 3 [MovieClipLoader.as:164]
+PASSED: target == expected.target [MovieClipLoader.as:165]
+NOTE: onLoadError called (URLNotFound)
+PASSED: mcl.loadClip( MEDIA(vars.txt), 'loadtarget' ) [MovieClipLoader.as:290]
+PASSED: arguments.length == 1 [MovieClipLoader.as:173]
+PASSED: target+"" != "" [MovieClipLoader.as:177]
+PASSED: target == expected.target [MovieClipLoader.as:178]
+NOTE: onLoadStart(_level0.loadtarget, ...) called
+PASSED: arguments.length == 3 [MovieClipLoader.as:188]
+PASSED: target == expected.target [MovieClipLoader.as:189]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:190]
+PASSED: typeof(bytesLoaded) == 'number' [MovieClipLoader.as:191]
+PASSED: typeof(bytesTotal) == 'number' [MovieClipLoader.as:192]
+PASSED: bytesTotal <= bytesTotal [MovieClipLoader.as:193]
+PASSED: this == mcl [MovieClipLoader.as:195]
+PASSED: typeof(tmp) == 'undefined' [MovieClipLoader.as:198]
+PASSED: typeof(prog) == 'object' [MovieClipLoader.as:201]
+PASSED: prog.__proto__ == undefined [MovieClipLoader.as:202]
+PASSED: prog.bytesLoaded == bytesLoaded [MovieClipLoader.as:203]
+PASSED: prog.bytesTotal == bytesTotal [MovieClipLoader.as:204]
+PASSED: progcount == 2 [MovieClipLoader.as:207]
+PASSED: progcopy.bytesLoaded == bytesLoaded [MovieClipLoader.as:208]
+PASSED: progcopy.bytesTotal == bytesTotal [MovieClipLoader.as:209]
+PASSED: arguments.length == 3 [MovieClipLoader.as:188]
+PASSED: target == expected.target [MovieClipLoader.as:189]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:190]
+PASSED: typeof(bytesLoaded) == 'number' [MovieClipLoader.as:191]
+PASSED: typeof(bytesTotal) == 'number' [MovieClipLoader.as:192]
+PASSED: bytesTotal <= bytesTotal [MovieClipLoader.as:193]
+PASSED: this == mcl [MovieClipLoader.as:195]
+PASSED: typeof(tmp) == 'undefined' [MovieClipLoader.as:198]
+PASSED: typeof(prog) == 'object' [MovieClipLoader.as:201]
+PASSED: prog.__proto__ == undefined [MovieClipLoader.as:202]
+PASSED: prog.bytesLoaded == bytesLoaded [MovieClipLoader.as:203]
+PASSED: prog.bytesTotal == bytesTotal [MovieClipLoader.as:204]
+PASSED: progcount == 2 [MovieClipLoader.as:207]
+PASSED: progcopy.bytesLoaded == bytesLoaded [MovieClipLoader.as:208]
+PASSED: progcopy.bytesTotal == bytesTotal [MovieClipLoader.as:209]
+NOTE: onLoadComplete(_level0.loadtarget, ...) called
+PASSED: arguments.length == 2 [MovieClipLoader.as:219]
+PASSED: target == expected.target [MovieClipLoader.as:220]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:221]
+PASSED: state.onLoadProgressCalls > 0 [MovieClipLoader.as:222]
+PASSED: typeof(n) == 'number' [MovieClipLoader.as:223]
+NOTE: onLoadComplete second arg is 0 (number)
+NOTE: onLoadInit(_level0.loadtarget, ...) called
+PASSED: arguments.length == 1 [MovieClipLoader.as:232]
+PASSED: target == expected.target [MovieClipLoader.as:233]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:234]
+PASSED: state.onLoadProgressCalls > 0 [MovieClipLoader.as:235]
+PASSED: state.onLoadCompleteCalls == 1 [MovieClipLoader.as:236]
+PASSED: this == mcl [MovieClipLoader.as:239]
+PASSED: typeof(prog) == 'object' [MovieClipLoader.as:298]
+PASSED: prog.__proto__ == undefined [MovieClipLoader.as:299]
+PASSED: prog.bytesLoaded == prog.bytesTotal [MovieClipLoader.as:300]
+PASSED: prog.bytesTotal == _level0.getBytesTotal() [MovieClipLoader.as:301]
+PASSED: mcl.loadClip( MEDIA(green.jpg), 'loadtarget' ) [MovieClipLoader.as:332]
+PASSED: arguments.length == 1 [MovieClipLoader.as:173]
+PASSED: target+"" != "" [MovieClipLoader.as:177]
+PASSED: target == expected.target [MovieClipLoader.as:178]
+NOTE: onLoadStart(_level0.loadtarget, ...) called
+PASSED: arguments.length == 3 [MovieClipLoader.as:188]
+PASSED: target == expected.target [MovieClipLoader.as:189]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:190]
+PASSED: typeof(bytesLoaded) == 'number' [MovieClipLoader.as:191]
+PASSED: typeof(bytesTotal) == 'number' [MovieClipLoader.as:192]
+PASSED: bytesTotal <= bytesTotal [MovieClipLoader.as:193]
+PASSED: this == mcl [MovieClipLoader.as:195]
+PASSED: typeof(tmp) == 'undefined' [MovieClipLoader.as:198]
+PASSED: typeof(prog) == 'object' [MovieClipLoader.as:201]
+PASSED: prog.__proto__ == undefined [MovieClipLoader.as:202]
+PASSED: prog.bytesLoaded == bytesLoaded [MovieClipLoader.as:203]
+PASSED: prog.bytesTotal == bytesTotal [MovieClipLoader.as:204]
+PASSED: progcount == 2 [MovieClipLoader.as:207]
+PASSED: progcopy.bytesLoaded == bytesLoaded [MovieClipLoader.as:208]
+PASSED: progcopy.bytesTotal == bytesTotal [MovieClipLoader.as:209]
+PASSED: arguments.length == 3 [MovieClipLoader.as:188]
+PASSED: target == expected.target [MovieClipLoader.as:189]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:190]
+PASSED: typeof(bytesLoaded) == 'number' [MovieClipLoader.as:191]
+PASSED: typeof(bytesTotal) == 'number' [MovieClipLoader.as:192]
+PASSED: bytesTotal <= bytesTotal [MovieClipLoader.as:193]
+PASSED: this == mcl [MovieClipLoader.as:195]
+PASSED: typeof(tmp) == 'undefined' [MovieClipLoader.as:198]
+PASSED: typeof(prog) == 'object' [MovieClipLoader.as:201]
+PASSED: prog.__proto__ == undefined [MovieClipLoader.as:202]
+PASSED: prog.bytesLoaded == bytesLoaded [MovieClipLoader.as:203]
+PASSED: prog.bytesTotal == bytesTotal [MovieClipLoader.as:204]
+PASSED: progcount == 2 [MovieClipLoader.as:207]
+PASSED: progcopy.bytesLoaded == bytesLoaded [MovieClipLoader.as:208]
+PASSED: progcopy.bytesTotal == bytesTotal [MovieClipLoader.as:209]
+NOTE: onLoadComplete(_level0.loadtarget, ...) called
+PASSED: arguments.length == 2 [MovieClipLoader.as:219]
+PASSED: target == expected.target [MovieClipLoader.as:220]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:221]
+PASSED: state.onLoadProgressCalls > 0 [MovieClipLoader.as:222]
+PASSED: typeof(n) == 'number' [MovieClipLoader.as:223]
+NOTE: onLoadComplete second arg is 0 (number)
+NOTE: onLoadInit(_level0.loadtarget, ...) called
+PASSED: arguments.length == 1 [MovieClipLoader.as:232]
+PASSED: target == expected.target [MovieClipLoader.as:233]
+PASSED: state.onLoadStartCalls == 1 [MovieClipLoader.as:234]
+PASSED: state.onLoadProgressCalls > 0 [MovieClipLoader.as:235]
+PASSED: state.onLoadCompleteCalls == 1 [MovieClipLoader.as:236]
+PASSED: this == mcl [MovieClipLoader.as:239]
+NOTE: _lockroot: false
+NOTE: ---- Target's root is _level0
+PASSED: _root == _level0 [MovieClipLoader.as:253]
+PASSED: _root == _level0.loadtarget [MovieClipLoader.as:255]
+NOTE: ---- After setting _lockroot to true, target's root is _level0.loadtarget
+PASSED: _root == _level0 [MovieClipLoader.as:258]
+NOTE: ---- After setting _lockroot to false, target's root is _level0
+PASSED: target._width == 170 [MovieClipLoader.as:263]
+PASSED: target._height == 170 [MovieClipLoader.as:264]
+NOTE: Number of onLoadProgress runs: 4 - tests: 60
+xcheck_totals: expected.totals + progCallbackTests
diff --git a/test/gnash/actionscript.all/pending/MovieClipLoader.as b/test/gnash/actionscript.all/pending/MovieClipLoader.as
new file mode 100644
index 0000000..7f00552
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/MovieClipLoader.as
@@ -0,0 +1,347 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+//
+
+// Test case for MovieClipLoader ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: MovieClipLoader.as,v 1.19 2008/03/11 19:31:47 strk Exp $";
+#include "check.as"
+
+//#define MEDIA(x) x
+
+// MovieClipLoader was added in player7
+#if OUTPUT_VERSION >= 7
+
+check_equals(typeOf(MovieClipLoader), 'function');
+check_equals(typeOf(MovieClipLoader.prototype), 'object');
+check(MovieClipLoader.prototype.hasOwnProperty('loadClip'));
+check(MovieClipLoader.prototype.hasOwnProperty('unloadClip'));
+check(MovieClipLoader.prototype.hasOwnProperty('getProgress'));
+check(MovieClipLoader.prototype.hasOwnProperty('addListener'));
+check(MovieClipLoader.prototype.hasOwnProperty('removeListener'));
+check(MovieClipLoader.prototype.hasOwnProperty('broadcastMessage'));
+check_equals(typeOf(MovieClipLoader._listeners), 'undefined');
+
+var mcl = new MovieClipLoader();
+check_equals(typeOf(mcl), 'object');
+check(mcl instanceOf MovieClipLoader);
+
+check_equals(typeOf(mcl.loadClip), 'function');
+check(!mcl.hasOwnProperty('loadClip'));
+
+check_equals(typeOf(mcl.unloadClip), 'function');
+check(!mcl.hasOwnProperty('unloadClip'));
+
+check_equals(typeOf(mcl.getProgress), 'function');
+check(!mcl.hasOwnProperty('getProgress'));
+
+check_equals(typeOf(mcl.addListener), 'function');
+check(!mcl.hasOwnProperty('addListener'));
+
+check_equals(typeOf(mcl.removeListener), 'function');
+check(!mcl.hasOwnProperty('removeListener'));
+
+check_equals(typeOf(mcl.broadcastMessage), 'function');
+check(!mcl.hasOwnProperty('broadcastMessage'));
+
+check_equals(typeOf(mcl._listeners), 'object');
+check(mcl.hasOwnProperty('_listeners'));
+check_equals(mcl._listeners.length, 1);
+check_equals(mcl._listeners[0], mcl);
+
+MovieClipLoader.prototype.bm = MovieClipLoader.prototype.broadcastMessage;
+MovieClipLoader.prototype.broadcastMessage = function(arg1, arg2, arg3, arg4)
+{
+	//note("Broadcasting "+arg1);
+	//this.bm(arg1, arg2, arg3, arg4);
+	this.bm.apply(this, arguments);
+};
+
+//---------------------------------------------------------
+// Test loadClip and events
+//---------------------------------------------------------
+//
+// TODO: test even handlers (actionscript.all framework
+//       not enough for this)
+//
+// Invoked when a file loaded with MovieClipLoader.loadClip() has failed to load.
+// MovieClipLoader.onLoadError
+//
+// Invoked when a call to MovieClipLoader.loadClip() has successfully begun to download a file.
+// MovieClipLoader.onLoadStart
+// 
+// Invoked every time the loading content is written to disk during the loading process.
+// MovieClipLoader.onLoadProgress
+//
+// Invoked when a file loaded with MovieClipLoader.loadClip() has completely downloaded.
+// MovieClipLoader.onLoadComplete
+// 
+// Invoked when the actions on the first frame of the loaded clip have been executed.
+// MovieClipLoader.onLoadInit
+//
+//---------------------------------------------------------
+
+dumpObj = function(o, lvl)
+{
+	if ( typeof(lvl) == 'undefined' ) lvl=0;
+	for (var i in o)
+	{
+		note(lvl+' - '+i+': '+o[i]+' ('+typeof(o[i])+')');
+		if ( typeof(o[i]) == 'object' ) dumpObj(o[i], lvl+1);
+	}
+};
+
+
+createEmptyMovieClip("loadtarget", 10);
+
+expected = {
+	target: undefined
+};
+
+resetState = function()
+{
+	state = {
+		onLoadStartCalls:0,
+		onLoadErrorCalls:0,
+		onLoadProgressCalls:0,
+		onLoadCompleteCalls:0,
+		onLoadInitCalls:0
+	};
+};
+totalProgressCalls=0;
+
+nextTestOrEnd = function()
+{
+	//note("nextTestOrEnd");
+	if ( state.nextFunction == undefined )
+	{
+		// we don't know how many times onLoadProgress will be called
+		// so we have that handler increment a totalProgressCalls and
+		// we use that value to  figure out how many tests to expect to
+		// be run (6 tests each onLoadProgress call).
+		// Note that if we miss to call onLoadProgress at all we'd catch
+		// the bug from supposedly subsequent callbacks, which check for
+		// a local flag set by the onLoadProgress handler.
+		//
+		var testsPerProgressCallback = 15;
+		progCallbackTests = totalProgressCalls*testsPerProgressCallback;
+		note("Number of onLoadProgress runs: "+totalProgressCalls+" - tests: "+progCallbackTests);
+		if ( expected.failtotals ) {
+			// this is failing due to vars.txt not being loaded
+			// (how could it?)
+			xcheck_totals(expected.totals + progCallbackTests);
+		} else {
+			check_totals(expected.totals + progCallbackTests);
+		}
+		play();
+	}
+	else
+	{
+		state.nextFunction();
+	}
+};
+
+mcl.onLoadError = function(target, msg, n)
+{
+	check_equals(arguments.length, 3);
+	check_equals(target, expected.target);
+	note("onLoadError called ("+msg+")");
+	nextTestOrEnd();
+	//dumpObj(arguments);
+};
+
+mcl.onLoadStart = function(target)
+{
+	check_equals(arguments.length, 1);
+	// a bug in Gnash made softrefs always convert
+	// to the empty string when not pointing to
+	// their original target...
+	check(target+"" != "");
+	check_equals(target, expected.target);
+	state.onLoadStartCalls++;
+	note("onLoadStart("+target+", ...) called");
+	//note("onLoadStart called with "+arguments.length+" args:"); dumpObj(arguments);
+};
+
+mcl.onLoadProgress = function(target, bytesLoaded, bytesTotal)
+{
+	//note("onLoadProgress("+target+", "+target._url+") called");
+
+	check_equals(arguments.length, 3);
+	check_equals(target, expected.target);
+	check_equals(state.onLoadStartCalls, 1);
+	check_equals(typeof(bytesLoaded), 'number')
+	check_equals(typeof(bytesTotal), 'number')
+	check(bytesTotal <= bytesTotal);
+
+	check_equals(this, mcl);
+
+	var tmp = this.getProgress();
+	check_equals(typeof(tmp), 'undefined');
+
+	var prog = this.getProgress(target);
+	check_equals(typeof(prog), 'object');
+	check_equals(prog.__proto__, undefined);
+	check_equals(prog.bytesLoaded, bytesLoaded);
+	check_equals(prog.bytesTotal, bytesTotal);
+	var progcopy = {}; var progcount=0;
+	for (var i in prog) { progcopy[i] = prog[i]; progcount++; }
+	check_equals(progcount, 2);
+	check_equals(progcopy.bytesLoaded, bytesLoaded);
+	check_equals(progcopy.bytesTotal, bytesTotal);
+
+	++state.onLoadProgressCalls;
+	++totalProgressCalls;
+	//note("onLoadProgress called with "+arguments.length+" args:"); dumpObj(arguments);
+};
+
+mcl.onLoadComplete = function(target, n)
+{
+	note("onLoadComplete("+target+", ...) called");
+	check_equals(arguments.length, 2);
+	check_equals(target, expected.target);
+	check_equals(state.onLoadStartCalls, 1);
+	check(state.onLoadProgressCalls > 0);
+	check_equals(typeof(n), 'number'); // what is this ?
+	state.onLoadCompleteCalls++;
+
+	note("onLoadComplete second arg is "+n+" ("+typeof(n)+")");
+};
+
+mcl.onLoadInit = function(target)
+{
+	note("onLoadInit("+target+", ...) called");
+	check_equals(arguments.length, 1);
+	check_equals(target, expected.target);
+	check_equals(state.onLoadStartCalls, 1);
+	check(state.onLoadProgressCalls > 0);
+	check_equals(state.onLoadCompleteCalls, 1);
+	state.onLoadInitCalls++;
+
+	check_equals(this, mcl);
+
+	// At onLoadInit time the _url parameter is the url of
+	// old target with appended url of new target (?)
+	// So we test if it ends with it instead
+	var indexOfGreenJpeg = target._url.indexOf('green.jpg');
+	var isGreenJpeg = ( (target._url.length - indexOfGreenJpeg) == 9 );
+	if ( isGreenJpeg )
+	{
+		//trace("It's the jpeg go !");
+		with (target)
+		{
+			note("_lockroot: "+_lockroot);
+			note("---- Target's root is "+_root);
+			check_equals(_root, _level0);
+			_lockroot = true;
+			check_equals(_root, _level0.loadtarget);
+			note("---- After setting _lockroot to true, target's root is "+_root);
+			_lockroot = false;
+			check_equals(_root, _level0);
+			note("---- After setting _lockroot to false, target's root is "+_root);
+		}
+		// NOTE: these two tests show the bug preventing
+		//       YouTube active_sharing.swf movie from working
+		check_equals(target._width, 170); 
+		check_equals(target._height, 170);
+	}
+
+	//note("target.var1: "+target.var1);
+	//note("onLoadInit called with "+arguments.length+" args:"); dumpObj(arguments);
+	nextTestOrEnd();
+};
+
+check( ! mcl.loadClip() );
+check( ! mcl.loadClip( MEDIA(vars.txt) ) );
+
+check( ! mcl.loadClip( MEDIA(vars.txt), 'unexistent' ) );
+
+function test1()
+{
+	resetState();
+	state.nextFunction = test2;
+	expected.target = _root.loadtarget;
+	check( mcl.loadClip( MEDIA(unexistent), 'loadtarget' ) );
+}
+
+function test2()
+{
+	resetState();
+	state.nextFunction = test3;
+	expected.target = _root.loadtarget;
+	check( mcl.loadClip( MEDIA(vars.txt), 'loadtarget' ) );
+}
+
+function test3()
+{
+	// getProgress can be called using *any* target
+	// and will return the target's actual size
+	var prog = mcl.getProgress(_level0);
+	check_equals(typeof(prog), 'object');
+	check_equals(prog.__proto__, undefined);
+	check_equals(prog.bytesLoaded, prog.bytesTotal);
+	check_equals(prog.bytesTotal, _level0.getBytesTotal());
+
+	resetState();
+	state.nextFunction = undefined;
+	expected.target = _root.loadtarget;
+
+	// set expected.totals when willing to end the test
+	// we don't know how many times onLoadProgress will be called
+	// so we only count the tests we can determine.
+	// The  onLoadInit function will do the rest, by checking the actual
+	// number of times onLoadProgress was called and add to our expected
+	// count (appropriately multiplied to count *every* test in the
+	// onLoadProgress)
+	//
+	// subtract the number of progress callback runs reported when playing from the totals to get the correct number
+	// BUT MAKE SURE nextTestOrEnd CONTAINS THE CORRECT testsPerProgressCallback INFO !!
+	//
+	expected.totals = 72;
+	// gnash doesn't call onLoadInit if the data at the url is not an SWF or JPG
+	// (or whatever else can become a movie_instance), while the PP does.
+	// So in this testcase, the attempt to load vars.txt is invalid for Gnash
+	// (triggers onLoadError) 
+	// TODO: fix gnash to be compatible and find out if there's anything
+	//       actually dont for loadVariable-like data
+	//
+	expected.failtotals = true;
+
+
+	loadtarget._y = 200;
+	loadtarget._x = 200;
+	loadtarget._alpha = 20;
+	check( mcl.loadClip( MEDIA(green.jpg), 'loadtarget' ) );
+
+}
+
+// Due to a bug in Gnash we must stop() before calling test1.
+// This is because Gnash's version of loadClip is blocking !!
+// TODO: fix it !
+stop();
+
+test1();
+
+#else // OUTPUT_VERSION < 7
+
+totals();
+
+#endif
diff --git a/test/gnash/actionscript.all/pending/MovieClipLoader.as.original b/test/gnash/actionscript.all/pending/MovieClipLoader.as.original
new file mode 100644
index 0000000..a5eeb62
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/MovieClipLoader.as.original
@@ -0,0 +1,347 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+//
+
+// Test case for MovieClipLoader ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: MovieClipLoader.as,v 1.19 2008/03/11 19:31:47 strk Exp $";
+#include "check.as"
+
+//#define MEDIA(x) x
+
+// MovieClipLoader was added in player7
+#if OUTPUT_VERSION >= 7
+
+check_equals(typeOf(MovieClipLoader), 'function');
+check_equals(typeOf(MovieClipLoader.prototype), 'object');
+check(MovieClipLoader.prototype.hasOwnProperty('loadClip'));
+check(MovieClipLoader.prototype.hasOwnProperty('unloadClip'));
+check(MovieClipLoader.prototype.hasOwnProperty('getProgress'));
+check(MovieClipLoader.prototype.hasOwnProperty('addListener'));
+check(MovieClipLoader.prototype.hasOwnProperty('removeListener'));
+check(MovieClipLoader.prototype.hasOwnProperty('broadcastMessage'));
+check_equals(typeOf(MovieClipLoader._listeners), 'undefined');
+
+var mcl = new MovieClipLoader();
+check_equals(typeOf(mcl), 'object');
+check(mcl instanceOf MovieClipLoader);
+
+check_equals(typeOf(mcl.loadClip), 'function');
+check(!mcl.hasOwnProperty('loadClip'));
+
+check_equals(typeOf(mcl.unloadClip), 'function');
+check(!mcl.hasOwnProperty('unloadClip'));
+
+check_equals(typeOf(mcl.getProgress), 'function');
+check(!mcl.hasOwnProperty('getProgress'));
+
+check_equals(typeOf(mcl.addListener), 'function');
+check(!mcl.hasOwnProperty('addListener'));
+
+check_equals(typeOf(mcl.removeListener), 'function');
+check(!mcl.hasOwnProperty('removeListener'));
+
+check_equals(typeOf(mcl.broadcastMessage), 'function');
+check(!mcl.hasOwnProperty('broadcastMessage'));
+
+check_equals(typeOf(mcl._listeners), 'object');
+check(mcl.hasOwnProperty('_listeners'));
+check_equals(mcl._listeners.length, 1);
+check_equals(mcl._listeners[0], mcl);
+
+MovieClipLoader.prototype.bm = MovieClipLoader.prototype.broadcastMessage;
+MovieClipLoader.prototype.broadcastMessage = function(arg1, arg2, arg3, arg4)
+{
+	//note("Broadcasting "+arg1);
+	//this.bm(arg1, arg2, arg3, arg4);
+	this.bm.apply(this, arguments);
+};
+
+//---------------------------------------------------------
+// Test loadClip and events
+//---------------------------------------------------------
+//
+// TODO: test even handlers (actionscript.all framework
+//       not enough for this)
+//
+// Invoked when a file loaded with MovieClipLoader.loadClip() has failed to load.
+// MovieClipLoader.onLoadError
+//
+// Invoked when a call to MovieClipLoader.loadClip() has successfully begun to download a file.
+// MovieClipLoader.onLoadStart
+// 
+// Invoked every time the loading content is written to disk during the loading process.
+// MovieClipLoader.onLoadProgress
+//
+// Invoked when a file loaded with MovieClipLoader.loadClip() has completely downloaded.
+// MovieClipLoader.onLoadComplete
+// 
+// Invoked when the actions on the first frame of the loaded clip have been executed.
+// MovieClipLoader.onLoadInit
+//
+//---------------------------------------------------------
+
+dumpObj = function(o, lvl)
+{
+	if ( typeof(lvl) == 'undefined' ) lvl=0;
+	for (var i in o)
+	{
+		note(lvl+' - '+i+': '+o[i]+' ('+typeof(o[i])+')');
+		if ( typeof(o[i]) == 'object' ) dumpObj(o[i], lvl+1);
+	}
+};
+
+
+createEmptyMovieClip("loadtarget", 10);
+
+expected = {
+	target: undefined
+};
+
+resetState = function()
+{
+	state = {
+		onLoadStartCalls:0,
+		onLoadErrorCalls:0,
+		onLoadProgressCalls:0,
+		onLoadCompleteCalls:0,
+		onLoadInitCalls:0
+	};
+};
+totalProgressCalls=0;
+
+nextTestOrEnd = function()
+{
+	//note("nextTestOrEnd");
+	if ( state.nextFunction == undefined )
+	{
+		// we don't know how many times onLoadProgress will be called
+		// so we have that handler increment a totalProgressCalls and
+		// we use that value to  figure out how many tests to expect to
+		// be run (6 tests each onLoadProgress call).
+		// Note that if we miss to call onLoadProgress at all we'd catch
+		// the bug from supposedly subsequent callbacks, which check for
+		// a local flag set by the onLoadProgress handler.
+		//
+		var testsPerProgressCallback = 15;
+		progCallbackTests = totalProgressCalls*testsPerProgressCallback;
+		note("Number of onLoadProgress runs: "+totalProgressCalls+" - tests: "+progCallbackTests);
+		if ( expected.failtotals ) {
+			// this is failing due to vars.txt not being loaded
+			// (how could it?)
+			xcheck_totals(expected.totals + progCallbackTests);
+		} else {
+			check_totals(expected.totals + progCallbackTests);
+		}
+		play();
+	}
+	else
+	{
+		state.nextFunction();
+	}
+};
+
+mcl.onLoadError = function(target, msg, n)
+{
+	check_equals(arguments.length, 3);
+	check_equals(target, expected.target);
+	note("onLoadError called ("+msg+")");
+	nextTestOrEnd();
+	//dumpObj(arguments);
+};
+
+mcl.onLoadStart = function(target)
+{
+	check_equals(arguments.length, 1);
+	// a bug in Gnash made softrefs always convert
+	// to the empty string when not pointing to
+	// their original target...
+	check(target+"" != "");
+	check_equals(target, expected.target);
+	state.onLoadStartCalls++;
+	note("onLoadStart("+target+", "+target._url+") called");
+	//note("onLoadStart called with "+arguments.length+" args:"); dumpObj(arguments);
+};
+
+mcl.onLoadProgress = function(target, bytesLoaded, bytesTotal)
+{
+	//note("onLoadProgress("+target+", "+target._url+") called");
+
+	check_equals(arguments.length, 3);
+	check_equals(target, expected.target);
+	check_equals(state.onLoadStartCalls, 1);
+	check_equals(typeof(bytesLoaded), 'number')
+	check_equals(typeof(bytesTotal), 'number')
+	check(bytesTotal <= bytesTotal);
+
+	check_equals(this, mcl);
+
+	var tmp = this.getProgress();
+	check_equals(typeof(tmp), 'undefined');
+
+	var prog = this.getProgress(target);
+	check_equals(typeof(prog), 'object');
+	check_equals(prog.__proto__, undefined);
+	check_equals(prog.bytesLoaded, bytesLoaded);
+	check_equals(prog.bytesTotal, bytesTotal);
+	var progcopy = {}; var progcount=0;
+	for (var i in prog) { progcopy[i] = prog[i]; progcount++; }
+	check_equals(progcount, 2);
+	check_equals(progcopy.bytesLoaded, bytesLoaded);
+	check_equals(progcopy.bytesTotal, bytesTotal);
+
+	++state.onLoadProgressCalls;
+	++totalProgressCalls;
+	//note("onLoadProgress called with "+arguments.length+" args:"); dumpObj(arguments);
+};
+
+mcl.onLoadComplete = function(target, n)
+{
+	note("onLoadComplete("+target+", "+target._url+") called");
+	check_equals(arguments.length, 2);
+	check_equals(target, expected.target);
+	check_equals(state.onLoadStartCalls, 1);
+	check(state.onLoadProgressCalls > 0);
+	check_equals(typeof(n), 'number'); // what is this ?
+	state.onLoadCompleteCalls++;
+
+	note("onLoadComplete second arg is "+n+" ("+typeof(n)+")");
+};
+
+mcl.onLoadInit = function(target)
+{
+	note("onLoadInit("+target+", "+target._url+") called");
+	check_equals(arguments.length, 1);
+	check_equals(target, expected.target);
+	check_equals(state.onLoadStartCalls, 1);
+	check(state.onLoadProgressCalls > 0);
+	check_equals(state.onLoadCompleteCalls, 1);
+	state.onLoadInitCalls++;
+
+	check_equals(this, mcl);
+
+	// At onLoadInit time the _url parameter is the url of
+	// old target with appended url of new target (?)
+	// So we test if it ends with it instead
+	var indexOfGreenJpeg = target._url.indexOf('green.jpg');
+	var isGreenJpeg = ( (target._url.length - indexOfGreenJpeg) == 9 );
+	if ( isGreenJpeg )
+	{
+		//trace("It's the jpeg go !");
+		with (target)
+		{
+			note("_lockroot: "+_lockroot);
+			note("---- Target's root is "+_root);
+			check_equals(_root, _level0);
+			_lockroot = true;
+			check_equals(_root, _level0.loadtarget);
+			note("---- After setting _lockroot to true, target's root is "+_root);
+			_lockroot = false;
+			check_equals(_root, _level0);
+			note("---- After setting _lockroot to false, target's root is "+_root);
+		}
+		// NOTE: these two tests show the bug preventing
+		//       YouTube active_sharing.swf movie from working
+		check_equals(target._width, 170); 
+		check_equals(target._height, 170);
+	}
+
+	//note("target.var1: "+target.var1);
+	//note("onLoadInit called with "+arguments.length+" args:"); dumpObj(arguments);
+	nextTestOrEnd();
+};
+
+check( ! mcl.loadClip() );
+check( ! mcl.loadClip( MEDIA(vars.txt) ) );
+
+check( ! mcl.loadClip( MEDIA(vars.txt), 'unexistent' ) );
+
+function test1()
+{
+	resetState();
+	state.nextFunction = test2;
+	expected.target = _root.loadtarget;
+	check( mcl.loadClip( MEDIA(unexistent), 'loadtarget' ) );
+}
+
+function test2()
+{
+	resetState();
+	state.nextFunction = test3;
+	expected.target = _root.loadtarget;
+	check( mcl.loadClip( MEDIA(vars.txt), 'loadtarget' ) );
+}
+
+function test3()
+{
+	// getProgress can be called using *any* target
+	// and will return the target's actual size
+	var prog = mcl.getProgress(_level0);
+	check_equals(typeof(prog), 'object');
+	check_equals(prog.__proto__, undefined);
+	check_equals(prog.bytesLoaded, prog.bytesTotal);
+	check_equals(prog.bytesTotal, _level0.getBytesTotal());
+
+	resetState();
+	state.nextFunction = undefined;
+	expected.target = _root.loadtarget;
+
+	// set expected.totals when willing to end the test
+	// we don't know how many times onLoadProgress will be called
+	// so we only count the tests we can determine.
+	// The  onLoadInit function will do the rest, by checking the actual
+	// number of times onLoadProgress was called and add to our expected
+	// count (appropriately multiplied to count *every* test in the
+	// onLoadProgress)
+	//
+	// subtract the number of progress callback runs reported when playing from the totals to get the correct number
+	// BUT MAKE SURE nextTestOrEnd CONTAINS THE CORRECT testsPerProgressCallback INFO !!
+	//
+	expected.totals = 72;
+	// gnash doesn't call onLoadInit if the data at the url is not an SWF or JPG
+	// (or whatever else can become a movie_instance), while the PP does.
+	// So in this testcase, the attempt to load vars.txt is invalid for Gnash
+	// (triggers onLoadError) 
+	// TODO: fix gnash to be compatible and find out if there's anything
+	//       actually dont for loadVariable-like data
+	//
+	expected.failtotals = true;
+
+
+	loadtarget._y = 200;
+	loadtarget._x = 200;
+	loadtarget._alpha = 20;
+	check( mcl.loadClip( MEDIA(green.jpg), 'loadtarget' ) );
+
+}
+
+// Due to a bug in Gnash we must stop() before calling test1.
+// This is because Gnash's version of loadClip is blocking !!
+// TODO: fix it !
+stop();
+
+test1();
+
+#else // OUTPUT_VERSION < 7
+
+totals();
+
+#endif
commit 7bb6824e49123ead3f16bb896c865a68a8b578e0
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Fri Jul 4 02:17:33 2008 +0300

    Import actionscript.all/XMLNode.as test from Gnash

diff --git a/test/gnash/actionscript.all/Makefile.am b/test/gnash/actionscript.all/Makefile.am
index fec9b91..2ee7dd1 100644
--- a/test/gnash/actionscript.all/Makefile.am
+++ b/test/gnash/actionscript.all/Makefile.am
@@ -155,4 +155,13 @@ EXTRA_DIST = \
 	Video-7.swf.trace \
 	Video-8.swf \
 	Video-8.swf.trace \
-	Video.as
+	Video.as \
+	XMLNode-5.swf \
+	XMLNode-5.swf.trace \
+	XMLNode-6.swf \
+	XMLNode-6.swf.trace \
+	XMLNode-7.swf \
+	XMLNode-7.swf.trace \
+	XMLNode-8.swf \
+	XMLNode-8.swf.trace \
+	XMLNode.as
diff --git a/test/gnash/actionscript.all/XMLNode-5.swf b/test/gnash/actionscript.all/XMLNode-5.swf
new file mode 100644
index 0000000..ec2e987
Binary files /dev/null and b/test/gnash/actionscript.all/XMLNode-5.swf differ
diff --git a/test/gnash/actionscript.all/XMLNode-5.swf.trace b/test/gnash/actionscript.all/XMLNode-5.swf.trace
new file mode 100644
index 0000000..082edef
--- /dev/null
+++ b/test/gnash/actionscript.all/XMLNode-5.swf.trace
@@ -0,0 +1,31 @@
+PASSED: doc [XMLNode.as:30]
+PASSED: typeOf(textnode) == 'object' [XMLNode.as:32]
+PASSED: textnode.appendChild [XMLNode.as:43]
+PASSED: textnode.cloneNode [XMLNode.as:44]
+PASSED: textnode.hasChildNodes [XMLNode.as:45]
+PASSED: textnode.insertBefore [XMLNode.as:46]
+PASSED: textnode.removeNode [XMLNode.as:47]
+PASSED: textnode.toString [XMLNode.as:48]
+PASSED: textnode.nodeName == "foo" [XMLNode.as:53]
+PASSED: textnode.nodeValue == "text content" [XMLNode.as:55]
+PASSED: textnode.nodeValue == "bar" [XMLNode.as:57]
+PASSED: textnode.hasChildNodes() == false [XMLNode.as:61]
+PASSED: typeof(textnode.firstChild) == 'null' [XMLNode.as:62]
+PASSED: typeof(textnode.lastChild) == 'null' [XMLNode.as:63]
+PASSED: typeof(textnode.parentNode) == 'null' [XMLNode.as:64]
+PASSED: typeof(textnode.nextSibling) == 'null' [XMLNode.as:65]
+PASSED: typeof(textnode.previousSibling) == 'null' [XMLNode.as:66]
+PASSED: textnode1.nodeType == 3 [XMLNode.as:75]
+PASSED: node1.hasChildNodes() == true [XMLNode.as:79]
+PASSED: node1.firstChild.nodeValue == "first text node" [XMLNode.as:81]
+PASSED: typeof(node1.lastChild.nodeValue) == 'null' [XMLNode.as:82]
+PASSED: node2.lastChild.toString() == "second text node" [XMLNode.as:83]
+===========================================
+PASSED: node1.firstChild.nodeValue == "first text node" [XMLNode.as:95]
+PASSED: typeof(node1.lastChild.nodeValue) == 'null' [XMLNode.as:96]
+<node2>second text node</node2>
+<node2>second text node</node2>
+PASSED: typeof(node1.firstChild.nodeName) == "null" [XMLNode.as:101]
+PASSED: node1.lastChild.nodeName == "node3" [XMLNode.as:102]
+PASSED: node2.previousSibling.nodeValue == "first text node" [XMLNode.as:104]
+check_totals: 27
diff --git a/test/gnash/actionscript.all/XMLNode-6.swf b/test/gnash/actionscript.all/XMLNode-6.swf
new file mode 100644
index 0000000..833c2b9
Binary files /dev/null and b/test/gnash/actionscript.all/XMLNode-6.swf differ
diff --git a/test/gnash/actionscript.all/XMLNode-6.swf.trace b/test/gnash/actionscript.all/XMLNode-6.swf.trace
new file mode 100644
index 0000000..082edef
--- /dev/null
+++ b/test/gnash/actionscript.all/XMLNode-6.swf.trace
@@ -0,0 +1,31 @@
+PASSED: doc [XMLNode.as:30]
+PASSED: typeOf(textnode) == 'object' [XMLNode.as:32]
+PASSED: textnode.appendChild [XMLNode.as:43]
+PASSED: textnode.cloneNode [XMLNode.as:44]
+PASSED: textnode.hasChildNodes [XMLNode.as:45]
+PASSED: textnode.insertBefore [XMLNode.as:46]
+PASSED: textnode.removeNode [XMLNode.as:47]
+PASSED: textnode.toString [XMLNode.as:48]
+PASSED: textnode.nodeName == "foo" [XMLNode.as:53]
+PASSED: textnode.nodeValue == "text content" [XMLNode.as:55]
+PASSED: textnode.nodeValue == "bar" [XMLNode.as:57]
+PASSED: textnode.hasChildNodes() == false [XMLNode.as:61]
+PASSED: typeof(textnode.firstChild) == 'null' [XMLNode.as:62]
+PASSED: typeof(textnode.lastChild) == 'null' [XMLNode.as:63]
+PASSED: typeof(textnode.parentNode) == 'null' [XMLNode.as:64]
+PASSED: typeof(textnode.nextSibling) == 'null' [XMLNode.as:65]
+PASSED: typeof(textnode.previousSibling) == 'null' [XMLNode.as:66]
+PASSED: textnode1.nodeType == 3 [XMLNode.as:75]
+PASSED: node1.hasChildNodes() == true [XMLNode.as:79]
+PASSED: node1.firstChild.nodeValue == "first text node" [XMLNode.as:81]
+PASSED: typeof(node1.lastChild.nodeValue) == 'null' [XMLNode.as:82]
+PASSED: node2.lastChild.toString() == "second text node" [XMLNode.as:83]
+===========================================
+PASSED: node1.firstChild.nodeValue == "first text node" [XMLNode.as:95]
+PASSED: typeof(node1.lastChild.nodeValue) == 'null' [XMLNode.as:96]
+<node2>second text node</node2>
+<node2>second text node</node2>
+PASSED: typeof(node1.firstChild.nodeName) == "null" [XMLNode.as:101]
+PASSED: node1.lastChild.nodeName == "node3" [XMLNode.as:102]
+PASSED: node2.previousSibling.nodeValue == "first text node" [XMLNode.as:104]
+check_totals: 27
diff --git a/test/gnash/actionscript.all/XMLNode-7.swf b/test/gnash/actionscript.all/XMLNode-7.swf
new file mode 100644
index 0000000..a63b685
Binary files /dev/null and b/test/gnash/actionscript.all/XMLNode-7.swf differ
diff --git a/test/gnash/actionscript.all/XMLNode-7.swf.trace b/test/gnash/actionscript.all/XMLNode-7.swf.trace
new file mode 100644
index 0000000..082edef
--- /dev/null
+++ b/test/gnash/actionscript.all/XMLNode-7.swf.trace
@@ -0,0 +1,31 @@
+PASSED: doc [XMLNode.as:30]
+PASSED: typeOf(textnode) == 'object' [XMLNode.as:32]
+PASSED: textnode.appendChild [XMLNode.as:43]
+PASSED: textnode.cloneNode [XMLNode.as:44]
+PASSED: textnode.hasChildNodes [XMLNode.as:45]
+PASSED: textnode.insertBefore [XMLNode.as:46]
+PASSED: textnode.removeNode [XMLNode.as:47]
+PASSED: textnode.toString [XMLNode.as:48]
+PASSED: textnode.nodeName == "foo" [XMLNode.as:53]
+PASSED: textnode.nodeValue == "text content" [XMLNode.as:55]
+PASSED: textnode.nodeValue == "bar" [XMLNode.as:57]
+PASSED: textnode.hasChildNodes() == false [XMLNode.as:61]
+PASSED: typeof(textnode.firstChild) == 'null' [XMLNode.as:62]
+PASSED: typeof(textnode.lastChild) == 'null' [XMLNode.as:63]
+PASSED: typeof(textnode.parentNode) == 'null' [XMLNode.as:64]
+PASSED: typeof(textnode.nextSibling) == 'null' [XMLNode.as:65]
+PASSED: typeof(textnode.previousSibling) == 'null' [XMLNode.as:66]
+PASSED: textnode1.nodeType == 3 [XMLNode.as:75]
+PASSED: node1.hasChildNodes() == true [XMLNode.as:79]
+PASSED: node1.firstChild.nodeValue == "first text node" [XMLNode.as:81]
+PASSED: typeof(node1.lastChild.nodeValue) == 'null' [XMLNode.as:82]
+PASSED: node2.lastChild.toString() == "second text node" [XMLNode.as:83]
+===========================================
+PASSED: node1.firstChild.nodeValue == "first text node" [XMLNode.as:95]
+PASSED: typeof(node1.lastChild.nodeValue) == 'null' [XMLNode.as:96]
+<node2>second text node</node2>
+<node2>second text node</node2>
+PASSED: typeof(node1.firstChild.nodeName) == "null" [XMLNode.as:101]
+PASSED: node1.lastChild.nodeName == "node3" [XMLNode.as:102]
+PASSED: node2.previousSibling.nodeValue == "first text node" [XMLNode.as:104]
+check_totals: 27
diff --git a/test/gnash/actionscript.all/XMLNode-8.swf b/test/gnash/actionscript.all/XMLNode-8.swf
new file mode 100644
index 0000000..65f0b41
Binary files /dev/null and b/test/gnash/actionscript.all/XMLNode-8.swf differ
diff --git a/test/gnash/actionscript.all/XMLNode-8.swf.trace b/test/gnash/actionscript.all/XMLNode-8.swf.trace
new file mode 100644
index 0000000..082edef
--- /dev/null
+++ b/test/gnash/actionscript.all/XMLNode-8.swf.trace
@@ -0,0 +1,31 @@
+PASSED: doc [XMLNode.as:30]
+PASSED: typeOf(textnode) == 'object' [XMLNode.as:32]
+PASSED: textnode.appendChild [XMLNode.as:43]
+PASSED: textnode.cloneNode [XMLNode.as:44]
+PASSED: textnode.hasChildNodes [XMLNode.as:45]
+PASSED: textnode.insertBefore [XMLNode.as:46]
+PASSED: textnode.removeNode [XMLNode.as:47]
+PASSED: textnode.toString [XMLNode.as:48]
+PASSED: textnode.nodeName == "foo" [XMLNode.as:53]
+PASSED: textnode.nodeValue == "text content" [XMLNode.as:55]
+PASSED: textnode.nodeValue == "bar" [XMLNode.as:57]
+PASSED: textnode.hasChildNodes() == false [XMLNode.as:61]
+PASSED: typeof(textnode.firstChild) == 'null' [XMLNode.as:62]
+PASSED: typeof(textnode.lastChild) == 'null' [XMLNode.as:63]
+PASSED: typeof(textnode.parentNode) == 'null' [XMLNode.as:64]
+PASSED: typeof(textnode.nextSibling) == 'null' [XMLNode.as:65]
+PASSED: typeof(textnode.previousSibling) == 'null' [XMLNode.as:66]
+PASSED: textnode1.nodeType == 3 [XMLNode.as:75]
+PASSED: node1.hasChildNodes() == true [XMLNode.as:79]
+PASSED: node1.firstChild.nodeValue == "first text node" [XMLNode.as:81]
+PASSED: typeof(node1.lastChild.nodeValue) == 'null' [XMLNode.as:82]
+PASSED: node2.lastChild.toString() == "second text node" [XMLNode.as:83]
+===========================================
+PASSED: node1.firstChild.nodeValue == "first text node" [XMLNode.as:95]
+PASSED: typeof(node1.lastChild.nodeValue) == 'null' [XMLNode.as:96]
+<node2>second text node</node2>
+<node2>second text node</node2>
+PASSED: typeof(node1.firstChild.nodeName) == "null" [XMLNode.as:101]
+PASSED: node1.lastChild.nodeName == "node3" [XMLNode.as:102]
+PASSED: node2.previousSibling.nodeValue == "first text node" [XMLNode.as:104]
+check_totals: 27
diff --git a/test/gnash/actionscript.all/XMLNode.as b/test/gnash/actionscript.all/XMLNode.as
new file mode 100644
index 0000000..e6667b2
--- /dev/null
+++ b/test/gnash/actionscript.all/XMLNode.as
@@ -0,0 +1,113 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for XML ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: XMLNode.as,v 1.17 2008/03/11 19:31:48 strk Exp $";
+#include "check.as"
+//#include "dejagnu.as"
+
+var doc = new XML();
+
+check(doc);
+var textnode = doc.createTextNode("text content");
+check_equals(typeOf(textnode), 'object');
+
+// test the XMLNode constuctor
+//dejagnu(node, "XMLNode::XMLNode()");
+
+//note("Test the existance of all the methods");
+
+//check_equals(typeOf(myXML.createElement), 'function');
+
+
+
+check(textnode.appendChild);
+check(textnode.cloneNode);
+check(textnode.hasChildNodes);
+check(textnode.insertBefore);
+check(textnode.removeNode);
+check(textnode.toString);
+
+//note("Now test the functionality of the properties");
+
+textnode.nodeName = "foo";
+check_equals(textnode.nodeName, "foo");
+
+check_equals (textnode.nodeValue, "text content");
+textnode.nodeValue = "bar";
+check_equals (textnode.nodeValue, "bar");
+
+// The read only properties. These should all return NULL, because
+// there are no children.
+check_equals(textnode.hasChildNodes(), false);
+check_equals(typeof(textnode.firstChild), 'null');
+check_equals(typeof(textnode.lastChild), 'null');
+check_equals(typeof(textnode.parentNode), 'null');
+check_equals(typeof(textnode.nextSibling), 'null');
+check_equals(typeof(textnode.previousSibling), 'null');
+
+//note("Now test the functionality of the methods");
+
+
+var node1 = doc.createElement("node1");
+var node2 = doc.createElement("node2");
+var textnode1 = doc.createTextNode("first text node");
+var textnode2 = doc.createTextNode("second text node");
+check_equals(textnode1.nodeType, 3);
+node1.appendChild(textnode1);
+node2.appendChild(textnode2);
+node1.appendChild(node2);
+check_equals(node1.hasChildNodes(), true);
+
+check_equals(node1.firstChild.nodeValue, "first text node");
+check_equals(typeof(node1.lastChild.nodeValue), 'null');
+check_equals(node2.lastChild.toString(), "second text node"); 
+
+var node3 = doc.createElement("node3");
+var textnode3 = doc.createTextNode("third text node");
+node3.appendChild(textnode3);
+node1.appendChild(node3);
+
+// trace(node1.toString());
+trace("===========================================");
+
+// trace(node1.firstChild.nodeValue);
+// trace(node1.lastChild.nodeValue);
+check_equals(node1.firstChild.nodeValue, "first text node");
+check_equals(typeof(node1.lastChild.nodeValue), 'null');
+
+trace(node1.lastChild.previousSibling);
+trace(node1.firstChild.nextSibling);
+
+check_equals(typeof(node1.firstChild.nodeName), "null");
+check_equals(node1.lastChild.nodeName, "node3");
+
+check_equals(node2.previousSibling.nodeValue, "first text node");
+
+// TODO: test removeNode, insertNode
+
+// for (var aNode = node1.firstChild; node1 != null; aNode = node1.nextSibling) {
+//     trace(aNode);
+// }
+
+
+check_totals(27);
commit 2cc95eb4d4ac432303576f165121e5b3153485e5
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Fri Jul 4 02:09:37 2008 +0300

    Import actionscript.all/Random.as test from Gnash
    
    Removed note calls from it, so the trace output is predictable

diff --git a/test/gnash/actionscript.all/Makefile.am b/test/gnash/actionscript.all/Makefile.am
index 238e23a..fec9b91 100644
--- a/test/gnash/actionscript.all/Makefile.am
+++ b/test/gnash/actionscript.all/Makefile.am
@@ -82,6 +82,16 @@ EXTRA_DIST = \
 	Point-8.swf \
 	Point-8.swf.trace \
 	Point.as \
+	Random-5.swf \
+	Random-5.swf.trace \
+	Random-6.swf \
+	Random-6.swf.trace \
+	Random-7.swf \
+	Random-7.swf.trace \
+	Random-8.swf \
+	Random-8.swf.trace \
+	Random.as \
+	Random.as.original \
 	Rectangle-5.swf \
 	Rectangle-5.swf.trace \
 	Rectangle-6.swf \
diff --git a/test/gnash/actionscript.all/Random-5.swf b/test/gnash/actionscript.all/Random-5.swf
new file mode 100644
index 0000000..795d6ce
Binary files /dev/null and b/test/gnash/actionscript.all/Random-5.swf differ
diff --git a/test/gnash/actionscript.all/Random-5.swf.trace b/test/gnash/actionscript.all/Random-5.swf.trace
new file mode 100644
index 0000000..7d89d1b
--- /dev/null
+++ b/test/gnash/actionscript.all/Random-5.swf.trace
@@ -0,0 +1,24 @@
+PASSED: tally[0] > (max / 10) [Random.as:56]
+PASSED: tally[1] > (max / 10) [Random.as:57]
+PASSED: tally[2] > (max / 10) [Random.as:58]
+PASSED: tally[3] > (max / 10) [Random.as:59]
+PASSED: typeof(tally[4]) == "undefined" [Random.as:61]
+PASSED: tally[0] > (max / 10) [Random.as:75]
+PASSED: tally[1] > (max / 10) [Random.as:76]
+PASSED: tally[2] > (max / 10) [Random.as:77]
+PASSED: tally[3] > (max / 10) [Random.as:78]
+PASSED: typeof(tally[4]) == "undefined" [Random.as:80]
+PASSED: tally[0] == max / 5 [Random.as:92]
+PASSED: typeof(tally[1]) == "undefined" [Random.as:93]
+PASSED: typeof(tally[0]) == "undefined" [Random.as:114]
+PASSED: tally[1] > (max / 20) [Random.as:116]
+PASSED: tally[2] > (max / 20) [Random.as:118]
+PASSED: tally[3] > (max / 20) [Random.as:120]
+PASSED: tally[4] > (max / 20) [Random.as:122]
+PASSED: tally[5] > (max / 20) [Random.as:124]
+PASSED: tally[7] > (max / 20) [Random.as:126]
+PASSED: tally[8] > (max / 20) [Random.as:128]
+PASSED: tally[9] > (max / 20) [Random.as:130]
+PASSED: tally[10] > (max / 20) [Random.as:132]
+PASSED: typeof(tally[11]) == "undefined" [Random.as:134]
+check_totals: 24
diff --git a/test/gnash/actionscript.all/Random-6.swf b/test/gnash/actionscript.all/Random-6.swf
new file mode 100644
index 0000000..a1401e3
Binary files /dev/null and b/test/gnash/actionscript.all/Random-6.swf differ
diff --git a/test/gnash/actionscript.all/Random-6.swf.trace b/test/gnash/actionscript.all/Random-6.swf.trace
new file mode 100644
index 0000000..7d89d1b
--- /dev/null
+++ b/test/gnash/actionscript.all/Random-6.swf.trace
@@ -0,0 +1,24 @@
+PASSED: tally[0] > (max / 10) [Random.as:56]
+PASSED: tally[1] > (max / 10) [Random.as:57]
+PASSED: tally[2] > (max / 10) [Random.as:58]
+PASSED: tally[3] > (max / 10) [Random.as:59]
+PASSED: typeof(tally[4]) == "undefined" [Random.as:61]
+PASSED: tally[0] > (max / 10) [Random.as:75]
+PASSED: tally[1] > (max / 10) [Random.as:76]
+PASSED: tally[2] > (max / 10) [Random.as:77]
+PASSED: tally[3] > (max / 10) [Random.as:78]
+PASSED: typeof(tally[4]) == "undefined" [Random.as:80]
+PASSED: tally[0] == max / 5 [Random.as:92]
+PASSED: typeof(tally[1]) == "undefined" [Random.as:93]
+PASSED: typeof(tally[0]) == "undefined" [Random.as:114]
+PASSED: tally[1] > (max / 20) [Random.as:116]
+PASSED: tally[2] > (max / 20) [Random.as:118]
+PASSED: tally[3] > (max / 20) [Random.as:120]
+PASSED: tally[4] > (max / 20) [Random.as:122]
+PASSED: tally[5] > (max / 20) [Random.as:124]
+PASSED: tally[7] > (max / 20) [Random.as:126]
+PASSED: tally[8] > (max / 20) [Random.as:128]
+PASSED: tally[9] > (max / 20) [Random.as:130]
+PASSED: tally[10] > (max / 20) [Random.as:132]
+PASSED: typeof(tally[11]) == "undefined" [Random.as:134]
+check_totals: 24
diff --git a/test/gnash/actionscript.all/Random-7.swf b/test/gnash/actionscript.all/Random-7.swf
new file mode 100644
index 0000000..d0c9126
Binary files /dev/null and b/test/gnash/actionscript.all/Random-7.swf differ
diff --git a/test/gnash/actionscript.all/Random-7.swf.trace b/test/gnash/actionscript.all/Random-7.swf.trace
new file mode 100644
index 0000000..7d89d1b
--- /dev/null
+++ b/test/gnash/actionscript.all/Random-7.swf.trace
@@ -0,0 +1,24 @@
+PASSED: tally[0] > (max / 10) [Random.as:56]
+PASSED: tally[1] > (max / 10) [Random.as:57]
+PASSED: tally[2] > (max / 10) [Random.as:58]
+PASSED: tally[3] > (max / 10) [Random.as:59]
+PASSED: typeof(tally[4]) == "undefined" [Random.as:61]
+PASSED: tally[0] > (max / 10) [Random.as:75]
+PASSED: tally[1] > (max / 10) [Random.as:76]
+PASSED: tally[2] > (max / 10) [Random.as:77]
+PASSED: tally[3] > (max / 10) [Random.as:78]
+PASSED: typeof(tally[4]) == "undefined" [Random.as:80]
+PASSED: tally[0] == max / 5 [Random.as:92]
+PASSED: typeof(tally[1]) == "undefined" [Random.as:93]
+PASSED: typeof(tally[0]) == "undefined" [Random.as:114]
+PASSED: tally[1] > (max / 20) [Random.as:116]
+PASSED: tally[2] > (max / 20) [Random.as:118]
+PASSED: tally[3] > (max / 20) [Random.as:120]
+PASSED: tally[4] > (max / 20) [Random.as:122]
+PASSED: tally[5] > (max / 20) [Random.as:124]
+PASSED: tally[7] > (max / 20) [Random.as:126]
+PASSED: tally[8] > (max / 20) [Random.as:128]
+PASSED: tally[9] > (max / 20) [Random.as:130]
+PASSED: tally[10] > (max / 20) [Random.as:132]
+PASSED: typeof(tally[11]) == "undefined" [Random.as:134]
+check_totals: 24
diff --git a/test/gnash/actionscript.all/Random-8.swf b/test/gnash/actionscript.all/Random-8.swf
new file mode 100644
index 0000000..51d6a6e
Binary files /dev/null and b/test/gnash/actionscript.all/Random-8.swf differ
diff --git a/test/gnash/actionscript.all/Random-8.swf.trace b/test/gnash/actionscript.all/Random-8.swf.trace
new file mode 100644
index 0000000..7d89d1b
--- /dev/null
+++ b/test/gnash/actionscript.all/Random-8.swf.trace
@@ -0,0 +1,24 @@
+PASSED: tally[0] > (max / 10) [Random.as:56]
+PASSED: tally[1] > (max / 10) [Random.as:57]
+PASSED: tally[2] > (max / 10) [Random.as:58]
+PASSED: tally[3] > (max / 10) [Random.as:59]
+PASSED: typeof(tally[4]) == "undefined" [Random.as:61]
+PASSED: tally[0] > (max / 10) [Random.as:75]
+PASSED: tally[1] > (max / 10) [Random.as:76]
+PASSED: tally[2] > (max / 10) [Random.as:77]
+PASSED: tally[3] > (max / 10) [Random.as:78]
+PASSED: typeof(tally[4]) == "undefined" [Random.as:80]
+PASSED: tally[0] == max / 5 [Random.as:92]
+PASSED: typeof(tally[1]) == "undefined" [Random.as:93]
+PASSED: typeof(tally[0]) == "undefined" [Random.as:114]
+PASSED: tally[1] > (max / 20) [Random.as:116]
+PASSED: tally[2] > (max / 20) [Random.as:118]
+PASSED: tally[3] > (max / 20) [Random.as:120]
+PASSED: tally[4] > (max / 20) [Random.as:122]
+PASSED: tally[5] > (max / 20) [Random.as:124]
+PASSED: tally[7] > (max / 20) [Random.as:126]
+PASSED: tally[8] > (max / 20) [Random.as:128]
+PASSED: tally[9] > (max / 20) [Random.as:130]
+PASSED: tally[10] > (max / 20) [Random.as:132]
+PASSED: typeof(tally[11]) == "undefined" [Random.as:134]
+check_totals: 24
diff --git a/test/gnash/actionscript.all/Random.as b/test/gnash/actionscript.all/Random.as
new file mode 100644
index 0000000..e976b1f
--- /dev/null
+++ b/test/gnash/actionscript.all/Random.as
@@ -0,0 +1,137 @@
+// 
+//   Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+//
+// Tests for random behaviour. This tests only the randomness of the output
+// and the range of results. Tests for Math.random() actionscript correctness
+// are in Math.as.
+//
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+// For obvious reasons, tests of randomness can fail even if there is
+// nothing wrong (though with carefully-designed pseudo-randomness this
+// is very unlikely). The chance of a failure is very small if Gnash
+// is working correctly.
+
+rcsid="$Id: Random.as,v 1.5 2008/03/11 19:31:48 strk Exp $";
+#include "check.as"
+
+// Number of random numbers to generate.
+var max = 1000;
+
+/*
+Tests for random(n).
+
+This AS function should return an integer from 0 up to but not
+including n.
+*/
+
+// With n = integer (how it should be used...)
+var tally = new Array();
+
+for (var i = 0; i < max; i++)
+{
+	rnd = random(4);
+	if (typeof(tally[rnd]) == "undefined") { tally[rnd] = 0; }
+	tally[rnd] += 1;
+}
+
+// Check proportion of each number exceeds 10%; should be about
+// 25%.
+check (tally[0] > (max / 10));
+check (tally[1] > (max / 10));
+check (tally[2] > (max / 10));
+check (tally[3] > (max / 10));
+
+check_equals(typeof(tally[4]), "undefined"); // Should not exist
+
+// With n = non-integer
+
+var tally = new Array();
+for (var i = 0; i < max; i++)
+{
+	rnd = random(4.5);
+	if (typeof(tally[rnd]) == "undefined") { tally[rnd] = 0; }
+	tally[rnd] += 1;
+}
+
+// Check proportion of each number exceeds 10%; should be about
+// 25%.
+check (tally[0] > (max / 10));
+check (tally[1] > (max / 10));
+check (tally[2] > (max / 10));
+check (tally[3] > (max / 10));
+
+check_equals(typeof(tally[4]), "undefined"); // Should not exist
+
+// With n = negative number
+
+var tally = new Array();
+for (var i = 0; i < max / 5; i++)
+{
+	rnd = random(-1);
+	if (typeof(tally[rnd]) == "undefined") { tally[rnd] = 0; }
+	tally[rnd] += 1;
+}
+
+check_equals (tally[0], max / 5 );
+check_equals(typeof(tally[1]), "undefined"); // Should not exist
+
+/*
+
+Tests for Math.random()
+
+Returns double n where 0 <= n < 1.
+
+*/
+
+
+// Note: test also relies on Math.round()!
+var tally = new Array();
+
+for (i = 0; i < max; i++)
+{
+	rnd = Math.round(Math.random() * 10 + 0.5);
+	if (typeof(tally[rnd]) == "undefined") { tally[rnd] = 0; }
+	tally[rnd] += 1;
+}
+
+check_equals(typeof(tally[0]), "undefined"); // Should not exist
+
+check (tally[1] > (max / 20));
+
+check (tally[2] > (max / 20));
+
+check (tally[3] > (max / 20));
+
+check (tally[4] > (max / 20));
+
+check (tally[5] > (max / 20));
+
+check (tally[7] > (max / 20));
+
+check (tally[8] > (max / 20));
+
+check (tally[9] > (max / 20));
+
+check (tally[10] > (max / 20));
+
+check_equals(typeof(tally[11]), "undefined"); // Should not exist
+
+/* End of tests */
+check_totals(24);
diff --git a/test/gnash/actionscript.all/Random.as.original b/test/gnash/actionscript.all/Random.as.original
new file mode 100644
index 0000000..1506f4a
--- /dev/null
+++ b/test/gnash/actionscript.all/Random.as.original
@@ -0,0 +1,151 @@
+// 
+//   Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+//
+// Tests for random behaviour. This tests only the randomness of the output
+// and the range of results. Tests for Math.random() actionscript correctness
+// are in Math.as.
+//
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+// For obvious reasons, tests of randomness can fail even if there is
+// nothing wrong (though with carefully-designed pseudo-randomness this
+// is very unlikely). The chance of a failure is very small if Gnash
+// is working correctly.
+
+rcsid="$Id: Random.as,v 1.5 2008/03/11 19:31:48 strk Exp $";
+#include "check.as"
+
+// Number of random numbers to generate.
+var max = 1000;
+
+/*
+Tests for random(n).
+
+This AS function should return an integer from 0 up to but not
+including n.
+*/
+
+// With n = integer (how it should be used...)
+var tally = new Array();
+
+for (var i = 0; i < max; i++)
+{
+	rnd = random(4);
+	if (typeof(tally[rnd]) == "undefined") { tally[rnd] = 0; }
+	tally[rnd] += 1;
+}
+
+// Check proportion of each number exceeds 10%; should be about
+// 25%.
+check (tally[0] > (max / 10));
+check (tally[1] > (max / 10));
+check (tally[2] > (max / 10));
+check (tally[3] > (max / 10));
+
+check_equals(typeof(tally[4]), "undefined"); // Should not exist
+
+// With n = non-integer
+
+var tally = new Array();
+for (var i = 0; i < max; i++)
+{
+	rnd = random(4.5);
+	if (typeof(tally[rnd]) == "undefined") { tally[rnd] = 0; }
+	tally[rnd] += 1;
+}
+
+// Check proportion of each number exceeds 10%; should be about
+// 25%.
+check (tally[0] > (max / 10));
+check (tally[1] > (max / 10));
+check (tally[2] > (max / 10));
+check (tally[3] > (max / 10));
+
+check_equals(typeof(tally[4]), "undefined"); // Should not exist
+
+// With n = negative number
+
+var tally = new Array();
+for (var i = 0; i < max / 5; i++)
+{
+	rnd = random(-1);
+	if (typeof(tally[rnd]) == "undefined") { tally[rnd] = 0; }
+	tally[rnd] += 1;
+}
+
+check_equals (tally[0], max / 5 );
+check_equals(typeof(tally[1]), "undefined"); // Should not exist
+
+/*
+
+Tests for Math.random()
+
+Returns double n where 0 <= n < 1.
+
+*/
+
+
+// Note: test also relies on Math.round()!
+var tally = new Array();
+
+for (i = 0; i < max; i++)
+{
+	rnd = Math.round(Math.random() * 10 + 0.5);
+	if (typeof(tally[rnd]) == "undefined") { tally[rnd] = 0; }
+	tally[rnd] += 1;
+}
+
+check_equals(typeof(tally[0]), "undefined"); // Should not exist
+note(tally[0]);
+
+check (tally[1] > (max / 20));
+note(tally[1]);
+
+check (tally[2] > (max / 20));
+note(tally[2]);
+
+check (tally[3] > (max / 20));
+note(tally[3]);
+
+check (tally[4] > (max / 20));
+note(tally[4]);
+
+check (tally[5] > (max / 20));
+note(tally[5]);
+
+check (tally[6] > (max / 20));
+note(tally[6]);
+
+check (tally[7] > (max / 20));
+note(tally[7]);
+
+check (tally[8] > (max / 20));
+note(tally[8]);
+
+check (tally[9] > (max / 20));
+note(tally[9]);
+
+check (tally[10] > (max / 20));
+note(tally[10]);
+
+check_equals(typeof(tally[11]), "undefined"); // Should not exist
+note(tally[11]);
+
+/* End of tests */
+check_totals(24);
commit 13bee9b9543f353451c83ee00e4bc7370ba33abb
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Fri Jul 4 02:06:22 2008 +0300

    Import some Gnash tests for the test suite. Licensed under GPLv3+
    
    See test/gnash/actionscript.all/README for more information

diff --git a/configure.ac b/configure.ac
index dc68eae..c37afc6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -292,6 +292,9 @@ swfdec-gtk/Makefile
 player/Makefile
 test/Makefile
 test/custom/Makefile
+test/gnash/Makefile
+test/gnash/media/Makefile
+test/gnash/actionscript.all/Makefile
 test/image/Makefile
 test/sound/Makefile
 test/trace/Makefile
diff --git a/test/Makefile.am b/test/Makefile.am
index 0da14f9..886f980 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = custom image sound trace various
+SUBDIRS = custom image sound trace various gnash
 
 noinst_PROGRAMS = swfdec-test
 
diff --git a/test/gnash/COPYING b/test/gnash/COPYING
new file mode 100644
index 0000000..4432540
--- /dev/null
+++ b/test/gnash/COPYING
@@ -0,0 +1,676 @@
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+ 
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+  
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
diff --git a/test/gnash/Makefile.am b/test/gnash/Makefile.am
new file mode 100644
index 0000000..f5e0f73
--- /dev/null
+++ b/test/gnash/Makefile.am
@@ -0,0 +1,5 @@
+SUBDIRS = actionscript.all media
+
+EXTRA_DIST = \
+	COPYING \
+	README
diff --git a/test/gnash/README b/test/gnash/README
new file mode 100644
index 0000000..aeade00
--- /dev/null
+++ b/test/gnash/README
@@ -0,0 +1,5 @@
+This directory contains test cases imported from the Gnash project
+(http://www.gnu.org/software/gnash)
+
+All the tests are licensed under the GNU General Public License version 3 or
+newer, unless otherwise mentioned. See COPYING
diff --git a/test/gnash/actionscript.all/AsBroadcaster-5.swf b/test/gnash/actionscript.all/AsBroadcaster-5.swf
new file mode 100644
index 0000000..53cdcce
Binary files /dev/null and b/test/gnash/actionscript.all/AsBroadcaster-5.swf differ
diff --git a/test/gnash/actionscript.all/AsBroadcaster-5.swf.trace b/test/gnash/actionscript.all/AsBroadcaster-5.swf.trace
new file mode 100644
index 0000000..bbe9f68
--- /dev/null
+++ b/test/gnash/actionscript.all/AsBroadcaster-5.swf.trace
@@ -0,0 +1,5 @@
+NOTE: AsBroadcaster exists but doesn't provide any 'prototype' or 'initialize' for SWF < 6
+PASSED: typeof(AsBroadcaster) == 'function' [AsBroadcaster.as:30]
+XPASSED: typeof(AsBroadcaster.prototype) == 'undefined' [AsBroadcaster.as:31]
+PASSED: typeof(AsBroadcaster.initialize) == 'undefined' [AsBroadcaster.as:32]
+check_totals: 3
diff --git a/test/gnash/actionscript.all/AsBroadcaster-6.swf b/test/gnash/actionscript.all/AsBroadcaster-6.swf
new file mode 100644
index 0000000..e8c70ef
Binary files /dev/null and b/test/gnash/actionscript.all/AsBroadcaster-6.swf differ
diff --git a/test/gnash/actionscript.all/AsBroadcaster-6.swf.trace b/test/gnash/actionscript.all/AsBroadcaster-6.swf.trace
new file mode 100644
index 0000000..a717fb6
--- /dev/null
+++ b/test/gnash/actionscript.all/AsBroadcaster-6.swf.trace
@@ -0,0 +1,109 @@
+PASSED: typeof(AsBroadcaster) == 'function' [AsBroadcaster.as:38]
+PASSED: typeof(AsBroadcaster.prototype) == 'object' [AsBroadcaster.as:39]
+PASSED: AsBroadcaster.__proto__ == Function.prototype [AsBroadcaster.as:40]
+PASSED: typeof(AsBroadcaster.initialize) == 'function' [AsBroadcaster.as:41]
+PASSED: AsBroadcaster.hasOwnProperty('initialize') [AsBroadcaster.as:42]
+PASSED: !AsBroadcaster.prototype.hasOwnProperty('initialize') [AsBroadcaster.as:43]
+PASSED: typeof(AsBroadcaster.addListener) == 'function' [AsBroadcaster.as:49]
+PASSED: AsBroadcaster.hasOwnProperty('addListener') [AsBroadcaster.as:50]
+PASSED: typeof(AsBroadcaster.removeListener) == 'function' [AsBroadcaster.as:51]
+PASSED: AsBroadcaster.hasOwnProperty('removeListener') [AsBroadcaster.as:52]
+PASSED: typeof(AsBroadcaster.broadcastMessage) == 'function' [AsBroadcaster.as:53]
+PASSED: AsBroadcaster.hasOwnProperty('broadcastMessage') [AsBroadcaster.as:54]
+PASSED: typeof(bc) == 'object' [AsBroadcaster.as:57]
+PASSED: bc instanceof AsBroadcaster [AsBroadcaster.as:58]
+PASSED: bc instanceof Object [AsBroadcaster.as:59]
+PASSED: typeof(bc.addListener) == 'undefined' [AsBroadcaster.as:60]
+PASSED: typeof(bc.removeListener) == 'undefined' [AsBroadcaster.as:61]
+PASSED: typeof(bc.broadcastMessage) == 'undefined' [AsBroadcaster.as:62]
+PASSED: typeof(bc.initialize) == 'undefined' [AsBroadcaster.as:63]
+PASSED: typeof(bcast._listeners) == 'undefined' [AsBroadcaster.as:67]
+PASSED: typeof(bcast.addListener) == 'undefined' [AsBroadcaster.as:68]
+PASSED: typeof(bcast.removeListener) == 'undefined' [AsBroadcaster.as:69]
+PASSED: typeof(bcast.broadcastMessage) == 'undefined' [AsBroadcaster.as:70]
+PASSED: typeof(bcast._listeners) == 'object' [AsBroadcaster.as:74]
+PASSED: bcast._listeners instanceof Array [AsBroadcaster.as:75]
+PASSED: bcast._listeners.length == 0 [AsBroadcaster.as:76]
+PASSED: typeof(bcast.addListener) == 'function' [AsBroadcaster.as:77]
+PASSED: typeof(bcast.removeListener) == 'function' [AsBroadcaster.as:78]
+PASSED: typeof(bcast.broadcastMessage) == 'function' [AsBroadcaster.as:79]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:86]
+PASSED: ret == true [AsBroadcaster.as:87]
+PASSED: bcast._listeners.length == 1 [AsBroadcaster.as:88]
+PASSED: bcast._listeners.length == 1 [AsBroadcaster.as:91]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:94]
+PASSED: ret == true [AsBroadcaster.as:95]
+PASSED: bcast._listeners.length == 2 [AsBroadcaster.as:96]
+PASSED: bcast._listeners.length == 2 [AsBroadcaster.as:99]
+PASSED: bcast._listeners.length == 3 [AsBroadcaster.as:101]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:104]
+PASSED: ret == true [AsBroadcaster.as:105]
+PASSED: bcast._listeners.length == 2 [AsBroadcaster.as:106]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:109]
+PASSED: ret == true [AsBroadcaster.as:110]
+PASSED: bcast._listeners.length == 1 [AsBroadcaster.as:111]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:114]
+PASSED: ret == true [AsBroadcaster.as:115]
+PASSED: bcast._listeners.length == 0 [AsBroadcaster.as:116]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:119]
+PASSED: ret == false [AsBroadcaster.as:120]
+PASSED: bcast._listeners.length == 1 [AsBroadcaster.as:124]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:126]
+PASSED: ret == true [AsBroadcaster.as:127]
+PASSED: bcast._listeners.length == 0 [AsBroadcaster.as:128]
+PASSED: typeof(o._listeners) == 'undefined' [AsBroadcaster.as:131]
+PASSED: typeof(o.removeListenerCalled) == 'undefined' [AsBroadcaster.as:132]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:134]
+PASSED: ret == true [AsBroadcaster.as:135]
+PASSED: typeof(o._listeners) == 'undefined' [AsBroadcaster.as:136]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:140]
+PASSED: ret == true [AsBroadcaster.as:141]
+PASSED: typeof(o._listeners) == 'undefined' [AsBroadcaster.as:142]
+PASSED: typeof(o.removeListenerCalled) == 'boolean' [AsBroadcaster.as:143]
+PASSED: o.removeListenerCalled == true [AsBroadcaster.as:144]
+PASSED: o._listeners.pushCalled == true [AsBroadcaster.as:154]
+PASSED: o._listeners.length == 2 [AsBroadcaster.as:155]
+PASSED: o._listeners.spliceCalled == true [AsBroadcaster.as:156]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:175]
+PASSED: ret == true [AsBroadcaster.as:176]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:178]
+PASSED: ret == true [AsBroadcaster.as:179]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:182]
+PASSED: ret == true [AsBroadcaster.as:183]
+PASSED: a.order == 1 [AsBroadcaster.as:184]
+PASSED: b.order == 2 [AsBroadcaster.as:185]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:188]
+PASSED: ret == true [AsBroadcaster.as:189]
+PASSED: a.order == 3 [AsBroadcaster.as:192]
+PASSED: b.order == 4 [AsBroadcaster.as:193]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:196]
+PASSED: ret == true [AsBroadcaster.as:197]
+PASSED: b.order == 5 [AsBroadcaster.as:200]
+PASSED: a.order == 6 [AsBroadcaster.as:201]
+PASSED: b.order == 7 [AsBroadcaster.as:206]
+PASSED: a.order == 9 [AsBroadcaster.as:207]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:212]
+PASSED: ret == true [AsBroadcaster.as:213]
+PASSED: b.order == 10 [AsBroadcaster.as:214]
+PASSED: a.order == 12 [AsBroadcaster.as:215]
+PASSED: b.order == 16 [AsBroadcaster.as:220]
+PASSED: a.order == 15 [AsBroadcaster.as:221]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:224]
+PASSED: ret == true [AsBroadcaster.as:225]
+PASSED: a.order == 18 [AsBroadcaster.as:228]
+PASSED: b.order == 20 [AsBroadcaster.as:229]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:232]
+PASSED: ret == true [AsBroadcaster.as:233]
+PASSED: bcast._listeners.length == 3 [AsBroadcaster.as:234]
+PASSED: a.order == 22 [AsBroadcaster.as:236]
+PASSED: b.order == 23 [AsBroadcaster.as:237]
+PASSED: ret == true [AsBroadcaster.as:240]
+PASSED: typeof(ret) == 'undefined' [AsBroadcaster.as:243]
+PASSED: _root.total == 3 [AsBroadcaster.as:267]
+PASSED: _root.total == 5 [AsBroadcaster.as:269]
+PASSED: _root.total == 10 [AsBroadcaster.as:271]
+PASSED: _root.total == 36 [AsBroadcaster.as:273]
+PASSED: _root.total == '0onetwothree' [AsBroadcaster.as:275]
+PASSED: o.msg == "AB" [AsBroadcaster.as:290]
+PASSED: o.msg == "AB" [AsBroadcaster.as:296]
+check_totals: 108
diff --git a/test/gnash/actionscript.all/AsBroadcaster-7.swf b/test/gnash/actionscript.all/AsBroadcaster-7.swf
new file mode 100644
index 0000000..f6a20da
Binary files /dev/null and b/test/gnash/actionscript.all/AsBroadcaster-7.swf differ
diff --git a/test/gnash/actionscript.all/AsBroadcaster-7.swf.trace b/test/gnash/actionscript.all/AsBroadcaster-7.swf.trace
new file mode 100644
index 0000000..a717fb6
--- /dev/null
+++ b/test/gnash/actionscript.all/AsBroadcaster-7.swf.trace
@@ -0,0 +1,109 @@
+PASSED: typeof(AsBroadcaster) == 'function' [AsBroadcaster.as:38]
+PASSED: typeof(AsBroadcaster.prototype) == 'object' [AsBroadcaster.as:39]
+PASSED: AsBroadcaster.__proto__ == Function.prototype [AsBroadcaster.as:40]
+PASSED: typeof(AsBroadcaster.initialize) == 'function' [AsBroadcaster.as:41]
+PASSED: AsBroadcaster.hasOwnProperty('initialize') [AsBroadcaster.as:42]
+PASSED: !AsBroadcaster.prototype.hasOwnProperty('initialize') [AsBroadcaster.as:43]
+PASSED: typeof(AsBroadcaster.addListener) == 'function' [AsBroadcaster.as:49]
+PASSED: AsBroadcaster.hasOwnProperty('addListener') [AsBroadcaster.as:50]
+PASSED: typeof(AsBroadcaster.removeListener) == 'function' [AsBroadcaster.as:51]
+PASSED: AsBroadcaster.hasOwnProperty('removeListener') [AsBroadcaster.as:52]
+PASSED: typeof(AsBroadcaster.broadcastMessage) == 'function' [AsBroadcaster.as:53]
+PASSED: AsBroadcaster.hasOwnProperty('broadcastMessage') [AsBroadcaster.as:54]
+PASSED: typeof(bc) == 'object' [AsBroadcaster.as:57]
+PASSED: bc instanceof AsBroadcaster [AsBroadcaster.as:58]
+PASSED: bc instanceof Object [AsBroadcaster.as:59]
+PASSED: typeof(bc.addListener) == 'undefined' [AsBroadcaster.as:60]
+PASSED: typeof(bc.removeListener) == 'undefined' [AsBroadcaster.as:61]
+PASSED: typeof(bc.broadcastMessage) == 'undefined' [AsBroadcaster.as:62]
+PASSED: typeof(bc.initialize) == 'undefined' [AsBroadcaster.as:63]
+PASSED: typeof(bcast._listeners) == 'undefined' [AsBroadcaster.as:67]
+PASSED: typeof(bcast.addListener) == 'undefined' [AsBroadcaster.as:68]
+PASSED: typeof(bcast.removeListener) == 'undefined' [AsBroadcaster.as:69]
+PASSED: typeof(bcast.broadcastMessage) == 'undefined' [AsBroadcaster.as:70]
+PASSED: typeof(bcast._listeners) == 'object' [AsBroadcaster.as:74]
+PASSED: bcast._listeners instanceof Array [AsBroadcaster.as:75]
+PASSED: bcast._listeners.length == 0 [AsBroadcaster.as:76]
+PASSED: typeof(bcast.addListener) == 'function' [AsBroadcaster.as:77]
+PASSED: typeof(bcast.removeListener) == 'function' [AsBroadcaster.as:78]
+PASSED: typeof(bcast.broadcastMessage) == 'function' [AsBroadcaster.as:79]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:86]
+PASSED: ret == true [AsBroadcaster.as:87]
+PASSED: bcast._listeners.length == 1 [AsBroadcaster.as:88]
+PASSED: bcast._listeners.length == 1 [AsBroadcaster.as:91]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:94]
+PASSED: ret == true [AsBroadcaster.as:95]
+PASSED: bcast._listeners.length == 2 [AsBroadcaster.as:96]
+PASSED: bcast._listeners.length == 2 [AsBroadcaster.as:99]
+PASSED: bcast._listeners.length == 3 [AsBroadcaster.as:101]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:104]
+PASSED: ret == true [AsBroadcaster.as:105]
+PASSED: bcast._listeners.length == 2 [AsBroadcaster.as:106]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:109]
+PASSED: ret == true [AsBroadcaster.as:110]
+PASSED: bcast._listeners.length == 1 [AsBroadcaster.as:111]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:114]
+PASSED: ret == true [AsBroadcaster.as:115]
+PASSED: bcast._listeners.length == 0 [AsBroadcaster.as:116]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:119]
+PASSED: ret == false [AsBroadcaster.as:120]
+PASSED: bcast._listeners.length == 1 [AsBroadcaster.as:124]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:126]
+PASSED: ret == true [AsBroadcaster.as:127]
+PASSED: bcast._listeners.length == 0 [AsBroadcaster.as:128]
+PASSED: typeof(o._listeners) == 'undefined' [AsBroadcaster.as:131]
+PASSED: typeof(o.removeListenerCalled) == 'undefined' [AsBroadcaster.as:132]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:134]
+PASSED: ret == true [AsBroadcaster.as:135]
+PASSED: typeof(o._listeners) == 'undefined' [AsBroadcaster.as:136]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:140]
+PASSED: ret == true [AsBroadcaster.as:141]
+PASSED: typeof(o._listeners) == 'undefined' [AsBroadcaster.as:142]
+PASSED: typeof(o.removeListenerCalled) == 'boolean' [AsBroadcaster.as:143]
+PASSED: o.removeListenerCalled == true [AsBroadcaster.as:144]
+PASSED: o._listeners.pushCalled == true [AsBroadcaster.as:154]
+PASSED: o._listeners.length == 2 [AsBroadcaster.as:155]
+PASSED: o._listeners.spliceCalled == true [AsBroadcaster.as:156]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:175]
+PASSED: ret == true [AsBroadcaster.as:176]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:178]
+PASSED: ret == true [AsBroadcaster.as:179]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:182]
+PASSED: ret == true [AsBroadcaster.as:183]
+PASSED: a.order == 1 [AsBroadcaster.as:184]
+PASSED: b.order == 2 [AsBroadcaster.as:185]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:188]
+PASSED: ret == true [AsBroadcaster.as:189]
+PASSED: a.order == 3 [AsBroadcaster.as:192]
+PASSED: b.order == 4 [AsBroadcaster.as:193]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:196]
+PASSED: ret == true [AsBroadcaster.as:197]
+PASSED: b.order == 5 [AsBroadcaster.as:200]
+PASSED: a.order == 6 [AsBroadcaster.as:201]
+PASSED: b.order == 7 [AsBroadcaster.as:206]
+PASSED: a.order == 9 [AsBroadcaster.as:207]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:212]
+PASSED: ret == true [AsBroadcaster.as:213]
+PASSED: b.order == 10 [AsBroadcaster.as:214]
+PASSED: a.order == 12 [AsBroadcaster.as:215]
+PASSED: b.order == 16 [AsBroadcaster.as:220]
+PASSED: a.order == 15 [AsBroadcaster.as:221]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:224]
+PASSED: ret == true [AsBroadcaster.as:225]
+PASSED: a.order == 18 [AsBroadcaster.as:228]
+PASSED: b.order == 20 [AsBroadcaster.as:229]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:232]
+PASSED: ret == true [AsBroadcaster.as:233]
+PASSED: bcast._listeners.length == 3 [AsBroadcaster.as:234]
+PASSED: a.order == 22 [AsBroadcaster.as:236]
+PASSED: b.order == 23 [AsBroadcaster.as:237]
+PASSED: ret == true [AsBroadcaster.as:240]
+PASSED: typeof(ret) == 'undefined' [AsBroadcaster.as:243]
+PASSED: _root.total == 3 [AsBroadcaster.as:267]
+PASSED: _root.total == 5 [AsBroadcaster.as:269]
+PASSED: _root.total == 10 [AsBroadcaster.as:271]
+PASSED: _root.total == 36 [AsBroadcaster.as:273]
+PASSED: _root.total == '0onetwothree' [AsBroadcaster.as:275]
+PASSED: o.msg == "AB" [AsBroadcaster.as:290]
+PASSED: o.msg == "AB" [AsBroadcaster.as:296]
+check_totals: 108
diff --git a/test/gnash/actionscript.all/AsBroadcaster-8.swf b/test/gnash/actionscript.all/AsBroadcaster-8.swf
new file mode 100644
index 0000000..73dfb58
Binary files /dev/null and b/test/gnash/actionscript.all/AsBroadcaster-8.swf differ
diff --git a/test/gnash/actionscript.all/AsBroadcaster-8.swf.trace b/test/gnash/actionscript.all/AsBroadcaster-8.swf.trace
new file mode 100644
index 0000000..a717fb6
--- /dev/null
+++ b/test/gnash/actionscript.all/AsBroadcaster-8.swf.trace
@@ -0,0 +1,109 @@
+PASSED: typeof(AsBroadcaster) == 'function' [AsBroadcaster.as:38]
+PASSED: typeof(AsBroadcaster.prototype) == 'object' [AsBroadcaster.as:39]
+PASSED: AsBroadcaster.__proto__ == Function.prototype [AsBroadcaster.as:40]
+PASSED: typeof(AsBroadcaster.initialize) == 'function' [AsBroadcaster.as:41]
+PASSED: AsBroadcaster.hasOwnProperty('initialize') [AsBroadcaster.as:42]
+PASSED: !AsBroadcaster.prototype.hasOwnProperty('initialize') [AsBroadcaster.as:43]
+PASSED: typeof(AsBroadcaster.addListener) == 'function' [AsBroadcaster.as:49]
+PASSED: AsBroadcaster.hasOwnProperty('addListener') [AsBroadcaster.as:50]
+PASSED: typeof(AsBroadcaster.removeListener) == 'function' [AsBroadcaster.as:51]
+PASSED: AsBroadcaster.hasOwnProperty('removeListener') [AsBroadcaster.as:52]
+PASSED: typeof(AsBroadcaster.broadcastMessage) == 'function' [AsBroadcaster.as:53]
+PASSED: AsBroadcaster.hasOwnProperty('broadcastMessage') [AsBroadcaster.as:54]
+PASSED: typeof(bc) == 'object' [AsBroadcaster.as:57]
+PASSED: bc instanceof AsBroadcaster [AsBroadcaster.as:58]
+PASSED: bc instanceof Object [AsBroadcaster.as:59]
+PASSED: typeof(bc.addListener) == 'undefined' [AsBroadcaster.as:60]
+PASSED: typeof(bc.removeListener) == 'undefined' [AsBroadcaster.as:61]
+PASSED: typeof(bc.broadcastMessage) == 'undefined' [AsBroadcaster.as:62]
+PASSED: typeof(bc.initialize) == 'undefined' [AsBroadcaster.as:63]
+PASSED: typeof(bcast._listeners) == 'undefined' [AsBroadcaster.as:67]
+PASSED: typeof(bcast.addListener) == 'undefined' [AsBroadcaster.as:68]
+PASSED: typeof(bcast.removeListener) == 'undefined' [AsBroadcaster.as:69]
+PASSED: typeof(bcast.broadcastMessage) == 'undefined' [AsBroadcaster.as:70]
+PASSED: typeof(bcast._listeners) == 'object' [AsBroadcaster.as:74]
+PASSED: bcast._listeners instanceof Array [AsBroadcaster.as:75]
+PASSED: bcast._listeners.length == 0 [AsBroadcaster.as:76]
+PASSED: typeof(bcast.addListener) == 'function' [AsBroadcaster.as:77]
+PASSED: typeof(bcast.removeListener) == 'function' [AsBroadcaster.as:78]
+PASSED: typeof(bcast.broadcastMessage) == 'function' [AsBroadcaster.as:79]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:86]
+PASSED: ret == true [AsBroadcaster.as:87]
+PASSED: bcast._listeners.length == 1 [AsBroadcaster.as:88]
+PASSED: bcast._listeners.length == 1 [AsBroadcaster.as:91]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:94]
+PASSED: ret == true [AsBroadcaster.as:95]
+PASSED: bcast._listeners.length == 2 [AsBroadcaster.as:96]
+PASSED: bcast._listeners.length == 2 [AsBroadcaster.as:99]
+PASSED: bcast._listeners.length == 3 [AsBroadcaster.as:101]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:104]
+PASSED: ret == true [AsBroadcaster.as:105]
+PASSED: bcast._listeners.length == 2 [AsBroadcaster.as:106]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:109]
+PASSED: ret == true [AsBroadcaster.as:110]
+PASSED: bcast._listeners.length == 1 [AsBroadcaster.as:111]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:114]
+PASSED: ret == true [AsBroadcaster.as:115]
+PASSED: bcast._listeners.length == 0 [AsBroadcaster.as:116]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:119]
+PASSED: ret == false [AsBroadcaster.as:120]
+PASSED: bcast._listeners.length == 1 [AsBroadcaster.as:124]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:126]
+PASSED: ret == true [AsBroadcaster.as:127]
+PASSED: bcast._listeners.length == 0 [AsBroadcaster.as:128]
+PASSED: typeof(o._listeners) == 'undefined' [AsBroadcaster.as:131]
+PASSED: typeof(o.removeListenerCalled) == 'undefined' [AsBroadcaster.as:132]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:134]
+PASSED: ret == true [AsBroadcaster.as:135]
+PASSED: typeof(o._listeners) == 'undefined' [AsBroadcaster.as:136]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:140]
+PASSED: ret == true [AsBroadcaster.as:141]
+PASSED: typeof(o._listeners) == 'undefined' [AsBroadcaster.as:142]
+PASSED: typeof(o.removeListenerCalled) == 'boolean' [AsBroadcaster.as:143]
+PASSED: o.removeListenerCalled == true [AsBroadcaster.as:144]
+PASSED: o._listeners.pushCalled == true [AsBroadcaster.as:154]
+PASSED: o._listeners.length == 2 [AsBroadcaster.as:155]
+PASSED: o._listeners.spliceCalled == true [AsBroadcaster.as:156]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:175]
+PASSED: ret == true [AsBroadcaster.as:176]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:178]
+PASSED: ret == true [AsBroadcaster.as:179]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:182]
+PASSED: ret == true [AsBroadcaster.as:183]
+PASSED: a.order == 1 [AsBroadcaster.as:184]
+PASSED: b.order == 2 [AsBroadcaster.as:185]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:188]
+PASSED: ret == true [AsBroadcaster.as:189]
+PASSED: a.order == 3 [AsBroadcaster.as:192]
+PASSED: b.order == 4 [AsBroadcaster.as:193]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:196]
+PASSED: ret == true [AsBroadcaster.as:197]
+PASSED: b.order == 5 [AsBroadcaster.as:200]
+PASSED: a.order == 6 [AsBroadcaster.as:201]
+PASSED: b.order == 7 [AsBroadcaster.as:206]
+PASSED: a.order == 9 [AsBroadcaster.as:207]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:212]
+PASSED: ret == true [AsBroadcaster.as:213]
+PASSED: b.order == 10 [AsBroadcaster.as:214]
+PASSED: a.order == 12 [AsBroadcaster.as:215]
+PASSED: b.order == 16 [AsBroadcaster.as:220]
+PASSED: a.order == 15 [AsBroadcaster.as:221]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:224]
+PASSED: ret == true [AsBroadcaster.as:225]
+PASSED: a.order == 18 [AsBroadcaster.as:228]
+PASSED: b.order == 20 [AsBroadcaster.as:229]
+PASSED: typeof(ret) == 'boolean' [AsBroadcaster.as:232]
+PASSED: ret == true [AsBroadcaster.as:233]
+PASSED: bcast._listeners.length == 3 [AsBroadcaster.as:234]
+PASSED: a.order == 22 [AsBroadcaster.as:236]
+PASSED: b.order == 23 [AsBroadcaster.as:237]
+PASSED: ret == true [AsBroadcaster.as:240]
+PASSED: typeof(ret) == 'undefined' [AsBroadcaster.as:243]
+PASSED: _root.total == 3 [AsBroadcaster.as:267]
+PASSED: _root.total == 5 [AsBroadcaster.as:269]
+PASSED: _root.total == 10 [AsBroadcaster.as:271]
+PASSED: _root.total == 36 [AsBroadcaster.as:273]
+PASSED: _root.total == '0onetwothree' [AsBroadcaster.as:275]
+PASSED: o.msg == "AB" [AsBroadcaster.as:290]
+PASSED: o.msg == "AB" [AsBroadcaster.as:296]
+check_totals: 108
diff --git a/test/gnash/actionscript.all/AsBroadcaster.as b/test/gnash/actionscript.all/AsBroadcaster.as
new file mode 100644
index 0000000..661ced5
--- /dev/null
+++ b/test/gnash/actionscript.all/AsBroadcaster.as
@@ -0,0 +1,308 @@
+// 
+//   Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+// Test case for TextField ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: AsBroadcaster.as,v 1.10 2008/06/17 18:05:42 strk Exp $";
+#include "check.as"
+
+#if OUTPUT_VERSION < 6
+
+note("AsBroadcaster exists but doesn't provide any 'prototype' or 'initialize' for SWF < 6");
+
+check_equals(typeof(AsBroadcaster), 'function'); // ???
+xcheck_equals(typeof(AsBroadcaster.prototype), 'undefined'); 
+check_equals(typeof(AsBroadcaster.initialize), 'undefined');
+
+check_totals(3);
+
+#else // OUTPUT_VERSION >= 6
+
+check_equals(typeof(AsBroadcaster), 'function'); // ???
+check_equals(typeof(AsBroadcaster.prototype), 'object'); 
+check_equals(AsBroadcaster.__proto__, Function.prototype); 
+check_equals(typeof(AsBroadcaster.initialize), 'function');
+check(AsBroadcaster.hasOwnProperty('initialize'));
+check(!AsBroadcaster.prototype.hasOwnProperty('initialize'));
+
+// These functions are available as AsBroadcaster "statics"
+// and a lookup should be issued by 'initalize' so that overridden
+// functions are attached to the initialized object rather then
+// the original one (from swfdec/test/trace/asbroadcaster-override.as)
+check_equals(typeof(AsBroadcaster.addListener), 'function');
+check(AsBroadcaster.hasOwnProperty('addListener'));
+check_equals(typeof(AsBroadcaster.removeListener), 'function');
+check(AsBroadcaster.hasOwnProperty('removeListener'));
+check_equals(typeof(AsBroadcaster.broadcastMessage), 'function');
+check(AsBroadcaster.hasOwnProperty('broadcastMessage'));
+
+bc = new AsBroadcaster;
+check_equals(typeof(bc), 'object');
+check(bc instanceof AsBroadcaster);
+check(bc instanceof Object);
+check_equals(typeof(bc.addListener), 'undefined');
+check_equals(typeof(bc.removeListener), 'undefined');
+check_equals(typeof(bc.broadcastMessage), 'undefined');
+check_equals(typeof(bc.initialize), 'undefined');
+
+bcast = new Object;
+
+check_equals(typeof(bcast._listeners), 'undefined');
+check_equals(typeof(bcast.addListener), 'undefined');
+check_equals(typeof(bcast.removeListener), 'undefined');
+check_equals(typeof(bcast.broadcastMessage), 'undefined');
+
+AsBroadcaster.initialize(bcast);
+
+check_equals(typeof(bcast._listeners), 'object');
+check(bcast._listeners instanceof Array);
+check_equals(bcast._listeners.length, 0);
+check_equals(typeof(bcast.addListener), 'function');
+check_equals(typeof(bcast.removeListener), 'function');
+check_equals(typeof(bcast.broadcastMessage), 'function');
+
+//--------------------------------
+// Some insane calls...
+//--------------------------------
+
+ret = bcast.addListener();
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(bcast._listeners.length, 1); // !!
+
+ret = bcast.addListener();
+check_equals(bcast._listeners.length, 1); // undefined was already there as an element...
+
+ret = bcast.addListener(2);
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(bcast._listeners.length, 2); // !!
+
+ret = bcast.addListener(2);
+check_equals(bcast._listeners.length, 2); // 2 was already there as an element ...
+ret = bcast.addListener(3);
+check_equals(bcast._listeners.length, 3); // 3 is a new element
+
+ret = bcast.removeListener(); // will remove the undefined value !
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(bcast._listeners.length, 2); // element 'undefined' was removed
+
+ret = bcast.removeListener(2); // will remove the element number:2 !
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(bcast._listeners.length, 1); // element '2' was removed
+
+ret = bcast.removeListener(3); // will remove the element number:3 !
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(bcast._listeners.length, 0); // element '3' was removed
+
+ret = bcast.removeListener(); // no such element ?
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, false);
+
+o = new Object; o.valueOf = function() { return 'yes I am'; };
+bcast.addListener(o);
+check_equals(bcast._listeners.length, 1); 
+ret = bcast.removeListener('yes I am'); // valueOf invoked
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(bcast._listeners.length, 0); // element '3' was removed
+
+o.addListener = bcast.addListener;
+check_equals(typeof(o._listeners), 'undefined');
+check_equals(typeof(o.removeListenerCalled), 'undefined');
+ret = o.addListener(); // automatically attempts to call o.removeListener()
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(typeof(o._listeners), 'undefined');
+
+o.removeListener = function() { this.removeListenerCalled = true; };
+ret = o.addListener(); // automatically calls o.removeListener()
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(typeof(o._listeners), 'undefined');
+check_equals(typeof(o.removeListenerCalled), 'boolean');
+check_equals(o.removeListenerCalled, true);
+
+o.removeListener = bcast.removeListener;
+o._listeners = new Object();
+o._listeners.push = function() { this.pushCalled = true; this.length++; };
+o._listeners.splice = function() { this.spliceCalled = true; };
+o._listeners.length = 1;
+o._listeners['0'] = 5;
+ret = o.addListener(5); // automatically calls o._listeners.splice and o._listeners.push
+// Gnash fails as it gives up if _listeners isn't an array
+check_equals(o._listeners.pushCalled, true);
+check_equals(o._listeners.length, 2);
+check_equals(o._listeners.spliceCalled, true);
+
+
+//--------------------------------
+// A bit more sane calls...
+//--------------------------------
+
+counter = 0;
+
+onTest = function()
+{
+	//note(" Called "+this.name+".onTest (order "+this.order+"->"+(counter+1)+")");
+	this.order = ++counter;
+};
+
+a = new Object; a.name = 'a'; a.onTest = onTest;
+b = new Object; b.name = 'b'; b.onTest = onTest;
+
+ret = bcast.addListener(a);
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+ret = bcast.addListener(b);
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+//note("Broadcasting");
+ret = bcast.broadcastMessage('onTest');
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(a.order, 1);
+check_equals(b.order, 2);
+
+ret = bcast.addListener(b); // b is not added again
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+//note("Broadcasting");
+bcast.broadcastMessage('onTest');
+check_equals(a.order, 3);
+check_equals(b.order, 4);
+
+ret = bcast.addListener(a); // listener a is moved from first to last position to _listeners
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+//note("Broadcasting");
+bcast.broadcastMessage('onTest');
+check_equals(b.order, 5);
+check_equals(a.order, 6);
+
+bcast._listeners.push(a); // force double a listener
+//note("Broadcasting");
+bcast.broadcastMessage('onTest');
+check_equals(b.order, 7);
+check_equals(a.order, 9); // a.order was set twice
+
+bcast.addListener(a); // first a is moved from first to last position to _listeners
+//note("Broadcasting");
+ret = bcast.broadcastMessage('onTest');
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(b.order, 10);
+check_equals(a.order, 12); // a is still set twice
+
+bcast._listeners.push(b); // force double b, order should now be: b,a,a,b
+//note("Broadcasting");
+bcast.broadcastMessage('onTest');
+check_equals(b.order, 16); 
+check_equals(a.order, 15); 
+
+ret = bcast.addListener(b); // *first* b is removed, another one added, new order is a,a,b,b
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+//note("Broadcasting");
+bcast.broadcastMessage('onTest');
+check_equals(a.order, 18); 
+check_equals(b.order, 20);
+
+ret = bcast.removeListener(b); // only first is removed
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(bcast._listeners.length, 3); // expect: a,a,b
+bcast.broadcastMessage('onTest');
+check_equals(a.order, 22); 
+check_equals(b.order, 23);
+
+ret = bcast.broadcastMessage('onUnexistent');
+check_equals(ret, true);
+bcast._listeners.length=0;
+ret = bcast.broadcastMessage('onUnexistent');
+check_equals(typeof(ret), 'undefined');
+
+//--------------------------------
+// broadcastMessage with args
+//--------------------------------
+
+_root.total = 0;
+o = {};
+o.addThis = function(what)
+{
+	//note("Arg0 is "+what);
+	_root.total += what;
+};
+o.setSum = function()
+{
+	_root.total = 0;
+	for (var i=0; i< arguments.length; ++i)
+	{
+		//note("Arg "+i+" is "+arguments[i]);
+		_root.total += arguments[i];
+	}
+};
+bcast.addListener(o);
+bcast.broadcastMessage('addThis', 3);
+check_equals(_root.total, 3);
+bcast.broadcastMessage('addThis', 2);
+check_equals(_root.total, 5);
+bcast.broadcastMessage('setSum', 1, 2, 3, 4);
+check_equals(_root.total, 10);
+bcast.broadcastMessage('setSum', 1, 2, 3, 4, 5, 6, 7, 8);
+check_equals(_root.total, 36);
+bcast.broadcastMessage('setSum', 'one', 'two', 'three');
+check_equals(_root.total, '0onetwothree');
+
+//--------------------------------
+// event handlers calling super
+//--------------------------------
+
+function A1() {}
+A1.prototype.add = function(o) { o.msg += 'A'; };
+function B1() {}
+B1.prototype = new A1;
+B1.prototype.add = function(o) { super.add(o); o.msg += 'B'; };
+
+bobj = new B1;
+o = { msg:'' };
+bobj.add(o);
+check_equals(o.msg, "AB");
+o.msg = '';
+
+bcast._listeners.length=0;
+bcast.addListener(bobj);
+bcast.broadcastMessage('add', o);
+check_equals(o.msg, "AB");
+
+//-----------------------------------------------------------------------------------
+// TODO: test override of AsBroadcaster.{addListener,removeListener,broadcastMessage}
+// swfdec contains tests for this, which should now be pretty succeeding except for
+// not-directly related checks which trigger failure due to all-or-nothing nature of
+// the swfdec testsuite.
+// See swfdec/test/trace/asbroadcaster-override.as for more info
+//-----------------------------------------------------------------------------------
+
+check_totals(108);
+
+#endif // OUTPUT_VERSION < 6
diff --git a/test/gnash/actionscript.all/AsBroadcaster.as.original b/test/gnash/actionscript.all/AsBroadcaster.as.original
new file mode 100644
index 0000000..223aaec
--- /dev/null
+++ b/test/gnash/actionscript.all/AsBroadcaster.as.original
@@ -0,0 +1,309 @@
+// 
+//   Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+// Test case for TextField ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: AsBroadcaster.as,v 1.10 2008/06/17 18:05:42 strk Exp $";
+#include "check.as"
+
+#if OUTPUT_VERSION < 6
+
+note();
+note("AsBroadcaster exists but doesn't provide any 'prototype' or 'initialize' for SWF < 6");
+
+check_equals(typeof(AsBroadcaster), 'function'); // ???
+xcheck_equals(typeof(AsBroadcaster.prototype), 'undefined'); 
+check_equals(typeof(AsBroadcaster.initialize), 'undefined');
+
+check_totals(3);
+
+#else // OUTPUT_VERSION >= 6
+
+check_equals(typeof(AsBroadcaster), 'function'); // ???
+check_equals(typeof(AsBroadcaster.prototype), 'object'); 
+check_equals(AsBroadcaster.__proto__, Function.prototype); 
+check_equals(typeof(AsBroadcaster.initialize), 'function');
+check(AsBroadcaster.hasOwnProperty('initialize'));
+check(!AsBroadcaster.prototype.hasOwnProperty('initialize'));
+
+// These functions are available as AsBroadcaster "statics"
+// and a lookup should be issued by 'initalize' so that overridden
+// functions are attached to the initialized object rather then
+// the original one (from swfdec/test/trace/asbroadcaster-override.as)
+check_equals(typeof(AsBroadcaster.addListener), 'function');
+check(AsBroadcaster.hasOwnProperty('addListener'));
+check_equals(typeof(AsBroadcaster.removeListener), 'function');
+check(AsBroadcaster.hasOwnProperty('removeListener'));
+check_equals(typeof(AsBroadcaster.broadcastMessage), 'function');
+check(AsBroadcaster.hasOwnProperty('broadcastMessage'));
+
+bc = new AsBroadcaster;
+check_equals(typeof(bc), 'object');
+check(bc instanceof AsBroadcaster);
+check(bc instanceof Object);
+check_equals(typeof(bc.addListener), 'undefined');
+check_equals(typeof(bc.removeListener), 'undefined');
+check_equals(typeof(bc.broadcastMessage), 'undefined');
+check_equals(typeof(bc.initialize), 'undefined');
+
+bcast = new Object;
+
+check_equals(typeof(bcast._listeners), 'undefined');
+check_equals(typeof(bcast.addListener), 'undefined');
+check_equals(typeof(bcast.removeListener), 'undefined');
+check_equals(typeof(bcast.broadcastMessage), 'undefined');
+
+AsBroadcaster.initialize(bcast);
+
+check_equals(typeof(bcast._listeners), 'object');
+check(bcast._listeners instanceof Array);
+check_equals(bcast._listeners.length, 0);
+check_equals(typeof(bcast.addListener), 'function');
+check_equals(typeof(bcast.removeListener), 'function');
+check_equals(typeof(bcast.broadcastMessage), 'function');
+
+//--------------------------------
+// Some insane calls...
+//--------------------------------
+
+ret = bcast.addListener();
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(bcast._listeners.length, 1); // !!
+
+ret = bcast.addListener();
+check_equals(bcast._listeners.length, 1); // undefined was already there as an element...
+
+ret = bcast.addListener(2);
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(bcast._listeners.length, 2); // !!
+
+ret = bcast.addListener(2);
+check_equals(bcast._listeners.length, 2); // 2 was already there as an element ...
+ret = bcast.addListener(3);
+check_equals(bcast._listeners.length, 3); // 3 is a new element
+
+ret = bcast.removeListener(); // will remove the undefined value !
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(bcast._listeners.length, 2); // element 'undefined' was removed
+
+ret = bcast.removeListener(2); // will remove the element number:2 !
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(bcast._listeners.length, 1); // element '2' was removed
+
+ret = bcast.removeListener(3); // will remove the element number:3 !
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(bcast._listeners.length, 0); // element '3' was removed
+
+ret = bcast.removeListener(); // no such element ?
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, false);
+
+o = new Object; o.valueOf = function() { return 'yes I am'; };
+bcast.addListener(o);
+check_equals(bcast._listeners.length, 1); 
+ret = bcast.removeListener('yes I am'); // valueOf invoked
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(bcast._listeners.length, 0); // element '3' was removed
+
+o.addListener = bcast.addListener;
+check_equals(typeof(o._listeners), 'undefined');
+check_equals(typeof(o.removeListenerCalled), 'undefined');
+ret = o.addListener(); // automatically attempts to call o.removeListener()
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(typeof(o._listeners), 'undefined');
+
+o.removeListener = function() { this.removeListenerCalled = true; };
+ret = o.addListener(); // automatically calls o.removeListener()
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(typeof(o._listeners), 'undefined');
+check_equals(typeof(o.removeListenerCalled), 'boolean');
+check_equals(o.removeListenerCalled, true);
+
+o.removeListener = bcast.removeListener;
+o._listeners = new Object();
+o._listeners.push = function() { this.pushCalled = true; this.length++; };
+o._listeners.splice = function() { this.spliceCalled = true; };
+o._listeners.length = 1;
+o._listeners['0'] = 5;
+ret = o.addListener(5); // automatically calls o._listeners.splice and o._listeners.push
+// Gnash fails as it gives up if _listeners isn't an array
+check_equals(o._listeners.pushCalled, true);
+check_equals(o._listeners.length, 2);
+check_equals(o._listeners.spliceCalled, true);
+
+
+//--------------------------------
+// A bit more sane calls...
+//--------------------------------
+
+counter = 0;
+
+onTest = function()
+{
+	//note(" Called "+this.name+".onTest (order "+this.order+"->"+(counter+1)+")");
+	this.order = ++counter;
+};
+
+a = new Object; a.name = 'a'; a.onTest = onTest;
+b = new Object; b.name = 'b'; b.onTest = onTest;
+
+ret = bcast.addListener(a);
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+ret = bcast.addListener(b);
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+//note("Broadcasting");
+ret = bcast.broadcastMessage('onTest');
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(a.order, 1);
+check_equals(b.order, 2);
+
+ret = bcast.addListener(b); // b is not added again
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+//note("Broadcasting");
+bcast.broadcastMessage('onTest');
+check_equals(a.order, 3);
+check_equals(b.order, 4);
+
+ret = bcast.addListener(a); // listener a is moved from first to last position to _listeners
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+//note("Broadcasting");
+bcast.broadcastMessage('onTest');
+check_equals(b.order, 5);
+check_equals(a.order, 6);
+
+bcast._listeners.push(a); // force double a listener
+//note("Broadcasting");
+bcast.broadcastMessage('onTest');
+check_equals(b.order, 7);
+check_equals(a.order, 9); // a.order was set twice
+
+bcast.addListener(a); // first a is moved from first to last position to _listeners
+//note("Broadcasting");
+ret = bcast.broadcastMessage('onTest');
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(b.order, 10);
+check_equals(a.order, 12); // a is still set twice
+
+bcast._listeners.push(b); // force double b, order should now be: b,a,a,b
+//note("Broadcasting");
+bcast.broadcastMessage('onTest');
+check_equals(b.order, 16); 
+check_equals(a.order, 15); 
+
+ret = bcast.addListener(b); // *first* b is removed, another one added, new order is a,a,b,b
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+//note("Broadcasting");
+bcast.broadcastMessage('onTest');
+check_equals(a.order, 18); 
+check_equals(b.order, 20);
+
+ret = bcast.removeListener(b); // only first is removed
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+check_equals(bcast._listeners.length, 3); // expect: a,a,b
+bcast.broadcastMessage('onTest');
+check_equals(a.order, 22); 
+check_equals(b.order, 23);
+
+ret = bcast.broadcastMessage('onUnexistent');
+check_equals(ret, true);
+bcast._listeners.length=0;
+ret = bcast.broadcastMessage('onUnexistent');
+check_equals(typeof(ret), 'undefined');
+
+//--------------------------------
+// broadcastMessage with args
+//--------------------------------
+
+_root.total = 0;
+o = {};
+o.addThis = function(what)
+{
+	//note("Arg0 is "+what);
+	_root.total += what;
+};
+o.setSum = function()
+{
+	_root.total = 0;
+	for (var i=0; i< arguments.length; ++i)
+	{
+		//note("Arg "+i+" is "+arguments[i]);
+		_root.total += arguments[i];
+	}
+};
+bcast.addListener(o);
+bcast.broadcastMessage('addThis', 3);
+check_equals(_root.total, 3);
+bcast.broadcastMessage('addThis', 2);
+check_equals(_root.total, 5);
+bcast.broadcastMessage('setSum', 1, 2, 3, 4);
+check_equals(_root.total, 10);
+bcast.broadcastMessage('setSum', 1, 2, 3, 4, 5, 6, 7, 8);
+check_equals(_root.total, 36);
+bcast.broadcastMessage('setSum', 'one', 'two', 'three');
+check_equals(_root.total, '0onetwothree');
+
+//--------------------------------
+// event handlers calling super
+//--------------------------------
+
+function A1() {}
+A1.prototype.add = function(o) { o.msg += 'A'; };
+function B1() {}
+B1.prototype = new A1;
+B1.prototype.add = function(o) { super.add(o); o.msg += 'B'; };
+
+bobj = new B1;
+o = { msg:'' };
+bobj.add(o);
+check_equals(o.msg, "AB");
+o.msg = '';
+
+bcast._listeners.length=0;
+bcast.addListener(bobj);
+bcast.broadcastMessage('add', o);
+check_equals(o.msg, "AB");
+
+//-----------------------------------------------------------------------------------
+// TODO: test override of AsBroadcaster.{addListener,removeListener,broadcastMessage}
+// swfdec contains tests for this, which should now be pretty succeeding except for
+// not-directly related checks which trigger failure due to all-or-nothing nature of
+// the swfdec testsuite.
+// See swfdec/test/trace/asbroadcaster-override.as for more info
+//-----------------------------------------------------------------------------------
+
+check_totals(108);
+
+#endif // OUTPUT_VERSION < 6
diff --git a/test/gnash/actionscript.all/ContextMenu-5.swf b/test/gnash/actionscript.all/ContextMenu-5.swf
new file mode 100644
index 0000000..4ab701a
Binary files /dev/null and b/test/gnash/actionscript.all/ContextMenu-5.swf differ
diff --git a/test/gnash/actionscript.all/ContextMenu-5.swf.trace b/test/gnash/actionscript.all/ContextMenu-5.swf.trace
new file mode 100644
index 0000000..583e92a
--- /dev/null
+++ b/test/gnash/actionscript.all/ContextMenu-5.swf.trace
@@ -0,0 +1,2 @@
+NOTE: You can't rely on availability of ContextMenu class with an SWF < 7
+totals
diff --git a/test/gnash/actionscript.all/ContextMenu-6.swf b/test/gnash/actionscript.all/ContextMenu-6.swf
new file mode 100644
index 0000000..228bcd8
Binary files /dev/null and b/test/gnash/actionscript.all/ContextMenu-6.swf differ
diff --git a/test/gnash/actionscript.all/ContextMenu-6.swf.trace b/test/gnash/actionscript.all/ContextMenu-6.swf.trace
new file mode 100644
index 0000000..583e92a
--- /dev/null
+++ b/test/gnash/actionscript.all/ContextMenu-6.swf.trace
@@ -0,0 +1,2 @@
+NOTE: You can't rely on availability of ContextMenu class with an SWF < 7
+totals
diff --git a/test/gnash/actionscript.all/ContextMenu-7.swf b/test/gnash/actionscript.all/ContextMenu-7.swf
new file mode 100644
index 0000000..abc66bb
Binary files /dev/null and b/test/gnash/actionscript.all/ContextMenu-7.swf differ
diff --git a/test/gnash/actionscript.all/ContextMenu-7.swf.trace b/test/gnash/actionscript.all/ContextMenu-7.swf.trace
new file mode 100644
index 0000000..de4f759
--- /dev/null
+++ b/test/gnash/actionscript.all/ContextMenu-7.swf.trace
@@ -0,0 +1,19 @@
+PASSED: typeof(ContextMenu) == 'function' [ContextMenu.as:35]
+PASSED: typeof(contextmenuObj) == 'object' [ContextMenu.as:40]
+PASSED: typeof(contextmenuObj.copy) == 'function' [ContextMenu.as:43]
+PASSED: typeof(contextmenuObj.hideBuiltInItems) == 'function' [ContextMenu.as:46]
+XPASSED: typeof(contextmenuObj.builtInItems) == 'object' [ContextMenu.as:49]
+PASSED: ! contextmenuObj.builtInItems instanceOf Array [ContextMenu.as:50]
+PASSED: typeof(contextmenuObj.builtInItems.length) == 'undefined' [ContextMenu.as:51]
+XPASSED: typeof(contextmenuObj.customItems) == 'object' [ContextMenu.as:54]
+PASSED: ! contextmenuObj.builtInItems instanceOf Array [ContextMenu.as:55]
+XPASSED: typeof(contextmenuObj.customItems.length) == 'number' [ContextMenu.as:56]
+PASSED: typeof(contextmenuObj.onSelect) == 'undefined' [ContextMenu.as:59]
+PASSED: typeof(contextMenuObj2.onSelect) == 'function' [ContextMenu.as:67]
+PASSED: contextMenuObj2.onSelect == callback [ContextMenu.as:68]
+PASSED: typeof(contextMenuObj2.onSelect) == 'function' [ContextMenu.as:71]
+PASSED: contextMenuObj2.onSelect == callback2 [ContextMenu.as:72]
+PASSED: typeof(contextMenuObj2.onSelect) == 'null' [ContextMenu.as:74]
+PASSED: typeof(contextMenuObj2.onSelect) == 'undefined' [ContextMenu.as:76]
+PASSED: typeof(contextMenuObj2.onSelect) == 'number' [ContextMenu.as:78]
+totals
diff --git a/test/gnash/actionscript.all/ContextMenu-8.swf b/test/gnash/actionscript.all/ContextMenu-8.swf
new file mode 100644
index 0000000..019902d
Binary files /dev/null and b/test/gnash/actionscript.all/ContextMenu-8.swf differ
diff --git a/test/gnash/actionscript.all/ContextMenu-8.swf.trace b/test/gnash/actionscript.all/ContextMenu-8.swf.trace
new file mode 100644
index 0000000..de4f759
--- /dev/null
+++ b/test/gnash/actionscript.all/ContextMenu-8.swf.trace
@@ -0,0 +1,19 @@
+PASSED: typeof(ContextMenu) == 'function' [ContextMenu.as:35]
+PASSED: typeof(contextmenuObj) == 'object' [ContextMenu.as:40]
+PASSED: typeof(contextmenuObj.copy) == 'function' [ContextMenu.as:43]
+PASSED: typeof(contextmenuObj.hideBuiltInItems) == 'function' [ContextMenu.as:46]
+XPASSED: typeof(contextmenuObj.builtInItems) == 'object' [ContextMenu.as:49]
+PASSED: ! contextmenuObj.builtInItems instanceOf Array [ContextMenu.as:50]
+PASSED: typeof(contextmenuObj.builtInItems.length) == 'undefined' [ContextMenu.as:51]
+XPASSED: typeof(contextmenuObj.customItems) == 'object' [ContextMenu.as:54]
+PASSED: ! contextmenuObj.builtInItems instanceOf Array [ContextMenu.as:55]
+XPASSED: typeof(contextmenuObj.customItems.length) == 'number' [ContextMenu.as:56]
+PASSED: typeof(contextmenuObj.onSelect) == 'undefined' [ContextMenu.as:59]
+PASSED: typeof(contextMenuObj2.onSelect) == 'function' [ContextMenu.as:67]
+PASSED: contextMenuObj2.onSelect == callback [ContextMenu.as:68]
+PASSED: typeof(contextMenuObj2.onSelect) == 'function' [ContextMenu.as:71]
+PASSED: contextMenuObj2.onSelect == callback2 [ContextMenu.as:72]
+PASSED: typeof(contextMenuObj2.onSelect) == 'null' [ContextMenu.as:74]
+PASSED: typeof(contextMenuObj2.onSelect) == 'undefined' [ContextMenu.as:76]
+PASSED: typeof(contextMenuObj2.onSelect) == 'number' [ContextMenu.as:78]
+totals
diff --git a/test/gnash/actionscript.all/ContextMenu.as b/test/gnash/actionscript.all/ContextMenu.as
new file mode 100644
index 0000000..70694aa
--- /dev/null
+++ b/test/gnash/actionscript.all/ContextMenu.as
@@ -0,0 +1,81 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+
+// Test case for ContextMenu ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: ContextMenu.as,v 1.14 2008/03/11 19:31:47 strk Exp $";
+#include "check.as"
+
+#if OUTPUT_VERSION < 7
+
+note("You can't rely on availability of ContextMenu class with an SWF < 7");
+
+#else // OUTPUT_VERSION >= 7
+
+// there was no ContextMenu before SWF7
+check_equals(typeof(ContextMenu), 'function');
+
+var contextmenuObj = new ContextMenu;
+
+// test the ContextMenu constuctor
+check_equals (typeof(contextmenuObj), 'object');
+
+// test the ContextMenu::copy method
+check_equals (typeof(contextmenuObj.copy), 'function');
+
+// test the ContextMenu::hideBuiltinItems method
+check_equals (typeof(contextmenuObj.hideBuiltInItems), 'function');
+
+// test existance of ContextMenu::builtInItems object
+xcheck_equals (typeof(contextmenuObj.builtInItems), 'object');
+check ( ! contextmenuObj.builtInItems instanceOf Array );
+check_equals (typeof(contextmenuObj.builtInItems.length), 'undefined');
+
+// test existance of ContextMenu::customItems object
+xcheck_equals (typeof(contextmenuObj.customItems), 'object');
+check ( ! contextmenuObj.builtInItems instanceOf Array );
+xcheck_equals (typeof(contextmenuObj.customItems.length), 'number');
+
+// test existance of ContextMenu::onSelect object
+check_equals (typeof(contextmenuObj.onSelect), 'undefined');
+
+//----------------------------------------------
+// Test onSelect
+//----------------------------------------------
+
+function callback() { }
+var contextMenuObj2 = new ContextMenu(callback);
+check_equals(typeof(contextMenuObj2.onSelect), 'function');
+check_equals(contextMenuObj2.onSelect, callback);
+function callback2() { }
+contextMenuObj2.onSelect = callback2;
+check_equals(typeof(contextMenuObj2.onSelect), 'function');
+check_equals(contextMenuObj2.onSelect, callback2);
+contextMenuObj2.onSelect = null;
+check_equals(typeof(contextMenuObj2.onSelect), 'null');
+contextMenuObj2.onSelect = undefined;
+check_equals(typeof(contextMenuObj2.onSelect), 'undefined');
+contextMenuObj2.onSelect = 4;
+check_equals(typeof(contextMenuObj2.onSelect), 'number');
+
+#endif
+totals();
diff --git a/test/gnash/actionscript.all/Error-5.swf b/test/gnash/actionscript.all/Error-5.swf
new file mode 100644
index 0000000..c39f75d
Binary files /dev/null and b/test/gnash/actionscript.all/Error-5.swf differ
diff --git a/test/gnash/actionscript.all/Error-5.swf.trace b/test/gnash/actionscript.all/Error-5.swf.trace
new file mode 100644
index 0000000..9251781
--- /dev/null
+++ b/test/gnash/actionscript.all/Error-5.swf.trace
@@ -0,0 +1,21 @@
+XPASSED: typeof(Error.prototype.message) == "string" [Error.as:34]
+XPASSED: typeof(Error.prototype.name) == "string" [Error.as:35]
+PASSED: typeof(errorObj) == 'object' [Error.as:40]
+PASSED: typeof(errorObj.toString) == 'function' [Error.as:43]
+PASSED: e.toString() == "Error" [Error.as:47]
+PASSED: e.message == "Error" [Error.as:48]
+PASSED: e.name == "Error" [Error.as:49]
+PASSED: e.toString() == "NameOfError" [Error.as:52]
+PASSED: e.name == "Error" [Error.as:53]
+PASSED: e.message == "NameOfError" [Error.as:54]
+PASSED: e.toString() == "7.8898" [Error.as:58]
+PASSED: e.name == "Error" [Error.as:59]
+PASSED: e.message == "7.8898" [Error.as:60]
+XPASSED: typeof(e.toString()) == "object" [Error.as:65]
+PASSED: e.toString().toString() == "[object Object]" [Error.as:66]
+PASSED: e.name == "Error" [Error.as:67]
+XPASSED: typeof(e.message) == "object" [Error.as:68]
+PASSED: e.name == "ANewName" [Error.as:71]
+PASSED: e.message == "New message" [Error.as:73]
+XPASSED: typeof(e) == "undefined" [Error.as:77]
+totals
diff --git a/test/gnash/actionscript.all/Error-6.swf b/test/gnash/actionscript.all/Error-6.swf
new file mode 100644
index 0000000..9c754a3
Binary files /dev/null and b/test/gnash/actionscript.all/Error-6.swf differ
diff --git a/test/gnash/actionscript.all/Error-6.swf.trace b/test/gnash/actionscript.all/Error-6.swf.trace
new file mode 100644
index 0000000..a5b4bfd
--- /dev/null
+++ b/test/gnash/actionscript.all/Error-6.swf.trace
@@ -0,0 +1,24 @@
+PASSED: Error.prototype.hasOwnProperty("name") [Error.as:29]
+PASSED: Error.prototype.hasOwnProperty("toString") [Error.as:30]
+PASSED: Error.prototype.hasOwnProperty("message") [Error.as:31]
+XPASSED: typeof(Error.prototype.message) == "string" [Error.as:34]
+XPASSED: typeof(Error.prototype.name) == "string" [Error.as:35]
+PASSED: typeof(errorObj) == 'object' [Error.as:40]
+PASSED: typeof(errorObj.toString) == 'function' [Error.as:43]
+PASSED: e.toString() == "Error" [Error.as:47]
+PASSED: e.message == "Error" [Error.as:48]
+PASSED: e.name == "Error" [Error.as:49]
+PASSED: e.toString() == "NameOfError" [Error.as:52]
+PASSED: e.name == "Error" [Error.as:53]
+PASSED: e.message == "NameOfError" [Error.as:54]
+PASSED: e.toString() == "7.8898" [Error.as:58]
+PASSED: e.name == "Error" [Error.as:59]
+PASSED: e.message == "7.8898" [Error.as:60]
+XPASSED: typeof(e.toString()) == "object" [Error.as:65]
+PASSED: e.toString().toString() == "[object Object]" [Error.as:66]
+PASSED: e.name == "Error" [Error.as:67]
+XPASSED: typeof(e.message) == "object" [Error.as:68]
+PASSED: e.name == "ANewName" [Error.as:71]
+PASSED: e.message == "New message" [Error.as:73]
+XPASSED: typeof(e) == "undefined" [Error.as:77]
+totals
diff --git a/test/gnash/actionscript.all/Error-7.swf b/test/gnash/actionscript.all/Error-7.swf
new file mode 100644
index 0000000..b23142a
Binary files /dev/null and b/test/gnash/actionscript.all/Error-7.swf differ
diff --git a/test/gnash/actionscript.all/Error-7.swf.trace b/test/gnash/actionscript.all/Error-7.swf.trace
new file mode 100644
index 0000000..a5b4bfd
--- /dev/null
+++ b/test/gnash/actionscript.all/Error-7.swf.trace
@@ -0,0 +1,24 @@
+PASSED: Error.prototype.hasOwnProperty("name") [Error.as:29]
+PASSED: Error.prototype.hasOwnProperty("toString") [Error.as:30]
+PASSED: Error.prototype.hasOwnProperty("message") [Error.as:31]
+XPASSED: typeof(Error.prototype.message) == "string" [Error.as:34]
+XPASSED: typeof(Error.prototype.name) == "string" [Error.as:35]
+PASSED: typeof(errorObj) == 'object' [Error.as:40]
+PASSED: typeof(errorObj.toString) == 'function' [Error.as:43]
+PASSED: e.toString() == "Error" [Error.as:47]
+PASSED: e.message == "Error" [Error.as:48]
+PASSED: e.name == "Error" [Error.as:49]
+PASSED: e.toString() == "NameOfError" [Error.as:52]
+PASSED: e.name == "Error" [Error.as:53]
+PASSED: e.message == "NameOfError" [Error.as:54]
+PASSED: e.toString() == "7.8898" [Error.as:58]
+PASSED: e.name == "Error" [Error.as:59]
+PASSED: e.message == "7.8898" [Error.as:60]
+XPASSED: typeof(e.toString()) == "object" [Error.as:65]
+PASSED: e.toString().toString() == "[object Object]" [Error.as:66]
+PASSED: e.name == "Error" [Error.as:67]
+XPASSED: typeof(e.message) == "object" [Error.as:68]
+PASSED: e.name == "ANewName" [Error.as:71]
+PASSED: e.message == "New message" [Error.as:73]
+XPASSED: typeof(e) == "undefined" [Error.as:77]
+totals
diff --git a/test/gnash/actionscript.all/Error-8.swf b/test/gnash/actionscript.all/Error-8.swf
new file mode 100644
index 0000000..2c6b48f
Binary files /dev/null and b/test/gnash/actionscript.all/Error-8.swf differ
diff --git a/test/gnash/actionscript.all/Error-8.swf.trace b/test/gnash/actionscript.all/Error-8.swf.trace
new file mode 100644
index 0000000..a5b4bfd
--- /dev/null
+++ b/test/gnash/actionscript.all/Error-8.swf.trace
@@ -0,0 +1,24 @@
+PASSED: Error.prototype.hasOwnProperty("name") [Error.as:29]
+PASSED: Error.prototype.hasOwnProperty("toString") [Error.as:30]
+PASSED: Error.prototype.hasOwnProperty("message") [Error.as:31]
+XPASSED: typeof(Error.prototype.message) == "string" [Error.as:34]
+XPASSED: typeof(Error.prototype.name) == "string" [Error.as:35]
+PASSED: typeof(errorObj) == 'object' [Error.as:40]
+PASSED: typeof(errorObj.toString) == 'function' [Error.as:43]
+PASSED: e.toString() == "Error" [Error.as:47]
+PASSED: e.message == "Error" [Error.as:48]
+PASSED: e.name == "Error" [Error.as:49]
+PASSED: e.toString() == "NameOfError" [Error.as:52]
+PASSED: e.name == "Error" [Error.as:53]
+PASSED: e.message == "NameOfError" [Error.as:54]
+PASSED: e.toString() == "7.8898" [Error.as:58]
+PASSED: e.name == "Error" [Error.as:59]
+PASSED: e.message == "7.8898" [Error.as:60]
+XPASSED: typeof(e.toString()) == "object" [Error.as:65]
+PASSED: e.toString().toString() == "[object Object]" [Error.as:66]
+PASSED: e.name == "Error" [Error.as:67]
+XPASSED: typeof(e.message) == "object" [Error.as:68]
+PASSED: e.name == "ANewName" [Error.as:71]
+PASSED: e.message == "New message" [Error.as:73]
+XPASSED: typeof(e) == "undefined" [Error.as:77]
+totals
diff --git a/test/gnash/actionscript.all/Error.as b/test/gnash/actionscript.all/Error.as
new file mode 100644
index 0000000..178280c
--- /dev/null
+++ b/test/gnash/actionscript.all/Error.as
@@ -0,0 +1,79 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+
+// Test case for Error ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: Error.as,v 1.14 2008/06/17 08:45:36 bwy Exp $";
+#include "check.as"
+
+#if OUTPUT_VERSION > 5
+check(Error.prototype.hasOwnProperty("name"));
+check(Error.prototype.hasOwnProperty("toString"));
+check(Error.prototype.hasOwnProperty("message"));
+#endif
+
+xcheck_equals(typeof(Error.prototype.message), "string");
+xcheck_equals(typeof(Error.prototype.name), "string");
+
+var errorObj = new Error;
+
+// test the Error constuctor
+check_equals (typeof(errorObj), 'object');
+
+// test the Error::tostring method
+check_equals (typeof(errorObj.toString), 'function');
+
+
+e = new Error;
+check_equals(e.toString(), "Error");
+check_equals(e.message, "Error");
+check_equals(e.name, "Error");
+
+e = new Error("NameOfError");
+check_equals(e.toString(), "NameOfError");
+check_equals(e.name, "Error");
+check_equals(e.message, "NameOfError");
+
+
+e = new Error(7.8898);
+check_equals(e.toString(), "7.8898");
+check_equals(e.name, "Error");
+check_equals(e.message, "7.8898");
+
+
+// Is there any sense in this?
+e = new Error(new Color);
+xcheck_equals(typeof(e.toString()), "object");
+check_equals(e.toString().toString(), "[object Object]");
+check_equals(e.name, "Error");
+xcheck_equals(typeof(e.message), "object");
+
+e.name = "ANewName";
+check_equals(e.name, "ANewName");
+e.message = "New message";
+check_equals(e.message, "New message");
+
+
+e = Error("NameOfSecondError");
+xcheck_equals(typeof(e), "undefined");
+
+totals();
diff --git a/test/gnash/actionscript.all/Key-5.swf b/test/gnash/actionscript.all/Key-5.swf
new file mode 100644
index 0000000..7f3152e
Binary files /dev/null and b/test/gnash/actionscript.all/Key-5.swf differ
diff --git a/test/gnash/actionscript.all/Key-5.swf.trace b/test/gnash/actionscript.all/Key-5.swf.trace
new file mode 100644
index 0000000..3d15b15
--- /dev/null
+++ b/test/gnash/actionscript.all/Key-5.swf.trace
@@ -0,0 +1,46 @@
+PASSED: typeof(Key) == 'object' [Key.as:27]
+PASSED: typeof(keyObj) == 'undefined' [Key.as:30]
+PASSED: Key.__proto__ == Object.prototype [Key.as:32]
+PASSED: typeof(Key.addListener) == 'undefined' [Key.as:48]
+PASSED: typeof(Key.removeListener) == 'undefined' [Key.as:49]
+PASSED: typeof(Key.getAscii) == 'function' [Key.as:53]
+PASSED: typeof(Key.getCode) == 'function' [Key.as:54]
+PASSED: typeof(Key.isDown) == 'function' [Key.as:55]
+PASSED: typeof(Key.isToggled) == 'function' [Key.as:56]
+PASSED: typeof(Key.CAPSLOCK) == 'number' [Key.as:59]
+PASSED: Key.CAPSLOCK == 20 [Key.as:60]
+PASSED: typeof(Key.TAB) == 'number' [Key.as:61]
+PASSED: Key.TAB == 9 [Key.as:62]
+PASSED: typeof(Key.CONTROL) == 'number' [Key.as:63]
+PASSED: Key.CONTROL == 17 [Key.as:64]
+PASSED: typeof(Key.SHIFT) == 'number' [Key.as:65]
+PASSED: Key.SHIFT == 16 [Key.as:66]
+PASSED: typeof(Key.DELETEKEY) == 'number' [Key.as:67]
+PASSED: Key.DELETEKEY == 46 [Key.as:68]
+PASSED: typeof(Key.INSERT) == 'number' [Key.as:69]
+PASSED: Key.INSERT == 45 [Key.as:70]
+PASSED: typeof(Key.BACKSPACE) == 'number' [Key.as:71]
+PASSED: Key.BACKSPACE == 8 [Key.as:72]
+PASSED: typeof(Key.LEFT) == 'number' [Key.as:73]
+PASSED: Key.LEFT == 37 [Key.as:74]
+PASSED: typeof(Key.UP) == 'number' [Key.as:75]
+PASSED: Key.UP == 38 [Key.as:76]
+PASSED: typeof(Key.RIGHT) == 'number' [Key.as:77]
+PASSED: Key.RIGHT == 39 [Key.as:78]
+PASSED: typeof(Key.DOWN) == 'number' [Key.as:79]
+PASSED: Key.DOWN == 40 [Key.as:80]
+PASSED: typeof(Key.HOME) == 'number' [Key.as:81]
+PASSED: Key.HOME == 36 [Key.as:82]
+PASSED: typeof(Key.END) == 'number' [Key.as:83]
+PASSED: Key.END == 35 [Key.as:84]
+PASSED: typeof(Key.ENTER) == 'number' [Key.as:85]
+PASSED: Key.ENTER == 13 [Key.as:86]
+PASSED: typeof(Key.ESCAPE) == 'number' [Key.as:87]
+PASSED: Key.ESCAPE == 27 [Key.as:88]
+PASSED: typeof(Key.PGDN) == 'number' [Key.as:89]
+PASSED: Key.PGDN == 34 [Key.as:90]
+PASSED: typeof(Key.PGUP) == 'number' [Key.as:91]
+PASSED: Key.PGUP == 33 [Key.as:92]
+PASSED: typeof(Key.SPACE) == 'number' [Key.as:93]
+PASSED: Key.SPACE == 32 [Key.as:94]
+totals
diff --git a/test/gnash/actionscript.all/Key-6.swf b/test/gnash/actionscript.all/Key-6.swf
new file mode 100644
index 0000000..b7d7ed3
Binary files /dev/null and b/test/gnash/actionscript.all/Key-6.swf differ
diff --git a/test/gnash/actionscript.all/Key-6.swf.trace b/test/gnash/actionscript.all/Key-6.swf.trace
new file mode 100644
index 0000000..eaddf4d
--- /dev/null
+++ b/test/gnash/actionscript.all/Key-6.swf.trace
@@ -0,0 +1,50 @@
+PASSED: typeof(Key) == 'object' [Key.as:27]
+PASSED: typeof(keyObj) == 'undefined' [Key.as:30]
+PASSED: Key.__proto__ == Object.prototype [Key.as:32]
+PASSED: typeof(Key.addListener) == 'function' [Key.as:39]
+PASSED: typeof(Key.removeListener) == 'function' [Key.as:40]
+PASSED: typeof(Key.broadcastMessage) == 'function' [Key.as:41]
+PASSED: Key.hasOwnProperty("_listeners") [Key.as:42]
+PASSED: typeof(Key._listeners) == 'object' [Key.as:43]
+PASSED: Key._listeners instanceof Array [Key.as:44]
+PASSED: typeof(Key.getAscii) == 'function' [Key.as:53]
+PASSED: typeof(Key.getCode) == 'function' [Key.as:54]
+PASSED: typeof(Key.isDown) == 'function' [Key.as:55]
+PASSED: typeof(Key.isToggled) == 'function' [Key.as:56]
+PASSED: typeof(Key.CAPSLOCK) == 'number' [Key.as:59]
+PASSED: Key.CAPSLOCK == 20 [Key.as:60]
+PASSED: typeof(Key.TAB) == 'number' [Key.as:61]
+PASSED: Key.TAB == 9 [Key.as:62]
+PASSED: typeof(Key.CONTROL) == 'number' [Key.as:63]
+PASSED: Key.CONTROL == 17 [Key.as:64]
+PASSED: typeof(Key.SHIFT) == 'number' [Key.as:65]
+PASSED: Key.SHIFT == 16 [Key.as:66]
+PASSED: typeof(Key.DELETEKEY) == 'number' [Key.as:67]
+PASSED: Key.DELETEKEY == 46 [Key.as:68]
+PASSED: typeof(Key.INSERT) == 'number' [Key.as:69]
+PASSED: Key.INSERT == 45 [Key.as:70]
+PASSED: typeof(Key.BACKSPACE) == 'number' [Key.as:71]
+PASSED: Key.BACKSPACE == 8 [Key.as:72]
+PASSED: typeof(Key.LEFT) == 'number' [Key.as:73]
+PASSED: Key.LEFT == 37 [Key.as:74]
+PASSED: typeof(Key.UP) == 'number' [Key.as:75]
+PASSED: Key.UP == 38 [Key.as:76]
+PASSED: typeof(Key.RIGHT) == 'number' [Key.as:77]
+PASSED: Key.RIGHT == 39 [Key.as:78]
+PASSED: typeof(Key.DOWN) == 'number' [Key.as:79]
+PASSED: Key.DOWN == 40 [Key.as:80]
+PASSED: typeof(Key.HOME) == 'number' [Key.as:81]
+PASSED: Key.HOME == 36 [Key.as:82]
+PASSED: typeof(Key.END) == 'number' [Key.as:83]
+PASSED: Key.END == 35 [Key.as:84]
+PASSED: typeof(Key.ENTER) == 'number' [Key.as:85]
+PASSED: Key.ENTER == 13 [Key.as:86]
+PASSED: typeof(Key.ESCAPE) == 'number' [Key.as:87]
+PASSED: Key.ESCAPE == 27 [Key.as:88]
+PASSED: typeof(Key.PGDN) == 'number' [Key.as:89]
+PASSED: Key.PGDN == 34 [Key.as:90]
+PASSED: typeof(Key.PGUP) == 'number' [Key.as:91]
+PASSED: Key.PGUP == 33 [Key.as:92]
+PASSED: typeof(Key.SPACE) == 'number' [Key.as:93]
+PASSED: Key.SPACE == 32 [Key.as:94]
+totals
diff --git a/test/gnash/actionscript.all/Key-7.swf b/test/gnash/actionscript.all/Key-7.swf
new file mode 100644
index 0000000..65e9544
Binary files /dev/null and b/test/gnash/actionscript.all/Key-7.swf differ
diff --git a/test/gnash/actionscript.all/Key-7.swf.trace b/test/gnash/actionscript.all/Key-7.swf.trace
new file mode 100644
index 0000000..eaddf4d
--- /dev/null
+++ b/test/gnash/actionscript.all/Key-7.swf.trace
@@ -0,0 +1,50 @@
+PASSED: typeof(Key) == 'object' [Key.as:27]
+PASSED: typeof(keyObj) == 'undefined' [Key.as:30]
+PASSED: Key.__proto__ == Object.prototype [Key.as:32]
+PASSED: typeof(Key.addListener) == 'function' [Key.as:39]
+PASSED: typeof(Key.removeListener) == 'function' [Key.as:40]
+PASSED: typeof(Key.broadcastMessage) == 'function' [Key.as:41]
+PASSED: Key.hasOwnProperty("_listeners") [Key.as:42]
+PASSED: typeof(Key._listeners) == 'object' [Key.as:43]
+PASSED: Key._listeners instanceof Array [Key.as:44]
+PASSED: typeof(Key.getAscii) == 'function' [Key.as:53]
+PASSED: typeof(Key.getCode) == 'function' [Key.as:54]
+PASSED: typeof(Key.isDown) == 'function' [Key.as:55]
+PASSED: typeof(Key.isToggled) == 'function' [Key.as:56]
+PASSED: typeof(Key.CAPSLOCK) == 'number' [Key.as:59]
+PASSED: Key.CAPSLOCK == 20 [Key.as:60]
+PASSED: typeof(Key.TAB) == 'number' [Key.as:61]
+PASSED: Key.TAB == 9 [Key.as:62]
+PASSED: typeof(Key.CONTROL) == 'number' [Key.as:63]
+PASSED: Key.CONTROL == 17 [Key.as:64]
+PASSED: typeof(Key.SHIFT) == 'number' [Key.as:65]
+PASSED: Key.SHIFT == 16 [Key.as:66]
+PASSED: typeof(Key.DELETEKEY) == 'number' [Key.as:67]
+PASSED: Key.DELETEKEY == 46 [Key.as:68]
+PASSED: typeof(Key.INSERT) == 'number' [Key.as:69]
+PASSED: Key.INSERT == 45 [Key.as:70]
+PASSED: typeof(Key.BACKSPACE) == 'number' [Key.as:71]
+PASSED: Key.BACKSPACE == 8 [Key.as:72]
+PASSED: typeof(Key.LEFT) == 'number' [Key.as:73]
+PASSED: Key.LEFT == 37 [Key.as:74]
+PASSED: typeof(Key.UP) == 'number' [Key.as:75]
+PASSED: Key.UP == 38 [Key.as:76]
+PASSED: typeof(Key.RIGHT) == 'number' [Key.as:77]
+PASSED: Key.RIGHT == 39 [Key.as:78]
+PASSED: typeof(Key.DOWN) == 'number' [Key.as:79]
+PASSED: Key.DOWN == 40 [Key.as:80]
+PASSED: typeof(Key.HOME) == 'number' [Key.as:81]
+PASSED: Key.HOME == 36 [Key.as:82]
+PASSED: typeof(Key.END) == 'number' [Key.as:83]
+PASSED: Key.END == 35 [Key.as:84]
+PASSED: typeof(Key.ENTER) == 'number' [Key.as:85]
+PASSED: Key.ENTER == 13 [Key.as:86]
+PASSED: typeof(Key.ESCAPE) == 'number' [Key.as:87]
+PASSED: Key.ESCAPE == 27 [Key.as:88]
+PASSED: typeof(Key.PGDN) == 'number' [Key.as:89]
+PASSED: Key.PGDN == 34 [Key.as:90]
+PASSED: typeof(Key.PGUP) == 'number' [Key.as:91]
+PASSED: Key.PGUP == 33 [Key.as:92]
+PASSED: typeof(Key.SPACE) == 'number' [Key.as:93]
+PASSED: Key.SPACE == 32 [Key.as:94]
+totals
diff --git a/test/gnash/actionscript.all/Key-8.swf b/test/gnash/actionscript.all/Key-8.swf
new file mode 100644
index 0000000..afceb1b
Binary files /dev/null and b/test/gnash/actionscript.all/Key-8.swf differ
diff --git a/test/gnash/actionscript.all/Key-8.swf.trace b/test/gnash/actionscript.all/Key-8.swf.trace
new file mode 100644
index 0000000..eaddf4d
--- /dev/null
+++ b/test/gnash/actionscript.all/Key-8.swf.trace
@@ -0,0 +1,50 @@
+PASSED: typeof(Key) == 'object' [Key.as:27]
+PASSED: typeof(keyObj) == 'undefined' [Key.as:30]
+PASSED: Key.__proto__ == Object.prototype [Key.as:32]
+PASSED: typeof(Key.addListener) == 'function' [Key.as:39]
+PASSED: typeof(Key.removeListener) == 'function' [Key.as:40]
+PASSED: typeof(Key.broadcastMessage) == 'function' [Key.as:41]
+PASSED: Key.hasOwnProperty("_listeners") [Key.as:42]
+PASSED: typeof(Key._listeners) == 'object' [Key.as:43]
+PASSED: Key._listeners instanceof Array [Key.as:44]
+PASSED: typeof(Key.getAscii) == 'function' [Key.as:53]
+PASSED: typeof(Key.getCode) == 'function' [Key.as:54]
+PASSED: typeof(Key.isDown) == 'function' [Key.as:55]
+PASSED: typeof(Key.isToggled) == 'function' [Key.as:56]
+PASSED: typeof(Key.CAPSLOCK) == 'number' [Key.as:59]
+PASSED: Key.CAPSLOCK == 20 [Key.as:60]
+PASSED: typeof(Key.TAB) == 'number' [Key.as:61]
+PASSED: Key.TAB == 9 [Key.as:62]
+PASSED: typeof(Key.CONTROL) == 'number' [Key.as:63]
+PASSED: Key.CONTROL == 17 [Key.as:64]
+PASSED: typeof(Key.SHIFT) == 'number' [Key.as:65]
+PASSED: Key.SHIFT == 16 [Key.as:66]
+PASSED: typeof(Key.DELETEKEY) == 'number' [Key.as:67]
+PASSED: Key.DELETEKEY == 46 [Key.as:68]
+PASSED: typeof(Key.INSERT) == 'number' [Key.as:69]
+PASSED: Key.INSERT == 45 [Key.as:70]
+PASSED: typeof(Key.BACKSPACE) == 'number' [Key.as:71]
+PASSED: Key.BACKSPACE == 8 [Key.as:72]
+PASSED: typeof(Key.LEFT) == 'number' [Key.as:73]
+PASSED: Key.LEFT == 37 [Key.as:74]
+PASSED: typeof(Key.UP) == 'number' [Key.as:75]
+PASSED: Key.UP == 38 [Key.as:76]
+PASSED: typeof(Key.RIGHT) == 'number' [Key.as:77]
+PASSED: Key.RIGHT == 39 [Key.as:78]
+PASSED: typeof(Key.DOWN) == 'number' [Key.as:79]
+PASSED: Key.DOWN == 40 [Key.as:80]
+PASSED: typeof(Key.HOME) == 'number' [Key.as:81]
+PASSED: Key.HOME == 36 [Key.as:82]
+PASSED: typeof(Key.END) == 'number' [Key.as:83]
+PASSED: Key.END == 35 [Key.as:84]
+PASSED: typeof(Key.ENTER) == 'number' [Key.as:85]
+PASSED: Key.ENTER == 13 [Key.as:86]
+PASSED: typeof(Key.ESCAPE) == 'number' [Key.as:87]
+PASSED: Key.ESCAPE == 27 [Key.as:88]
+PASSED: typeof(Key.PGDN) == 'number' [Key.as:89]
+PASSED: Key.PGDN == 34 [Key.as:90]
+PASSED: typeof(Key.PGUP) == 'number' [Key.as:91]
+PASSED: Key.PGUP == 33 [Key.as:92]
+PASSED: typeof(Key.SPACE) == 'number' [Key.as:93]
+PASSED: Key.SPACE == 32 [Key.as:94]
+totals
diff --git a/test/gnash/actionscript.all/Key.as b/test/gnash/actionscript.all/Key.as
new file mode 100644
index 0000000..27287ee
--- /dev/null
+++ b/test/gnash/actionscript.all/Key.as
@@ -0,0 +1,99 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for Stage ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: Key.as,v 1.7 2008/03/11 19:31:47 strk Exp $";
+#include "check.as"
+
+check_equals (typeof(Key), 'object');
+
+var keyObj = new Key;
+check_equals (typeof(keyObj), 'undefined');
+
+check_equals(Key.__proto__, Object.prototype);
+
+// Methods
+#if OUTPUT_VERSION > 5
+
+ // Key was implicitly initialized by ASBroadcaster.initialize !
+ // See http://www.senocular.com/flash/tutorials/listenersasbroadcaster/?page=2
+ check_equals(typeof(Key.addListener), 'function');
+ check_equals(typeof(Key.removeListener), 'function');
+ check_equals(typeof(Key.broadcastMessage), 'function');
+ check(Key.hasOwnProperty("_listeners"));
+ check_equals(typeof(Key._listeners), 'object');
+ check(Key._listeners instanceof Array);
+
+#else // OUTPUT_VERSION <= 5
+
+ check_equals(typeof(Key.addListener), 'undefined');
+ check_equals(typeof(Key.removeListener), 'undefined');
+
+#endif // OUTPUT_VERSION <= 5
+
+check_equals(typeof(Key.getAscii), 'function');
+check_equals(typeof(Key.getCode), 'function');
+check_equals(typeof(Key.isDown), 'function');
+check_equals(typeof(Key.isToggled), 'function');
+
+// Properties
+check_equals(typeof(Key.CAPSLOCK), 'number');
+check_equals(Key.CAPSLOCK, 20);
+check_equals(typeof(Key.TAB), 'number');
+check_equals(Key.TAB, 9);
+check_equals(typeof(Key.CONTROL), 'number');
+check_equals(Key.CONTROL, 17);
+check_equals(typeof(Key.SHIFT), 'number');
+check_equals(Key.SHIFT, 16);
+check_equals(typeof(Key.DELETEKEY), 'number');
+check_equals(Key.DELETEKEY, 46);
+check_equals(typeof(Key.INSERT), 'number');
+check_equals(Key.INSERT, 45);
+check_equals(typeof(Key.BACKSPACE), 'number');
+check_equals(Key.BACKSPACE, 8);
+check_equals(typeof(Key.LEFT), 'number');
+check_equals(Key.LEFT, 37);
+check_equals(typeof(Key.UP), 'number');
+check_equals(Key.UP, 38);
+check_equals(typeof(Key.RIGHT), 'number');
+check_equals(Key.RIGHT, 39);
+check_equals(typeof(Key.DOWN), 'number');
+check_equals(Key.DOWN, 40);
+check_equals(typeof(Key.HOME), 'number');
+check_equals(Key.HOME, 36);
+check_equals(typeof(Key.END), 'number');
+check_equals(Key.END, 35);
+check_equals(typeof(Key.ENTER), 'number');
+check_equals(Key.ENTER, 13);
+check_equals(typeof(Key.ESCAPE), 'number');
+check_equals(Key.ESCAPE, 27);
+check_equals(typeof(Key.PGDN), 'number');
+check_equals(Key.PGDN, 34);
+check_equals(typeof(Key.PGUP), 'number');
+check_equals(Key.PGUP, 33);
+check_equals(typeof(Key.SPACE), 'number');
+check_equals(Key.SPACE, 32);
+
+// Event handlers are:
+// onKeyUp
+// onKeyDown
+totals();
diff --git a/test/gnash/actionscript.all/Makefile.am b/test/gnash/actionscript.all/Makefile.am
new file mode 100644
index 0000000..238e23a
--- /dev/null
+++ b/test/gnash/actionscript.all/Makefile.am
@@ -0,0 +1,148 @@
+check-local: ../../swfdec-test
+	../../swfdec-test --script $(srcdir)/default.sts $(srcdir)/*.swf
+
+EXTRA_DIST = \
+	README \
+	REMOVED \
+	UPDATED \
+	AsBroadcaster-5.swf \
+	AsBroadcaster-5.swf.trace \
+	AsBroadcaster-6.swf \
+	AsBroadcaster-6.swf.trace \
+	AsBroadcaster-7.swf \
+	AsBroadcaster-7.swf.trace \
+	AsBroadcaster-8.swf \
+	AsBroadcaster-8.swf.trace \
+	AsBroadcaster.as \
+	AsBroadcaster.as.original \
+	check.as \
+	check.as.original \
+	ContextMenu-5.swf \
+	ContextMenu-5.swf.trace \
+	ContextMenu-6.swf \
+	ContextMenu-6.swf.trace \
+	ContextMenu-7.swf \
+	ContextMenu-7.swf.trace \
+	ContextMenu-8.swf \
+	ContextMenu-8.swf.trace \
+	ContextMenu.as \
+	default.sts \
+	default.stas \
+	delete-5.swf \
+	delete-5.swf.trace \
+	delete-6.swf \
+	delete-6.swf.trace \
+	delete-7.swf \
+	delete-7.swf.trace \
+	delete-8.swf \
+	delete-8.swf.trace \
+	delete.as \
+	enumerate-5.swf \
+	enumerate-5.swf.trace \
+	enumerate-6.swf \
+	enumerate-6.swf.trace \
+	enumerate-7.swf \
+	enumerate-7.swf.trace \
+	enumerate-8.swf \
+	enumerate-8.swf.trace \
+	enumerate.as \
+	Error-5.swf \
+	Error-5.swf.trace \
+	Error-6.swf \
+	Error-6.swf.trace \
+	Error-7.swf \
+	Error-7.swf.trace \
+	Error-8.swf \
+	Error-8.swf.trace \
+	Error.as \
+	Key-5.swf \
+	Key-5.swf.trace \
+	Key-6.swf \
+	Key-6.swf.trace \
+	Key-7.swf \
+	Key-7.swf.trace \
+	Key-8.swf \
+	Key-8.swf.trace \
+	Key.as \
+	Mouse-5.swf \
+	Mouse-5.swf.trace \
+	Mouse-6.swf \
+	Mouse-6.swf.trace \
+	Mouse-7.swf \
+	Mouse-7.swf.trace \
+	Mouse-8.swf \
+	Mouse-8.swf.trace \
+	Mouse.as \
+	Point-5.swf \
+	Point-5.swf.trace \
+	Point-6.swf \
+	Point-6.swf.trace \
+	Point-7.swf \
+	Point-7.swf.trace \
+	Point-8.swf \
+	Point-8.swf.trace \
+	Point.as \
+	Rectangle-5.swf \
+	Rectangle-5.swf.trace \
+	Rectangle-6.swf \
+	Rectangle-6.swf.trace \
+	Rectangle-7.swf \
+	Rectangle-7.swf.trace \
+	Rectangle-8.swf \
+	Rectangle-8.swf.trace \
+	Rectangle.as \
+	Selection-5.swf \
+	Selection-5.swf.trace \
+	Selection-6.swf \
+	Selection-6.swf.trace \
+	Selection-7.swf \
+	Selection-7.swf.trace \
+	Selection-8.swf \
+	Selection-8.swf.trace \
+	Selection.as \
+	swap-5.swf \
+	swap-5.swf.trace \
+	swap-6.swf \
+	swap-6.swf.trace \
+	swap-7.swf \
+	swap-7.swf.trace \
+	swap-8.swf \
+	swap-8.swf.trace \
+	swap.as \
+	TextFormat-5.swf \
+	TextFormat-5.swf.trace \
+	TextFormat-6.swf \
+	TextFormat-6.swf.trace \
+	TextFormat-7.swf \
+	TextFormat-7.swf.trace \
+	TextFormat-8.swf \
+	TextFormat-8.swf.trace \
+	TextFormat.as \
+	TextSnapshot-5.swf \
+	TextSnapshot-5.swf.trace \
+	TextSnapshot-6.swf \
+	TextSnapshot-6.swf.trace \
+	TextSnapshot-7.swf \
+	TextSnapshot-7.swf.trace \
+	TextSnapshot-8.swf \
+	TextSnapshot-8.swf.trace \
+	TextSnapshot.as \
+	Try-5.swf \
+	Try-5.swf.trace \
+	Try-6.swf \
+	Try-6.swf.trace \
+	Try-7.swf \
+	Try-7.swf.trace \
+	Try-8.swf \
+	Try-8.swf.trace \
+	Try.as \
+	utils.as \
+	Video-5.swf \
+	Video-5.swf.trace \
+	Video-6.swf \
+	Video-6.swf.trace \
+	Video-7.swf \
+	Video-7.swf.trace \
+	Video-8.swf \
+	Video-8.swf.trace \
+	Video.as
diff --git a/test/gnash/actionscript.all/Mouse-5.swf b/test/gnash/actionscript.all/Mouse-5.swf
new file mode 100644
index 0000000..ad54f1d
Binary files /dev/null and b/test/gnash/actionscript.all/Mouse-5.swf differ
diff --git a/test/gnash/actionscript.all/Mouse-5.swf.trace b/test/gnash/actionscript.all/Mouse-5.swf.trace
new file mode 100644
index 0000000..a5e3b93
--- /dev/null
+++ b/test/gnash/actionscript.all/Mouse-5.swf.trace
@@ -0,0 +1,8 @@
+PASSED: typeof(Mouse) == 'object' [Mouse.as:27]
+PASSED: mouseObj == undefined [Mouse.as:31]
+PASSED: typeof(Mouse.__proto__) == 'object' [Mouse.as:33]
+PASSED: Mouse.__proto__ == Object.prototype [Mouse.as:34]
+PASSED: typeof(Mouse.hide) == 'function' [Mouse.as:37]
+PASSED: typeof(Mouse.show) == 'function' [Mouse.as:38]
+PASSED: typeof(Mouse.show) == 'function' [Mouse.as:57]
+check_totals: 7
diff --git a/test/gnash/actionscript.all/Mouse-6.swf b/test/gnash/actionscript.all/Mouse-6.swf
new file mode 100644
index 0000000..15540a1
Binary files /dev/null and b/test/gnash/actionscript.all/Mouse-6.swf differ
diff --git a/test/gnash/actionscript.all/Mouse-6.swf.trace b/test/gnash/actionscript.all/Mouse-6.swf.trace
new file mode 100644
index 0000000..4c78f3b
--- /dev/null
+++ b/test/gnash/actionscript.all/Mouse-6.swf.trace
@@ -0,0 +1,16 @@
+PASSED: typeof(Mouse) == 'object' [Mouse.as:27]
+PASSED: mouseObj == undefined [Mouse.as:31]
+PASSED: typeof(Mouse.__proto__) == 'object' [Mouse.as:33]
+PASSED: Mouse.__proto__ == Object.prototype [Mouse.as:34]
+PASSED: typeof(Mouse.hide) == 'function' [Mouse.as:37]
+PASSED: typeof(Mouse.show) == 'function' [Mouse.as:38]
+PASSED: typeof(Mouse.removeListener) == 'function' [Mouse.as:43]
+PASSED: typeof(Mouse.addListener) == 'function' [Mouse.as:44]
+PASSED: typeof(Mouse.broadcastMessage) == 'function' [Mouse.as:45]
+PASSED: Mouse.hasOwnProperty("_listeners") [Mouse.as:46]
+PASSED: typeof(Mouse._listeners) == 'object' [Mouse.as:47]
+PASSED: Mouse._listeners instanceof Array [Mouse.as:48]
+PASSED: Mouse.hasOwnProperty("hide") [Mouse.as:50]
+PASSED: Mouse.hasOwnProperty("show") [Mouse.as:51]
+PASSED: typeof(Mouse.show) == 'function' [Mouse.as:57]
+check_totals: 15
diff --git a/test/gnash/actionscript.all/Mouse-7.swf b/test/gnash/actionscript.all/Mouse-7.swf
new file mode 100644
index 0000000..3c16f3b
Binary files /dev/null and b/test/gnash/actionscript.all/Mouse-7.swf differ
diff --git a/test/gnash/actionscript.all/Mouse-7.swf.trace b/test/gnash/actionscript.all/Mouse-7.swf.trace
new file mode 100644
index 0000000..4c78f3b
--- /dev/null
+++ b/test/gnash/actionscript.all/Mouse-7.swf.trace
@@ -0,0 +1,16 @@
+PASSED: typeof(Mouse) == 'object' [Mouse.as:27]
+PASSED: mouseObj == undefined [Mouse.as:31]
+PASSED: typeof(Mouse.__proto__) == 'object' [Mouse.as:33]
+PASSED: Mouse.__proto__ == Object.prototype [Mouse.as:34]
+PASSED: typeof(Mouse.hide) == 'function' [Mouse.as:37]
+PASSED: typeof(Mouse.show) == 'function' [Mouse.as:38]
+PASSED: typeof(Mouse.removeListener) == 'function' [Mouse.as:43]
+PASSED: typeof(Mouse.addListener) == 'function' [Mouse.as:44]
+PASSED: typeof(Mouse.broadcastMessage) == 'function' [Mouse.as:45]
+PASSED: Mouse.hasOwnProperty("_listeners") [Mouse.as:46]
+PASSED: typeof(Mouse._listeners) == 'object' [Mouse.as:47]
+PASSED: Mouse._listeners instanceof Array [Mouse.as:48]
+PASSED: Mouse.hasOwnProperty("hide") [Mouse.as:50]
+PASSED: Mouse.hasOwnProperty("show") [Mouse.as:51]
+PASSED: typeof(Mouse.show) == 'function' [Mouse.as:57]
+check_totals: 15
diff --git a/test/gnash/actionscript.all/Mouse-8.swf b/test/gnash/actionscript.all/Mouse-8.swf
new file mode 100644
index 0000000..448807a
Binary files /dev/null and b/test/gnash/actionscript.all/Mouse-8.swf differ
diff --git a/test/gnash/actionscript.all/Mouse-8.swf.trace b/test/gnash/actionscript.all/Mouse-8.swf.trace
new file mode 100644
index 0000000..4c78f3b
--- /dev/null
+++ b/test/gnash/actionscript.all/Mouse-8.swf.trace
@@ -0,0 +1,16 @@
+PASSED: typeof(Mouse) == 'object' [Mouse.as:27]
+PASSED: mouseObj == undefined [Mouse.as:31]
+PASSED: typeof(Mouse.__proto__) == 'object' [Mouse.as:33]
+PASSED: Mouse.__proto__ == Object.prototype [Mouse.as:34]
+PASSED: typeof(Mouse.hide) == 'function' [Mouse.as:37]
+PASSED: typeof(Mouse.show) == 'function' [Mouse.as:38]
+PASSED: typeof(Mouse.removeListener) == 'function' [Mouse.as:43]
+PASSED: typeof(Mouse.addListener) == 'function' [Mouse.as:44]
+PASSED: typeof(Mouse.broadcastMessage) == 'function' [Mouse.as:45]
+PASSED: Mouse.hasOwnProperty("_listeners") [Mouse.as:46]
+PASSED: typeof(Mouse._listeners) == 'object' [Mouse.as:47]
+PASSED: Mouse._listeners instanceof Array [Mouse.as:48]
+PASSED: Mouse.hasOwnProperty("hide") [Mouse.as:50]
+PASSED: Mouse.hasOwnProperty("show") [Mouse.as:51]
+PASSED: typeof(Mouse.show) == 'function' [Mouse.as:57]
+check_totals: 15
diff --git a/test/gnash/actionscript.all/Mouse.as b/test/gnash/actionscript.all/Mouse.as
new file mode 100644
index 0000000..6f86db1
--- /dev/null
+++ b/test/gnash/actionscript.all/Mouse.as
@@ -0,0 +1,62 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for Mouse ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: Mouse.as,v 1.19 2008/04/16 11:16:34 bwy Exp $";
+#include "check.as"
+
+check_equals ( typeof(Mouse), 'object' );
+
+// Mouse object can't be instanciated !
+var mouseObj = new Mouse;
+check_equals(mouseObj, undefined);
+
+check_equals (typeof(Mouse.__proto__), 'object');
+check_equals (Mouse.__proto__, Object.prototype);
+
+// test the Mouse::hide method
+check_equals ( typeof(Mouse.hide), 'function' );
+check_equals ( typeof(Mouse.show), 'function' );
+#if OUTPUT_VERSION > 5
+
+ // Mouse was implicitly initialized by ASBroadcaster.initialize !
+ // See http://www.senocular.com/flash/tutorials/listenersasbroadcaster/?page=2
+ check_equals ( typeof(Mouse.removeListener), 'function' );
+ check_equals ( typeof(Mouse.addListener), 'function' );
+ check_equals( typeof(Mouse.broadcastMessage), 'function' );
+ check(Mouse.hasOwnProperty("_listeners"));
+ check_equals(typeof(Mouse._listeners), 'object');
+ check(Mouse._listeners instanceof Array);
+
+ check(Mouse.hasOwnProperty("hide"));
+ check(Mouse.hasOwnProperty("show"));
+
+#endif // OUTPUT_VERSION > 5
+
+
+// test the Mouse::show method
+check_equals ( typeof(Mouse.show), 'function' );
+#if OUTPUT_VERSION > 5
+check_totals(15);
+#else
+check_totals(7);
+#endif
diff --git a/test/gnash/actionscript.all/Point-5.swf b/test/gnash/actionscript.all/Point-5.swf
new file mode 100644
index 0000000..a37f9ea
Binary files /dev/null and b/test/gnash/actionscript.all/Point-5.swf differ
diff --git a/test/gnash/actionscript.all/Point-5.swf.trace b/test/gnash/actionscript.all/Point-5.swf.trace
new file mode 100644
index 0000000..0b94f57
--- /dev/null
+++ b/test/gnash/actionscript.all/Point-5.swf.trace
@@ -0,0 +1,2 @@
+PASSED: typeof(flash) == 'undefined' [Point.as:29]
+check_totals: 1
diff --git a/test/gnash/actionscript.all/Point-6.swf b/test/gnash/actionscript.all/Point-6.swf
new file mode 100644
index 0000000..57dc617
Binary files /dev/null and b/test/gnash/actionscript.all/Point-6.swf differ
diff --git a/test/gnash/actionscript.all/Point-6.swf.trace b/test/gnash/actionscript.all/Point-6.swf.trace
new file mode 100644
index 0000000..0b94f57
--- /dev/null
+++ b/test/gnash/actionscript.all/Point-6.swf.trace
@@ -0,0 +1,2 @@
+PASSED: typeof(flash) == 'undefined' [Point.as:29]
+check_totals: 1
diff --git a/test/gnash/actionscript.all/Point-7.swf b/test/gnash/actionscript.all/Point-7.swf
new file mode 100644
index 0000000..8442016
Binary files /dev/null and b/test/gnash/actionscript.all/Point-7.swf differ
diff --git a/test/gnash/actionscript.all/Point-7.swf.trace b/test/gnash/actionscript.all/Point-7.swf.trace
new file mode 100644
index 0000000..0b94f57
--- /dev/null
+++ b/test/gnash/actionscript.all/Point-7.swf.trace
@@ -0,0 +1,2 @@
+PASSED: typeof(flash) == 'undefined' [Point.as:29]
+check_totals: 1
diff --git a/test/gnash/actionscript.all/Point-8.swf b/test/gnash/actionscript.all/Point-8.swf
new file mode 100644
index 0000000..15e45cc
Binary files /dev/null and b/test/gnash/actionscript.all/Point-8.swf differ
diff --git a/test/gnash/actionscript.all/Point-8.swf.trace b/test/gnash/actionscript.all/Point-8.swf.trace
new file mode 100644
index 0000000..0db2f09
--- /dev/null
+++ b/test/gnash/actionscript.all/Point-8.swf.trace
@@ -0,0 +1,187 @@
+PASSED: typeof(Point) == 'function' [Point.as:36]
+PASSED: typeof(Point.prototype) == 'object' [Point.as:37]
+PASSED: Point.prototype.hasOwnProperty('length') [Point.as:38]
+PASSED: !Point.prototype.hasOwnProperty('x') [Point.as:39]
+PASSED: !Point.prototype.hasOwnProperty('y') [Point.as:40]
+PASSED: Point.prototype.hasOwnProperty('add') [Point.as:41]
+PASSED: Point.prototype.hasOwnProperty('clone') [Point.as:42]
+PASSED: !Point.prototype.hasOwnProperty('distance') [Point.as:43]
+PASSED: Point.hasOwnProperty('distance') [Point.as:44]
+PASSED: Point.prototype.hasOwnProperty('equals') [Point.as:45]
+PASSED: !Point.prototype.hasOwnProperty('interpolate') [Point.as:46]
+PASSED: Point.hasOwnProperty('interpolate') [Point.as:47]
+PASSED: Point.prototype.hasOwnProperty('normalize') [Point.as:48]
+PASSED: Point.prototype.hasOwnProperty('offset') [Point.as:49]
+PASSED: !Point.prototype.hasOwnProperty('polar') [Point.as:50]
+PASSED: Point.hasOwnProperty('polar') [Point.as:51]
+PASSED: Point.prototype.hasOwnProperty('subtract') [Point.as:52]
+PASSED: Point.prototype.hasOwnProperty('toString') [Point.as:53]
+PASSED: typeof(p0) == 'object' [Point.as:60]
+PASSED: p0 instanceof Point [Point.as:61]
+PASSED: p0.hasOwnProperty('x') [Point.as:62]
+PASSED: p0.hasOwnProperty('y') [Point.as:63]
+PASSED: ''+p0 == '(x=0, y=0)' [Point.as:64]
+PASSED: typeof(p0.x) == 'number' [Point.as:65]
+PASSED: typeof(p0.y) == 'number' [Point.as:66]
+PASSED: typeof(p0.length) == 'number' [Point.as:67]
+PASSED: p0.length == 0 [Point.as:68]
+PASSED: a.length == 10 [Point.as:71]
+PASSED: ''+p0 == '(x=x, y=y)' [Point.as:74]
+PASSED: typeof(p0.x) == 'string' [Point.as:75]
+PASSED: typeof(p0.y) == 'string' [Point.as:76]
+PASSED: typeof(p0.length) == 'number' [Point.as:77]
+PASSED: isNaN(p0.length) [Point.as:78]
+PASSED: isNaN(p0.length) [Point.as:80]
+PASSED: p0.length == 1 [Point.as:82]
+PASSED: p0.length == 5 [Point.as:85]
+PASSED: p0.length == 5 [Point.as:89]
+PASSED: p0.length == Infinity [Point.as:92]
+PASSED: p0.length == 0 [Point.as:95]
+PASSED: ret instanceof Point [Point.as:103]
+PASSED: p0.toString() == '(x=x, y=y)' [Point.as:104]
+PASSED: ret.toString() == '(x=xundefined, y=yundefined)' [Point.as:105]
+PASSED: ret instanceof Point [Point.as:109]
+PASSED: ret.toString() == '(x=x3, y=yundefined)' [Point.as:110]
+PASSED: p0.toString() == '(x=x, y=y)' [Point.as:111]
+PASSED: ret instanceof Point [Point.as:113]
+PASSED: ret.toString() == '(x=xundefined, y=yundefined)' [Point.as:114]
+PASSED: p0.toString() == '(x=x, y=y)' [Point.as:115]
+PASSED: ret instanceof Point [Point.as:120]
+PASSED: ret.toString() == '(x=xx1, y=yy1)' [Point.as:121]
+PASSED: p0.toString() == '(x=x, y=y)' [Point.as:122]
+PASSED: p1.toString() == '(x=x1, y=y1)' [Point.as:123]
+PASSED: ret.toString() == '(x=3, y=4)' [Point.as:128]
+PASSED: ret.toString() == '(x=3, y=4)' [Point.as:131]
+PASSED: ret.toString() == "(x=22, y=33)" [Point.as:137]
+PASSED: ret instanceof Point [Point.as:138]
+PASSED: p2 instanceof Point [Point.as:147]
+PASSED: p2.toString() == "(x=3, y=4)" [Point.as:148]
+PASSED: typeof(p2.z) == 'undefined' [Point.as:149]
+PASSED: p2 instanceof Point [Point.as:151]
+PASSED: p2.toString() == "(x=3, y=4)" [Point.as:152]
+PASSED: ret.toString() == "(x=20, y=30)" [Point.as:158]
+PASSED: ret instanceof Point [Point.as:159]
+PASSED: typeof(dist) == 'undefined' [Point.as:166]
+PASSED: typeof(dist) == 'undefined' [Point.as:169]
+PASSED: typeof(dist) == 'undefined' [Point.as:174]
+PASSED: typeof(dist) == 'number' [Point.as:179]
+PASSED: isNaN(dist) [Point.as:180]
+PASSED: typeof(dist) == 'undefined' [Point.as:182]
+PASSED: typeof(dist) == 'number' [Point.as:187]
+PASSED: isNaN(dist) [Point.as:188]
+PASSED: typeof(dist) == 'undefined' [Point.as:190]
+PASSED: typeof(dist) == 'number' [Point.as:195]
+PASSED: isNaN(dist) [Point.as:196]
+PASSED: typeof(dist) == 'undefined' [Point.as:198]
+PASSED: typeof(dist) == 'number' [Point.as:203]
+PASSED: Math.round(dist*100) == 316 [Point.as:204]
+PASSED: typeof(dist) == 'undefined' [Point.as:206]
+PASSED: typeof(dist) == 'number' [Point.as:211]
+PASSED: dist == 9 [Point.as:212]
+PASSED: typeof(dist) == 'number' [Point.as:216]
+PASSED: dist == 20 [Point.as:217]
+PASSED: typeof(dist) == 'undefined' [Point.as:221]
+PASSED: dist == 20 [Point.as:224]
+PASSED: p0.equals(p0) [Point.as:236]
+PASSED: p1.equals(p1) [Point.as:239]
+PASSED: p0 != p1 [Point.as:241]
+PASSED: p0.toString() == p1.toString() [Point.as:242]
+PASSED: !p0.equals(p1) [Point.as:244]
+PASSED: !p1.equals(p0) [Point.as:245]
+PASSED: typeof(ret) == 'boolean' [Point.as:248]
+PASSED: !ret [Point.as:249]
+PASSED: p1.equals(p2) [Point.as:252]
+PASSED: typeof(ret) == 'boolean' [Point.as:256]
+PASSED: !ret [Point.as:257]
+PASSED: p1.equals(p2) [Point.as:260]
+PASSED: p1.equals(p2) [Point.as:264]
+PASSED: !p1.equals('string') [Point.as:269]
+PASSED: ret.toString() == "true" [Point.as:275]
+PASSED: typeof(ret) == "boolean" [Point.as:276]
+PASSED: ret instanceof Point [Point.as:283]
+PASSED: ret.toString() == '(x=NaN, y=NaN)' [Point.as:284]
+PASSED: ret instanceof Point [Point.as:287]
+PASSED: ret.toString() == '(x=NaN, y=NaN)' [Point.as:288]
+PASSED: ret instanceof Point [Point.as:293]
+PASSED: ret.toString() == '(x=x1NaN, y=y1NaN)' [Point.as:294]
+PASSED: ret instanceof Point [Point.as:299]
+PASSED: ret.toString() == '(x=10-30, y=00)' [Point.as:300]
+PASSED: ret instanceof Point [Point.as:302]
+PASSED: ret.toString() == '(x=100, y=00)' [Point.as:303]
+PASSED: ret instanceof Point [Point.as:305]
+PASSED: ret.toString() == '(x=10-5, y=00)' [Point.as:306]
+PASSED: ret instanceof Point [Point.as:312]
+PASSED: ret.toString() == '(x=10-30, y=00)' [Point.as:313]
+PASSED: ret instanceof Point [Point.as:319]
+PASSED: ret.toString() == '(x=-20, y=0)' [Point.as:320]
+PASSED: ret instanceof Point [Point.as:325]
+PASSED: ret.toString() == '(x=5, y=0)' [Point.as:326]
+PASSED: ret.equals(p0) [Point.as:331]
+PASSED: ret.equals(p1) [Point.as:333]
+PASSED: ret.toString() == '(x=NaN, y=NaN)' [Point.as:335]
+PASSED: ret.toString() == '(x=0, y=10)' [Point.as:340]
+PASSED: ret.toString() == '(x=10, y=0)' [Point.as:342]
+PASSED: ret.toString() == '(x=5, y=5)' [Point.as:344]
+PASSED: typeof(ret) == 'undefined' [Point.as:354]
+PASSED: p1.equals(p0) [Point.as:355]
+PASSED: typeof(ret) == 'undefined' [Point.as:360]
+PASSED: p1.equals(p0) [Point.as:361]
+PASSED: typeof(ret) == 'undefined' [Point.as:366]
+PASSED: p1.toString() == '(x=5, y=0)' [Point.as:367]
+PASSED: typeof(ret) == 'undefined' [Point.as:372]
+PASSED: p1.toString() == '(x=0, y=-5)' [Point.as:373]
+PASSED: typeof(ret) == 'undefined' [Point.as:378]
+PASSED: p1.toString() == '(x=-6, y=8)' [Point.as:379]
+PASSED: typeof(ret) == 'undefined' [Point.as:384]
+PASSED: p1.toString() == '(x=-5, y=0)' [Point.as:385]
+PASSED: typeof(ret) == 'undefined' [Point.as:390]
+PASSED: p1.toString() == '(x=NaN, y=NaN)' [Point.as:391]
+PASSED: typeof(ret) == 'undefined' [Point.as:396]
+PASSED: p1.toString() == '(x=x, y=y)' [Point.as:397]
+PASSED: typeof(ret) == 'undefined' [Point.as:405]
+PASSED: p0.toString() == '(x=xundefined, y=yundefined)' [Point.as:406]
+PASSED: typeof(ret) == 'undefined' [Point.as:410]
+PASSED: p0.toString() == '(x=xa, y=yundefined)' [Point.as:411]
+PASSED: typeof(ret) == 'undefined' [Point.as:415]
+PASSED: p0.toString() == '(x=xa, y=yb)' [Point.as:416]
+PASSED: typeof(ret) == 'undefined' [Point.as:420]
+PASSED: p0.toString() == '(x=4-6, y=-3)' [Point.as:421]
+PASSED: ret.toString() == undefined [Point.as:427]
+PASSED: ! ret instanceof Point [Point.as:428]
+PASSED: p0 instanceof Point [Point.as:434]
+PASSED: p0.toString() == '(x=NaN, y=NaN)' [Point.as:435]
+PASSED: p0 instanceof Point [Point.as:438]
+PASSED: p0.toString() == '(x=NaN, y=NaN)' [Point.as:439]
+PASSED: p0 instanceof Point [Point.as:442]
+PASSED: p0.toString() == '(x=1, y=0)' [Point.as:443]
+PASSED: p0 instanceof Point [Point.as:446]
+PASSED: p0.x == -1 [Point.as:447]
+PASSED: Math.round(p0.y*100) == 0 [Point.as:448]
+PASSED: p0 instanceof Point [Point.as:451]
+PASSED: Math.round(p0.x*100) == 0 [Point.as:452]
+PASSED: p0.y == 1 [Point.as:453]
+PASSED: p0 instanceof Point [Point.as:456]
+PASSED: p0.x == 1 [Point.as:457]
+PASSED: Math.round(p0.y*100) == 0 [Point.as:458]
+PASSED: p0 instanceof Point [Point.as:461]
+PASSED: Math.round(p0.x*100) == 0 [Point.as:462]
+PASSED: p0.y == -1 [Point.as:463]
+PASSED: p0 instanceof Point [Point.as:466]
+PASSED: p0.x == 5 [Point.as:467]
+PASSED: p0.y == 0 [Point.as:468]
+PASSED: ret instanceof Point [Point.as:477]
+PASSED: p0.toString() == '(x=x, y=y)' [Point.as:478]
+PASSED: ret.toString() == '(x=NaN, y=NaN)' [Point.as:479]
+PASSED: ret instanceof Point [Point.as:483]
+PASSED: ret.toString() == '(x=NaN, y=NaN)' [Point.as:484]
+PASSED: p0.toString() == '(x=x, y=y)' [Point.as:485]
+PASSED: ret instanceof Point [Point.as:487]
+PASSED: ret.toString() == '(x=NaN, y=NaN)' [Point.as:488]
+PASSED: p0.toString() == '(x=x, y=y)' [Point.as:489]
+PASSED: ret instanceof Point [Point.as:494]
+PASSED: ret.toString() == '(x=NaN, y=NaN)' [Point.as:495]
+PASSED: p0.toString() == '(x=x, y=y)' [Point.as:496]
+PASSED: p1.toString() == '(x=x1, y=y1)' [Point.as:497]
+PASSED: ret.toString() == '(x=1, y=2)' [Point.as:502]
+PASSED: ret.toString() == '(x=1, y=2)' [Point.as:505]
+check_totals: 186
diff --git a/test/gnash/actionscript.all/Point.as b/test/gnash/actionscript.all/Point.as
new file mode 100644
index 0000000..efdd845
--- /dev/null
+++ b/test/gnash/actionscript.all/Point.as
@@ -0,0 +1,513 @@
+// 
+//   Copyright (C) 2008 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+//
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+// Test case for TextFormat ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+rcsid="$Id: Point.as,v 1.7 2008/06/19 11:49:17 bwy Exp $";
+
+#include "check.as"
+
+#if OUTPUT_VERSION < 8
+
+check_equals(typeof(flash), 'undefined');
+
+check_totals(1);
+
+#else
+
+Point = flash.geom.Point;
+check_equals(typeof(Point), 'function');
+check_equals(typeof(Point.prototype), 'object');
+check(Point.prototype.hasOwnProperty('length'));
+check(!Point.prototype.hasOwnProperty('x'));
+check(!Point.prototype.hasOwnProperty('y'));
+check(Point.prototype.hasOwnProperty('add'));
+check(Point.prototype.hasOwnProperty('clone'));
+check(!Point.prototype.hasOwnProperty('distance'));
+check(Point.hasOwnProperty('distance'));
+check(Point.prototype.hasOwnProperty('equals'));
+check(!Point.prototype.hasOwnProperty('interpolate'));
+check(Point.hasOwnProperty('interpolate'));
+check(Point.prototype.hasOwnProperty('normalize'));
+check(Point.prototype.hasOwnProperty('offset'));
+check(!Point.prototype.hasOwnProperty('polar'));
+check(Point.hasOwnProperty('polar'));
+check(Point.prototype.hasOwnProperty('subtract'));
+check(Point.prototype.hasOwnProperty('toString'));
+
+//-------------------------------------------------------------
+// Test constructor (and x, y, length)
+//-------------------------------------------------------------
+
+p0 = new Point();
+check_equals(typeof(p0), 'object');
+check(p0 instanceof Point);
+check(p0.hasOwnProperty('x'));
+check(p0.hasOwnProperty('y'));
+check_equals(''+p0, '(x=0, y=0)');
+check_equals(typeof(p0.x), 'number');
+check_equals(typeof(p0.y), 'number');
+check_equals(typeof(p0.length), 'number');
+check_equals(p0.length, 0);
+
+a = []; for (var i in p0) a.push(i);
+check_equals(a.length, 10); // most of them...
+
+p0 = new Point('x', 'y');
+check_equals(''+p0, '(x=x, y=y)');
+check_equals(typeof(p0.x), 'string');
+check_equals(typeof(p0.y), 'string');
+check_equals(typeof(p0.length), 'number');
+check(isNaN(p0.length));
+p0.x = 1;
+check(isNaN(p0.length));
+p0.y = 0;
+check_equals(p0.length, 1);
+
+p0 = new Point(3, 4);
+check_equals(p0.length, 5);
+
+ASSetPropFlags(p0, "length", 0, 4); // clear read-only (if any)
+p0.length = 10;
+check_equals(p0.length, 5);
+
+p0 = new Point(50, -Infinity);
+check_equals(p0.length, Infinity);
+
+p0 = new Point(0, 0);
+check_equals(p0.length, 0);
+
+//-------------------------------------------------------------
+// Test Point.add
+//-------------------------------------------------------------
+
+p0 = new Point('x', 'y');
+ret = p0.add();
+check(ret instanceof Point);
+check_equals(p0.toString(), '(x=x, y=y)');
+check_equals(ret.toString(), '(x=xundefined, y=yundefined)');
+String.prototype.x = 3; // to test it's used
+ret = p0.add('1');
+delete String.prototype.x;
+check(ret instanceof Point);
+check_equals(ret.toString(), '(x=x3, y=yundefined)');
+check_equals(p0.toString(), '(x=x, y=y)');
+ret = p0.add(1, '2');
+check(ret instanceof Point);
+check_equals(ret.toString(), '(x=xundefined, y=yundefined)');
+check_equals(p0.toString(), '(x=x, y=y)');
+
+p0 = new Point('x', 'y');
+p1 = new Point('x1', 'y1');
+ret = p0.add(p1);
+check(ret instanceof Point);
+check_equals(ret.toString(), '(x=xx1, y=yy1)');
+check_equals(p0.toString(), '(x=x, y=y)');
+check_equals(p1.toString(), '(x=x1, y=y1)');
+
+p0 = new Point(2, 3);
+p1 = { x:1, y:1 };
+ret = p0.add(p1);
+check_equals(ret.toString(), '(x=3, y=4)');
+
+ret = p0.add(p1, 4, 5, 6);
+check_equals(ret.toString(), '(x=3, y=4)');
+
+// A non-point with a point's add method.
+fakepoint = {x:20, y:30};
+fakepoint.add = Point.prototype.add;
+ret = fakepoint.add(p0);
+check_equals(ret.toString(), "(x=22, y=33)");
+check(ret instanceof Point);
+
+//-------------------------------------------------------------
+// Test Point.clone
+//-------------------------------------------------------------
+
+p0 = new Point(3, 4);
+p0.z = 5;
+p2 = p0.clone();
+check(p2 instanceof Point);
+check_equals(p2.toString(), "(x=3, y=4)");
+check_equals(typeof(p2.z), 'undefined');
+p2 = p0.clone(1, 2, 3);
+check(p2 instanceof Point);
+check_equals(p2.toString(), "(x=3, y=4)");
+
+// A non-point with a point's clone method.
+fakepoint = {x:20, y:30};
+fakepoint.clone = Point.prototype.clone;
+ret = fakepoint.clone(p0);
+check_equals(ret.toString(), "(x=20, y=30)");
+check(ret instanceof Point);
+
+//-------------------------------------------------------------
+// Test Point.distance (static)
+//-------------------------------------------------------------
+
+dist = Point.distance();
+check_equals(typeof(dist), 'undefined');
+
+dist = Point.distance(undefined);
+check_equals(typeof(dist), 'undefined');
+
+o0 = {x:10, y:1};
+o1 = {x:21, y:1};
+dist = Point.distance(o0, o1);
+check_equals(typeof(dist), 'undefined');
+
+p0 = new Point('x', 'y');
+p1 = new Point('a', 'b');
+dist = Point.distance(p0, p1);
+check_equals(typeof(dist), 'number');
+check(isNaN(dist));
+dist = p0.distance(p1);
+check_equals(typeof(dist), 'undefined');
+
+p0 = new Point('10', '20');
+p1 = new Point('10', 'y');
+dist = Point.distance(p0, p1);
+check_equals(typeof(dist), 'number');
+check(isNaN(dist));
+dist = p0.distance(p1);
+check_equals(typeof(dist), 'undefined');
+
+p0 = new Point('10', 'y');
+p1 = new Point('10', '20');
+dist = Point.distance(p0, p1);
+check_equals(typeof(dist), 'number');
+check(isNaN(dist));
+dist = p0.distance(p1);
+check_equals(typeof(dist), 'undefined');
+
+p0 = new Point('5', '4');
+p1 = new Point('4', '7');
+dist = Point.distance(p0, p1);
+check_equals(typeof(dist), 'number');
+check_equals(Math.round(dist*100), 316);
+dist = p0.distance(p1);
+check_equals(typeof(dist), 'undefined');
+
+p0 = new Point('1', '1');
+p1 = new Point('10', '1');
+dist = Point.distance(p0, p1);
+check_equals(typeof(dist), 'number');
+check_equals(dist, 9);
+
+// Doesn't matter if second arg is an instanceof Point
+dist = Point.distance(p0, o1);
+check_equals(typeof(dist), 'number');
+check_equals(dist, 20);
+
+// But first arg *must* be instanceof point !
+dist = Point.distance(o1, p0);
+check_equals(typeof(dist), 'undefined');
+o1.__proto__ = Point.prototype;
+dist = Point.distance(o1, p0);
+check_equals(dist, 20);
+
+//-------------------------------------------------------------
+// Test Point.equals
+//-------------------------------------------------------------
+
+o0 = {};
+o0.valueOf = function() { return 4; };
+o1 = {};
+o1.valueOf = function() { return 4; };
+
+p0 = new Point(3, o0);
+check(p0.equals(p0));
+
+p1 = new Point(3, o1);
+check(p1.equals(p1));
+
+check(p0 != p1);
+check_equals(p0.toString(), p1.toString());
+
+check(!p0.equals(p1));
+check(!p1.equals(p0));
+
+ret = p0.equals();
+check_equals(typeof(ret), 'boolean');
+check(!ret);
+
+p2 = new Point(3, o1);
+check(p1.equals(p2));
+// Equals doesn't return true if p2 isn't an point
+p2 = {x:3, y:o1};
+ret = p1.equals(p2);
+check_equals(typeof(ret), 'boolean');
+check(!ret);
+// But we can cheat ...
+p2.__proto__ = Point.prototype;
+check(p1.equals(p2));
+// ... even with double jump to get there ...
+o3 = {}; o3.prototype = {}; o3.prototype.__proto__ = Point.prototype;
+p2.__proto__ = o3.prototype;
+check(p1.equals(p2));
+// ... but not with syntetized objects ?
+String.prototype.x = 3;
+String.prototype.y = o1;
+String.prototype.__proto__ = Point.prototype;
+check(!p1.equals('string'));
+
+// A non-point with a point's equals method.
+fakepoint = {x:20, y:30};
+fakepoint.equals = Point.prototype.equals;
+ret = fakepoint.equals(new Point(20,30));
+check_equals(ret.toString(), "true");
+check_equals(typeof(ret), "boolean");
+
+//-------------------------------------------------------------
+// Test Point.interpolate (static)
+//-------------------------------------------------------------
+
+ret = Point.interpolate();
+check(ret instanceof Point);
+check_equals(ret.toString(), '(x=NaN, y=NaN)');
+
+ret = Point.interpolate(1, 2, 3);
+check(ret instanceof Point);
+check_equals(ret.toString(), '(x=NaN, y=NaN)');
+
+p0 = new Point('x0', 'y0');
+p1 = new Point('x1', 'y1');
+ret = Point.interpolate(p0, p1, 3);
+check(ret instanceof Point);
+check_equals(ret.toString(), '(x=x1NaN, y=y1NaN)');
+
+p0 = new Point('0', '0');
+p1 = new Point('10', '0');
+ret = Point.interpolate(p0, p1, 3);
+check(ret instanceof Point);
+check_equals(ret.toString(), '(x=10-30, y=00)');
+ret = Point.interpolate(p0, p1, 0);
+check(ret instanceof Point);
+check_equals(ret.toString(), '(x=100, y=00)');
+ret = Point.interpolate(p0, p1, 0.5);
+check(ret instanceof Point);
+check_equals(ret.toString(), '(x=10-5, y=00)');
+
+// second arg drives newAdd
+p0 = new Point(0, 0);
+p1 = new Point('10', '0');
+ret = Point.interpolate(p0, p1, 3);
+check(ret instanceof Point);
+check_equals(ret.toString(), '(x=10-30, y=00)');
+
+// second arg drives newAdd
+p0 = new Point('0', '0');
+p1 = new Point(10, 0);
+ret = Point.interpolate(p0, p1, 3);
+check(ret instanceof Point);
+check_equals(ret.toString(), '(x=-20, y=0)');
+
+p0 = new Point(0, 0);
+p1 = new Point(10, 0);
+ret = Point.interpolate(p0, p1, 0.5);
+check(ret instanceof Point);
+check_equals(ret.toString(), '(x=5, y=0)');
+
+p0 = new Point(0, 0);
+p1 = new Point(10, 0);
+ret = Point.interpolate(p0, p1, 1, 'discarder arg');
+check(ret.equals(p0));
+ret = Point.interpolate(p0, p1, 0);
+check(ret.equals(p1));
+ret = Point.interpolate(p0, p1);
+check_equals(ret.toString(), '(x=NaN, y=NaN)');
+
+o0 = {x:0, y:10};
+o1 = {x:10, y:0};
+ret = Point.interpolate(o0, o1, 1);
+check_equals(ret.toString(), '(x=0, y=10)');
+ret = Point.interpolate(o0, o1, 0);
+check_equals(ret.toString(), '(x=10, y=0)');
+ret = Point.interpolate(o0, o1, 0.5);
+check_equals(ret.toString(), '(x=5, y=5)');
+
+
+//-------------------------------------------------------------
+// Test Point.normalize
+//-------------------------------------------------------------
+
+p0 = new Point(0, 0);
+p1 = p0.clone();
+ret = p1.normalize();
+check_equals(typeof(ret), 'undefined');
+check(p1.equals(p0));
+
+p0 = new Point(0, 0);
+p1 = p0.clone();
+ret = p1.normalize(10);
+check_equals(typeof(ret), 'undefined');
+check(p1.equals(p0));
+
+p0 = new Point(10, 0);
+p1 = p0.clone();
+ret = p1.normalize(5);
+check_equals(typeof(ret), 'undefined');
+check_equals(p1.toString(), '(x=5, y=0)');
+
+p0 = new Point(0, 10);
+p1 = p0.clone();
+ret = p1.normalize(-5);
+check_equals(typeof(ret), 'undefined');
+check_equals(p1.toString(), '(x=0, y=-5)');
+
+p0 = new Point(3, -4);
+p1 = p0.clone();
+ret = p1.normalize(-10);
+check_equals(typeof(ret), 'undefined');
+check_equals(p1.toString(), '(x=-6, y=8)');
+
+p0 = new Point(-10, 0);
+p1 = p0.clone();
+ret = p1.normalize(5);
+check_equals(typeof(ret), 'undefined');
+check_equals(p1.toString(), '(x=-5, y=0)');
+
+p0 = new Point(-10, 0);
+p1 = p0.clone();
+ret = p1.normalize('r');
+check_equals(typeof(ret), 'undefined');
+check_equals(p1.toString(), '(x=NaN, y=NaN)');
+
+p0 = new Point('x', 'y');
+p1 = p0.clone();
+ret = p1.normalize(5);
+check_equals(typeof(ret), 'undefined');
+check_equals(p1.toString(), '(x=x, y=y)');
+
+//-------------------------------------------------------------
+// Test Point.offset
+//-------------------------------------------------------------
+
+p0 = new Point('x', 'y');
+ret = p0.offset();
+check_equals(typeof(ret), 'undefined');
+check_equals(p0.toString(), '(x=xundefined, y=yundefined)');
+
+p0 = new Point('x', 'y');
+ret = p0.offset('a');
+check_equals(typeof(ret), 'undefined');
+check_equals(p0.toString(), '(x=xa, y=yundefined)');
+
+p0 = new Point('x', 'y');
+ret = p0.offset('a', 'b', 3);
+check_equals(typeof(ret), 'undefined');
+check_equals(p0.toString(), '(x=xa, y=yb)');
+
+p0 = new Point(4, 5);
+ret = p0.offset('-6', -8);
+check_equals(typeof(ret), 'undefined');
+check_equals(p0.toString(), '(x=4-6, y=-3)');
+
+// A non-point with a point's offset method (fails)
+fakepoint = {x:20, y:30};
+fakepoint.offset = Point.prototype.offset;
+ret = fakepoint.offset(new Point(1, 3));
+check_equals(ret.toString(), undefined);
+check(! ret instanceof Point);
+//-------------------------------------------------------------
+// Test Point.polar (static)
+//-------------------------------------------------------------
+
+p0 = Point.polar();
+check(p0 instanceof Point);
+check_equals(p0.toString(), '(x=NaN, y=NaN)');
+
+p0 = Point.polar(1);
+check(p0 instanceof Point);
+check_equals(p0.toString(), '(x=NaN, y=NaN)');
+
+p0 = Point.polar(1, 0);
+check(p0 instanceof Point);
+check_equals(p0.toString(), '(x=1, y=0)');
+
+p0 = Point.polar(1, Math.PI);
+check(p0 instanceof Point);
+check_equals(p0.x, -1);
+check_equals(Math.round(p0.y*100), 0);
+
+p0 = Point.polar(1, Math.PI/2);
+check(p0 instanceof Point);
+check_equals(Math.round(p0.x*100), 0);
+check_equals(p0.y, 1);
+
+p0 = Point.polar(1, Math.PI*2);
+check(p0 instanceof Point);
+check_equals(p0.x, 1);
+check_equals(Math.round(p0.y*100), 0);
+
+p0 = Point.polar(1, Math.PI*1.5);
+check(p0 instanceof Point);
+check_equals(Math.round(p0.x*100), 0);
+check_equals(p0.y, -1);
+
+p0 = Point.polar('5', '0');
+check(p0 instanceof Point);
+check_equals(p0.x, 5);
+check_equals(p0.y, 0);
+
+
+//-------------------------------------------------------------
+// Test Point.subtract
+//-------------------------------------------------------------
+
+p0 = new Point('x', 'y');
+ret = p0.subtract();
+check(ret instanceof Point);
+check_equals(p0.toString(), '(x=x, y=y)');
+check_equals(ret.toString(), '(x=NaN, y=NaN)');
+String.prototype.x = 3; // to test it's used
+ret = p0.subtract('1');
+delete String.prototype.x;
+check(ret instanceof Point);
+check_equals(ret.toString(), '(x=NaN, y=NaN)');
+check_equals(p0.toString(), '(x=x, y=y)');
+ret = p0.subtract(1, '2');
+check(ret instanceof Point);
+check_equals(ret.toString(), '(x=NaN, y=NaN)');
+check_equals(p0.toString(), '(x=x, y=y)');
+
+p0 = new Point('x', 'y');
+p1 = new Point('x1', 'y1');
+ret = p0.subtract(p1);
+check(ret instanceof Point);
+check_equals(ret.toString(), '(x=NaN, y=NaN)');
+check_equals(p0.toString(), '(x=x, y=y)');
+check_equals(p1.toString(), '(x=x1, y=y1)');
+
+p0 = new Point(2, 3);
+p1 = { x:1, y:1 };
+ret = p0.subtract(p1);
+check_equals(ret.toString(), '(x=1, y=2)');
+
+ret = p0.subtract(p1, 4, 5, 6);
+check_equals(ret.toString(), '(x=1, y=2)');
+
+//-------------------------------------------------------------
+// END OF TEST
+//-------------------------------------------------------------
+
+check_totals(186);
+
+#endif // OUTPUT_VERSION >= 8
diff --git a/test/gnash/actionscript.all/README b/test/gnash/actionscript.all/README
new file mode 100644
index 0000000..7fc2f41
--- /dev/null
+++ b/test/gnash/actionscript.all/README
@@ -0,0 +1,18 @@
+The .as files, from Gnash's test suite's directory with same name, have been
+imported here and compiled using the following command line ($v is version):
+	makeswf -v $v -r 12 -s 640x480 -o Test-$v.swf Test.as
+
+check.as has been rewritten, so it performs a Swfdec style trace test mostly
+without modifications to the test scripts. Where modifications were needed, the
+original file is named .as.original and modified version just .as
+
+Various .as files were not needed, they are listed in the REMOVED
+
+Tests that are not working in Swfdec yet are in pending directory and are not
+included in make check
+
+Tests that are considered broken for some reason are not included. Most likely
+reason is producing FAIL or XFAIL on latest Adobe's Windows player
+
+The date when the tests were last imported/updated from Gnash's CVS repository
+can be found from UPDATED
diff --git a/test/gnash/actionscript.all/REMOVED b/test/gnash/actionscript.all/REMOVED
new file mode 100644
index 0000000..4be6af1
--- /dev/null
+++ b/test/gnash/actionscript.all/REMOVED
@@ -0,0 +1,7 @@
+CustomActions.as	Doesn't test anything
+dejagnu.as		Part of Gnash's test system that isn't used
+dejagnu_so_fini.as	Ditto
+dejagnu_so_init.as	Ditto
+rtmp.as			Doesn't test anything
+rtrace.as		PHP based report system
+xtrace.as		Help function that isn't used
diff --git a/test/gnash/actionscript.all/Rectangle-5.swf b/test/gnash/actionscript.all/Rectangle-5.swf
new file mode 100644
index 0000000..73f259e
Binary files /dev/null and b/test/gnash/actionscript.all/Rectangle-5.swf differ
diff --git a/test/gnash/actionscript.all/Rectangle-5.swf.trace b/test/gnash/actionscript.all/Rectangle-5.swf.trace
new file mode 100644
index 0000000..9e5f289
--- /dev/null
+++ b/test/gnash/actionscript.all/Rectangle-5.swf.trace
@@ -0,0 +1,2 @@
+PASSED: typeof(flash) == 'undefined' [Rectangle.as:29]
+check_totals: 1
diff --git a/test/gnash/actionscript.all/Rectangle-6.swf b/test/gnash/actionscript.all/Rectangle-6.swf
new file mode 100644
index 0000000..91c902d
Binary files /dev/null and b/test/gnash/actionscript.all/Rectangle-6.swf differ
diff --git a/test/gnash/actionscript.all/Rectangle-6.swf.trace b/test/gnash/actionscript.all/Rectangle-6.swf.trace
new file mode 100644
index 0000000..9e5f289
--- /dev/null
+++ b/test/gnash/actionscript.all/Rectangle-6.swf.trace
@@ -0,0 +1,2 @@
+PASSED: typeof(flash) == 'undefined' [Rectangle.as:29]
+check_totals: 1
diff --git a/test/gnash/actionscript.all/Rectangle-7.swf b/test/gnash/actionscript.all/Rectangle-7.swf
new file mode 100644
index 0000000..c7d4210
Binary files /dev/null and b/test/gnash/actionscript.all/Rectangle-7.swf differ
diff --git a/test/gnash/actionscript.all/Rectangle-7.swf.trace b/test/gnash/actionscript.all/Rectangle-7.swf.trace
new file mode 100644
index 0000000..9e5f289
--- /dev/null
+++ b/test/gnash/actionscript.all/Rectangle-7.swf.trace
@@ -0,0 +1,2 @@
+PASSED: typeof(flash) == 'undefined' [Rectangle.as:29]
+check_totals: 1
diff --git a/test/gnash/actionscript.all/Rectangle-8.swf b/test/gnash/actionscript.all/Rectangle-8.swf
new file mode 100644
index 0000000..f323cba
Binary files /dev/null and b/test/gnash/actionscript.all/Rectangle-8.swf differ
diff --git a/test/gnash/actionscript.all/Rectangle-8.swf.trace b/test/gnash/actionscript.all/Rectangle-8.swf.trace
new file mode 100644
index 0000000..8673144
--- /dev/null
+++ b/test/gnash/actionscript.all/Rectangle-8.swf.trace
@@ -0,0 +1,97 @@
+PASSED: typeof(Rectangle) == 'function' [Rectangle.as:36]
+PASSED: typeof(Rectangle.prototype) == 'object' [Rectangle.as:37]
+PASSED: Rectangle.prototype.hasOwnProperty('bottom') [Rectangle.as:38]
+PASSED: Rectangle.prototype.hasOwnProperty('bottomRight') [Rectangle.as:39]
+PASSED: Rectangle.prototype.hasOwnProperty('left') [Rectangle.as:40]
+PASSED: Rectangle.prototype.hasOwnProperty('right') [Rectangle.as:41]
+PASSED: Rectangle.prototype.hasOwnProperty('size') [Rectangle.as:42]
+PASSED: Rectangle.prototype.hasOwnProperty('top') [Rectangle.as:43]
+PASSED: Rectangle.prototype.hasOwnProperty('topLeft') [Rectangle.as:44]
+PASSED: Rectangle.prototype.hasOwnProperty('clone') [Rectangle.as:45]
+PASSED: Rectangle.prototype.hasOwnProperty('contains') [Rectangle.as:46]
+PASSED: Rectangle.prototype.hasOwnProperty('containsPoint') [Rectangle.as:47]
+PASSED: Rectangle.prototype.hasOwnProperty('containsRectangle') [Rectangle.as:48]
+PASSED: Rectangle.prototype.hasOwnProperty('equals') [Rectangle.as:49]
+PASSED: Rectangle.prototype.hasOwnProperty('inflate') [Rectangle.as:50]
+PASSED: Rectangle.prototype.hasOwnProperty('inflatePoint') [Rectangle.as:51]
+PASSED: Rectangle.prototype.hasOwnProperty('intersection') [Rectangle.as:52]
+PASSED: Rectangle.prototype.hasOwnProperty('intersects') [Rectangle.as:53]
+PASSED: Rectangle.prototype.hasOwnProperty('isEmpty') [Rectangle.as:54]
+PASSED: Rectangle.prototype.hasOwnProperty('offset') [Rectangle.as:55]
+PASSED: Rectangle.prototype.hasOwnProperty('offsetPoint') [Rectangle.as:56]
+PASSED: Rectangle.prototype.hasOwnProperty('setEmpty') [Rectangle.as:57]
+PASSED: Rectangle.prototype.hasOwnProperty('toString') [Rectangle.as:58]
+PASSED: Rectangle.prototype.hasOwnProperty('union') [Rectangle.as:59]
+PASSED: !Rectangle.prototype.hasOwnProperty('height') [Rectangle.as:60]
+PASSED: !Rectangle.prototype.hasOwnProperty('width') [Rectangle.as:61]
+PASSED: !Rectangle.prototype.hasOwnProperty('x') [Rectangle.as:62]
+PASSED: !Rectangle.prototype.hasOwnProperty('y') [Rectangle.as:63]
+PASSED: typeof(r0) == 'object' [Rectangle.as:70]
+PASSED: r0 instanceof Rectangle [Rectangle.as:71]
+PASSED: r0.hasOwnProperty('height') [Rectangle.as:72]
+PASSED: r0.hasOwnProperty('width') [Rectangle.as:73]
+PASSED: r0.hasOwnProperty('x') [Rectangle.as:74]
+PASSED: r0.hasOwnProperty('y') [Rectangle.as:75]
+PASSED: ''+r0 == '(x=0, y=0, w=0, h=0)' [Rectangle.as:76]
+PASSED: r0.isEmpty() [Rectangle.as:77]
+PASSED: typeof(r0.x) == 'number' [Rectangle.as:78]
+PASSED: typeof(r0.y) == 'number' [Rectangle.as:79]
+PASSED: typeof(r0.width) == 'number' [Rectangle.as:80]
+PASSED: typeof(r0.height) == 'number' [Rectangle.as:81]
+PASSED: a.length == 26 [Rectangle.as:84]
+PASSED: r0.hasOwnProperty('height') [Rectangle.as:87]
+PASSED: r0.hasOwnProperty('width') [Rectangle.as:88]
+PASSED: r0.hasOwnProperty('x') [Rectangle.as:89]
+PASSED: r0.hasOwnProperty('y') [Rectangle.as:90]
+PASSED: ''+r0 == '(x=1, y=undefined, w=undefined, h=undefined)' [Rectangle.as:91]
+PASSED: r0.isEmpty() [Rectangle.as:92]
+PASSED: ''+r0 == '(x=1, y=1, w=1, h=string)' [Rectangle.as:95]
+PASSED: r0.isEmpty() [Rectangle.as:96]
+PASSED: ''+r0 == '(x=a,3, y=1, w=-30, h=string)' [Rectangle.as:99]
+PASSED: r0.isEmpty() [Rectangle.as:100]
+PASSED: typeof(r0.width) == 'number' [Rectangle.as:101]
+PASSED: typeof(r0.height) == 'string' [Rectangle.as:102]
+PASSED: ''+r0 == '(x=0, y=0, w=2, h=null)' [Rectangle.as:106]
+PASSED: r0.isEmpty() [Rectangle.as:107]
+PASSED: typeof(r0.width) == 'object' [Rectangle.as:108]
+PASSED: typeof(r0.height) == 'null' [Rectangle.as:109]
+PASSED: ''+r0 == '(x=0, y=0, w=2, h=2)' [Rectangle.as:112]
+PASSED: r0.isEmpty() [Rectangle.as:113]
+PASSED: typeof(r0.width) == 'object' [Rectangle.as:114]
+PASSED: typeof(r0.height) == 'object' [Rectangle.as:115]
+PASSED: ''+r0 == '(x=string, y=0, w=2, h=2)' [Rectangle.as:118]
+PASSED: !r0.isEmpty() [Rectangle.as:119]
+PASSED: r0.x == 'string' [Rectangle.as:120]
+PASSED: r0.y == 0 [Rectangle.as:121]
+PASSED: r0.width == 2 [Rectangle.as:122]
+PASSED: r0.height == 2 [Rectangle.as:123]
+PASSED: ''+r0 == '(x=32, y=-30, w=40, h=string2)' [Rectangle.as:129]
+PASSED: delete r0.x [Rectangle.as:130]
+PASSED: ''+r0 == '(x=undefined, y=-30, w=40, h=string2)' [Rectangle.as:131]
+PASSED: r0.left == 'x' [Rectangle.as:138]
+PASSED: r0.top == 'y' [Rectangle.as:139]
+PASSED: r0.right == 'xw' [Rectangle.as:140]
+PASSED: r0.bottom == 'yh' [Rectangle.as:141]
+PASSED: r0.x == 10 [Rectangle.as:144]
+PASSED: r0.left == 10 [Rectangle.as:145]
+PASSED: r0.width == 'wNaN' [Rectangle.as:146]
+PASSED: r0.right == '10wNaN' [Rectangle.as:147]
+PASSED: r0.x == 10 [Rectangle.as:150]
+PASSED: typeof(r0.width) == 'number' [Rectangle.as:151]
+PASSED: r0.width == 10 [Rectangle.as:152]
+PASSED: r0.y == 5 [Rectangle.as:155]
+PASSED: r0.bottom == '5hNaN' [Rectangle.as:156]
+PASSED: r0.height == '5' [Rectangle.as:158]
+PASSED: r0.width == 15 [Rectangle.as:162]
+PASSED: r0.bottomRight instanceof flash.geom.Point [Rectangle.as:169]
+PASSED: r0.topLeft instanceof flash.geom.Point [Rectangle.as:170]
+PASSED: ''+r0.bottomRight == '(x=xw, y=yh)' [Rectangle.as:171]
+PASSED: ''+r0.topLeft == '(x=x, y=y)' [Rectangle.as:172]
+PASSED: typeof(r0.bottomRight) == 'object' [Rectangle.as:176]
+PASSED: typeof(r0.topLeft) == 'object' [Rectangle.as:180]
+PASSED: r0.size instanceof flash.geom.Point [Rectangle.as:187]
+PASSED: ''+r0.size == '(x=w, y=h)' [Rectangle.as:188]
+PASSED: typeof(r0.topLeft) == 'object' [Rectangle.as:191]
+PASSED: r2.toString() == '(x=x, y=y, w=w, h=h)' [Rectangle.as:200]
+PASSED: r2.custom == undefined [Rectangle.as:201]
+check_totals: 96
diff --git a/test/gnash/actionscript.all/Rectangle.as b/test/gnash/actionscript.all/Rectangle.as
new file mode 100644
index 0000000..266d311
--- /dev/null
+++ b/test/gnash/actionscript.all/Rectangle.as
@@ -0,0 +1,281 @@
+// 
+//   Copyright (C) 2008 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+//
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+// Test case for TextFormat ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+rcsid="$Id: Rectangle.as,v 1.2 2008/05/07 08:03:40 strk Exp $";
+
+#include "check.as"
+
+#if OUTPUT_VERSION < 8
+
+check_equals(typeof(flash), 'undefined');
+
+check_totals(1);
+
+#else
+
+Rectangle = flash.geom.Rectangle;
+check_equals(typeof(Rectangle), 'function');
+check_equals(typeof(Rectangle.prototype), 'object');
+check(Rectangle.prototype.hasOwnProperty('bottom'));
+check(Rectangle.prototype.hasOwnProperty('bottomRight'));
+check(Rectangle.prototype.hasOwnProperty('left'));
+check(Rectangle.prototype.hasOwnProperty('right'));
+check(Rectangle.prototype.hasOwnProperty('size'));
+check(Rectangle.prototype.hasOwnProperty('top'));
+check(Rectangle.prototype.hasOwnProperty('topLeft'));
+check(Rectangle.prototype.hasOwnProperty('clone'));
+check(Rectangle.prototype.hasOwnProperty('contains'));
+check(Rectangle.prototype.hasOwnProperty('containsPoint'));
+check(Rectangle.prototype.hasOwnProperty('containsRectangle'));
+check(Rectangle.prototype.hasOwnProperty('equals'));
+check(Rectangle.prototype.hasOwnProperty('inflate'));
+check(Rectangle.prototype.hasOwnProperty('inflatePoint'));
+check(Rectangle.prototype.hasOwnProperty('intersection'));
+check(Rectangle.prototype.hasOwnProperty('intersects'));
+check(Rectangle.prototype.hasOwnProperty('isEmpty'));
+check(Rectangle.prototype.hasOwnProperty('offset'));
+check(Rectangle.prototype.hasOwnProperty('offsetPoint'));
+check(Rectangle.prototype.hasOwnProperty('setEmpty'));
+check(Rectangle.prototype.hasOwnProperty('toString'));
+check(Rectangle.prototype.hasOwnProperty('union'));
+check(!Rectangle.prototype.hasOwnProperty('height'));
+check(!Rectangle.prototype.hasOwnProperty('width'));
+check(!Rectangle.prototype.hasOwnProperty('x'));
+check(!Rectangle.prototype.hasOwnProperty('y'));
+
+//-------------------------------------------------------------
+// Test constructor (and width, height, x, y)
+//-------------------------------------------------------------
+
+r0 = new Rectangle();
+check_equals(typeof(r0), 'object');
+check(r0 instanceof Rectangle);
+check(r0.hasOwnProperty('height'));
+check(r0.hasOwnProperty('width'));
+check(r0.hasOwnProperty('x'));
+check(r0.hasOwnProperty('y'));
+check_equals(''+r0, '(x=0, y=0, w=0, h=0)');
+check(r0.isEmpty());
+check_equals(typeof(r0.x), 'number');
+check_equals(typeof(r0.y), 'number');
+check_equals(typeof(r0.width), 'number');
+check_equals(typeof(r0.height), 'number');
+
+a = []; for (var i in r0) a.push(i);
+check_equals(a.length, 26); // most of them...
+
+r0 = new Rectangle(1);
+check(r0.hasOwnProperty('height'));
+check(r0.hasOwnProperty('width'));
+check(r0.hasOwnProperty('x'));
+check(r0.hasOwnProperty('y'));
+check_equals(''+r0, '(x=1, y=undefined, w=undefined, h=undefined)');
+check(r0.isEmpty());
+
+r0 = new Rectangle(1, 1, 1, 'string');
+check_equals(''+r0, '(x=1, y=1, w=1, h=string)');
+check(r0.isEmpty());
+
+r0 = new Rectangle(['a',3], 1, -30, 'string');
+check_equals(''+r0, '(x=a,3, y=1, w=-30, h=string)');
+check(r0.isEmpty());
+check_equals(typeof(r0.width), 'number');
+check_equals(typeof(r0.height), 'string');
+
+o1 = {}; o1.toString = function() { return '2'; };
+r0 = new Rectangle(0, 0, o1, null);
+check_equals(''+r0, '(x=0, y=0, w=2, h=null)');
+check(r0.isEmpty());
+check_equals(typeof(r0.width), 'object');
+check_equals(typeof(r0.height), 'null');
+
+r0 = new Rectangle(0, 0, o1, o1);
+check_equals(''+r0, '(x=0, y=0, w=2, h=2)');
+check(r0.isEmpty()); // but it's still considered empty!
+check_equals(typeof(r0.width), 'object');
+check_equals(typeof(r0.height), 'object');
+
+r0 = new Rectangle('string', 0, 2, 2);
+check_equals(''+r0, '(x=string, y=0, w=2, h=2)');
+check(!r0.isEmpty()); // just checks width and height
+check_equals(r0.x, 'string');
+check_equals(r0.y, 0);
+check_equals(r0.width, 2);
+check_equals(r0.height, 2);
+
+r0.width = 40;
+r0.height = 'string2';
+r0.x = 32;
+r0.y = -30;
+check_equals(''+r0, '(x=32, y=-30, w=40, h=string2)');
+check(delete r0.x);
+check_equals(''+r0, '(x=undefined, y=-30, w=40, h=string2)');
+
+//-------------------------------------------------------------
+// Test bottom, right, left top
+//-------------------------------------------------------------
+
+r0 = new Rectangle('x', 'y', 'w', 'h');
+check_equals(r0.left, 'x');
+check_equals(r0.top, 'y');
+check_equals(r0.right, 'xw');
+check_equals(r0.bottom, 'yh');
+
+r0.left = 10;
+check_equals(r0.x, 10);
+check_equals(r0.left, 10);
+check_equals(r0.width, 'wNaN'); // w + old_x-10 ?
+check_equals(r0.right, '10wNaN'); 
+
+r0.right = 20;
+check_equals(r0.x, 10);
+check_equals(typeof(r0.width), 'number');
+check_equals(r0.width, 10); // right-left
+
+r0.top = 5;
+check_equals(r0.y, 5);
+check_equals(r0.bottom, '5hNaN');
+r0.bottom = 10;
+check_equals(r0.height, '5'); // 10-5
+
+r0 = new Rectangle(10, 10, 20, 20);
+r0.left = 15;
+check_equals(r0.width, 15); // old width (20) + ( old left (10) - new left (15) )
+
+//-------------------------------------------------------------
+// Test bottomRight, topLeft
+//-------------------------------------------------------------
+
+r0 = new Rectangle('x', 'y', 'w', 'h');
+check(r0.bottomRight instanceof flash.geom.Point);
+check(r0.topLeft instanceof flash.geom.Point);
+check_equals(''+r0.bottomRight, '(x=xw, y=yh)');
+check_equals(''+r0.topLeft, '(x=x, y=y)');
+
+ASSetPropFlags(r0, "bottomRight", 0, 4); // clear read-only (if any)
+r0.bottomRight = 4;
+check_equals(typeof(r0.bottomRight), 'object');
+
+ASSetPropFlags(r0, "topLeft", 0, 4); // clear read-only (if any)
+r0.topLeft = 4;
+check_equals(typeof(r0.topLeft), 'object');
+
+//-------------------------------------------------------------
+// Test size
+//-------------------------------------------------------------
+
+r0 = new Rectangle('x', 'y', 'w', 'h');
+check(r0.size instanceof flash.geom.Point);
+check_equals(''+r0.size, '(x=w, y=h)');
+ASSetPropFlags(r0, "size", 0, 4); // clear read-only (if any)
+r0.size = 4;
+check_equals(typeof(r0.topLeft), 'object');
+
+//-------------------------------------------------------------
+// Test clone
+//-------------------------------------------------------------
+
+r0 = new Rectangle('x', 'y', 'w', 'h');
+r0.custom = 4;
+r2 = r0.clone();
+check_equals(r2.toString(), '(x=x, y=y, w=w, h=h)');
+check_equals(r2.custom, undefined);
+
+//-------------------------------------------------------------
+// Test contains
+//-------------------------------------------------------------
+
+// TODO
+
+//-------------------------------------------------------------
+// Test containsPoint
+//-------------------------------------------------------------
+
+// TODO
+
+//-------------------------------------------------------------
+// Test containsRectangle
+//-------------------------------------------------------------
+
+// TODO
+
+//-------------------------------------------------------------
+// Test equals
+//-------------------------------------------------------------
+
+// TODO
+
+//-------------------------------------------------------------
+// Test inflate
+//-------------------------------------------------------------
+
+// TODO
+
+//-------------------------------------------------------------
+// Test inflatePoint
+//-------------------------------------------------------------
+
+// TODO
+
+//-------------------------------------------------------------
+// Test intersection
+//-------------------------------------------------------------
+
+// TODO
+
+//-------------------------------------------------------------
+// Test intersects
+//-------------------------------------------------------------
+
+// TODO
+
+//-------------------------------------------------------------
+// Test offset
+//-------------------------------------------------------------
+
+// TODO
+
+//-------------------------------------------------------------
+// Test offsetPoint
+//-------------------------------------------------------------
+
+// TODO
+
+//-------------------------------------------------------------
+// Test setEmpty
+//-------------------------------------------------------------
+
+// TODO
+
+//-------------------------------------------------------------
+// Test union
+//-------------------------------------------------------------
+
+// TODO
+
+//-------------------------------------------------------------
+// END OF TEST
+//-------------------------------------------------------------
+
+check_totals(96);
+
+#endif // OUTPUT_VERSION >= 8
diff --git a/test/gnash/actionscript.all/Selection-5.swf b/test/gnash/actionscript.all/Selection-5.swf
new file mode 100644
index 0000000..ef15f9a
Binary files /dev/null and b/test/gnash/actionscript.all/Selection-5.swf differ
diff --git a/test/gnash/actionscript.all/Selection-5.swf.trace b/test/gnash/actionscript.all/Selection-5.swf.trace
new file mode 100644
index 0000000..f3db561
--- /dev/null
+++ b/test/gnash/actionscript.all/Selection-5.swf.trace
@@ -0,0 +1,9 @@
+PASSED: typeof(Selection) == 'object' [Selection.as:31]
+PASSED: typeof(selectionObj) == 'undefined' [Selection.as:35]
+PASSED: typeof(Selection.getBeginIndex) == 'function' [Selection.as:38]
+PASSED: typeof(Selection.getCaretIndex) == 'function' [Selection.as:41]
+PASSED: typeof(Selection.getEndIndex) == 'function' [Selection.as:44]
+PASSED: typeof(Selection.getFocus) == 'function' [Selection.as:47]
+PASSED: typeof(Selection.setFocus) == 'function' [Selection.as:50]
+PASSED: typeof(Selection.setSelection) == 'function' [Selection.as:53]
+totals
diff --git a/test/gnash/actionscript.all/Selection-6.swf b/test/gnash/actionscript.all/Selection-6.swf
new file mode 100644
index 0000000..00581ee
Binary files /dev/null and b/test/gnash/actionscript.all/Selection-6.swf differ
diff --git a/test/gnash/actionscript.all/Selection-6.swf.trace b/test/gnash/actionscript.all/Selection-6.swf.trace
new file mode 100644
index 0000000..7d43382
--- /dev/null
+++ b/test/gnash/actionscript.all/Selection-6.swf.trace
@@ -0,0 +1,15 @@
+PASSED: typeof(Selection) == 'object' [Selection.as:31]
+PASSED: typeof(selectionObj) == 'undefined' [Selection.as:35]
+PASSED: typeof(Selection.getBeginIndex) == 'function' [Selection.as:38]
+PASSED: typeof(Selection.getCaretIndex) == 'function' [Selection.as:41]
+PASSED: typeof(Selection.getEndIndex) == 'function' [Selection.as:44]
+PASSED: typeof(Selection.getFocus) == 'function' [Selection.as:47]
+PASSED: typeof(Selection.setFocus) == 'function' [Selection.as:50]
+PASSED: typeof(Selection.setSelection) == 'function' [Selection.as:53]
+PASSED: typeof(Selection.addListener) == 'function' [Selection.as:60]
+PASSED: typeof(Selection.removeListener) == 'function' [Selection.as:61]
+XPASSED: typeof(Selection.broadcastMessage) == 'function' [Selection.as:62]
+XPASSED: Selection.hasOwnProperty("_listeners") [Selection.as:63]
+XPASSED: typeof(Selection._listeners) == 'object' [Selection.as:64]
+XPASSED: Selection._listeners instanceof Array [Selection.as:65]
+totals
diff --git a/test/gnash/actionscript.all/Selection-7.swf b/test/gnash/actionscript.all/Selection-7.swf
new file mode 100644
index 0000000..59b0214
Binary files /dev/null and b/test/gnash/actionscript.all/Selection-7.swf differ
diff --git a/test/gnash/actionscript.all/Selection-7.swf.trace b/test/gnash/actionscript.all/Selection-7.swf.trace
new file mode 100644
index 0000000..7d43382
--- /dev/null
+++ b/test/gnash/actionscript.all/Selection-7.swf.trace
@@ -0,0 +1,15 @@
+PASSED: typeof(Selection) == 'object' [Selection.as:31]
+PASSED: typeof(selectionObj) == 'undefined' [Selection.as:35]
+PASSED: typeof(Selection.getBeginIndex) == 'function' [Selection.as:38]
+PASSED: typeof(Selection.getCaretIndex) == 'function' [Selection.as:41]
+PASSED: typeof(Selection.getEndIndex) == 'function' [Selection.as:44]
+PASSED: typeof(Selection.getFocus) == 'function' [Selection.as:47]
+PASSED: typeof(Selection.setFocus) == 'function' [Selection.as:50]
+PASSED: typeof(Selection.setSelection) == 'function' [Selection.as:53]
+PASSED: typeof(Selection.addListener) == 'function' [Selection.as:60]
+PASSED: typeof(Selection.removeListener) == 'function' [Selection.as:61]
+XPASSED: typeof(Selection.broadcastMessage) == 'function' [Selection.as:62]
+XPASSED: Selection.hasOwnProperty("_listeners") [Selection.as:63]
+XPASSED: typeof(Selection._listeners) == 'object' [Selection.as:64]
+XPASSED: Selection._listeners instanceof Array [Selection.as:65]
+totals
diff --git a/test/gnash/actionscript.all/Selection-8.swf b/test/gnash/actionscript.all/Selection-8.swf
new file mode 100644
index 0000000..cc67c51
Binary files /dev/null and b/test/gnash/actionscript.all/Selection-8.swf differ
diff --git a/test/gnash/actionscript.all/Selection-8.swf.trace b/test/gnash/actionscript.all/Selection-8.swf.trace
new file mode 100644
index 0000000..7d43382
--- /dev/null
+++ b/test/gnash/actionscript.all/Selection-8.swf.trace
@@ -0,0 +1,15 @@
+PASSED: typeof(Selection) == 'object' [Selection.as:31]
+PASSED: typeof(selectionObj) == 'undefined' [Selection.as:35]
+PASSED: typeof(Selection.getBeginIndex) == 'function' [Selection.as:38]
+PASSED: typeof(Selection.getCaretIndex) == 'function' [Selection.as:41]
+PASSED: typeof(Selection.getEndIndex) == 'function' [Selection.as:44]
+PASSED: typeof(Selection.getFocus) == 'function' [Selection.as:47]
+PASSED: typeof(Selection.setFocus) == 'function' [Selection.as:50]
+PASSED: typeof(Selection.setSelection) == 'function' [Selection.as:53]
+PASSED: typeof(Selection.addListener) == 'function' [Selection.as:60]
+PASSED: typeof(Selection.removeListener) == 'function' [Selection.as:61]
+XPASSED: typeof(Selection.broadcastMessage) == 'function' [Selection.as:62]
+XPASSED: Selection.hasOwnProperty("_listeners") [Selection.as:63]
+XPASSED: typeof(Selection._listeners) == 'object' [Selection.as:64]
+XPASSED: Selection._listeners instanceof Array [Selection.as:65]
+totals
diff --git a/test/gnash/actionscript.all/Selection.as b/test/gnash/actionscript.all/Selection.as
new file mode 100644
index 0000000..c30758d
--- /dev/null
+++ b/test/gnash/actionscript.all/Selection.as
@@ -0,0 +1,69 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for Selection ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: Selection.as,v 1.15 2008/03/11 19:31:48 strk Exp $";
+#include "check.as"
+
+//-------------------------------
+// Selection was added in SWF5
+//-------------------------------
+
+check_equals (typeof(Selection), 'object');
+
+// Selection is an obect, not a class !
+var selectionObj = new Selection;
+check_equals (typeof(selectionObj), 'undefined');
+
+// test the Selection::getbeginindex method
+check_equals (typeof(Selection.getBeginIndex), 'function');
+
+// test the Selection::getcaretindex method
+check_equals (typeof(Selection.getCaretIndex), 'function');
+
+// test the Selection::getendindex method
+check_equals (typeof(Selection.getEndIndex), 'function');
+
+// test the Selection::getfocus method
+check_equals (typeof(Selection.getFocus), 'function');
+
+// test the Selection::setfocus method
+check_equals (typeof(Selection.setFocus), 'function');
+
+// test the Selection::setSelection method
+check_equals (typeof(Selection.setSelection), 'function'); 
+
+// Methods added in version 6
+#if OUTPUT_VERSION >= 6
+
+ // Selection was implicitly initialized by ASBroadcaster.initialize !
+ // See http://www.senocular.com/flash/tutorials/listenersasbroadcaster/?page=2
+ check_equals (typeof(Selection.addListener), 'function');
+ check_equals (typeof(Selection.removeListener), 'function'); 
+ xcheck_equals(typeof(Selection.broadcastMessage), 'function');
+ xcheck(Selection.hasOwnProperty("_listeners"));
+ xcheck_equals(typeof(Selection._listeners), 'object');
+ xcheck(Selection._listeners instanceof Array);
+
+#endif // OUTPUT_VERSION >= 6
+
+totals();
diff --git a/test/gnash/actionscript.all/TextFormat-5.swf b/test/gnash/actionscript.all/TextFormat-5.swf
new file mode 100644
index 0000000..33d7877
Binary files /dev/null and b/test/gnash/actionscript.all/TextFormat-5.swf differ
diff --git a/test/gnash/actionscript.all/TextFormat-5.swf.trace b/test/gnash/actionscript.all/TextFormat-5.swf.trace
new file mode 100644
index 0000000..96b0ef1
--- /dev/null
+++ b/test/gnash/actionscript.all/TextFormat-5.swf.trace
@@ -0,0 +1,64 @@
+PASSED: typeof(TextFormat) == 'function' [TextFormat.as:29]
+PASSED: typeof(TextFormat.prototype) == 'object' [TextFormat.as:30]
+PASSED: typeof(tfObj) == 'object' [TextFormat.as:32]
+PASSED: tfObj instanceof TextFormat [TextFormat.as:33]
+PASSED: TextFormat.prototype.hasOwnProperty('display') [TextFormat.as:37]
+PASSED: TextFormat.prototype.hasOwnProperty('bullet') [TextFormat.as:38]
+PASSED: TextFormat.prototype.hasOwnProperty('tabStops') [TextFormat.as:39]
+PASSED: TextFormat.prototype.hasOwnProperty('blockIndent') [TextFormat.as:40]
+PASSED: TextFormat.prototype.hasOwnProperty('leading') [TextFormat.as:41]
+PASSED: TextFormat.prototype.hasOwnProperty('indent') [TextFormat.as:42]
+PASSED: TextFormat.prototype.hasOwnProperty('rightMargin') [TextFormat.as:43]
+PASSED: TextFormat.prototype.hasOwnProperty('leftMargin') [TextFormat.as:44]
+PASSED: TextFormat.prototype.hasOwnProperty('align') [TextFormat.as:45]
+PASSED: TextFormat.prototype.hasOwnProperty('underline') [TextFormat.as:46]
+PASSED: TextFormat.prototype.hasOwnProperty('italic') [TextFormat.as:47]
+PASSED: TextFormat.prototype.hasOwnProperty('bold') [TextFormat.as:48]
+PASSED: TextFormat.prototype.hasOwnProperty('target') [TextFormat.as:49]
+PASSED: TextFormat.prototype.hasOwnProperty('url') [TextFormat.as:50]
+PASSED: TextFormat.prototype.hasOwnProperty('color') [TextFormat.as:51]
+PASSED: TextFormat.prototype.hasOwnProperty('size') [TextFormat.as:52]
+PASSED: TextFormat.prototype.hasOwnProperty('font') [TextFormat.as:53]
+PASSED: !TextFormat.prototype.hasOwnProperty('getTextExtent') [TextFormat.as:54]
+PASSED: tfObj.hasOwnProperty('getTextExtent') [TextFormat.as:55]
+XPASSED: typeof(tfObj.display) == 'string' [TextFormat.as:61]
+XPASSED: tfObj.display == 'block' [TextFormat.as:62]
+PASSED: typeof(tfObj.bullet) == 'null' [TextFormat.as:63]
+XPASSED: typeof(tfObj.tabStops) == 'null' [TextFormat.as:64]
+PASSED: typeof(tfObj.blockIndent) == 'null' [TextFormat.as:65]
+PASSED: typeof(tfObj.leading) == 'null' [TextFormat.as:66]
+PASSED: typeof(tfObj.indent) == 'null' [TextFormat.as:67]
+PASSED: typeof(tfObj.rightMargin) == 'null' [TextFormat.as:68]
+PASSED: typeof(tfObj.leftMargin) == 'null' [TextFormat.as:69]
+PASSED: typeof(tfObj.align) == 'null' [TextFormat.as:70]
+PASSED: typeof(tfObj.underline) == 'null' [TextFormat.as:71]
+PASSED: typeof(tfObj.italic) == 'null' [TextFormat.as:72]
+PASSED: typeof(tfObj.bold) == 'null' [TextFormat.as:73]
+XPASSED: typeof(tfObj.target) == 'null' [TextFormat.as:74]
+XPASSED: typeof(tfObj.url) == 'null' [TextFormat.as:75]
+PASSED: typeof(tfObj.color) == 'null' [TextFormat.as:76]
+PASSED: typeof(tfObj.size) == 'null' [TextFormat.as:77]
+PASSED: typeof(tfObj.font) == 'null' [TextFormat.as:78]
+PASSED: typeof(tfObj.getTextExtent) == 'function' [TextFormat.as:79]
+XPASSED: typeof(tfObj.display) == 'string' [TextFormat.as:83]
+XPASSED: tfObj.display == 'block' [TextFormat.as:84]
+PASSED: typeof(tfObj.bullet) == 'null' [TextFormat.as:85]
+XPASSED: typeof(tfObj.tabStops) == 'null' [TextFormat.as:86]
+PASSED: typeof(tfObj.blockIndent) == 'null' [TextFormat.as:87]
+PASSED: tfObj.leading == 4 [TextFormat.as:88]
+PASSED: tfObj.indent == 12 [TextFormat.as:89]
+PASSED: typeof(tfObj.rightMargin) == 'number' [TextFormat.as:90]
+PASSED: tfObj.rightMargin == 32 [TextFormat.as:91]
+PASSED: typeof(tfObj.leftMargin) == 'number' [TextFormat.as:92]
+PASSED: tfObj.leftMargin == 23 [TextFormat.as:93]
+PASSED: tfObj.align == 'center' [TextFormat.as:94]
+XPASSED: tfObj.target == 'tgt' [TextFormat.as:95]
+XPASSED: tfObj.url == 'http' [TextFormat.as:96]
+PASSED: tfObj.underline == true [TextFormat.as:97]
+PASSED: typeof(tfObj.italic) == 'boolean' [TextFormat.as:98]
+PASSED: tfObj.italic == false [TextFormat.as:99]
+PASSED: tfObj.bold == true [TextFormat.as:100]
+PASSED: tfObj.color == 30 [TextFormat.as:101]
+PASSED: tfObj.size == 2 [TextFormat.as:102]
+PASSED: tfObj.font == 'fname' [TextFormat.as:103]
+check_totals: 63
diff --git a/test/gnash/actionscript.all/TextFormat-6.swf b/test/gnash/actionscript.all/TextFormat-6.swf
new file mode 100644
index 0000000..010bd74
Binary files /dev/null and b/test/gnash/actionscript.all/TextFormat-6.swf differ
diff --git a/test/gnash/actionscript.all/TextFormat-6.swf.trace b/test/gnash/actionscript.all/TextFormat-6.swf.trace
new file mode 100644
index 0000000..96b0ef1
--- /dev/null
+++ b/test/gnash/actionscript.all/TextFormat-6.swf.trace
@@ -0,0 +1,64 @@
+PASSED: typeof(TextFormat) == 'function' [TextFormat.as:29]
+PASSED: typeof(TextFormat.prototype) == 'object' [TextFormat.as:30]
+PASSED: typeof(tfObj) == 'object' [TextFormat.as:32]
+PASSED: tfObj instanceof TextFormat [TextFormat.as:33]
+PASSED: TextFormat.prototype.hasOwnProperty('display') [TextFormat.as:37]
+PASSED: TextFormat.prototype.hasOwnProperty('bullet') [TextFormat.as:38]
+PASSED: TextFormat.prototype.hasOwnProperty('tabStops') [TextFormat.as:39]
+PASSED: TextFormat.prototype.hasOwnProperty('blockIndent') [TextFormat.as:40]
+PASSED: TextFormat.prototype.hasOwnProperty('leading') [TextFormat.as:41]
+PASSED: TextFormat.prototype.hasOwnProperty('indent') [TextFormat.as:42]
+PASSED: TextFormat.prototype.hasOwnProperty('rightMargin') [TextFormat.as:43]
+PASSED: TextFormat.prototype.hasOwnProperty('leftMargin') [TextFormat.as:44]
+PASSED: TextFormat.prototype.hasOwnProperty('align') [TextFormat.as:45]
+PASSED: TextFormat.prototype.hasOwnProperty('underline') [TextFormat.as:46]
+PASSED: TextFormat.prototype.hasOwnProperty('italic') [TextFormat.as:47]
+PASSED: TextFormat.prototype.hasOwnProperty('bold') [TextFormat.as:48]
+PASSED: TextFormat.prototype.hasOwnProperty('target') [TextFormat.as:49]
+PASSED: TextFormat.prototype.hasOwnProperty('url') [TextFormat.as:50]
+PASSED: TextFormat.prototype.hasOwnProperty('color') [TextFormat.as:51]
+PASSED: TextFormat.prototype.hasOwnProperty('size') [TextFormat.as:52]
+PASSED: TextFormat.prototype.hasOwnProperty('font') [TextFormat.as:53]
+PASSED: !TextFormat.prototype.hasOwnProperty('getTextExtent') [TextFormat.as:54]
+PASSED: tfObj.hasOwnProperty('getTextExtent') [TextFormat.as:55]
+XPASSED: typeof(tfObj.display) == 'string' [TextFormat.as:61]
+XPASSED: tfObj.display == 'block' [TextFormat.as:62]
+PASSED: typeof(tfObj.bullet) == 'null' [TextFormat.as:63]
+XPASSED: typeof(tfObj.tabStops) == 'null' [TextFormat.as:64]
+PASSED: typeof(tfObj.blockIndent) == 'null' [TextFormat.as:65]
+PASSED: typeof(tfObj.leading) == 'null' [TextFormat.as:66]
+PASSED: typeof(tfObj.indent) == 'null' [TextFormat.as:67]
+PASSED: typeof(tfObj.rightMargin) == 'null' [TextFormat.as:68]
+PASSED: typeof(tfObj.leftMargin) == 'null' [TextFormat.as:69]
+PASSED: typeof(tfObj.align) == 'null' [TextFormat.as:70]
+PASSED: typeof(tfObj.underline) == 'null' [TextFormat.as:71]
+PASSED: typeof(tfObj.italic) == 'null' [TextFormat.as:72]
+PASSED: typeof(tfObj.bold) == 'null' [TextFormat.as:73]
+XPASSED: typeof(tfObj.target) == 'null' [TextFormat.as:74]
+XPASSED: typeof(tfObj.url) == 'null' [TextFormat.as:75]
+PASSED: typeof(tfObj.color) == 'null' [TextFormat.as:76]
+PASSED: typeof(tfObj.size) == 'null' [TextFormat.as:77]
+PASSED: typeof(tfObj.font) == 'null' [TextFormat.as:78]
+PASSED: typeof(tfObj.getTextExtent) == 'function' [TextFormat.as:79]
+XPASSED: typeof(tfObj.display) == 'string' [TextFormat.as:83]
+XPASSED: tfObj.display == 'block' [TextFormat.as:84]
+PASSED: typeof(tfObj.bullet) == 'null' [TextFormat.as:85]
+XPASSED: typeof(tfObj.tabStops) == 'null' [TextFormat.as:86]
+PASSED: typeof(tfObj.blockIndent) == 'null' [TextFormat.as:87]
+PASSED: tfObj.leading == 4 [TextFormat.as:88]
+PASSED: tfObj.indent == 12 [TextFormat.as:89]
+PASSED: typeof(tfObj.rightMargin) == 'number' [TextFormat.as:90]
+PASSED: tfObj.rightMargin == 32 [TextFormat.as:91]
+PASSED: typeof(tfObj.leftMargin) == 'number' [TextFormat.as:92]
+PASSED: tfObj.leftMargin == 23 [TextFormat.as:93]
+PASSED: tfObj.align == 'center' [TextFormat.as:94]
+XPASSED: tfObj.target == 'tgt' [TextFormat.as:95]
+XPASSED: tfObj.url == 'http' [TextFormat.as:96]
+PASSED: tfObj.underline == true [TextFormat.as:97]
+PASSED: typeof(tfObj.italic) == 'boolean' [TextFormat.as:98]
+PASSED: tfObj.italic == false [TextFormat.as:99]
+PASSED: tfObj.bold == true [TextFormat.as:100]
+PASSED: tfObj.color == 30 [TextFormat.as:101]
+PASSED: tfObj.size == 2 [TextFormat.as:102]
+PASSED: tfObj.font == 'fname' [TextFormat.as:103]
+check_totals: 63
diff --git a/test/gnash/actionscript.all/TextFormat-7.swf b/test/gnash/actionscript.all/TextFormat-7.swf
new file mode 100644
index 0000000..c22ad55
Binary files /dev/null and b/test/gnash/actionscript.all/TextFormat-7.swf differ
diff --git a/test/gnash/actionscript.all/TextFormat-7.swf.trace b/test/gnash/actionscript.all/TextFormat-7.swf.trace
new file mode 100644
index 0000000..96b0ef1
--- /dev/null
+++ b/test/gnash/actionscript.all/TextFormat-7.swf.trace
@@ -0,0 +1,64 @@
+PASSED: typeof(TextFormat) == 'function' [TextFormat.as:29]
+PASSED: typeof(TextFormat.prototype) == 'object' [TextFormat.as:30]
+PASSED: typeof(tfObj) == 'object' [TextFormat.as:32]
+PASSED: tfObj instanceof TextFormat [TextFormat.as:33]
+PASSED: TextFormat.prototype.hasOwnProperty('display') [TextFormat.as:37]
+PASSED: TextFormat.prototype.hasOwnProperty('bullet') [TextFormat.as:38]
+PASSED: TextFormat.prototype.hasOwnProperty('tabStops') [TextFormat.as:39]
+PASSED: TextFormat.prototype.hasOwnProperty('blockIndent') [TextFormat.as:40]
+PASSED: TextFormat.prototype.hasOwnProperty('leading') [TextFormat.as:41]
+PASSED: TextFormat.prototype.hasOwnProperty('indent') [TextFormat.as:42]
+PASSED: TextFormat.prototype.hasOwnProperty('rightMargin') [TextFormat.as:43]
+PASSED: TextFormat.prototype.hasOwnProperty('leftMargin') [TextFormat.as:44]
+PASSED: TextFormat.prototype.hasOwnProperty('align') [TextFormat.as:45]
+PASSED: TextFormat.prototype.hasOwnProperty('underline') [TextFormat.as:46]
+PASSED: TextFormat.prototype.hasOwnProperty('italic') [TextFormat.as:47]
+PASSED: TextFormat.prototype.hasOwnProperty('bold') [TextFormat.as:48]
+PASSED: TextFormat.prototype.hasOwnProperty('target') [TextFormat.as:49]
+PASSED: TextFormat.prototype.hasOwnProperty('url') [TextFormat.as:50]
+PASSED: TextFormat.prototype.hasOwnProperty('color') [TextFormat.as:51]
+PASSED: TextFormat.prototype.hasOwnProperty('size') [TextFormat.as:52]
+PASSED: TextFormat.prototype.hasOwnProperty('font') [TextFormat.as:53]
+PASSED: !TextFormat.prototype.hasOwnProperty('getTextExtent') [TextFormat.as:54]
+PASSED: tfObj.hasOwnProperty('getTextExtent') [TextFormat.as:55]
+XPASSED: typeof(tfObj.display) == 'string' [TextFormat.as:61]
+XPASSED: tfObj.display == 'block' [TextFormat.as:62]
+PASSED: typeof(tfObj.bullet) == 'null' [TextFormat.as:63]
+XPASSED: typeof(tfObj.tabStops) == 'null' [TextFormat.as:64]
+PASSED: typeof(tfObj.blockIndent) == 'null' [TextFormat.as:65]
+PASSED: typeof(tfObj.leading) == 'null' [TextFormat.as:66]
+PASSED: typeof(tfObj.indent) == 'null' [TextFormat.as:67]
+PASSED: typeof(tfObj.rightMargin) == 'null' [TextFormat.as:68]
+PASSED: typeof(tfObj.leftMargin) == 'null' [TextFormat.as:69]
+PASSED: typeof(tfObj.align) == 'null' [TextFormat.as:70]
+PASSED: typeof(tfObj.underline) == 'null' [TextFormat.as:71]
+PASSED: typeof(tfObj.italic) == 'null' [TextFormat.as:72]
+PASSED: typeof(tfObj.bold) == 'null' [TextFormat.as:73]
+XPASSED: typeof(tfObj.target) == 'null' [TextFormat.as:74]
+XPASSED: typeof(tfObj.url) == 'null' [TextFormat.as:75]
+PASSED: typeof(tfObj.color) == 'null' [TextFormat.as:76]
+PASSED: typeof(tfObj.size) == 'null' [TextFormat.as:77]
+PASSED: typeof(tfObj.font) == 'null' [TextFormat.as:78]
+PASSED: typeof(tfObj.getTextExtent) == 'function' [TextFormat.as:79]
+XPASSED: typeof(tfObj.display) == 'string' [TextFormat.as:83]
+XPASSED: tfObj.display == 'block' [TextFormat.as:84]
+PASSED: typeof(tfObj.bullet) == 'null' [TextFormat.as:85]
+XPASSED: typeof(tfObj.tabStops) == 'null' [TextFormat.as:86]
+PASSED: typeof(tfObj.blockIndent) == 'null' [TextFormat.as:87]
+PASSED: tfObj.leading == 4 [TextFormat.as:88]
+PASSED: tfObj.indent == 12 [TextFormat.as:89]
+PASSED: typeof(tfObj.rightMargin) == 'number' [TextFormat.as:90]
+PASSED: tfObj.rightMargin == 32 [TextFormat.as:91]
+PASSED: typeof(tfObj.leftMargin) == 'number' [TextFormat.as:92]
+PASSED: tfObj.leftMargin == 23 [TextFormat.as:93]
+PASSED: tfObj.align == 'center' [TextFormat.as:94]
+XPASSED: tfObj.target == 'tgt' [TextFormat.as:95]
+XPASSED: tfObj.url == 'http' [TextFormat.as:96]
+PASSED: tfObj.underline == true [TextFormat.as:97]
+PASSED: typeof(tfObj.italic) == 'boolean' [TextFormat.as:98]
+PASSED: tfObj.italic == false [TextFormat.as:99]
+PASSED: tfObj.bold == true [TextFormat.as:100]
+PASSED: tfObj.color == 30 [TextFormat.as:101]
+PASSED: tfObj.size == 2 [TextFormat.as:102]
+PASSED: tfObj.font == 'fname' [TextFormat.as:103]
+check_totals: 63
diff --git a/test/gnash/actionscript.all/TextFormat-8.swf b/test/gnash/actionscript.all/TextFormat-8.swf
new file mode 100644
index 0000000..101e7bb
Binary files /dev/null and b/test/gnash/actionscript.all/TextFormat-8.swf differ
diff --git a/test/gnash/actionscript.all/TextFormat-8.swf.trace b/test/gnash/actionscript.all/TextFormat-8.swf.trace
new file mode 100644
index 0000000..96b0ef1
--- /dev/null
+++ b/test/gnash/actionscript.all/TextFormat-8.swf.trace
@@ -0,0 +1,64 @@
+PASSED: typeof(TextFormat) == 'function' [TextFormat.as:29]
+PASSED: typeof(TextFormat.prototype) == 'object' [TextFormat.as:30]
+PASSED: typeof(tfObj) == 'object' [TextFormat.as:32]
+PASSED: tfObj instanceof TextFormat [TextFormat.as:33]
+PASSED: TextFormat.prototype.hasOwnProperty('display') [TextFormat.as:37]
+PASSED: TextFormat.prototype.hasOwnProperty('bullet') [TextFormat.as:38]
+PASSED: TextFormat.prototype.hasOwnProperty('tabStops') [TextFormat.as:39]
+PASSED: TextFormat.prototype.hasOwnProperty('blockIndent') [TextFormat.as:40]
+PASSED: TextFormat.prototype.hasOwnProperty('leading') [TextFormat.as:41]
+PASSED: TextFormat.prototype.hasOwnProperty('indent') [TextFormat.as:42]
+PASSED: TextFormat.prototype.hasOwnProperty('rightMargin') [TextFormat.as:43]
+PASSED: TextFormat.prototype.hasOwnProperty('leftMargin') [TextFormat.as:44]
+PASSED: TextFormat.prototype.hasOwnProperty('align') [TextFormat.as:45]
+PASSED: TextFormat.prototype.hasOwnProperty('underline') [TextFormat.as:46]
+PASSED: TextFormat.prototype.hasOwnProperty('italic') [TextFormat.as:47]
+PASSED: TextFormat.prototype.hasOwnProperty('bold') [TextFormat.as:48]
+PASSED: TextFormat.prototype.hasOwnProperty('target') [TextFormat.as:49]
+PASSED: TextFormat.prototype.hasOwnProperty('url') [TextFormat.as:50]
+PASSED: TextFormat.prototype.hasOwnProperty('color') [TextFormat.as:51]
+PASSED: TextFormat.prototype.hasOwnProperty('size') [TextFormat.as:52]
+PASSED: TextFormat.prototype.hasOwnProperty('font') [TextFormat.as:53]
+PASSED: !TextFormat.prototype.hasOwnProperty('getTextExtent') [TextFormat.as:54]
+PASSED: tfObj.hasOwnProperty('getTextExtent') [TextFormat.as:55]
+XPASSED: typeof(tfObj.display) == 'string' [TextFormat.as:61]
+XPASSED: tfObj.display == 'block' [TextFormat.as:62]
+PASSED: typeof(tfObj.bullet) == 'null' [TextFormat.as:63]
+XPASSED: typeof(tfObj.tabStops) == 'null' [TextFormat.as:64]
+PASSED: typeof(tfObj.blockIndent) == 'null' [TextFormat.as:65]
+PASSED: typeof(tfObj.leading) == 'null' [TextFormat.as:66]
+PASSED: typeof(tfObj.indent) == 'null' [TextFormat.as:67]
+PASSED: typeof(tfObj.rightMargin) == 'null' [TextFormat.as:68]
+PASSED: typeof(tfObj.leftMargin) == 'null' [TextFormat.as:69]
+PASSED: typeof(tfObj.align) == 'null' [TextFormat.as:70]
+PASSED: typeof(tfObj.underline) == 'null' [TextFormat.as:71]
+PASSED: typeof(tfObj.italic) == 'null' [TextFormat.as:72]
+PASSED: typeof(tfObj.bold) == 'null' [TextFormat.as:73]
+XPASSED: typeof(tfObj.target) == 'null' [TextFormat.as:74]
+XPASSED: typeof(tfObj.url) == 'null' [TextFormat.as:75]
+PASSED: typeof(tfObj.color) == 'null' [TextFormat.as:76]
+PASSED: typeof(tfObj.size) == 'null' [TextFormat.as:77]
+PASSED: typeof(tfObj.font) == 'null' [TextFormat.as:78]
+PASSED: typeof(tfObj.getTextExtent) == 'function' [TextFormat.as:79]
+XPASSED: typeof(tfObj.display) == 'string' [TextFormat.as:83]
+XPASSED: tfObj.display == 'block' [TextFormat.as:84]
+PASSED: typeof(tfObj.bullet) == 'null' [TextFormat.as:85]
+XPASSED: typeof(tfObj.tabStops) == 'null' [TextFormat.as:86]
+PASSED: typeof(tfObj.blockIndent) == 'null' [TextFormat.as:87]
+PASSED: tfObj.leading == 4 [TextFormat.as:88]
+PASSED: tfObj.indent == 12 [TextFormat.as:89]
+PASSED: typeof(tfObj.rightMargin) == 'number' [TextFormat.as:90]
+PASSED: tfObj.rightMargin == 32 [TextFormat.as:91]
+PASSED: typeof(tfObj.leftMargin) == 'number' [TextFormat.as:92]
+PASSED: tfObj.leftMargin == 23 [TextFormat.as:93]
+PASSED: tfObj.align == 'center' [TextFormat.as:94]
+XPASSED: tfObj.target == 'tgt' [TextFormat.as:95]
+XPASSED: tfObj.url == 'http' [TextFormat.as:96]
+PASSED: tfObj.underline == true [TextFormat.as:97]
+PASSED: typeof(tfObj.italic) == 'boolean' [TextFormat.as:98]
+PASSED: tfObj.italic == false [TextFormat.as:99]
+PASSED: tfObj.bold == true [TextFormat.as:100]
+PASSED: tfObj.color == 30 [TextFormat.as:101]
+PASSED: tfObj.size == 2 [TextFormat.as:102]
+PASSED: tfObj.font == 'fname' [TextFormat.as:103]
+check_totals: 63
diff --git a/test/gnash/actionscript.all/TextFormat.as b/test/gnash/actionscript.all/TextFormat.as
new file mode 100644
index 0000000..4308012
--- /dev/null
+++ b/test/gnash/actionscript.all/TextFormat.as
@@ -0,0 +1,107 @@
+// 
+//   Copyright (C) 2008 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+//
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+// Test case for TextFormat ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+rcsid="$Id: TextFormat.as,v 1.4 2008/05/06 11:21:02 bwy Exp $";
+
+#include "check.as"
+
+Object.prototype.hasOwnProperty = ASnative(101, 5);
+
+check_equals(typeof(TextFormat), 'function');
+check_equals(typeof(TextFormat.prototype), 'object');
+tfObj = new TextFormat();
+check_equals(typeof(tfObj), 'object');
+check(tfObj instanceof TextFormat);
+
+// The members below would not exist before
+// the construction of first TextFormat object
+check(TextFormat.prototype.hasOwnProperty('display'));
+check(TextFormat.prototype.hasOwnProperty('bullet'));
+check(TextFormat.prototype.hasOwnProperty('tabStops'));
+check(TextFormat.prototype.hasOwnProperty('blockIndent'));
+check(TextFormat.prototype.hasOwnProperty('leading'));
+check(TextFormat.prototype.hasOwnProperty('indent'));
+check(TextFormat.prototype.hasOwnProperty('rightMargin'));
+check(TextFormat.prototype.hasOwnProperty('leftMargin'));
+check(TextFormat.prototype.hasOwnProperty('align'));
+check(TextFormat.prototype.hasOwnProperty('underline'));
+check(TextFormat.prototype.hasOwnProperty('italic'));
+check(TextFormat.prototype.hasOwnProperty('bold'));
+check(TextFormat.prototype.hasOwnProperty('target'));
+check(TextFormat.prototype.hasOwnProperty('url'));
+check(TextFormat.prototype.hasOwnProperty('color'));
+check(TextFormat.prototype.hasOwnProperty('size'));
+check(TextFormat.prototype.hasOwnProperty('font'));
+check(!TextFormat.prototype.hasOwnProperty('getTextExtent'));
+check(tfObj.hasOwnProperty('getTextExtent'));
+
+
+// When you construct a TextFormat w/out args all members
+// are of the 'null' type. In general, uninitialized members
+// are all of the 'null' type.
+xcheck_equals(typeof(tfObj.display), 'string');
+xcheck_equals(tfObj.display, 'block');
+check_equals(typeof(tfObj.bullet), 'null');
+xcheck_equals(typeof(tfObj.tabStops), 'null');
+check_equals(typeof(tfObj.blockIndent), 'null');
+check_equals(typeof(tfObj.leading), 'null');
+check_equals(typeof(tfObj.indent), 'null');
+check_equals(typeof(tfObj.rightMargin), 'null');
+check_equals(typeof(tfObj.leftMargin), 'null');
+check_equals(typeof(tfObj.align), 'null');
+check_equals(typeof(tfObj.underline), 'null');
+check_equals(typeof(tfObj.italic), 'null');
+check_equals(typeof(tfObj.bold), 'null');
+xcheck_equals(typeof(tfObj.target), 'null');
+xcheck_equals(typeof(tfObj.url), 'null');
+check_equals(typeof(tfObj.color), 'null');
+check_equals(typeof(tfObj.size), 'null');
+check_equals(typeof(tfObj.font), 'null');
+check_equals(typeof(tfObj.getTextExtent), 'function');
+
+// new TextFormat([font, [size, [color, [bold, [italic, [underline, [url, [target, [align,[leftMargin, [rightMargin, [indent, [leading]]]]]]]]]]]]])
+tfObj = new TextFormat("fname", 2, 30, true, false, true, 'http', 'tgt', 'cEnter', '23', '32', 12, 4);
+xcheck_equals(typeof(tfObj.display), 'string');
+xcheck_equals(tfObj.display, 'block');
+check_equals(typeof(tfObj.bullet), 'null');
+xcheck_equals(typeof(tfObj.tabStops), 'null');
+check_equals(typeof(tfObj.blockIndent), 'null');
+check_equals(tfObj.leading, 4);
+check_equals(tfObj.indent, 12);
+check_equals(typeof(tfObj.rightMargin), 'number'); // even if we passed a string to it
+check_equals(tfObj.rightMargin, 32);
+check_equals(typeof(tfObj.leftMargin), 'number'); // even if we passed a string to it
+check_equals(tfObj.leftMargin, 23);
+check_equals(tfObj.align, 'center');
+xcheck_equals(tfObj.target, 'tgt');
+xcheck_equals(tfObj.url, 'http');
+check_equals(tfObj.underline, true);
+check_equals(typeof(tfObj.italic), 'boolean');
+check_equals(tfObj.italic, false);
+check_equals(tfObj.bold, true);
+check_equals(tfObj.color, 30);
+check_equals(tfObj.size, 2);
+check_equals(tfObj.font, 'fname');
+
+
+
+check_totals(63);
diff --git a/test/gnash/actionscript.all/TextSnapshot-5.swf b/test/gnash/actionscript.all/TextSnapshot-5.swf
new file mode 100644
index 0000000..a72e924
Binary files /dev/null and b/test/gnash/actionscript.all/TextSnapshot-5.swf differ
diff --git a/test/gnash/actionscript.all/TextSnapshot-5.swf.trace b/test/gnash/actionscript.all/TextSnapshot-5.swf.trace
new file mode 100644
index 0000000..abd55c7
--- /dev/null
+++ b/test/gnash/actionscript.all/TextSnapshot-5.swf.trace
@@ -0,0 +1 @@
+totals
diff --git a/test/gnash/actionscript.all/TextSnapshot-6.swf b/test/gnash/actionscript.all/TextSnapshot-6.swf
new file mode 100644
index 0000000..1ca70c4
Binary files /dev/null and b/test/gnash/actionscript.all/TextSnapshot-6.swf differ
diff --git a/test/gnash/actionscript.all/TextSnapshot-6.swf.trace b/test/gnash/actionscript.all/TextSnapshot-6.swf.trace
new file mode 100644
index 0000000..f5a6f32
--- /dev/null
+++ b/test/gnash/actionscript.all/TextSnapshot-6.swf.trace
@@ -0,0 +1,11 @@
+PASSED: typeof(TextSnapshot) == 'function' [TextSnapshot.as:29]
+PASSED: typeof(textsnapshotObj) == 'object' [TextSnapshot.as:34]
+PASSED: typeof(textsnapshotObj.findText) == 'function' [TextSnapshot.as:37]
+PASSED: typeof(textsnapshotObj.getCount) == 'function' [TextSnapshot.as:40]
+PASSED: typeof(textsnapshotObj.getSelected) == 'function' [TextSnapshot.as:43]
+PASSED: typeof(textsnapshotObj.getSelectedText) == 'function' [TextSnapshot.as:46]
+PASSED: typeof(textsnapshotObj.getText) == 'function' [TextSnapshot.as:49]
+PASSED: typeof(textsnapshotObj.hitTestTextNearPos) == 'function' [TextSnapshot.as:52]
+PASSED: typeof(textsnapshotObj.setSelectColor) == 'function' [TextSnapshot.as:55]
+PASSED: typeof(textsnapshotObj.setSelected) == 'function' [TextSnapshot.as:58]
+totals
diff --git a/test/gnash/actionscript.all/TextSnapshot-7.swf b/test/gnash/actionscript.all/TextSnapshot-7.swf
new file mode 100644
index 0000000..f19d508
Binary files /dev/null and b/test/gnash/actionscript.all/TextSnapshot-7.swf differ
diff --git a/test/gnash/actionscript.all/TextSnapshot-7.swf.trace b/test/gnash/actionscript.all/TextSnapshot-7.swf.trace
new file mode 100644
index 0000000..f5a6f32
--- /dev/null
+++ b/test/gnash/actionscript.all/TextSnapshot-7.swf.trace
@@ -0,0 +1,11 @@
+PASSED: typeof(TextSnapshot) == 'function' [TextSnapshot.as:29]
+PASSED: typeof(textsnapshotObj) == 'object' [TextSnapshot.as:34]
+PASSED: typeof(textsnapshotObj.findText) == 'function' [TextSnapshot.as:37]
+PASSED: typeof(textsnapshotObj.getCount) == 'function' [TextSnapshot.as:40]
+PASSED: typeof(textsnapshotObj.getSelected) == 'function' [TextSnapshot.as:43]
+PASSED: typeof(textsnapshotObj.getSelectedText) == 'function' [TextSnapshot.as:46]
+PASSED: typeof(textsnapshotObj.getText) == 'function' [TextSnapshot.as:49]
+PASSED: typeof(textsnapshotObj.hitTestTextNearPos) == 'function' [TextSnapshot.as:52]
+PASSED: typeof(textsnapshotObj.setSelectColor) == 'function' [TextSnapshot.as:55]
+PASSED: typeof(textsnapshotObj.setSelected) == 'function' [TextSnapshot.as:58]
+totals
diff --git a/test/gnash/actionscript.all/TextSnapshot-8.swf b/test/gnash/actionscript.all/TextSnapshot-8.swf
new file mode 100644
index 0000000..ad9e497
Binary files /dev/null and b/test/gnash/actionscript.all/TextSnapshot-8.swf differ
diff --git a/test/gnash/actionscript.all/TextSnapshot-8.swf.trace b/test/gnash/actionscript.all/TextSnapshot-8.swf.trace
new file mode 100644
index 0000000..f5a6f32
--- /dev/null
+++ b/test/gnash/actionscript.all/TextSnapshot-8.swf.trace
@@ -0,0 +1,11 @@
+PASSED: typeof(TextSnapshot) == 'function' [TextSnapshot.as:29]
+PASSED: typeof(textsnapshotObj) == 'object' [TextSnapshot.as:34]
+PASSED: typeof(textsnapshotObj.findText) == 'function' [TextSnapshot.as:37]
+PASSED: typeof(textsnapshotObj.getCount) == 'function' [TextSnapshot.as:40]
+PASSED: typeof(textsnapshotObj.getSelected) == 'function' [TextSnapshot.as:43]
+PASSED: typeof(textsnapshotObj.getSelectedText) == 'function' [TextSnapshot.as:46]
+PASSED: typeof(textsnapshotObj.getText) == 'function' [TextSnapshot.as:49]
+PASSED: typeof(textsnapshotObj.hitTestTextNearPos) == 'function' [TextSnapshot.as:52]
+PASSED: typeof(textsnapshotObj.setSelectColor) == 'function' [TextSnapshot.as:55]
+PASSED: typeof(textsnapshotObj.setSelected) == 'function' [TextSnapshot.as:58]
+totals
diff --git a/test/gnash/actionscript.all/TextSnapshot.as b/test/gnash/actionscript.all/TextSnapshot.as
new file mode 100644
index 0000000..763f3f6
--- /dev/null
+++ b/test/gnash/actionscript.all/TextSnapshot.as
@@ -0,0 +1,61 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for TextSnapshot ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: TextSnapshot.as,v 1.12 2008/03/11 19:31:48 strk Exp $";
+#include "check.as"
+
+#if OUTPUT_VERSION > 5
+
+check_equals ( typeof(TextSnapshot), 'function' );
+
+var textsnapshotObj = new TextSnapshot;
+
+// test the TextSnapshot constuctor
+check_equals ( typeof(textsnapshotObj), 'object' );
+
+// test the TextSnapshot::findtext method
+check_equals (typeof(textsnapshotObj.findText), 'function');
+
+// test the TextSnapshot::getcount method
+check_equals (typeof(textsnapshotObj.getCount), 'function');
+
+// test the TextSnapshot::getselected method
+check_equals (typeof(textsnapshotObj.getSelected), 'function');
+
+// test the TextSnapshot::getselectedtext method
+check_equals (typeof(textsnapshotObj.getSelectedText), 'function');
+
+// test the TextSnapshot::gettext method
+check_equals (typeof(textsnapshotObj.getText), 'function');
+
+// test the TextSnapshot::hittesttextnearpos method
+check_equals (typeof(textsnapshotObj.hitTestTextNearPos), 'function');
+
+// test the TextSnapshot::setselectcolor method
+check_equals (typeof(textsnapshotObj.setSelectColor), 'function');
+
+// test the TextSnapshot::setselected method
+check_equals (typeof(textsnapshotObj.setSelected), 'function');
+
+#endif // OUTPUT_VERSION > 5
+totals();
diff --git a/test/gnash/actionscript.all/Try-5.swf b/test/gnash/actionscript.all/Try-5.swf
new file mode 100644
index 0000000..ac0cacf
Binary files /dev/null and b/test/gnash/actionscript.all/Try-5.swf differ
diff --git a/test/gnash/actionscript.all/Try-5.swf.trace b/test/gnash/actionscript.all/Try-5.swf.trace
new file mode 100644
index 0000000..0dd0d82
--- /dev/null
+++ b/test/gnash/actionscript.all/Try-5.swf.trace
@@ -0,0 +1,12 @@
+PASSED: r == "1: try body catch  finally ." [Try.as:57]
+PASSED: r == "2: try catch thrown finally ." [Try.as:67]
+PASSED: r == "3: try body finally ." [Try.as:73]
+PASSED: r == "4: try finally thrown ." [Try.as:83]
+PASSED: r == "5: try body catch pre-existing variable d ." [Try.as:92]
+PASSED: r == "6: try catch thrown ." [Try.as:98]
+PASSED: r == "7: try finally finally2 thrown ." [Try.as:110]
+PASSED: r == "8: try finally finally2 try2 catch2  thrown ." [Try.as:130]
+PASSED: r == "9: try finally catch thrown finally2 try2 catch2  catch3  ." [Try.as:153]
+PASSED: r == "10: catch finally." [Try.as:166]
+PASSED: r == "10: catch finally." [Try.as:176]
+totals
diff --git a/test/gnash/actionscript.all/Try-6.swf b/test/gnash/actionscript.all/Try-6.swf
new file mode 100644
index 0000000..30fd9c1
Binary files /dev/null and b/test/gnash/actionscript.all/Try-6.swf differ
diff --git a/test/gnash/actionscript.all/Try-6.swf.trace b/test/gnash/actionscript.all/Try-6.swf.trace
new file mode 100644
index 0000000..0dd0d82
--- /dev/null
+++ b/test/gnash/actionscript.all/Try-6.swf.trace
@@ -0,0 +1,12 @@
+PASSED: r == "1: try body catch  finally ." [Try.as:57]
+PASSED: r == "2: try catch thrown finally ." [Try.as:67]
+PASSED: r == "3: try body finally ." [Try.as:73]
+PASSED: r == "4: try finally thrown ." [Try.as:83]
+PASSED: r == "5: try body catch pre-existing variable d ." [Try.as:92]
+PASSED: r == "6: try catch thrown ." [Try.as:98]
+PASSED: r == "7: try finally finally2 thrown ." [Try.as:110]
+PASSED: r == "8: try finally finally2 try2 catch2  thrown ." [Try.as:130]
+PASSED: r == "9: try finally catch thrown finally2 try2 catch2  catch3  ." [Try.as:153]
+PASSED: r == "10: catch finally." [Try.as:166]
+PASSED: r == "10: catch finally." [Try.as:176]
+totals
diff --git a/test/gnash/actionscript.all/Try-7.swf b/test/gnash/actionscript.all/Try-7.swf
new file mode 100644
index 0000000..614af02
Binary files /dev/null and b/test/gnash/actionscript.all/Try-7.swf differ
diff --git a/test/gnash/actionscript.all/Try-7.swf.trace b/test/gnash/actionscript.all/Try-7.swf.trace
new file mode 100644
index 0000000..19248d3
--- /dev/null
+++ b/test/gnash/actionscript.all/Try-7.swf.trace
@@ -0,0 +1,12 @@
+PASSED: r == "1: try body catch undefined finally ." [Try.as:59]
+PASSED: r == "2: try catch thrown finally ." [Try.as:67]
+PASSED: r == "3: try body finally ." [Try.as:73]
+PASSED: r == "4: try finally thrown ." [Try.as:83]
+PASSED: r == "5: try body catch pre-existing variable d ." [Try.as:92]
+PASSED: r == "6: try catch thrown ." [Try.as:98]
+PASSED: r == "7: try finally finally2 thrown ." [Try.as:110]
+PASSED: r == "8: try finally finally2 try2 catch2 undefined thrown ." [Try.as:132]
+PASSED: r == "9: try finally catch thrown finally2 try2 catch2 undefined catch3 undefined ." [Try.as:155]
+PASSED: r == "10: catch finally." [Try.as:166]
+PASSED: r == "10: catch finally." [Try.as:176]
+totals
diff --git a/test/gnash/actionscript.all/Try-8.swf b/test/gnash/actionscript.all/Try-8.swf
new file mode 100644
index 0000000..2a81b60
Binary files /dev/null and b/test/gnash/actionscript.all/Try-8.swf differ
diff --git a/test/gnash/actionscript.all/Try-8.swf.trace b/test/gnash/actionscript.all/Try-8.swf.trace
new file mode 100644
index 0000000..19248d3
--- /dev/null
+++ b/test/gnash/actionscript.all/Try-8.swf.trace
@@ -0,0 +1,12 @@
+PASSED: r == "1: try body catch undefined finally ." [Try.as:59]
+PASSED: r == "2: try catch thrown finally ." [Try.as:67]
+PASSED: r == "3: try body finally ." [Try.as:73]
+PASSED: r == "4: try finally thrown ." [Try.as:83]
+PASSED: r == "5: try body catch pre-existing variable d ." [Try.as:92]
+PASSED: r == "6: try catch thrown ." [Try.as:98]
+PASSED: r == "7: try finally finally2 thrown ." [Try.as:110]
+PASSED: r == "8: try finally finally2 try2 catch2 undefined thrown ." [Try.as:132]
+PASSED: r == "9: try finally catch thrown finally2 try2 catch2 undefined catch3 undefined ." [Try.as:155]
+PASSED: r == "10: catch finally." [Try.as:166]
+PASSED: r == "10: catch finally." [Try.as:176]
+totals
diff --git a/test/gnash/actionscript.all/Try.as b/test/gnash/actionscript.all/Try.as
new file mode 100644
index 0000000..2dd72ad
--- /dev/null
+++ b/test/gnash/actionscript.all/Try.as
@@ -0,0 +1,188 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for Boolean ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: Try.as,v 1.3 2008/06/11 20:54:44 bwy Exp $";
+#include "check.as"
+
+// Some of the test variants.
+// Try catch finally (no throw)
+// Try (throw) catch finally
+// Try finally
+// Try (throw) finally
+// Try catch
+// Try (throw) catch
+
+#if MING_VERSION_CODE >= 00040006
+
+throwfunc = function()
+{
+    throw "try";
+};
+
+throwfunc2 = function()
+{
+    try {
+        throw "try";
+    }
+    catch (g) {};
+};
+
+r = "1: ";
+try { r +="try "; r +="body "; }
+catch (a) { r +="catch "; r += a + " "; }
+finally { r +="finally "; };
+r += ".";
+
+#if OUTPUT_VERSION < 7
+check_equals(r, "1: try body catch  finally .");
+#else
+check_equals(r, "1: try body catch undefined finally .");
+#endif
+
+r = "2: ";
+try { r += "try "; throw ("thrown"); r += "body "; }
+catch (b) { r += "catch "; r += b + " "; }
+finally { r += "finally "; };
+r += ".";
+check_equals(r, "2: try catch thrown finally .");
+
+r = "3: ";
+try { r += "try "; r += "body "; }
+finally { r += "finally "; };
+r += ".";
+check_equals(r, "3: try body finally .");
+
+// This will interrupt execution without the enclosing try/catch.
+try {
+    r = "4: ";
+    try { r += "try "; throw ("thrown"); r += "body "; }
+    finally { r += "finally "; };
+}
+catch (c) { r += c + " "; };
+r += ".";
+check_equals(r, "4: try finally thrown .");
+
+// Also check that the exception is not
+// undefined if nothing is thrown
+d = "pre-existing variable d";
+r = "5: ";
+try { r += "try "; r += "body "; }
+catch (d) { r += "catch "; r+= d + " "; };
+r += ".";
+check_equals(r, "5: try body catch pre-existing variable d .");
+
+r = "6: ";
+try { r += "try "; throw ("thrown"); r += "body "; }
+catch (e) { r += "catch "; r += e + " "; };
+r += ".";
+check_equals(r, "6: try catch thrown .");
+
+try {
+    try {
+        r = "7: ";
+        try { r += "try "; throw ("thrown"); r += "body "; }
+        finally { r += "finally "; };
+    }
+    finally { r += "finally2 "; };
+}
+catch (f) { r += f + " "; };
+r += ".";
+check_equals(r, "7: try finally finally2 thrown .");
+
+
+try {
+    try {
+        r = "8: ";
+        try { r += "try "; throw ("thrown"); r += "body "; }
+        finally { r += "finally "; };
+    }
+    finally {
+        r += "finally2 ";
+        try {
+            r += "try2 ";
+        }
+        catch (h) { r += "catch2 "; r += h +" "; };
+    };
+}
+catch (i) { r += i + " "; };
+r += ".";
+#if OUTPUT_VERSION < 7
+check_equals(r, "8: try finally finally2 try2 catch2  thrown .");
+#else
+check_equals(r, "8: try finally finally2 try2 catch2 undefined thrown .");
+#endif
+
+try {
+    try {
+        r = "9: ";
+        try { r += "try "; throw ("thrown"); r += "body "; }
+        finally { r += "finally "; };
+    }
+    catch (j) { r += "catch "; r += j + " "; }
+    finally {
+        r += "finally2 ";
+        try {
+            r += "try2 ";
+        }
+        catch (k) { r += "catch2 "; r += k +" "; };
+    };
+}
+catch (l) { r+= "catch3 "; r += l + " "; };
+r += ".";
+#if OUTPUT_VERSION < 7
+check_equals(r, "9: try finally catch thrown finally2 try2 catch2  catch3  .");
+#else
+check_equals(r, "9: try finally catch thrown finally2 try2 catch2 undefined catch3 undefined .");
+#endif
+
+r = "10: ";
+try {
+    try { throw "try"; }
+    catch (e) { throw "catch"; }
+    finally { throw "finally"; };
+}
+catch (m) { r+= "catch " + m; };
+r += ".";
+check_equals(r, "10: catch finally.");
+
+r = "10: ";
+try {
+    try { throw "try"; }
+    catch (e) { throw "catch"; }
+    finally { throw "finally"; };
+}
+catch (m) { r+= "catch " + m; };
+r += ".";
+check_equals(r, "10: catch finally.");
+
+
+//try { throwfunc(); }
+//catch (g) { trace ("catch"); trace (g); };
+
+//try { throw "thrown"; }
+//finally { };
+//trace ("Don't reach this point");
+
+totals();
+
+#endif
diff --git a/test/gnash/actionscript.all/UPDATED b/test/gnash/actionscript.all/UPDATED
new file mode 100644
index 0000000..a17c522
--- /dev/null
+++ b/test/gnash/actionscript.all/UPDATED
@@ -0,0 +1 @@
+2008-07-03
diff --git a/test/gnash/actionscript.all/Video-5.swf b/test/gnash/actionscript.all/Video-5.swf
new file mode 100644
index 0000000..a1cad9c
Binary files /dev/null and b/test/gnash/actionscript.all/Video-5.swf differ
diff --git a/test/gnash/actionscript.all/Video-5.swf.trace b/test/gnash/actionscript.all/Video-5.swf.trace
new file mode 100644
index 0000000..c6a1c06
--- /dev/null
+++ b/test/gnash/actionscript.all/Video-5.swf.trace
@@ -0,0 +1,2 @@
+PASSED: Video == undefined [Video.as:29]
+check_totals: 1
diff --git a/test/gnash/actionscript.all/Video-6.swf b/test/gnash/actionscript.all/Video-6.swf
new file mode 100644
index 0000000..5bf4967
Binary files /dev/null and b/test/gnash/actionscript.all/Video-6.swf differ
diff --git a/test/gnash/actionscript.all/Video-6.swf.trace b/test/gnash/actionscript.all/Video-6.swf.trace
new file mode 100644
index 0000000..2b26f1b
--- /dev/null
+++ b/test/gnash/actionscript.all/Video-6.swf.trace
@@ -0,0 +1,22 @@
+PASSED: typeof(Video) == 'function' [Video.as:35]
+PASSED: typeof(Video.prototype) == 'object' [Video.as:36]
+PASSED: typeof(Video.prototype.__proto__) == 'object' [Video.as:37]
+PASSED: Video.prototype.__proto__ == Object.prototype [Video.as:38]
+PASSED: typeof(Video.prototype.attachVideo) == 'function' [Video.as:39]
+PASSED: typeof(Video.prototype.clear) == 'function' [Video.as:40]
+PASSED: typeof(videoObj) == 'object' [Video.as:44]
+PASSED: typeof(videoObj.attachVideo) == 'function' [Video.as:45]
+PASSED: typeof(videoObj.clear) == 'function' [Video.as:46]
+PASSED: typeof(videoObj._x) == 'undefined' [Video.as:47]
+PASSED: typeof(videoObj._y) == 'undefined' [Video.as:48]
+PASSED: typeof(videoObj._width) == 'undefined' [Video.as:49]
+PASSED: typeof(videoObj._height) == 'undefined' [Video.as:50]
+PASSED: typeof(videoObj._xscale) == 'undefined' [Video.as:51]
+PASSED: typeof(videoObj._yscale) == 'undefined' [Video.as:52]
+PASSED: typeof(videoObj._xmouse) == 'undefined' [Video.as:53]
+PASSED: typeof(videoObj._ymouse) == 'undefined' [Video.as:54]
+PASSED: typeof(videoObj._alpha) == 'undefined' [Video.as:55]
+PASSED: typeof(videoObj._rotation) == 'undefined' [Video.as:56]
+PASSED: typeof(videoObj._target) == 'undefined' [Video.as:57]
+PASSED: typeof(videoObj._parent) == 'undefined' [Video.as:58]
+check_totals: 21
diff --git a/test/gnash/actionscript.all/Video-7.swf b/test/gnash/actionscript.all/Video-7.swf
new file mode 100644
index 0000000..197bfe8
Binary files /dev/null and b/test/gnash/actionscript.all/Video-7.swf differ
diff --git a/test/gnash/actionscript.all/Video-7.swf.trace b/test/gnash/actionscript.all/Video-7.swf.trace
new file mode 100644
index 0000000..2b26f1b
--- /dev/null
+++ b/test/gnash/actionscript.all/Video-7.swf.trace
@@ -0,0 +1,22 @@
+PASSED: typeof(Video) == 'function' [Video.as:35]
+PASSED: typeof(Video.prototype) == 'object' [Video.as:36]
+PASSED: typeof(Video.prototype.__proto__) == 'object' [Video.as:37]
+PASSED: Video.prototype.__proto__ == Object.prototype [Video.as:38]
+PASSED: typeof(Video.prototype.attachVideo) == 'function' [Video.as:39]
+PASSED: typeof(Video.prototype.clear) == 'function' [Video.as:40]
+PASSED: typeof(videoObj) == 'object' [Video.as:44]
+PASSED: typeof(videoObj.attachVideo) == 'function' [Video.as:45]
+PASSED: typeof(videoObj.clear) == 'function' [Video.as:46]
+PASSED: typeof(videoObj._x) == 'undefined' [Video.as:47]
+PASSED: typeof(videoObj._y) == 'undefined' [Video.as:48]
+PASSED: typeof(videoObj._width) == 'undefined' [Video.as:49]
+PASSED: typeof(videoObj._height) == 'undefined' [Video.as:50]
+PASSED: typeof(videoObj._xscale) == 'undefined' [Video.as:51]
+PASSED: typeof(videoObj._yscale) == 'undefined' [Video.as:52]
+PASSED: typeof(videoObj._xmouse) == 'undefined' [Video.as:53]
+PASSED: typeof(videoObj._ymouse) == 'undefined' [Video.as:54]
+PASSED: typeof(videoObj._alpha) == 'undefined' [Video.as:55]
+PASSED: typeof(videoObj._rotation) == 'undefined' [Video.as:56]
+PASSED: typeof(videoObj._target) == 'undefined' [Video.as:57]
+PASSED: typeof(videoObj._parent) == 'undefined' [Video.as:58]
+check_totals: 21
diff --git a/test/gnash/actionscript.all/Video-8.swf b/test/gnash/actionscript.all/Video-8.swf
new file mode 100644
index 0000000..2a51b13
Binary files /dev/null and b/test/gnash/actionscript.all/Video-8.swf differ
diff --git a/test/gnash/actionscript.all/Video-8.swf.trace b/test/gnash/actionscript.all/Video-8.swf.trace
new file mode 100644
index 0000000..2b26f1b
--- /dev/null
+++ b/test/gnash/actionscript.all/Video-8.swf.trace
@@ -0,0 +1,22 @@
+PASSED: typeof(Video) == 'function' [Video.as:35]
+PASSED: typeof(Video.prototype) == 'object' [Video.as:36]
+PASSED: typeof(Video.prototype.__proto__) == 'object' [Video.as:37]
+PASSED: Video.prototype.__proto__ == Object.prototype [Video.as:38]
+PASSED: typeof(Video.prototype.attachVideo) == 'function' [Video.as:39]
+PASSED: typeof(Video.prototype.clear) == 'function' [Video.as:40]
+PASSED: typeof(videoObj) == 'object' [Video.as:44]
+PASSED: typeof(videoObj.attachVideo) == 'function' [Video.as:45]
+PASSED: typeof(videoObj.clear) == 'function' [Video.as:46]
+PASSED: typeof(videoObj._x) == 'undefined' [Video.as:47]
+PASSED: typeof(videoObj._y) == 'undefined' [Video.as:48]
+PASSED: typeof(videoObj._width) == 'undefined' [Video.as:49]
+PASSED: typeof(videoObj._height) == 'undefined' [Video.as:50]
+PASSED: typeof(videoObj._xscale) == 'undefined' [Video.as:51]
+PASSED: typeof(videoObj._yscale) == 'undefined' [Video.as:52]
+PASSED: typeof(videoObj._xmouse) == 'undefined' [Video.as:53]
+PASSED: typeof(videoObj._ymouse) == 'undefined' [Video.as:54]
+PASSED: typeof(videoObj._alpha) == 'undefined' [Video.as:55]
+PASSED: typeof(videoObj._rotation) == 'undefined' [Video.as:56]
+PASSED: typeof(videoObj._target) == 'undefined' [Video.as:57]
+PASSED: typeof(videoObj._parent) == 'undefined' [Video.as:58]
+check_totals: 21
diff --git a/test/gnash/actionscript.all/Video.as b/test/gnash/actionscript.all/Video.as
new file mode 100644
index 0000000..6a9a79c
--- /dev/null
+++ b/test/gnash/actionscript.all/Video.as
@@ -0,0 +1,64 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for Video ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: Video.as,v 1.16 2008/03/29 22:50:54 strk Exp $";
+#include "check.as"
+
+#if OUTPUT_VERSION < 6
+
+check_equals(Video, undefined);
+check_totals(1);
+
+#else
+
+// test Video class an interface availability
+check_equals(typeof(Video), 'function');
+check_equals(typeof(Video.prototype), 'object');
+check_equals(typeof(Video.prototype.__proto__), 'object');
+check_equals(Video.prototype.__proto__, Object.prototype);
+check_equals(typeof(Video.prototype.attachVideo), 'function');
+check_equals(typeof(Video.prototype.clear), 'function');
+
+// test Video instance
+var videoObj = new Video;
+check_equals (typeof(videoObj), 'object');
+check_equals (typeof(videoObj.attachVideo), 'function');
+check_equals (typeof(videoObj.clear), 'function');
+check_equals (typeof(videoObj._x), 'undefined');
+check_equals (typeof(videoObj._y), 'undefined');
+check_equals (typeof(videoObj._width), 'undefined');
+check_equals (typeof(videoObj._height), 'undefined');
+check_equals (typeof(videoObj._xscale), 'undefined');
+check_equals (typeof(videoObj._yscale), 'undefined');
+check_equals (typeof(videoObj._xmouse), 'undefined');
+check_equals (typeof(videoObj._ymouse), 'undefined');
+check_equals (typeof(videoObj._alpha), 'undefined');
+check_equals (typeof(videoObj._rotation), 'undefined');
+check_equals (typeof(videoObj._target), 'undefined');
+check_equals (typeof(videoObj._parent), 'undefined');
+
+// TODO: test other properties !
+
+check_totals(21);
+
+#endif
diff --git a/test/gnash/actionscript.all/check.as b/test/gnash/actionscript.all/check.as
new file mode 100644
index 0000000..8164178
--- /dev/null
+++ b/test/gnash/actionscript.all/check.as
@@ -0,0 +1,89 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//   Copyright (C) 2008 Pekka Lampila
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifndef _CHECK_AS_
+#define _CHECK_AS_
+
+#define OUTPUT_VERSION __SWF_VERSION__
+
+#define MING_VERSION_CODE 00047777
+
+#define MING_SUPPORTS_ASM
+#define MING_SUPPORTS_ASM_EXTENDS
+#define MING_SUPPORTS_ASM_GETPROPERTY
+#define MING_SUPPORTS_ASM_SETPROPERTY
+#define MING_SUPPORTS_ASM_TONUMBER
+#define MING_SUPPORTS_ASM_TOSTRING
+#define MING_SUPPORTS_ASM_TARGETPATH
+#define MING_SUPPORTS_ASM_IMPLEMENTS
+
+#define note(text) trace ("NOTE: " + text)
+
+#define pass_check(text) trace ("PASSED: " + text)
+#define xpass_check(text) trace ("XPASSED: " + text)
+#define fail_check(text) trace ("FAILED: " + text)
+#define xfail_check(text) trace ("XFAILED: " + text)
+#define info(x) trace (x)
+
+#define MEDIA(x) "../media/" + #x
+
+#define INFO " [" + __FILE__ + ":" + __LINE__ + "]" 
+
+#define totals(x) trace ("totals"); getURL ('fscommand:quit', '');
+#define xtotals(x) trace ("xtotals"); getURL ('fscommand:quit', '');
+#define check_totals(x) trace ("check_totals: " + #x); \
+  getURL ('fscommand:quit', '');
+#define xcheck_totals(x) trace ("xcheck_totals: " + #x); \
+  getURL ('fscommand:quit', '');
+
+//
+// Use check (<expression>)
+//
+#define check(expr)  \
+	if (expr) pass_check (#expr + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+	else fail_check (#expr + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+
+#define xcheck(expr)  \
+        if (expr) xpass_check (#expr + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+        else xfail_check (#expr + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+
+//
+// Use check_equals (<obtained>, <expected>)
+//
+#define check_equals(obt, exp)  \
+	if (obt == exp) pass_check ( \
+		#obt + " == " + #exp + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+	else fail_check ("expected: " + #exp + \
+		" obtained: " + obt + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+
+#define xcheck_equals(obt, exp)  \
+        if (obt == exp) xpass_check ( \
+                #obt + " == " + #exp + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+        else xfail_check ("expected: " + #exp + \
+                " obtained: " + obt + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+
+#endif // _CHECK_AS_
diff --git a/test/gnash/actionscript.all/check.as.original b/test/gnash/actionscript.all/check.as.original
new file mode 100644
index 0000000..4958ef2
--- /dev/null
+++ b/test/gnash/actionscript.all/check.as.original
@@ -0,0 +1,125 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifndef _CHECK_AS_
+#define _CHECK_AS_
+
+#if MING_VERSION_CODE >= 00040003
+# define MING_SUPPORTS_ASM
+# if MING_VERSION_CODE >= 00040004
+#  define MING_SUPPORTS_ASM_EXTENDS
+#  define MING_SUPPORTS_ASM_GETPROPERTY
+#  define MING_SUPPORTS_ASM_SETPROPERTY
+#  define MING_SUPPORTS_ASM_TONUMBER
+#  define MING_SUPPORTS_ASM_TOSTRING
+#  if MING_VERSION_CODE >= 00040005
+#   define MING_SUPPORTS_ASM_TARGETPATH
+#   if MING_VERSION_CODE < 00040006
+#     define MING_LOGICAL_ANDOR_BROKEN
+#   endif
+#   if MING_VERSION_CODE >= 00040006
+#     define MING_SUPPORTS_ASM_IMPLEMENTS
+#   endif
+#  endif
+# endif
+#endif
+
+
+// ONLINE mode uses DEJAGNU module
+#ifdef ONLINE
+# define USE_DEJAGNU_MODULE
+#endif
+
+// Use facilities provided by dejagnu shared library module
+//
+// NOTE: if you define USE_DEJAGNU_MODULE you
+//       will also need put dejagnu_so_init.as in first frame
+//       and put dejagnu_so_fini.as in last frame.
+#ifdef USE_DEJAGNU_MODULE
+
+# define trace info
+
+#else // ndef USE_DEJAGNU_MODULE
+
+#define pass_check(text) trace("PASSED: "+text)
+#define xpass_check(text) trace("XPASSED: "+text)
+#define fail_check(text) trace("FAILED: "+text)
+#define xfail_check(text) trace("XFAILED: "+text)
+#define info(x) trace(x)
+
+
+#endif
+
+//
+// Use to get stuff in the testsuite/media.
+// Example:
+//
+//   getUrl( MEDIA(green.swf) );
+//
+#define MEDIA(x) MEDIADIR + "/" + #x
+
+#define INFO " [" + __FILE__ + ":" + __LINE__ + "]" 
+
+#define check_totals(x) totals(x, INFO)
+#define xcheck_totals(x) xtotals(x, INFO)
+
+//
+// Use check(<expression>)
+//
+#define check(expr)  \
+	if ( expr ) pass_check(#expr + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+	else fail_check(#expr + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+
+#define xcheck(expr)  \
+        if ( expr ) xpass_check(#expr + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+        else xfail_check(#expr + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+
+//
+// Use check_equals(<obtained>, <expected>)
+//
+#define check_equals(obt, exp)  \
+	if ( obt == exp ) pass_check( \
+		#obt + " == " + #exp + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+	else fail_check("expected: " + #exp + \
+		" obtained: " + obt + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+
+#define xcheck_equals(obt, exp)  \
+        if ( obt == exp ) xpass_check( \
+                #obt + " == " + #exp + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+        else xfail_check("expected: " + #exp + \
+                " obtained: " + obt + \
+		" [" + __FILE__ + ":" + __LINE__ + "]" ); \
+
+#ifndef SUPPRESS_RCSID_DUMP
+info('['+rcsid+']');
+#endif
+
+// If using the DEJAGNU_MODULE this info will be printed
+// by code in dejagnu_so_init.as
+#ifndef USE_DEJAGNU_MODULE
+info("SWF" + OUTPUT_VERSION + " - " + System.capabilities.version + "\n");
+#endif
+
+#endif // _CHECK_AS_
diff --git a/test/gnash/actionscript.all/default.stas b/test/gnash/actionscript.all/default.stas
new file mode 100644
index 0000000..844990a
--- /dev/null
+++ b/test/gnash/actionscript.all/default.stas
@@ -0,0 +1,54 @@
+/* Swfdec
+ * Copyright (C) 2008 Benjamin Otte <otte at gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, 
+ * Boston, MA  02110-1301  USA
+ */
+
+run_test = function (t, file) {
+  var e;
+  print ("Testing " + file);
+  try {
+    t.reset (file);
+    var expected = Buffer.load (file + ".trace");
+    t.advance (0);
+    t.advance (Math.ceil (10000 / t.rate));
+    var diff = t.trace.diff (expected);
+    if (diff) {
+      error ("different trace output");
+      Native.print (diff);
+      return false;
+    }
+  } catch (e) {
+    if (e) {
+      error (e);
+      return false;
+    }
+  };
+  Native.print ("  OK\n");
+  return true;
+};
+
+filenames.sort ();
+t = new Test ();
+fail = [];
+for (var i = 0; i < filenames.length; i++) {
+  if (!run_test (t, filenames[i]))
+    fail.push (filenames[i]);
+};
+if (fail.length > 0) {
+  error (fail.join ("\n       "));
+  throw (fail.length + " failures");
+}
diff --git a/test/gnash/actionscript.all/default.sts b/test/gnash/actionscript.all/default.sts
new file mode 100644
index 0000000..279dcda
Binary files /dev/null and b/test/gnash/actionscript.all/default.sts differ
diff --git a/test/gnash/actionscript.all/delete-5.swf b/test/gnash/actionscript.all/delete-5.swf
new file mode 100644
index 0000000..fa6b825
Binary files /dev/null and b/test/gnash/actionscript.all/delete-5.swf differ
diff --git a/test/gnash/actionscript.all/delete-5.swf.trace b/test/gnash/actionscript.all/delete-5.swf.trace
new file mode 100644
index 0000000..2bd8cb6
--- /dev/null
+++ b/test/gnash/actionscript.all/delete-5.swf.trace
@@ -0,0 +1,28 @@
+PASSED: anObject != undefined [delete.as:6]
+PASSED: delete anObject [delete.as:9]
+PASSED: typeof(anObject) == 'undefined' [delete.as:10]
+PASSED: typeof(anObjectBackup) == 'object' [delete.as:11]
+PASSED: !delete noObject [delete.as:12]
+PASSED: anotherObject [delete.as:19]
+PASSED: a == "anotherObject.a" [delete.as:28]
+PASSED: b == "anotherObject.b (protected)" [delete.as:29]
+PASSED: !delete b [delete.as:30]
+PASSED: b == "anotherObject.b (protected)" [delete.as:31]
+PASSED: delete a [delete.as:32]
+PASSED: a == "a" [delete.as:33]
+PASSED: delete a [delete.as:34]
+PASSED: a == undefined [delete.as:40]
+PASSED: ! delete a [delete.as:41]
+PASSED: a == undefined [delete.as:44]
+PASSED: !delete a [delete.as:45]
+PASSED: typeof(func.prototype) == 'object' [delete.as:54]
+PASSED: func.prototype.appended_value == 4 [delete.as:55]
+PASSED: !delete func.prototype [delete.as:57]
+PASSED: typeof(func.prototype) == 'object' [delete.as:58]
+PASSED: func.prototype.appended_value == 4 [delete.as:59]
+PASSED: obj.a == 1 [delete.as:67]
+PASSED: delete obj.a [delete.as:68]
+PASSED: typeof(obj.a) == 'undefined' [delete.as:69]
+PASSED: !delete obj.a [delete.as:70]
+PASSED: !delete unexistent.a [delete.as:71]
+totals
diff --git a/test/gnash/actionscript.all/delete-6.swf b/test/gnash/actionscript.all/delete-6.swf
new file mode 100644
index 0000000..3227611
Binary files /dev/null and b/test/gnash/actionscript.all/delete-6.swf differ
diff --git a/test/gnash/actionscript.all/delete-6.swf.trace b/test/gnash/actionscript.all/delete-6.swf.trace
new file mode 100644
index 0000000..aff2773
--- /dev/null
+++ b/test/gnash/actionscript.all/delete-6.swf.trace
@@ -0,0 +1,28 @@
+PASSED: anObject != undefined [delete.as:6]
+PASSED: delete anObject [delete.as:9]
+PASSED: typeof(anObject) == 'undefined' [delete.as:10]
+PASSED: typeof(anObjectBackup) == 'object' [delete.as:11]
+PASSED: !delete noObject [delete.as:12]
+PASSED: anotherObject [delete.as:19]
+PASSED: a == "anotherObject.a" [delete.as:28]
+PASSED: b == "anotherObject.b (protected)" [delete.as:29]
+PASSED: !delete b [delete.as:30]
+PASSED: b == "anotherObject.b (protected)" [delete.as:31]
+PASSED: delete a [delete.as:32]
+PASSED: a == "a" [delete.as:33]
+PASSED: delete a [delete.as:34]
+PASSED: a == "_global.a" [delete.as:37]
+PASSED: delete a [delete.as:38]
+PASSED: a == undefined [delete.as:44]
+PASSED: !delete a [delete.as:45]
+PASSED: typeof(func.prototype) == 'object' [delete.as:54]
+PASSED: func.prototype.appended_value == 4 [delete.as:55]
+PASSED: !delete func.prototype [delete.as:57]
+PASSED: typeof(func.prototype) == 'object' [delete.as:58]
+PASSED: func.prototype.appended_value == 4 [delete.as:59]
+PASSED: obj.a == 1 [delete.as:67]
+PASSED: delete obj.a [delete.as:68]
+PASSED: typeof(obj.a) == 'undefined' [delete.as:69]
+PASSED: !delete obj.a [delete.as:70]
+PASSED: !delete unexistent.a [delete.as:71]
+totals
diff --git a/test/gnash/actionscript.all/delete-7.swf b/test/gnash/actionscript.all/delete-7.swf
new file mode 100644
index 0000000..1d488ec
Binary files /dev/null and b/test/gnash/actionscript.all/delete-7.swf differ
diff --git a/test/gnash/actionscript.all/delete-7.swf.trace b/test/gnash/actionscript.all/delete-7.swf.trace
new file mode 100644
index 0000000..aff2773
--- /dev/null
+++ b/test/gnash/actionscript.all/delete-7.swf.trace
@@ -0,0 +1,28 @@
+PASSED: anObject != undefined [delete.as:6]
+PASSED: delete anObject [delete.as:9]
+PASSED: typeof(anObject) == 'undefined' [delete.as:10]
+PASSED: typeof(anObjectBackup) == 'object' [delete.as:11]
+PASSED: !delete noObject [delete.as:12]
+PASSED: anotherObject [delete.as:19]
+PASSED: a == "anotherObject.a" [delete.as:28]
+PASSED: b == "anotherObject.b (protected)" [delete.as:29]
+PASSED: !delete b [delete.as:30]
+PASSED: b == "anotherObject.b (protected)" [delete.as:31]
+PASSED: delete a [delete.as:32]
+PASSED: a == "a" [delete.as:33]
+PASSED: delete a [delete.as:34]
+PASSED: a == "_global.a" [delete.as:37]
+PASSED: delete a [delete.as:38]
+PASSED: a == undefined [delete.as:44]
+PASSED: !delete a [delete.as:45]
+PASSED: typeof(func.prototype) == 'object' [delete.as:54]
+PASSED: func.prototype.appended_value == 4 [delete.as:55]
+PASSED: !delete func.prototype [delete.as:57]
+PASSED: typeof(func.prototype) == 'object' [delete.as:58]
+PASSED: func.prototype.appended_value == 4 [delete.as:59]
+PASSED: obj.a == 1 [delete.as:67]
+PASSED: delete obj.a [delete.as:68]
+PASSED: typeof(obj.a) == 'undefined' [delete.as:69]
+PASSED: !delete obj.a [delete.as:70]
+PASSED: !delete unexistent.a [delete.as:71]
+totals
diff --git a/test/gnash/actionscript.all/delete-8.swf b/test/gnash/actionscript.all/delete-8.swf
new file mode 100644
index 0000000..f5435fa
Binary files /dev/null and b/test/gnash/actionscript.all/delete-8.swf differ
diff --git a/test/gnash/actionscript.all/delete-8.swf.trace b/test/gnash/actionscript.all/delete-8.swf.trace
new file mode 100644
index 0000000..aff2773
--- /dev/null
+++ b/test/gnash/actionscript.all/delete-8.swf.trace
@@ -0,0 +1,28 @@
+PASSED: anObject != undefined [delete.as:6]
+PASSED: delete anObject [delete.as:9]
+PASSED: typeof(anObject) == 'undefined' [delete.as:10]
+PASSED: typeof(anObjectBackup) == 'object' [delete.as:11]
+PASSED: !delete noObject [delete.as:12]
+PASSED: anotherObject [delete.as:19]
+PASSED: a == "anotherObject.a" [delete.as:28]
+PASSED: b == "anotherObject.b (protected)" [delete.as:29]
+PASSED: !delete b [delete.as:30]
+PASSED: b == "anotherObject.b (protected)" [delete.as:31]
+PASSED: delete a [delete.as:32]
+PASSED: a == "a" [delete.as:33]
+PASSED: delete a [delete.as:34]
+PASSED: a == "_global.a" [delete.as:37]
+PASSED: delete a [delete.as:38]
+PASSED: a == undefined [delete.as:44]
+PASSED: !delete a [delete.as:45]
+PASSED: typeof(func.prototype) == 'object' [delete.as:54]
+PASSED: func.prototype.appended_value == 4 [delete.as:55]
+PASSED: !delete func.prototype [delete.as:57]
+PASSED: typeof(func.prototype) == 'object' [delete.as:58]
+PASSED: func.prototype.appended_value == 4 [delete.as:59]
+PASSED: obj.a == 1 [delete.as:67]
+PASSED: delete obj.a [delete.as:68]
+PASSED: typeof(obj.a) == 'undefined' [delete.as:69]
+PASSED: !delete obj.a [delete.as:70]
+PASSED: !delete unexistent.a [delete.as:71]
+totals
diff --git a/test/gnash/actionscript.all/delete.as b/test/gnash/actionscript.all/delete.as
new file mode 100644
index 0000000..79bdd44
--- /dev/null
+++ b/test/gnash/actionscript.all/delete.as
@@ -0,0 +1,77 @@
+
+rcsid="$Id: delete.as,v 1.14 2008/03/11 19:31:48 strk Exp $";
+#include "check.as"
+
+anObject = new Object();
+check(anObject != undefined);
+
+anObjectBackup = anObject;
+check(delete anObject);
+check_equals(typeof(anObject), 'undefined'); 
+check_equals(typeof(anObjectBackup), 'object'); 
+check(!delete noObject);
+
+//
+// Scoped delete (see bug #18482)
+//
+
+var anotherObject = new Object();
+check(anotherObject);
+anotherObject.a = "anotherObject.a";
+a = "a";
+b = "b";
+_global.a = "_global.a";
+anotherObject.b = "anotherObject.b (protected)";
+ASSetPropFlags(anotherObject, "b", 2); // protect b
+with(anotherObject)
+{
+	check_equals(a, "anotherObject.a");
+	check_equals(b, "anotherObject.b (protected)");
+	check(!delete b); // protected from deletion !
+	check_equals(b, "anotherObject.b (protected)");
+	check(delete a);
+	check_equals(a, "a");
+	check(delete a);
+
+#if OUTPUT_VERSION > 5
+	check_equals(a, "_global.a");
+	check(delete a);
+#else
+	check_equals(a, undefined);
+	check(! delete a);
+#endif
+
+	check_equals(a, undefined);
+	check(!delete a);
+}
+
+//
+// Deleting a user function's prototype
+//
+
+function func() {};
+func.prototype.appended_value = 4;
+check_equals(typeof(func.prototype), 'object');
+check_equals(func.prototype.appended_value, 4);
+//protoback = MovieClip.prototype;
+check(!delete func.prototype);
+check_equals(typeof(func.prototype), 'object');
+check_equals(func.prototype.appended_value, 4);
+
+//
+// Deleting an object's member
+//
+
+obj = new Object;
+obj.a = 1;
+check_equals(obj.a, 1);
+check(delete obj.a);
+check_equals(typeof(obj.a), 'undefined');
+check(!delete obj.a);
+check(!delete unexistent.a);
+
+// TODO: try other malformed ActionDelete calls
+
+// TODO: test deletion of variables referenced by path (slash-based or dot-based)
+//       make sure to test use of 'this' here too !
+totals();
diff --git a/test/gnash/actionscript.all/enumerate-5.swf b/test/gnash/actionscript.all/enumerate-5.swf
new file mode 100644
index 0000000..0737543
Binary files /dev/null and b/test/gnash/actionscript.all/enumerate-5.swf differ
diff --git a/test/gnash/actionscript.all/enumerate-5.swf.trace b/test/gnash/actionscript.all/enumerate-5.swf.trace
new file mode 100644
index 0000000..abd55c7
--- /dev/null
+++ b/test/gnash/actionscript.all/enumerate-5.swf.trace
@@ -0,0 +1 @@
+totals
diff --git a/test/gnash/actionscript.all/enumerate-6.swf b/test/gnash/actionscript.all/enumerate-6.swf
new file mode 100644
index 0000000..a040fb4
Binary files /dev/null and b/test/gnash/actionscript.all/enumerate-6.swf differ
diff --git a/test/gnash/actionscript.all/enumerate-6.swf.trace b/test/gnash/actionscript.all/enumerate-6.swf.trace
new file mode 100644
index 0000000..93b99d0
--- /dev/null
+++ b/test/gnash/actionscript.all/enumerate-6.swf.trace
@@ -0,0 +1,19 @@
+PASSED: typeof(recorder['mc0']) == 'movieclip' [enumerate.as:54]
+PASSED: typeof(recorder['mc1']) == 'movieclip' [enumerate.as:55]
+PASSED: typeof(recorder['mc2']) == 'movieclip' [enumerate.as:56]
+PASSED: typeof(recorder['mc3']) == 'movieclip' [enumerate.as:57]
+PASSED: typeof(recorder['mc4']) == 'movieclip' [enumerate.as:58]
+PASSED: typeof(recorder['mc5']) == 'movieclip' [enumerate.as:59]
+PASSED: _root.hasOwnProperty('mc0') == false [enumerate.as:60]
+PASSED: _root.hasOwnProperty('mc1') == false [enumerate.as:61]
+PASSED: _root.hasOwnProperty('mc2') == false [enumerate.as:62]
+PASSED: _root.hasOwnProperty('mc3') == false [enumerate.as:63]
+PASSED: _root.hasOwnProperty('mc4') == false [enumerate.as:64]
+PASSED: _root.hasOwnProperty('mc5') == false [enumerate.as:65]
+PASSED: typeof(recorder['x1']) == 'function' [enumerate.as:92]
+PASSED: typeof(recorder['x2']) == 'number' [enumerate.as:93]
+PASSED: typeof(recorder['x3']) == 'object' [enumerate.as:94]
+PASSED: obj.hasOwnProperty('x1') == true [enumerate.as:95]
+PASSED: obj.hasOwnProperty('x2') == true [enumerate.as:96]
+PASSED: obj.hasOwnProperty('x3') == true [enumerate.as:97]
+totals
diff --git a/test/gnash/actionscript.all/enumerate-7.swf b/test/gnash/actionscript.all/enumerate-7.swf
new file mode 100644
index 0000000..218d2fa
Binary files /dev/null and b/test/gnash/actionscript.all/enumerate-7.swf differ
diff --git a/test/gnash/actionscript.all/enumerate-7.swf.trace b/test/gnash/actionscript.all/enumerate-7.swf.trace
new file mode 100644
index 0000000..93b99d0
--- /dev/null
+++ b/test/gnash/actionscript.all/enumerate-7.swf.trace
@@ -0,0 +1,19 @@
+PASSED: typeof(recorder['mc0']) == 'movieclip' [enumerate.as:54]
+PASSED: typeof(recorder['mc1']) == 'movieclip' [enumerate.as:55]
+PASSED: typeof(recorder['mc2']) == 'movieclip' [enumerate.as:56]
+PASSED: typeof(recorder['mc3']) == 'movieclip' [enumerate.as:57]
+PASSED: typeof(recorder['mc4']) == 'movieclip' [enumerate.as:58]
+PASSED: typeof(recorder['mc5']) == 'movieclip' [enumerate.as:59]
+PASSED: _root.hasOwnProperty('mc0') == false [enumerate.as:60]
+PASSED: _root.hasOwnProperty('mc1') == false [enumerate.as:61]
+PASSED: _root.hasOwnProperty('mc2') == false [enumerate.as:62]
+PASSED: _root.hasOwnProperty('mc3') == false [enumerate.as:63]
+PASSED: _root.hasOwnProperty('mc4') == false [enumerate.as:64]
+PASSED: _root.hasOwnProperty('mc5') == false [enumerate.as:65]
+PASSED: typeof(recorder['x1']) == 'function' [enumerate.as:92]
+PASSED: typeof(recorder['x2']) == 'number' [enumerate.as:93]
+PASSED: typeof(recorder['x3']) == 'object' [enumerate.as:94]
+PASSED: obj.hasOwnProperty('x1') == true [enumerate.as:95]
+PASSED: obj.hasOwnProperty('x2') == true [enumerate.as:96]
+PASSED: obj.hasOwnProperty('x3') == true [enumerate.as:97]
+totals
diff --git a/test/gnash/actionscript.all/enumerate-8.swf b/test/gnash/actionscript.all/enumerate-8.swf
new file mode 100644
index 0000000..78a1825
Binary files /dev/null and b/test/gnash/actionscript.all/enumerate-8.swf differ
diff --git a/test/gnash/actionscript.all/enumerate-8.swf.trace b/test/gnash/actionscript.all/enumerate-8.swf.trace
new file mode 100644
index 0000000..93b99d0
--- /dev/null
+++ b/test/gnash/actionscript.all/enumerate-8.swf.trace
@@ -0,0 +1,19 @@
+PASSED: typeof(recorder['mc0']) == 'movieclip' [enumerate.as:54]
+PASSED: typeof(recorder['mc1']) == 'movieclip' [enumerate.as:55]
+PASSED: typeof(recorder['mc2']) == 'movieclip' [enumerate.as:56]
+PASSED: typeof(recorder['mc3']) == 'movieclip' [enumerate.as:57]
+PASSED: typeof(recorder['mc4']) == 'movieclip' [enumerate.as:58]
+PASSED: typeof(recorder['mc5']) == 'movieclip' [enumerate.as:59]
+PASSED: _root.hasOwnProperty('mc0') == false [enumerate.as:60]
+PASSED: _root.hasOwnProperty('mc1') == false [enumerate.as:61]
+PASSED: _root.hasOwnProperty('mc2') == false [enumerate.as:62]
+PASSED: _root.hasOwnProperty('mc3') == false [enumerate.as:63]
+PASSED: _root.hasOwnProperty('mc4') == false [enumerate.as:64]
+PASSED: _root.hasOwnProperty('mc5') == false [enumerate.as:65]
+PASSED: typeof(recorder['x1']) == 'function' [enumerate.as:92]
+PASSED: typeof(recorder['x2']) == 'number' [enumerate.as:93]
+PASSED: typeof(recorder['x3']) == 'object' [enumerate.as:94]
+PASSED: obj.hasOwnProperty('x1') == true [enumerate.as:95]
+PASSED: obj.hasOwnProperty('x2') == true [enumerate.as:96]
+PASSED: obj.hasOwnProperty('x3') == true [enumerate.as:97]
+totals
diff --git a/test/gnash/actionscript.all/enumerate.as b/test/gnash/actionscript.all/enumerate.as
new file mode 100644
index 0000000..9f968de
--- /dev/null
+++ b/test/gnash/actionscript.all/enumerate.as
@@ -0,0 +1,102 @@
+ // 
+//   Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modchecky
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; check not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fcheckth Floor, Boston, MA  02110-1301  USA
+//
+
+/*
+ *  Zou Lunkai, zoulunkai at gmail.com
+ *
+ *  Test ActionEnumerate/2
+ */
+
+
+rcsid="$Id: enumerate.as,v 1.10 2008/03/11 19:31:48 strk Exp $";
+#include "check.as"
+
+#if OUTPUT_VERSION > 5
+
+//
+// enumerate characters of a sprite
+//
+{
+  // Create a recorder and init it.
+  recorder =  new Array(10);
+  for(i=0; i<10; i++){
+    recorder['mc'+i] = 0;
+  }
+
+  // Create six characters
+  for(i=0; i<6; i++){
+    _root.createEmptyMovieClip('mc'+i, i+1);
+  }
+
+  // Use the recorder to record the enumerated results in _root
+  i = 0;
+  for (var j in _root){
+    recorder[j.toString()] = _root[j];
+    i++;
+  } 
+
+  // Test what we got in the above step. Tests show that characters were also got enumerated!
+  check_equals(typeof(recorder['mc0']), 'movieclip');
+  check_equals(typeof(recorder['mc1']), 'movieclip');
+  check_equals(typeof(recorder['mc2']), 'movieclip');
+  check_equals(typeof(recorder['mc3']), 'movieclip');  
+  check_equals(typeof(recorder['mc4']), 'movieclip');
+  check_equals(typeof(recorder['mc5']), 'movieclip');
+  check_equals(_root.hasOwnProperty('mc0'), false);
+  check_equals(_root.hasOwnProperty('mc1'), false);
+  check_equals(_root.hasOwnProperty('mc2'), false);
+  check_equals(_root.hasOwnProperty('mc3'), false);
+  check_equals(_root.hasOwnProperty('mc4'), false);
+  check_equals(_root.hasOwnProperty('mc5'), false);
+  delete recorder;
+}
+
+//
+// enumerate properties of an AS object
+//
+{
+  recorder =  new Array(10);
+  
+  // initialize the recorder
+  for(i=0; i<10; i++){
+    recorder['x'+i] = 0;
+  }
+
+  obj = new Object();
+  obj.x1 = function () {};
+  obj.x2 = 1;
+  obj.x3 = Array();
+
+  i = 0;
+  for (var j in obj){
+    // equivalent to recorder[j.toString()] = obj[j.toString()];
+    recorder[j.toString()] = obj[j];
+    i++;
+  } 
+  
+  check_equals(typeof(recorder['x1']), 'function');
+  check_equals(typeof(recorder['x2']), 'number');
+  check_equals(typeof(recorder['x3']), 'object');
+  check_equals(obj.hasOwnProperty('x1'), true);
+  check_equals(obj.hasOwnProperty('x2'), true);
+  check_equals(obj.hasOwnProperty('x3'), true);
+  delete recorder;
+}
+
+#endif  // OUTPUT_VERSION > 5
+totals();
diff --git a/test/gnash/actionscript.all/pending/BitmapData-5.swf b/test/gnash/actionscript.all/pending/BitmapData-5.swf
new file mode 100644
index 0000000..c32e682
Binary files /dev/null and b/test/gnash/actionscript.all/pending/BitmapData-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/BitmapData-5.swf.trace b/test/gnash/actionscript.all/pending/BitmapData-5.swf.trace
new file mode 100644
index 0000000..23b0286
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/BitmapData-5.swf.trace
@@ -0,0 +1,2 @@
+PASSED: typeof(flash) == 'undefined' [BitmapData.as:30]
+check_totals: 1
diff --git a/test/gnash/actionscript.all/pending/BitmapData-6.swf b/test/gnash/actionscript.all/pending/BitmapData-6.swf
new file mode 100644
index 0000000..f824adc
Binary files /dev/null and b/test/gnash/actionscript.all/pending/BitmapData-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/BitmapData-6.swf.trace b/test/gnash/actionscript.all/pending/BitmapData-6.swf.trace
new file mode 100644
index 0000000..23b0286
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/BitmapData-6.swf.trace
@@ -0,0 +1,2 @@
+PASSED: typeof(flash) == 'undefined' [BitmapData.as:30]
+check_totals: 1
diff --git a/test/gnash/actionscript.all/pending/BitmapData-7.swf b/test/gnash/actionscript.all/pending/BitmapData-7.swf
new file mode 100644
index 0000000..f7fba06
Binary files /dev/null and b/test/gnash/actionscript.all/pending/BitmapData-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/BitmapData-7.swf.trace b/test/gnash/actionscript.all/pending/BitmapData-7.swf.trace
new file mode 100644
index 0000000..23b0286
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/BitmapData-7.swf.trace
@@ -0,0 +1,2 @@
+PASSED: typeof(flash) == 'undefined' [BitmapData.as:30]
+check_totals: 1
diff --git a/test/gnash/actionscript.all/pending/BitmapData-8.swf b/test/gnash/actionscript.all/pending/BitmapData-8.swf
new file mode 100644
index 0000000..a8a3402
Binary files /dev/null and b/test/gnash/actionscript.all/pending/BitmapData-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/BitmapData-8.swf.trace b/test/gnash/actionscript.all/pending/BitmapData-8.swf.trace
new file mode 100644
index 0000000..9d06472
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/BitmapData-8.swf.trace
@@ -0,0 +1,78 @@
+PASSED: typeof(Bitmap) == 'function' [BitmapData.as:37]
+PASSED: typeof(Bitmap.prototype) == 'object' [BitmapData.as:38]
+PASSED: Bitmap.prototype.hasOwnProperty('applyFilter') [BitmapData.as:39]
+PASSED: Bitmap.prototype.hasOwnProperty('clone') [BitmapData.as:40]
+PASSED: Bitmap.prototype.hasOwnProperty('colorTransform') [BitmapData.as:41]
+PASSED: Bitmap.prototype.hasOwnProperty('copyChannel') [BitmapData.as:42]
+PASSED: Bitmap.prototype.hasOwnProperty('copyPixels') [BitmapData.as:43]
+PASSED: Bitmap.prototype.hasOwnProperty('dispose') [BitmapData.as:44]
+PASSED: Bitmap.prototype.hasOwnProperty('draw') [BitmapData.as:45]
+PASSED: Bitmap.prototype.hasOwnProperty('fillRect') [BitmapData.as:46]
+PASSED: Bitmap.prototype.hasOwnProperty('floodFill') [BitmapData.as:47]
+PASSED: Bitmap.prototype.hasOwnProperty('generateFilterRect') [BitmapData.as:48]
+PASSED: Bitmap.prototype.hasOwnProperty('getColorBoundsRect') [BitmapData.as:49]
+PASSED: Bitmap.prototype.hasOwnProperty('getPixel') [BitmapData.as:50]
+PASSED: Bitmap.prototype.hasOwnProperty('getPixel32') [BitmapData.as:51]
+PASSED: Bitmap.prototype.hasOwnProperty('hitTest') [BitmapData.as:52]
+PASSED: Bitmap.prototype.hasOwnProperty('merge') [BitmapData.as:53]
+PASSED: Bitmap.prototype.hasOwnProperty('noise') [BitmapData.as:54]
+PASSED: Bitmap.prototype.hasOwnProperty('paletteMap') [BitmapData.as:55]
+PASSED: Bitmap.prototype.hasOwnProperty('perlinNoise') [BitmapData.as:56]
+PASSED: Bitmap.prototype.hasOwnProperty('pixelDissolve') [BitmapData.as:57]
+PASSED: Bitmap.prototype.hasOwnProperty('scroll') [BitmapData.as:58]
+PASSED: Bitmap.prototype.hasOwnProperty('setPixel') [BitmapData.as:59]
+PASSED: Bitmap.prototype.hasOwnProperty('setPixel32') [BitmapData.as:60]
+PASSED: Bitmap.prototype.hasOwnProperty('threshold') [BitmapData.as:61]
+PASSED: Bitmap.prototype.hasOwnProperty("height") [BitmapData.as:62]
+PASSED: Bitmap.prototype.hasOwnProperty("width") [BitmapData.as:63]
+PASSED: Bitmap.prototype.hasOwnProperty("rectangle") [BitmapData.as:64]
+PASSED: Bitmap.prototype.hasOwnProperty("transparent") [BitmapData.as:65]
+PASSED: !Bitmap.prototype.hasOwnProperty('loadBitmap') [BitmapData.as:67]
+PASSED: Bitmap.hasOwnProperty('loadBitmap') [BitmapData.as:68]
+XPASSED: typeof(bmp) == "undefined" [BitmapData.as:74]
+PASSED: typeof(bmp) == 'object' [BitmapData.as:77]
+PASSED: bmp instanceof Bitmap [BitmapData.as:78]
+PASSED: !bmp.hasOwnProperty("height") [BitmapData.as:79]
+PASSED: !bmp.hasOwnProperty("width") [BitmapData.as:80]
+PASSED: !bmp.hasOwnProperty("rectangle") [BitmapData.as:81]
+PASSED: !bmp.hasOwnProperty("transparent") [BitmapData.as:82]
+PASSED: bmp.height == 10 [BitmapData.as:83]
+PASSED: bmp.width == 10 [BitmapData.as:84]
+PASSED: bmp.transparent == true [BitmapData.as:85]
+XPASSED: bmp.rectangle.toString() == "(x=0, y=0, w=10, h=10)" [BitmapData.as:86]
+PASSED: bmp.getPixel(1, 1) == 16777215 [BitmapData.as:87]
+PASSED: bmp.getPixel(9, 9) == 16777215 [BitmapData.as:88]
+PASSED: bmp.getPixel32(1, 1) == -1 [BitmapData.as:89]
+PASSED: bmp.getPixel32(1, 1) == -1 [BitmapData.as:92]
+PASSED: bmp.getPixel32(1, 1) == -1 [BitmapData.as:94]
+PASSED: bmp.height == 30 [BitmapData.as:98]
+PASSED: bmp.width == 20 [BitmapData.as:99]
+PASSED: bmp.transparent == false [BitmapData.as:100]
+XPASSED: bmp.rectangle.toString() == "(x=0, y=0, w=20, h=30)" [BitmapData.as:101]
+PASSED: bmp.getPixel(1, 1) == 0xeeddee [BitmapData.as:102]
+PASSED: bmp.getPixel32(1, 1) == -1122834 [BitmapData.as:103]
+PASSED: bmp.getPixel(50, 1) == 0 [BitmapData.as:107]
+PASSED: bmp.getPixel(0, 0) == 15654382 [BitmapData.as:108]
+PASSED: bmp.getPixel(-2, -5) == 0 [BitmapData.as:109]
+PASSED: bmp.getPixel(20, 30) == 0 [BitmapData.as:112]
+XPASSED: bmp == undefined [BitmapData.as:115]
+XPASSED: bmp == undefined [BitmapData.as:117]
+XPASSED: typeof(bmp) == "undefined" [BitmapData.as:120]
+XPASSED: bmp == undefined [BitmapData.as:122]
+XPASSED: bmp.getPixel(10, 10) == 0x0000ff00 [BitmapData.as:129]
+XPASSED: bmp.getPixel(10, 0) == 0x000000ff [BitmapData.as:131]
+PASSED: bmp.getPixel(1, 1) == 0xffffff [BitmapData.as:141]
+PASSED: bmp.getPixel(2, 2) == 0xff1100 [BitmapData.as:142]
+PASSED: bmp.getPixel(2, 5) == 0xff1100 [BitmapData.as:143]
+PASSED: bmp.getPixel(5, 2) == 0xff1100 [BitmapData.as:144]
+PASSED: bmp.getPixel(2, 6) == 0xff1100 [BitmapData.as:145]
+PASSED: bmp.getPixel(6, 6) == 0xff1100 [BitmapData.as:146]
+PASSED: bmp.getPixel(6, 7) == 0xffffff [BitmapData.as:147]
+PASSED: bmp.getPixel(7, 6) == 0xffffff [BitmapData.as:148]
+PASSED: bmp.getPixel(1, 1) == 0x00ff00 [BitmapData.as:152]
+PASSED: bmp.getPixel(7, 6) == 0xffffff [BitmapData.as:157]
+PASSED: bmp.getPixel(19,19) == 0x0000ff [BitmapData.as:161]
+PASSED: bmp.getPixel(16, 16) == 0xff00ff [BitmapData.as:166]
+PASSED: bmp.getPixel32(18, 2) == -65281 [BitmapData.as:171]
+PASSED: bmp.getPixel32(3, 3) == -1711337216 [BitmapData.as:182]
+totals
diff --git a/test/gnash/actionscript.all/pending/BitmapData.as b/test/gnash/actionscript.all/pending/BitmapData.as
new file mode 100644
index 0000000..f37bb0d
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/BitmapData.as
@@ -0,0 +1,192 @@
+// 
+//   Copyright (C) 2008 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+//
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+// Test case for BitmapData ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+rcsid="$Id: BitmapData.as,v 1.3 2008/06/20 13:28:56 bwy Exp $";
+
+
+#include "check.as"
+
+#if OUTPUT_VERSION < 8
+
+check_equals(typeof(flash), 'undefined');
+
+check_totals(1);
+
+#else
+
+Bitmap = flash.display.BitmapData;
+check_equals(typeof(Bitmap), 'function');
+check_equals(typeof(Bitmap.prototype), 'object');
+check(Bitmap.prototype.hasOwnProperty('applyFilter'));
+check(Bitmap.prototype.hasOwnProperty('clone'));
+check(Bitmap.prototype.hasOwnProperty('colorTransform'));
+check(Bitmap.prototype.hasOwnProperty('copyChannel'));
+check(Bitmap.prototype.hasOwnProperty('copyPixels'));
+check(Bitmap.prototype.hasOwnProperty('dispose'));
+check(Bitmap.prototype.hasOwnProperty('draw'));
+check(Bitmap.prototype.hasOwnProperty('fillRect'));
+check(Bitmap.prototype.hasOwnProperty('floodFill'));
+check(Bitmap.prototype.hasOwnProperty('generateFilterRect'));
+check(Bitmap.prototype.hasOwnProperty('getColorBoundsRect'));
+check(Bitmap.prototype.hasOwnProperty('getPixel'));
+check(Bitmap.prototype.hasOwnProperty('getPixel32'));
+check(Bitmap.prototype.hasOwnProperty('hitTest'));
+check(Bitmap.prototype.hasOwnProperty('merge'));
+check(Bitmap.prototype.hasOwnProperty('noise'));
+check(Bitmap.prototype.hasOwnProperty('paletteMap'));
+check(Bitmap.prototype.hasOwnProperty('perlinNoise'));
+check(Bitmap.prototype.hasOwnProperty('pixelDissolve'));
+check(Bitmap.prototype.hasOwnProperty('scroll'));
+check(Bitmap.prototype.hasOwnProperty('setPixel'));
+check(Bitmap.prototype.hasOwnProperty('setPixel32'));
+check(Bitmap.prototype.hasOwnProperty('threshold'));
+check(Bitmap.prototype.hasOwnProperty("height"));
+check(Bitmap.prototype.hasOwnProperty("width"));
+check(Bitmap.prototype.hasOwnProperty("rectangle"));
+check(Bitmap.prototype.hasOwnProperty("transparent"));
+
+check(!Bitmap.prototype.hasOwnProperty('loadBitmap'));
+check(Bitmap.hasOwnProperty('loadBitmap'));
+//-------------------------------------------------------------
+// Test constructor
+//-------------------------------------------------------------
+
+bmp = new Bitmap();
+xcheck_equals(typeof(bmp), "undefined");
+
+bmp = new Bitmap(10, 10);
+check_equals(typeof(bmp), 'object');
+check(bmp instanceof Bitmap);
+check(!bmp.hasOwnProperty("height"));
+check(!bmp.hasOwnProperty("width"));
+check(!bmp.hasOwnProperty("rectangle"));
+check(!bmp.hasOwnProperty("transparent"));
+check_equals(bmp.height, 10);
+check_equals(bmp.width, 10);
+check_equals(bmp.transparent, true);
+xcheck_equals(bmp.rectangle.toString(), "(x=0, y=0, w=10, h=10)");
+check_equals(bmp.getPixel(1, 1), 16777215);
+check_equals(bmp.getPixel(9, 9), 16777215);
+check_equals(bmp.getPixel32(1, 1), -1);
+
+bmp = new Bitmap(10, 10, true);
+check_equals(bmp.getPixel32(1, 1), -1);
+bmp = new Bitmap(10, 10, false);
+check_equals(bmp.getPixel32(1, 1), -1);
+
+
+bmp = new Bitmap(20, 30, false, 0xeeddee);
+check_equals(bmp.height, 30);
+check_equals(bmp.width, 20);
+check_equals(bmp.transparent, false);
+xcheck_equals(bmp.rectangle.toString(), "(x=0, y=0, w=20, h=30)");
+check_equals(bmp.getPixel(1, 1), 0xeeddee);
+check_equals(bmp.getPixel32(1, 1), -1122834);
+
+// limits
+
+check_equals(bmp.getPixel(50, 1), 0);
+check_equals(bmp.getPixel(0, 0), 15654382);
+check_equals(bmp.getPixel(-2, -5), 0);
+
+// 0,0 is inside, 20, 30 outside a 20x30 bitmap.
+check_equals(bmp.getPixel(20, 30), 0);
+
+bmp = new Bitmap(10000, 0);
+xcheck_equals(bmp, undefined);
+bmp = new Bitmap(0, 10000);
+xcheck_equals(bmp, undefined);
+
+bmp = new Bitmap(2881, 0);
+xcheck_equals(typeof(bmp), "undefined");
+bmp = new Bitmap(0, 2881);
+xcheck_equals(bmp, undefined);
+
+
+// floodFill
+bmp = new Bitmap(20, 20, false);
+bmp.floodFill(10, 10, 0x0000ff00);
+
+xcheck_equals(bmp.getPixel(10, 10), 0x0000ff00);
+bmp.floodFill(5, 5, 0x000000ff);
+xcheck_equals(bmp.getPixel(10, 0), 0x000000ff);
+
+mc = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
+mc.attachBitmap(bmp, this.getNextHighestDepth());
+
+Rectangle = flash.geom.Rectangle;
+
+bmp = new Bitmap(20, 20, false);
+r = new Rectangle(2, 2, 5, 5);
+bmp.fillRect(r, 0xff1100);
+check_equals(bmp.getPixel(1, 1), 0xffffff);
+check_equals(bmp.getPixel(2, 2), 0xff1100);
+check_equals(bmp.getPixel(2, 5), 0xff1100);
+check_equals(bmp.getPixel(5, 2), 0xff1100);
+check_equals(bmp.getPixel(2, 6), 0xff1100);
+check_equals(bmp.getPixel(6, 6), 0xff1100);
+check_equals(bmp.getPixel(6, 7), 0xffffff);
+check_equals(bmp.getPixel(7, 6), 0xffffff);
+
+r = new Rectangle(-2, -2, 8, 8);
+bmp.fillRect(r, 0x00ff00);
+check_equals(bmp.getPixel(1, 1), 0x00ff00);
+
+// Fails.
+r = new Rectangle(18, 18, -4, -4);
+bmp.fillRect(r, 0x0000ff);
+check_equals(bmp.getPixel(7, 6), 0xffffff);
+
+r = new Rectangle(18, 18, 200, 200);
+bmp.fillRect(r, 0x0000ff);
+check_equals(bmp.getPixel(19,19), 0x0000ff);
+
+// Doesn't have to be a rectangle
+g = {x: 15, y: 15, width: 2, height: 2};
+bmp.fillRect(g, 0xff00ff);
+check_equals(bmp.getPixel(16, 16), 0xff00ff);
+
+// Transparency (this bitmap is not transparent).
+g = {x: 18, y: 2, width: 7, height: 7};
+bmp.fillRect(g, 0xddff00ff);
+check_equals(bmp.getPixel32(18, 2), -65281);
+
+mc.attachBitmap(bmp, this.getNextHighestDepth());
+
+// Transparency (transparent bitmap). Fill just obliterates
+// what was there, even if it's transparent.
+bmp = new Bitmap(20, 20, true);
+r = new Rectangle(1, 1, 10, 10);
+bmp.fillRect(r, 0xff00ff00);
+r = new Rectangle(2, 2, 9, 9);
+bmp.fillRect(r, 0x99ff1100);
+check_equals(bmp.getPixel32(3, 3), -1711337216);
+
+mc.attachBitmap(bmp, this.getNextHighestDepth());
+
+//-------------------------------------------------------------
+// END OF TEST
+//-------------------------------------------------------------
+
+totals(77);
+
+#endif // OUTPUT_VERSION >= 8
diff --git a/test/gnash/actionscript.all/pending/Boolean-5.swf b/test/gnash/actionscript.all/pending/Boolean-5.swf
new file mode 100644
index 0000000..9afd9a3
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Boolean-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/Boolean-5.swf.trace b/test/gnash/actionscript.all/pending/Boolean-5.swf.trace
new file mode 100644
index 0000000..37a8ffd
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Boolean-5.swf.trace
@@ -0,0 +1,32 @@
+PASSED: typeof(Boolean) == 'function' [Boolean.as:27]
+PASSED: typeof(Boolean()) == 'undefined' [Boolean.as:28]
+PASSED: typeof(Boolean(true)) == 'boolean' [Boolean.as:29]
+PASSED: typeof(new Boolean()) == 'object' [Boolean.as:30]
+PASSED: boolObj [Boolean.as:35]
+PASSED: boolObj.toString [Boolean.as:37]
+PASSED: boolObj.valueOf [Boolean.as:38]
+PASSED: boolObj.tostring [Boolean.as:45]
+PASSED: boolObj.valueof [Boolean.as:46]
+PASSED: defaultBool.toString() == "false" [Boolean.as:50]
+PASSED: defaultBool.valueOf() == false [Boolean.as:51]
+PASSED: trueBool.toString() == "true" [Boolean.as:54]
+PASSED: trueBool.valueOf() == true [Boolean.as:55]
+PASSED: falseBool.toString() == "false" [Boolean.as:58]
+PASSED: falseBool.valueOf() == false [Boolean.as:59]
+PASSED: true [Boolean.as:67]
+PASSED: ! false [Boolean.as:68]
+PASSED: 1 [Boolean.as:71]
+PASSED: !0 [Boolean.as:72]
+PASSED: _root [Boolean.as:75]
+PASSED: "1" [Boolean.as:78]
+PASSED: ! "0" [Boolean.as:80]
+PASSED: ! "true" [Boolean.as:81]
+PASSED: ! "false" [Boolean.as:82]
+PASSED: typeOf(null) == "null" [Boolean.as:90]
+PASSED: ! null [Boolean.as:91]
+PASSED: ! undefined [Boolean.as:94]
+PASSED: play [Boolean.as:97]
+PASSED: emptyArray [Boolean.as:101]
+PASSED: falseBoolean [Boolean.as:103]
+PASSED: trueBoolean [Boolean.as:105]
+check_totals: 31
diff --git a/test/gnash/actionscript.all/pending/Boolean-6.swf b/test/gnash/actionscript.all/pending/Boolean-6.swf
new file mode 100644
index 0000000..e8a7303
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Boolean-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/Boolean-6.swf.trace b/test/gnash/actionscript.all/pending/Boolean-6.swf.trace
new file mode 100644
index 0000000..37a8ffd
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Boolean-6.swf.trace
@@ -0,0 +1,32 @@
+PASSED: typeof(Boolean) == 'function' [Boolean.as:27]
+PASSED: typeof(Boolean()) == 'undefined' [Boolean.as:28]
+PASSED: typeof(Boolean(true)) == 'boolean' [Boolean.as:29]
+PASSED: typeof(new Boolean()) == 'object' [Boolean.as:30]
+PASSED: boolObj [Boolean.as:35]
+PASSED: boolObj.toString [Boolean.as:37]
+PASSED: boolObj.valueOf [Boolean.as:38]
+PASSED: boolObj.tostring [Boolean.as:45]
+PASSED: boolObj.valueof [Boolean.as:46]
+PASSED: defaultBool.toString() == "false" [Boolean.as:50]
+PASSED: defaultBool.valueOf() == false [Boolean.as:51]
+PASSED: trueBool.toString() == "true" [Boolean.as:54]
+PASSED: trueBool.valueOf() == true [Boolean.as:55]
+PASSED: falseBool.toString() == "false" [Boolean.as:58]
+PASSED: falseBool.valueOf() == false [Boolean.as:59]
+PASSED: true [Boolean.as:67]
+PASSED: ! false [Boolean.as:68]
+PASSED: 1 [Boolean.as:71]
+PASSED: !0 [Boolean.as:72]
+PASSED: _root [Boolean.as:75]
+PASSED: "1" [Boolean.as:78]
+PASSED: ! "0" [Boolean.as:80]
+PASSED: ! "true" [Boolean.as:81]
+PASSED: ! "false" [Boolean.as:82]
+PASSED: typeOf(null) == "null" [Boolean.as:90]
+PASSED: ! null [Boolean.as:91]
+PASSED: ! undefined [Boolean.as:94]
+PASSED: play [Boolean.as:97]
+PASSED: emptyArray [Boolean.as:101]
+PASSED: falseBoolean [Boolean.as:103]
+PASSED: trueBoolean [Boolean.as:105]
+check_totals: 31
diff --git a/test/gnash/actionscript.all/pending/Boolean-7.swf b/test/gnash/actionscript.all/pending/Boolean-7.swf
new file mode 100644
index 0000000..f148ec1
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Boolean-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/Boolean-7.swf.trace b/test/gnash/actionscript.all/pending/Boolean-7.swf.trace
new file mode 100644
index 0000000..4b9c0a9
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Boolean-7.swf.trace
@@ -0,0 +1,32 @@
+PASSED: typeof(Boolean) == 'function' [Boolean.as:27]
+PASSED: typeof(Boolean()) == 'undefined' [Boolean.as:28]
+PASSED: typeof(Boolean(true)) == 'boolean' [Boolean.as:29]
+PASSED: typeof(new Boolean()) == 'object' [Boolean.as:30]
+PASSED: boolObj [Boolean.as:35]
+PASSED: boolObj.toString [Boolean.as:37]
+PASSED: boolObj.valueOf [Boolean.as:38]
+PASSED: boolObj.tostring == undefined [Boolean.as:42]
+PASSED: boolObj.valueof == undefined [Boolean.as:43]
+PASSED: defaultBool.toString() == "false" [Boolean.as:50]
+PASSED: defaultBool.valueOf() == false [Boolean.as:51]
+PASSED: trueBool.toString() == "true" [Boolean.as:54]
+PASSED: trueBool.valueOf() == true [Boolean.as:55]
+PASSED: falseBool.toString() == "false" [Boolean.as:58]
+PASSED: falseBool.valueOf() == false [Boolean.as:59]
+PASSED: true [Boolean.as:67]
+PASSED: ! false [Boolean.as:68]
+PASSED: 1 [Boolean.as:71]
+PASSED: !0 [Boolean.as:72]
+PASSED: _root [Boolean.as:75]
+PASSED: "1" [Boolean.as:78]
+PASSED: "0" [Boolean.as:84]
+PASSED: "true" [Boolean.as:85]
+PASSED: "false" [Boolean.as:86]
+PASSED: typeOf(null) == "null" [Boolean.as:90]
+PASSED: ! null [Boolean.as:91]
+PASSED: ! undefined [Boolean.as:94]
+PASSED: play [Boolean.as:97]
+PASSED: emptyArray [Boolean.as:101]
+PASSED: falseBoolean [Boolean.as:103]
+PASSED: trueBoolean [Boolean.as:105]
+check_totals: 31
diff --git a/test/gnash/actionscript.all/pending/Boolean-8.swf b/test/gnash/actionscript.all/pending/Boolean-8.swf
new file mode 100644
index 0000000..921c1f0
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Boolean-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/Boolean-8.swf.trace b/test/gnash/actionscript.all/pending/Boolean-8.swf.trace
new file mode 100644
index 0000000..4b9c0a9
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Boolean-8.swf.trace
@@ -0,0 +1,32 @@
+PASSED: typeof(Boolean) == 'function' [Boolean.as:27]
+PASSED: typeof(Boolean()) == 'undefined' [Boolean.as:28]
+PASSED: typeof(Boolean(true)) == 'boolean' [Boolean.as:29]
+PASSED: typeof(new Boolean()) == 'object' [Boolean.as:30]
+PASSED: boolObj [Boolean.as:35]
+PASSED: boolObj.toString [Boolean.as:37]
+PASSED: boolObj.valueOf [Boolean.as:38]
+PASSED: boolObj.tostring == undefined [Boolean.as:42]
+PASSED: boolObj.valueof == undefined [Boolean.as:43]
+PASSED: defaultBool.toString() == "false" [Boolean.as:50]
+PASSED: defaultBool.valueOf() == false [Boolean.as:51]
+PASSED: trueBool.toString() == "true" [Boolean.as:54]
+PASSED: trueBool.valueOf() == true [Boolean.as:55]
+PASSED: falseBool.toString() == "false" [Boolean.as:58]
+PASSED: falseBool.valueOf() == false [Boolean.as:59]
+PASSED: true [Boolean.as:67]
+PASSED: ! false [Boolean.as:68]
+PASSED: 1 [Boolean.as:71]
+PASSED: !0 [Boolean.as:72]
+PASSED: _root [Boolean.as:75]
+PASSED: "1" [Boolean.as:78]
+PASSED: "0" [Boolean.as:84]
+PASSED: "true" [Boolean.as:85]
+PASSED: "false" [Boolean.as:86]
+PASSED: typeOf(null) == "null" [Boolean.as:90]
+PASSED: ! null [Boolean.as:91]
+PASSED: ! undefined [Boolean.as:94]
+PASSED: play [Boolean.as:97]
+PASSED: emptyArray [Boolean.as:101]
+PASSED: falseBoolean [Boolean.as:103]
+PASSED: trueBoolean [Boolean.as:105]
+check_totals: 31
diff --git a/test/gnash/actionscript.all/pending/Boolean.as b/test/gnash/actionscript.all/pending/Boolean.as
new file mode 100644
index 0000000..962b433
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Boolean.as
@@ -0,0 +1,108 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for Boolean ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: Boolean.as,v 1.21 2008/04/02 09:39:59 strk Exp $";
+#include "check.as"
+
+check_equals(typeof(Boolean), 'function');
+check_equals(typeof(Boolean()), 'undefined');
+check_equals(typeof(Boolean(true)), 'boolean');
+check_equals(typeof(new Boolean()), 'object');
+
+var boolObj = new Boolean;
+
+// test the Boolean constuctor
+check (boolObj);
+
+check (boolObj.toString);
+check (boolObj.valueOf);
+
+#if OUTPUT_VERSION > 6
+// SWF7 and up is case-sensitive
+check_equals (boolObj.tostring, undefined);
+check_equals (boolObj.valueof, undefined);
+#else
+check (boolObj.tostring)
+check (boolObj.valueof)
+#endif
+
+var defaultBool = new Boolean();
+check_equals(defaultBool.toString(), "false");
+check_equals(defaultBool.valueOf(), false);
+
+var trueBool = new Boolean(true);
+check_equals(trueBool.toString(), "true");
+check_equals(trueBool.valueOf(), true);
+
+var falseBool = new Boolean(false);
+check_equals(falseBool.toString(), "false");
+check_equals(falseBool.valueOf(), false);
+
+
+//---------------------------------------------------
+// Test convertion to boolean
+//---------------------------------------------------
+
+// boolean
+check( true );
+check( ! false );
+ 
+// number
+check( 1 );
+check( !0 );
+
+// movieclip
+check( _root );
+
+// string
+check( "1" );
+#if OUTPUT_VERSION < 7
+ check( ! "0" );
+ check( ! "true" );
+ check( ! "false" );
+#else
+ check( "0" );
+ check( "true" );
+ check( "false" );
+#endif
+
+// Null 
+check_equals(typeOf(null), "null" );
+check( ! null );
+
+// Undefined
+check( ! undefined );
+
+// Function
+check( play );
+
+// Object - conversion might depend on object type
+emptyArray = new Array();
+check( emptyArray );
+falseBoolean = new Boolean(false);
+check( falseBoolean );
+trueBoolean = new Boolean(true);
+check( trueBoolean );
+
+
+check_totals(31);
diff --git a/test/gnash/actionscript.all/pending/Camera-5.swf b/test/gnash/actionscript.all/pending/Camera-5.swf
new file mode 100644
index 0000000..40809b2
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Camera-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/Camera-5.swf.trace b/test/gnash/actionscript.all/pending/Camera-5.swf.trace
new file mode 100644
index 0000000..ad8af0a
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Camera-5.swf.trace
@@ -0,0 +1,2 @@
+XPASSED: typeof(Camera) == 'function' [Camera.as:29]
+totals
diff --git a/test/gnash/actionscript.all/pending/Camera-6.swf b/test/gnash/actionscript.all/pending/Camera-6.swf
new file mode 100644
index 0000000..532f6d2
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Camera-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/Camera-6.swf.trace b/test/gnash/actionscript.all/pending/Camera-6.swf.trace
new file mode 100644
index 0000000..c7affa2
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Camera-6.swf.trace
@@ -0,0 +1,15 @@
+PASSED: Camera [Camera.as:36]
+PASSED: cameraObj [Camera.as:38]
+PASSED: cameraObj2 [Camera.as:40]
+PASSED: cameraObj != cameraObj2 [Camera.as:42]
+PASSED: typeof(cameraObj) == 'object' [Camera.as:43]
+PASSED: Camera.get [Camera.as:47]
+XPASSED: cameraObj.get == undefined [Camera.as:48]
+Camera.get() returns: null
+XPASSED: Camera.setmode == undefined [Camera.as:53]
+XPASSED: Camera.setmotionlevel == undefined [Camera.as:54]
+XPASSED: Camera.setquality == undefined [Camera.as:55]
+PASSED: cameraObj.setmode [Camera.as:58]
+PASSED: cameraObj.setmotionlevel [Camera.as:59]
+PASSED: cameraObj.setquality [Camera.as:60]
+totals
diff --git a/test/gnash/actionscript.all/pending/Camera-7.swf b/test/gnash/actionscript.all/pending/Camera-7.swf
new file mode 100644
index 0000000..d6b667f
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Camera-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/Camera-7.swf.trace b/test/gnash/actionscript.all/pending/Camera-7.swf.trace
new file mode 100644
index 0000000..f2a376d
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Camera-7.swf.trace
@@ -0,0 +1,15 @@
+PASSED: Camera [Camera.as:36]
+PASSED: cameraObj [Camera.as:38]
+PASSED: cameraObj2 [Camera.as:40]
+PASSED: cameraObj != cameraObj2 [Camera.as:42]
+PASSED: typeof(cameraObj) == 'object' [Camera.as:43]
+PASSED: Camera.get [Camera.as:47]
+XPASSED: cameraObj.get == undefined [Camera.as:48]
+Camera.get() returns: null
+XPASSED: Camera.setmode == undefined [Camera.as:53]
+XPASSED: Camera.setmotionlevel == undefined [Camera.as:54]
+XPASSED: Camera.setquality == undefined [Camera.as:55]
+XPASSED: cameraObj.setmode == undefined [Camera.as:62]
+XPASSED: cameraObj.setmotionlevel == undefined [Camera.as:63]
+XPASSED: cameraObj.setquality == undefined [Camera.as:64]
+totals
diff --git a/test/gnash/actionscript.all/pending/Camera-8.swf b/test/gnash/actionscript.all/pending/Camera-8.swf
new file mode 100644
index 0000000..8448845
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Camera-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/Camera-8.swf.trace b/test/gnash/actionscript.all/pending/Camera-8.swf.trace
new file mode 100644
index 0000000..f2a376d
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Camera-8.swf.trace
@@ -0,0 +1,15 @@
+PASSED: Camera [Camera.as:36]
+PASSED: cameraObj [Camera.as:38]
+PASSED: cameraObj2 [Camera.as:40]
+PASSED: cameraObj != cameraObj2 [Camera.as:42]
+PASSED: typeof(cameraObj) == 'object' [Camera.as:43]
+PASSED: Camera.get [Camera.as:47]
+XPASSED: cameraObj.get == undefined [Camera.as:48]
+Camera.get() returns: null
+XPASSED: Camera.setmode == undefined [Camera.as:53]
+XPASSED: Camera.setmotionlevel == undefined [Camera.as:54]
+XPASSED: Camera.setquality == undefined [Camera.as:55]
+XPASSED: cameraObj.setmode == undefined [Camera.as:62]
+XPASSED: cameraObj.setmotionlevel == undefined [Camera.as:63]
+XPASSED: cameraObj.setquality == undefined [Camera.as:64]
+totals
diff --git a/test/gnash/actionscript.all/pending/Camera.as b/test/gnash/actionscript.all/pending/Camera.as
new file mode 100644
index 0000000..098fb71
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Camera.as
@@ -0,0 +1,68 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for Camera ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: Camera.as,v 1.15 2008/03/11 19:31:46 strk Exp $";
+#include "check.as"
+
+#if OUTPUT_VERSION < 6
+
+xcheck_equals(typeof(Camera), 'function');
+
+#else // OUTPUT_VERSION >= 6
+
+//trace("NOTE: System.capabilities.hasVideoEncoder:  " + System.capabilities.hasVideoEncoder);
+
+// test the Camera constuctor
+check(Camera);
+var cameraObj = new Camera;
+check(cameraObj);
+var cameraObj2 = new Camera();
+check(cameraObj2);
+
+check(cameraObj != cameraObj2);
+check_equals(typeof(cameraObj), 'object');
+
+// The .get() method is a class method, not exported
+// to instances.
+check(Camera.get);
+xcheck_equals(cameraObj.get, undefined); 
+
+trace("Camera.get() returns: "+Camera.get());
+
+// test that the methods do not exist in the class
+xcheck_equals(Camera.setmode, undefined);
+xcheck_equals(Camera.setmotionlevel, undefined);
+xcheck_equals(Camera.setquality, undefined);
+
+#if OUTPUT_VERSION < 7
+check (cameraObj.setmode); 
+check (cameraObj.setmotionlevel);
+check (cameraObj.setquality);
+#else
+xcheck_equals (cameraObj.setmode, undefined); 
+xcheck_equals (cameraObj.setmotionlevel, undefined);
+xcheck_equals (cameraObj.setquality, undefined);
+#endif
+
+#endif // OUTPUT_VERSION >= 6
+totals();
diff --git a/test/gnash/actionscript.all/pending/Function-5.swf b/test/gnash/actionscript.all/pending/Function-5.swf
new file mode 100644
index 0000000..1ee0488
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Function-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/Function-5.swf.trace b/test/gnash/actionscript.all/pending/Function-5.swf.trace
new file mode 100644
index 0000000..839aaba
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Function-5.swf.trace
@@ -0,0 +1,150 @@
+PASSED: getThisName.prototype.__proto__ == Object.prototype [Function.as:38]
+PASSED: getThisName == undefined [Function.as:44]
+PASSED: getThisName == null [Function.as:45]
+PASSED: getThisName != 0 [Function.as:46]
+PASSED: getThisName != 1 [Function.as:47]
+PASSED: ! isNaN(getThisName) [Function.as:48]
+PASSED: getThisName != "" [Function.as:49]
+PASSED: getThisName != "[type Function]" [Function.as:50]
+PASSED: typeof(getThisName) == "function" [Function.as:52]
+PASSED: typeOf(getThisName.apply) == 'undefined' [Function.as:126]
+PASSED: typeOf(getThisName.call) == 'undefined' [Function.as:165]
+PASSED: typeOf(TestClass) == 'function' [Function.as:181]
+PASSED: typeOf(TestClass.prototype) == 'object' [Function.as:194]
+PASSED: testInstance != undefined [Function.as:203]
+PASSED: testInstance.name != undefined [Function.as:204]
+PASSED: testInstance.name == "NONE" [Function.as:205]
+PASSED: typeof(testInstance.setname) == "function" [Function.as:206]
+PASSED: testInstance.name == "Test" [Function.as:210]
+PASSED: testInstance.__proto__ != undefined [Function.as:213]
+PASSED: testInstance.__proto__ == TestClass.prototype [Function.as:214]
+PASSED: testInstance instanceOf TestClass [Function.as:215]
+PASSED: testInstance instanceOf Object [Function.as:216]
+PASSED: TestClass.constructor == Function [Function.as:230]
+PASSED: typeOf(TestClass.prototype.constructor) == 'function' [Function.as:231]
+PASSED: TestClass.prototype.constructor == TestClass [Function.as:233]
+PASSED: testInstance.__proto__.constructor == TestClass [Function.as:234]
+PASSED: TestClass.prototype.additional == undefined [Function.as:239]
+PASSED: stringInstance.__proto__ != undefined [Function.as:243]
+PASSED: stringInstance.__proto__ == String.prototype [Function.as:244]
+PASSED: typeof(String.prototype.constructor) == 'function' [Function.as:245]
+PASSED: String.prototype.constructor == String [Function.as:246]
+PASSED: stringInstance.__proto__.constructor == String [Function.as:247]
+PASSED: testInstance instanceof TestClass [Function.as:250]
+PASSED: stringInstance instanceof String [Function.as:251]
+PASSED: f_func == undefined [Function.as:301]
+PASSED: tl_new == undefined [Function.as:302]
+PASSED: localvar == "lv" [Function.as:268]
+PASSED: tl_local == "tl_local" [Function.as:271]
+PASSED: tooverride == "overridden" [Function.as:280]
+PASSED: ! delete fl_func [Function.as:292]
+PASSED: ! delete f_func [Function.as:297]
+PASSED: tl_local == "tl_local2" [Function.as:304]
+PASSED: todelete == undefined [Function.as:305]
+PASSED: tooverride == "tooverride" [Function.as:306]
+PASSED: tl_new == "tl_new" [Function.as:307]
+PASSED: fl_func == undefined [Function.as:308]
+PASSED: typeof(f_func) == 'function' [Function.as:309]
+PASSED: eval("result1") == "initial_result1_value" [Function.as:320]
+PASSED: typeof(outer_func) == 'function' [Function.as:337]
+PASSED: typeof(inner_func) == 'function' [Function.as:341]
+PASSED: result1 == undefined [Function.as:351]
+PASSED: result2 == undefined [Function.as:352]
+PASSED: typeof(bla) == 'function' [Function.as:365]
+PASSED: bla(42) == 42 [Function.as:366]
+PASSED: typeof(bla) == 'function' [Function.as:367]
+PASSED: typeof(bla(43)) == 'undefined' [Function.as:369]
+PASSED: this.a == "a_in_obj" [Function.as:388]
+PASSED: this.a == "a_in_root" [Function.as:394]
+PASSED: this.a == "a_in_root" [Function.as:398]
+PASSED: typeof(arguments) == 'object' [Function.as:406]
+PASSED: arguments instanceOf Array [Function.as:407]
+PASSED: arguments instanceOf Object [Function.as:408]
+PASSED: arguments.length == 0 [Function.as:409]
+PASSED: typeof(arguments.callee) == 'function' [Function.as:411]
+PASSED: arguments.callee == _root.f [Function.as:413]
+XPASSED: typeof(arguments.caller) == 'null' [Function.as:415]
+PASSED: arguments.caller == null [Function.as:416]
+PASSED: propRecorder.length == 0 [Function.as:425]
+XPASSED: propRecorder.length == 5 [Function.as:433]
+PASSED: propRecorder[0] == '__proto__' [Function.as:434]
+PASSED: propRecorder[1] == 'callee' [Function.as:435]
+XPASSED: propRecorder[2] == 'caller' [Function.as:436]
+XPASSED: propRecorder[3] == 'constructor' [Function.as:437]
+XPASSED: propRecorder[4] == 'length' [Function.as:438]
+PASSED: arguments.caller == parent_func [Function.as:446]
+PASSED: arguments.length == 3 [Function.as:462]
+PASSED: arguments[0] == 1 [Function.as:463]
+PASSED: arguments[1] == 2 [Function.as:464]
+PASSED: arguments[2] == 3 [Function.as:465]
+PASSED: arguments[3] == undefined [Function.as:466]
+PASSED: d == undefined [Function.as:467]
+PASSED: arguments[3] == 3 [Function.as:469]
+PASSED: d != 3 [Function.as:472]
+PASSED: arguments[0] == 'zero' [Function.as:474]
+PASSED: arguments.length == 10 [Function.as:476]
+PASSED: arguments.length == 9 [Function.as:478]
+PASSED: arguments.somethingelse == "can extend" [Function.as:480]
+PASSED: argsCounter(1,2,3) == 3 [Function.as:487]
+PASSED: argsCounter(a,b,c,d) == 4 [Function.as:488]
+PASSED: argsCounter([a,b]) == 1 [Function.as:489]
+PASSED: factorial(3) == 6 [Function.as:494]
+PASSED: factorial(4) == 24 [Function.as:495]
+PASSED: typeof(textOutFunc.toString) == 'undefined' [Function.as:532]
+PASSED: textOutFunc.toString() == 'custom text rep' [Function.as:538]
+PASSED: typeof(textOutFunc.toString()) == 'string' [Function.as:539]
+NOTE: 
+PASSED: typeof(textOutFunc.toString) == 'number' [Function.as:546]
+NOTE: 
+PASSED: typeof(a.constructor) == 'function' [Function.as:557]
+PASSED: typeof(a.constructor) == 'function' [Function.as:573]
+PASSED: typeof(a.constructor) == 'function' [Function.as:589]
+PASSED: typeof(Email.prototype.__constructor__) == 'undefined' [Function.as:626]
+PASSED: Email.constructor.toString() == undefined [Function.as:632]
+PASSED: Function == undefined [Function.as:633]
+PASSED: typeof(Email.constructor) == 'function' [Function.as:635]
+PASSED: typeof(Email.constructor.constructor) == 'function' [Function.as:636]
+PASSED: typeof(Email.constructor.constructor.constructor) == 'function' [Function.as:637]
+PASSED: typeof(Email.__constructor__) == 'undefined' [Function.as:650]
+PASSED: ! Email.hasOwnProperty('__constructor__') [Function.as:651]
+PASSED: typeof(Email.prototype.constructor) == 'function' [Function.as:655]
+PASSED: Email.prototype.constructor == Mail [Function.as:656]
+PASSED: typeof(Email.prototype.__constructor__) == 'undefined' [Function.as:662]
+PASSED: typeof(super) == 'undefined' [Function.as:621]
+PASSED: myMail.subject == 'greetings' [Function.as:666]
+PASSED: typeof(myMail.to) == 'undefined' [Function.as:673]
+PASSED: typeof(myMail.message) == 'undefined' [Function.as:674]
+PASSED: typeof(super) == 'undefined' [Function.as:621]
+PASSED: myMail.subject == 'greetings' [Function.as:686]
+PASSED: myMail.to == undefined [Function.as:691]
+PASSED: myMail.message == undefined [Function.as:692]
+PASSED: getThis() == this [Function.as:701]
+PASSED: o.getThis() == o [Function.as:705]
+PASSED: typeof(ret) == 'object' [Function.as:711]
+PASSED: ret == o.sub [Function.as:712]
+PASSED: typeof(ret) == 'object' [Function.as:718]
+PASSED: ret == o.sub [Function.as:719]
+PASSED: typeof(ret) == 'object' [Function.as:723]
+PASSED: ret == o [Function.as:724]
+PASSED: typeof(ret) == 'object' [Function.as:727]
+PASSED: ret == sub [Function.as:728]
+PASSED: delete o.sub.getThis [Function.as:731]
+PASSED: typeof(ret) == 'object' [Function.as:736]
+PASSED: getThis() == o [Function.as:737]
+PASSED: typeof(ret) == 'object' [Function.as:745]
+PASSED: ret == testInFunctionContext [Function.as:747]
+PASSED: ret != this [Function.as:751]
+PASSED: typeof(ret) == 'object' [Function.as:757]
+PASSED: ret == o [Function.as:758]
+PASSED: num == 5 [Function.as:761]
+PASSED: num == 4 [Function.as:763]
+PASSED: typeof(f()) == 'undefined' [Function.as:783]
+XPASSED: testvar1 == 1 [Function.as:812]
+XPASSED: testvar2 == 2 [Function.as:813]
+XPASSED: testvar3 == 3 [Function.as:814]
+XPASSED: testvar1 == 9 [Function.as:897]
+XPASSED: testvar2 == 8 [Function.as:898]
+XPASSED: testvar3 == 7 [Function.as:899]
+PASSED: a.count == 2 [Function.as:914]
+PASSED: b.count == 1 [Function.as:915]
+check_totals: 147
diff --git a/test/gnash/actionscript.all/pending/Function-6.swf b/test/gnash/actionscript.all/pending/Function-6.swf
new file mode 100644
index 0000000..78e5e8e
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Function-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/Function-6.swf.trace b/test/gnash/actionscript.all/pending/Function-6.swf.trace
new file mode 100644
index 0000000..cbd895f
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Function-6.swf.trace
@@ -0,0 +1,210 @@
+PASSED: Function.prototype.__proto__ == Object.prototype [Function.as:29]
+PASSED: Function.constructor == Function [Function.as:30]
+PASSED: ! Function.hasOwnProperty('__constructor__') [Function.as:31]
+PASSED: getThisName.prototype.__proto__ == Object.prototype [Function.as:38]
+PASSED: getThisName != undefined [Function.as:41]
+PASSED: typeof(getThisName) == "function" [Function.as:52]
+PASSED: typeof(getThisName.apply) == 'function' [Function.as:62]
+PASSED: getThisName.apply(this_ref) == "extname" [Function.as:70]
+PASSED: ret == "extname123" [Function.as:75]
+PASSED: ret == 0 [Function.as:83]
+PASSED: ret == "extname456" [Function.as:87]
+PASSED: ret == "extname" [Function.as:92]
+PASSED: ret == "extname" [Function.as:99]
+PASSED: ret == 15 [Function.as:106]
+PASSED: ret == 0 [Function.as:113]
+PASSED: ret == 0 [Function.as:120]
+PASSED: getThisName.call(this_ref, 1, 2, 3) == "extname123" [Function.as:139]
+PASSED: nullcall == 6 [Function.as:147]
+PASSED: ret == o [Function.as:154]
+PASSED: c == 1 [Function.as:155]
+PASSED: c == 2 [Function.as:157]
+XPASSED: typeof(ret) == 'object' [Function.as:158]
+XPASSED: ret == undefined [Function.as:159]
+PASSED: ! (ret === undefined) [Function.as:160]
+PASSED: ! (ret === null) [Function.as:161]
+PASSED: typeOf(TestClass) == 'function' [Function.as:181]
+PASSED: typeOf(TestClass.apply) == 'function' [Function.as:186]
+PASSED: typeOf(TestClass.call) == 'function' [Function.as:189]
+PASSED: typeOf(TestClass.prototype) == 'object' [Function.as:194]
+PASSED: testInstance != undefined [Function.as:203]
+PASSED: testInstance.name != undefined [Function.as:204]
+PASSED: testInstance.name == "NONE" [Function.as:205]
+PASSED: typeof(testInstance.setname) == "function" [Function.as:206]
+PASSED: testInstance.name == "Test" [Function.as:210]
+PASSED: testInstance.__proto__ != undefined [Function.as:213]
+PASSED: testInstance.__proto__ == TestClass.prototype [Function.as:214]
+PASSED: testInstance instanceOf TestClass [Function.as:215]
+PASSED: testInstance instanceOf Object [Function.as:216]
+PASSED: typeOf(Function.prototype.addProperty) == 'function' [Function.as:219]
+PASSED: testInstance.__proto__ == TestClass.prototype [Function.as:220]
+PASSED: TestClass.__proto__ == Function.prototype [Function.as:221]
+PASSED: testInstance.addProperty == Object.prototype.addProperty [Function.as:222]
+PASSED: t == 7 [Function.as:225]
+PASSED: Function instanceOf Object [Function.as:226]
+PASSED: TestClass.hasOwnProperty('constructor') [Function.as:227]
+PASSED: TestClass.constructor == Function [Function.as:230]
+PASSED: typeOf(TestClass.prototype.constructor) == 'function' [Function.as:231]
+PASSED: TestClass.prototype.constructor == TestClass [Function.as:233]
+PASSED: testInstance.__proto__.constructor == TestClass [Function.as:234]
+PASSED: TestClass.prototype.additional == undefined [Function.as:239]
+PASSED: stringInstance.__proto__ != undefined [Function.as:243]
+PASSED: stringInstance.__proto__ == String.prototype [Function.as:244]
+PASSED: typeof(String.prototype.constructor) == 'function' [Function.as:245]
+PASSED: String.prototype.constructor == String [Function.as:246]
+PASSED: stringInstance.__proto__.constructor == String [Function.as:247]
+PASSED: testInstance instanceof TestClass [Function.as:250]
+PASSED: stringInstance instanceof String [Function.as:251]
+PASSED: f_func == undefined [Function.as:301]
+PASSED: tl_new == undefined [Function.as:302]
+PASSED: localvar == "lv" [Function.as:268]
+PASSED: tl_local == "tl_local" [Function.as:271]
+PASSED: tooverride == "overridden" [Function.as:280]
+PASSED: ! delete fl_func [Function.as:292]
+PASSED: ! delete f_func [Function.as:297]
+PASSED: tl_local == "tl_local2" [Function.as:304]
+PASSED: todelete == undefined [Function.as:305]
+PASSED: tooverride == "tooverride" [Function.as:306]
+PASSED: tl_new == "tl_new" [Function.as:307]
+PASSED: fl_func == undefined [Function.as:308]
+PASSED: typeof(f_func) == 'function' [Function.as:309]
+PASSED: eval("result1") == "initial_result1_value" [Function.as:320]
+PASSED: typeof(outer_func) == 'function' [Function.as:337]
+PASSED: typeof(inner_func) == 'function' [Function.as:341]
+PASSED: result1 == "hello" [Function.as:346]
+PASSED: result2 == "hello" [Function.as:347]
+PASSED: typeof(bla) == 'function' [Function.as:365]
+PASSED: bla(42) == 42 [Function.as:366]
+PASSED: typeof(bla) == 'function' [Function.as:367]
+PASSED: bla(43) == 42 [Function.as:371]
+PASSED: this.a == "a_in_obj" [Function.as:388]
+PASSED: this.a == "a_in_root" [Function.as:394]
+PASSED: this.a == "a_in_root" [Function.as:398]
+PASSED: typeof(arguments) == 'object' [Function.as:406]
+PASSED: arguments instanceOf Array [Function.as:407]
+PASSED: arguments instanceOf Object [Function.as:408]
+PASSED: arguments.length == 0 [Function.as:409]
+PASSED: typeof(arguments.callee) == 'function' [Function.as:411]
+PASSED: arguments.callee == _root.f [Function.as:413]
+XPASSED: typeof(arguments.caller) == 'null' [Function.as:415]
+PASSED: arguments.caller == null [Function.as:416]
+PASSED: propRecorder.length == 0 [Function.as:425]
+XPASSED: propRecorder.length == 5 [Function.as:433]
+PASSED: propRecorder[0] == '__proto__' [Function.as:434]
+PASSED: propRecorder[1] == 'callee' [Function.as:435]
+XPASSED: propRecorder[2] == 'caller' [Function.as:436]
+XPASSED: propRecorder[3] == 'constructor' [Function.as:437]
+XPASSED: propRecorder[4] == 'length' [Function.as:438]
+XPASSED: arguments.caller == parent_func [Function.as:449]
+PASSED: arguments.length == 3 [Function.as:462]
+PASSED: arguments[0] == 1 [Function.as:463]
+PASSED: arguments[1] == 2 [Function.as:464]
+PASSED: arguments[2] == 3 [Function.as:465]
+PASSED: arguments[3] == undefined [Function.as:466]
+PASSED: d == undefined [Function.as:467]
+PASSED: arguments[3] == 3 [Function.as:469]
+PASSED: d != 3 [Function.as:472]
+PASSED: arguments[0] == 'zero' [Function.as:474]
+PASSED: arguments.length == 10 [Function.as:476]
+PASSED: arguments.length == 9 [Function.as:478]
+PASSED: arguments.somethingelse == "can extend" [Function.as:480]
+PASSED: argsCounter(1,2,3) == 3 [Function.as:487]
+PASSED: argsCounter(a,b,c,d) == 4 [Function.as:488]
+PASSED: argsCounter([a,b]) == 1 [Function.as:489]
+PASSED: factorial(3) == 6 [Function.as:494]
+PASSED: factorial(4) == 24 [Function.as:495]
+PASSED: typeof(fooInstance) == 'object' [Function.as:511]
+PASSED: fooInstance instanceOf Foo [Function.as:512]
+PASSED: typeof(textOutFunc.toString()) == 'string' [Function.as:524]
+PASSED: textOutFunc.toString() == '[type Function]' [Function.as:525]
+PASSED: !textOutFunc.hasOwnProperty('toString') [Function.as:527]
+PASSED: !Function.prototype.hasOwnProperty('toString') [Function.as:528]
+PASSED: Object.prototype.hasOwnProperty('toString') [Function.as:529]
+PASSED: textOutFunc.toString == Object.prototype.toString [Function.as:530]
+PASSED: textOutFunc.hasOwnProperty('toString') [Function.as:536]
+PASSED: textOutFunc.toString() == 'custom text rep' [Function.as:538]
+PASSED: typeof(textOutFunc.toString()) == 'string' [Function.as:539]
+NOTE: custom text rep
+PASSED: typeof(textOutFunc.toString) == 'number' [Function.as:546]
+NOTE: [type Function]
+PASSED: typeof(a.constructor) == 'function' [Function.as:557]
+PASSED: typeof(a.__constructor__) == 'function' [Function.as:559]
+PASSED: a.hasOwnProperty('constructor') [Function.as:561]
+PASSED: a.hasOwnProperty('__constructor__') [Function.as:565]
+PASSED: a.constructor == Number [Function.as:566]
+PASSED: a.__constructor__ == Number [Function.as:567]
+PASSED: ! a instanceof Number [Function.as:568]
+PASSED: a.constructor != Object [Function.as:569]
+PASSED: typeof(a.constructor) == 'function' [Function.as:573]
+PASSED: typeof(a.__constructor__) == 'function' [Function.as:575]
+PASSED: a.hasOwnProperty('constructor') [Function.as:577]
+PASSED: a.hasOwnProperty('__constructor__') [Function.as:581]
+PASSED: a.constructor == String [Function.as:582]
+PASSED: a.__constructor__ == String [Function.as:583]
+PASSED: ! a instanceof String [Function.as:584]
+PASSED: a.constructor != Object [Function.as:585]
+PASSED: typeof(a.constructor) == 'function' [Function.as:589]
+PASSED: typeof(a.__constructor__) == 'function' [Function.as:591]
+PASSED: a.hasOwnProperty('constructor') [Function.as:593]
+PASSED: a.hasOwnProperty('__constructor__') [Function.as:597]
+PASSED: a.constructor == Boolean [Function.as:598]
+PASSED: a.__constructor__ == Boolean [Function.as:599]
+PASSED: ! a instanceof String [Function.as:600]
+PASSED: a.constructor != Object [Function.as:601]
+PASSED: typeof(Email.prototype.__constructor__) == 'undefined' [Function.as:626]
+PASSED: typeof(Email.constructor) == 'function' [Function.as:635]
+PASSED: typeof(Email.constructor.constructor) == 'function' [Function.as:636]
+PASSED: typeof(Email.constructor.constructor.constructor) == 'function' [Function.as:637]
+PASSED: Email.constructor == Function [Function.as:639]
+PASSED: Email.constructor.constructor == Function [Function.as:640]
+PASSED: Email.constructor.constructor.constructor == Function [Function.as:641]
+PASSED: Email.hasOwnProperty('constructor') [Function.as:643]
+PASSED: Email.constructor.hasOwnProperty('constructor') [Function.as:644]
+PASSED: Email.constructor.constructor.hasOwnProperty('constructor') [Function.as:645]
+PASSED: typeof(Email.__constructor__) == 'undefined' [Function.as:650]
+PASSED: ! Email.hasOwnProperty('__constructor__') [Function.as:651]
+PASSED: typeof(Email.prototype.constructor) == 'function' [Function.as:655]
+PASSED: Email.prototype.constructor == Mail [Function.as:656]
+PASSED: typeof(Email.prototype.__constructor__) == 'function' [Function.as:659]
+PASSED: Email.prototype.__constructor__ == Email.prototype.constructor [Function.as:660]
+PASSED: typeof(super) == 'object' [Function.as:619]
+PASSED: myMail.subject == 'greetings' [Function.as:666]
+PASSED: myMail.to == 'you' [Function.as:669]
+PASSED: myMail.message == 'hello' [Function.as:670]
+PASSED: typeof(super) == 'object' [Function.as:619]
+PASSED: myMail.subject == 'greetings' [Function.as:686]
+PASSED: myMail.to == 'everyone' [Function.as:688]
+PASSED: myMail.message == 'enlarge yourself' [Function.as:689]
+PASSED: getThis() == this [Function.as:701]
+PASSED: o.getThis() == o [Function.as:705]
+PASSED: typeof(ret) == 'object' [Function.as:711]
+PASSED: ret == o.sub [Function.as:712]
+PASSED: typeof(ret) == 'object' [Function.as:718]
+PASSED: ret == o.sub [Function.as:719]
+PASSED: typeof(ret) == 'object' [Function.as:723]
+PASSED: ret == o [Function.as:724]
+PASSED: typeof(ret) == 'object' [Function.as:727]
+PASSED: ret == sub [Function.as:728]
+PASSED: delete o.sub.getThis [Function.as:731]
+PASSED: typeof(ret) == 'object' [Function.as:736]
+PASSED: getThis() == o [Function.as:737]
+PASSED: typeof(ret) == 'object' [Function.as:745]
+PASSED: ret != testInFunctionContext [Function.as:749]
+PASSED: ret != this [Function.as:751]
+PASSED: typeof(ret) == 'object' [Function.as:757]
+PASSED: ret == o [Function.as:758]
+PASSED: num == 5 [Function.as:761]
+PASSED: num == 4 [Function.as:763]
+PASSED: f() == 42 [Function.as:781]
+XPASSED: testvar1 == 1 [Function.as:812]
+XPASSED: testvar2 == 2 [Function.as:813]
+XPASSED: testvar3 == 3 [Function.as:814]
+XPASSED: testvar1 == 4 [Function.as:842]
+XPASSED: testvar2 == 5 [Function.as:843]
+XPASSED: testvar3 == 6 [Function.as:844]
+XPASSED: testvar1 == 9 [Function.as:897]
+XPASSED: testvar2 == 8 [Function.as:898]
+XPASSED: testvar3 == 7 [Function.as:899]
+PASSED: a.count == 2 [Function.as:914]
+PASSED: b.count == 1 [Function.as:915]
+check_totals: 207
diff --git a/test/gnash/actionscript.all/pending/Function-7.swf b/test/gnash/actionscript.all/pending/Function-7.swf
new file mode 100644
index 0000000..3a197e6
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Function-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/Function-7.swf.trace b/test/gnash/actionscript.all/pending/Function-7.swf.trace
new file mode 100644
index 0000000..39e6150
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Function-7.swf.trace
@@ -0,0 +1,211 @@
+PASSED: Function.prototype.__proto__ == Object.prototype [Function.as:29]
+PASSED: Function.constructor == Function [Function.as:30]
+PASSED: ! Function.hasOwnProperty('__constructor__') [Function.as:31]
+PASSED: getThisName.prototype.__proto__ == Object.prototype [Function.as:38]
+PASSED: getThisName != undefined [Function.as:41]
+PASSED: typeof(getThisName) == "function" [Function.as:52]
+PASSED: typeof(getThisName.apply) == 'function' [Function.as:62]
+PASSED: getThisName.apply(this_ref) == "extnameundefinedundefinedundefined" [Function.as:68]
+PASSED: ret == "extname123" [Function.as:75]
+PASSED: isNaN(ret) [Function.as:81]
+PASSED: ret == "extname456" [Function.as:87]
+PASSED: ret == "extnameundefinedundefinedundefined" [Function.as:90]
+PASSED: ret == "extnameundefinedundefinedundefined" [Function.as:97]
+PASSED: isNaN(ret) [Function.as:104]
+PASSED: isNaN(ret) [Function.as:111]
+PASSED: isNaN(ret) [Function.as:118]
+PASSED: getThisName.call(this_ref, 1, 2, 3) == "extname123" [Function.as:139]
+PASSED: typeof(nullcall) == 'number' [Function.as:144]
+PASSED: isNaN(nullcall) [Function.as:145]
+PASSED: ret == o [Function.as:154]
+PASSED: c == 1 [Function.as:155]
+PASSED: c == 2 [Function.as:157]
+XPASSED: typeof(ret) == 'object' [Function.as:158]
+XPASSED: ret == undefined [Function.as:159]
+PASSED: ! (ret === undefined) [Function.as:160]
+PASSED: ! (ret === null) [Function.as:161]
+PASSED: typeOf(TestClass) == 'function' [Function.as:181]
+PASSED: typeOf(TestClass.apply) == 'function' [Function.as:186]
+PASSED: typeOf(TestClass.call) == 'function' [Function.as:189]
+PASSED: typeOf(TestClass.prototype) == 'object' [Function.as:194]
+PASSED: testInstance != undefined [Function.as:203]
+PASSED: testInstance.name != undefined [Function.as:204]
+PASSED: testInstance.name == "NONE" [Function.as:205]
+PASSED: typeof(testInstance.setname) == "function" [Function.as:206]
+PASSED: testInstance.name == "Test" [Function.as:210]
+PASSED: testInstance.__proto__ != undefined [Function.as:213]
+PASSED: testInstance.__proto__ == TestClass.prototype [Function.as:214]
+PASSED: testInstance instanceOf TestClass [Function.as:215]
+PASSED: testInstance instanceOf Object [Function.as:216]
+PASSED: typeOf(Function.prototype.addProperty) == 'function' [Function.as:219]
+PASSED: testInstance.__proto__ == TestClass.prototype [Function.as:220]
+PASSED: TestClass.__proto__ == Function.prototype [Function.as:221]
+PASSED: testInstance.addProperty == Object.prototype.addProperty [Function.as:222]
+PASSED: t == 7 [Function.as:225]
+PASSED: Function instanceOf Object [Function.as:226]
+PASSED: TestClass.hasOwnProperty('constructor') [Function.as:227]
+PASSED: TestClass.constructor == Function [Function.as:230]
+PASSED: typeOf(TestClass.prototype.constructor) == 'function' [Function.as:231]
+PASSED: TestClass.prototype.constructor == TestClass [Function.as:233]
+PASSED: testInstance.__proto__.constructor == TestClass [Function.as:234]
+PASSED: TestClass.prototype.additional == undefined [Function.as:239]
+PASSED: stringInstance.__proto__ != undefined [Function.as:243]
+PASSED: stringInstance.__proto__ == String.prototype [Function.as:244]
+PASSED: typeof(String.prototype.constructor) == 'function' [Function.as:245]
+PASSED: String.prototype.constructor == String [Function.as:246]
+PASSED: stringInstance.__proto__.constructor == String [Function.as:247]
+PASSED: testInstance instanceof TestClass [Function.as:250]
+PASSED: stringInstance instanceof String [Function.as:251]
+PASSED: f_func == undefined [Function.as:301]
+PASSED: tl_new == undefined [Function.as:302]
+PASSED: localvar == "lv" [Function.as:268]
+PASSED: tl_local == "tl_local" [Function.as:271]
+PASSED: tooverride == "overridden" [Function.as:280]
+PASSED: ! delete fl_func [Function.as:292]
+PASSED: ! delete f_func [Function.as:297]
+PASSED: tl_local == "tl_local2" [Function.as:304]
+PASSED: todelete == undefined [Function.as:305]
+PASSED: tooverride == "tooverride" [Function.as:306]
+PASSED: tl_new == "tl_new" [Function.as:307]
+PASSED: fl_func == undefined [Function.as:308]
+PASSED: typeof(f_func) == 'function' [Function.as:309]
+PASSED: eval("result1") == "initial_result1_value" [Function.as:320]
+PASSED: typeof(outer_func) == 'function' [Function.as:337]
+PASSED: typeof(inner_func) == 'function' [Function.as:341]
+PASSED: result1 == "hello" [Function.as:346]
+PASSED: result2 == "hello" [Function.as:347]
+PASSED: typeof(bla) == 'function' [Function.as:365]
+PASSED: bla(42) == 42 [Function.as:366]
+PASSED: typeof(bla) == 'function' [Function.as:367]
+PASSED: bla(43) == 42 [Function.as:371]
+PASSED: this.a == "a_in_obj" [Function.as:388]
+PASSED: this.a == "a_in_root" [Function.as:394]
+PASSED: this.a == "a_in_root" [Function.as:398]
+PASSED: typeof(arguments) == 'object' [Function.as:406]
+PASSED: arguments instanceOf Array [Function.as:407]
+PASSED: arguments instanceOf Object [Function.as:408]
+PASSED: arguments.length == 0 [Function.as:409]
+PASSED: typeof(arguments.callee) == 'function' [Function.as:411]
+PASSED: arguments.callee == _root.f [Function.as:413]
+XPASSED: typeof(arguments.caller) == 'null' [Function.as:415]
+PASSED: arguments.caller == null [Function.as:416]
+PASSED: propRecorder.length == 0 [Function.as:425]
+XPASSED: propRecorder.length == 5 [Function.as:433]
+PASSED: propRecorder[0] == '__proto__' [Function.as:434]
+PASSED: propRecorder[1] == 'callee' [Function.as:435]
+XPASSED: propRecorder[2] == 'caller' [Function.as:436]
+XPASSED: propRecorder[3] == 'constructor' [Function.as:437]
+XPASSED: propRecorder[4] == 'length' [Function.as:438]
+XPASSED: arguments.caller == parent_func [Function.as:449]
+PASSED: arguments.length == 3 [Function.as:462]
+PASSED: arguments[0] == 1 [Function.as:463]
+PASSED: arguments[1] == 2 [Function.as:464]
+PASSED: arguments[2] == 3 [Function.as:465]
+PASSED: arguments[3] == undefined [Function.as:466]
+PASSED: d == undefined [Function.as:467]
+PASSED: arguments[3] == 3 [Function.as:469]
+PASSED: d != 3 [Function.as:472]
+PASSED: arguments[0] == 'zero' [Function.as:474]
+PASSED: arguments.length == 10 [Function.as:476]
+PASSED: arguments.length == 9 [Function.as:478]
+PASSED: arguments.somethingelse == "can extend" [Function.as:480]
+PASSED: argsCounter(1,2,3) == 3 [Function.as:487]
+PASSED: argsCounter(a,b,c,d) == 4 [Function.as:488]
+PASSED: argsCounter([a,b]) == 1 [Function.as:489]
+PASSED: factorial(3) == 6 [Function.as:494]
+PASSED: factorial(4) == 24 [Function.as:495]
+PASSED: typeof(fooInstance) == 'object' [Function.as:511]
+PASSED: fooInstance instanceOf Foo [Function.as:512]
+PASSED: typeof(textOutFunc.toString()) == 'string' [Function.as:524]
+PASSED: textOutFunc.toString() == '[type Function]' [Function.as:525]
+PASSED: !textOutFunc.hasOwnProperty('toString') [Function.as:527]
+PASSED: !Function.prototype.hasOwnProperty('toString') [Function.as:528]
+PASSED: Object.prototype.hasOwnProperty('toString') [Function.as:529]
+PASSED: textOutFunc.toString == Object.prototype.toString [Function.as:530]
+PASSED: textOutFunc.hasOwnProperty('toString') [Function.as:536]
+PASSED: textOutFunc.toString() == 'custom text rep' [Function.as:538]
+PASSED: typeof(textOutFunc.toString()) == 'string' [Function.as:539]
+NOTE: custom text rep
+PASSED: typeof(textOutFunc.toString) == 'number' [Function.as:546]
+NOTE: [type Function]
+PASSED: typeof(a.constructor) == 'function' [Function.as:557]
+PASSED: typeof(a.__constructor__) == 'function' [Function.as:559]
+PASSED: !a.hasOwnProperty('constructor') [Function.as:563]
+PASSED: a.hasOwnProperty('__constructor__') [Function.as:565]
+PASSED: a.constructor == Number [Function.as:566]
+PASSED: a.__constructor__ == Number [Function.as:567]
+PASSED: ! a instanceof Number [Function.as:568]
+PASSED: a.constructor != Object [Function.as:569]
+PASSED: typeof(a.constructor) == 'function' [Function.as:573]
+PASSED: typeof(a.__constructor__) == 'function' [Function.as:575]
+PASSED: !a.hasOwnProperty('constructor') [Function.as:579]
+PASSED: a.hasOwnProperty('__constructor__') [Function.as:581]
+PASSED: a.constructor == String [Function.as:582]
+PASSED: a.__constructor__ == String [Function.as:583]
+PASSED: ! a instanceof String [Function.as:584]
+PASSED: a.constructor != Object [Function.as:585]
+PASSED: typeof(a.constructor) == 'function' [Function.as:589]
+PASSED: typeof(a.__constructor__) == 'function' [Function.as:591]
+PASSED: !a.hasOwnProperty('constructor') [Function.as:595]
+PASSED: a.hasOwnProperty('__constructor__') [Function.as:597]
+PASSED: a.constructor == Boolean [Function.as:598]
+PASSED: a.__constructor__ == Boolean [Function.as:599]
+PASSED: ! a instanceof String [Function.as:600]
+PASSED: a.constructor != Object [Function.as:601]
+PASSED: typeof(Email.prototype.__constructor__) == 'undefined' [Function.as:626]
+PASSED: typeof(Email.constructor) == 'function' [Function.as:635]
+PASSED: typeof(Email.constructor.constructor) == 'function' [Function.as:636]
+PASSED: typeof(Email.constructor.constructor.constructor) == 'function' [Function.as:637]
+PASSED: Email.constructor == Function [Function.as:639]
+PASSED: Email.constructor.constructor == Function [Function.as:640]
+PASSED: Email.constructor.constructor.constructor == Function [Function.as:641]
+PASSED: Email.hasOwnProperty('constructor') [Function.as:643]
+PASSED: Email.constructor.hasOwnProperty('constructor') [Function.as:644]
+PASSED: Email.constructor.constructor.hasOwnProperty('constructor') [Function.as:645]
+PASSED: typeof(Email.__constructor__) == 'undefined' [Function.as:650]
+PASSED: ! Email.hasOwnProperty('__constructor__') [Function.as:651]
+PASSED: typeof(Email.prototype.constructor) == 'function' [Function.as:655]
+PASSED: Email.prototype.constructor == Mail [Function.as:656]
+PASSED: typeof(Email.prototype.__constructor__) == 'function' [Function.as:659]
+PASSED: Email.prototype.__constructor__ == Email.prototype.constructor [Function.as:660]
+PASSED: typeof(super) == 'object' [Function.as:619]
+PASSED: myMail.subject == 'greetings' [Function.as:666]
+PASSED: myMail.to == 'you' [Function.as:669]
+PASSED: myMail.message == 'hello' [Function.as:670]
+PASSED: typeof(super) == 'object' [Function.as:619]
+PASSED: myMail.subject == 'greetings' [Function.as:686]
+PASSED: myMail.to == 'everyone' [Function.as:688]
+PASSED: myMail.message == 'enlarge yourself' [Function.as:689]
+PASSED: getThis() == this [Function.as:701]
+PASSED: o.getThis() == o [Function.as:705]
+PASSED: typeof(ret) == 'object' [Function.as:711]
+PASSED: ret == o.sub [Function.as:712]
+PASSED: typeof(ret) == 'object' [Function.as:718]
+PASSED: ret == o.sub [Function.as:719]
+PASSED: typeof(ret) == 'object' [Function.as:723]
+PASSED: ret == o [Function.as:724]
+PASSED: typeof(ret) == 'object' [Function.as:727]
+PASSED: ret == sub [Function.as:728]
+PASSED: delete o.sub.getThis [Function.as:731]
+PASSED: typeof(ret) == 'object' [Function.as:736]
+PASSED: getThis() == o [Function.as:737]
+PASSED: typeof(ret) == 'object' [Function.as:745]
+PASSED: ret != testInFunctionContext [Function.as:749]
+PASSED: ret != this [Function.as:751]
+PASSED: typeof(ret) == 'object' [Function.as:757]
+PASSED: ret == o [Function.as:758]
+PASSED: num == 5 [Function.as:761]
+PASSED: num == 4 [Function.as:763]
+PASSED: f() == 42 [Function.as:781]
+XPASSED: testvar1 == 1 [Function.as:812]
+XPASSED: testvar2 == 2 [Function.as:813]
+XPASSED: testvar3 == 3 [Function.as:814]
+XPASSED: testvar1 == 4 [Function.as:842]
+XPASSED: testvar2 == 5 [Function.as:843]
+XPASSED: testvar3 == 6 [Function.as:844]
+XPASSED: testvar1 == 9 [Function.as:897]
+XPASSED: testvar2 == 8 [Function.as:898]
+XPASSED: testvar3 == 7 [Function.as:899]
+PASSED: a.count == 2 [Function.as:914]
+PASSED: b.count == 1 [Function.as:915]
+check_totals: 208
diff --git a/test/gnash/actionscript.all/pending/Function-8.swf b/test/gnash/actionscript.all/pending/Function-8.swf
new file mode 100644
index 0000000..b76b380
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Function-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/Function-8.swf.trace b/test/gnash/actionscript.all/pending/Function-8.swf.trace
new file mode 100644
index 0000000..39e6150
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Function-8.swf.trace
@@ -0,0 +1,211 @@
+PASSED: Function.prototype.__proto__ == Object.prototype [Function.as:29]
+PASSED: Function.constructor == Function [Function.as:30]
+PASSED: ! Function.hasOwnProperty('__constructor__') [Function.as:31]
+PASSED: getThisName.prototype.__proto__ == Object.prototype [Function.as:38]
+PASSED: getThisName != undefined [Function.as:41]
+PASSED: typeof(getThisName) == "function" [Function.as:52]
+PASSED: typeof(getThisName.apply) == 'function' [Function.as:62]
+PASSED: getThisName.apply(this_ref) == "extnameundefinedundefinedundefined" [Function.as:68]
+PASSED: ret == "extname123" [Function.as:75]
+PASSED: isNaN(ret) [Function.as:81]
+PASSED: ret == "extname456" [Function.as:87]
+PASSED: ret == "extnameundefinedundefinedundefined" [Function.as:90]
+PASSED: ret == "extnameundefinedundefinedundefined" [Function.as:97]
+PASSED: isNaN(ret) [Function.as:104]
+PASSED: isNaN(ret) [Function.as:111]
+PASSED: isNaN(ret) [Function.as:118]
+PASSED: getThisName.call(this_ref, 1, 2, 3) == "extname123" [Function.as:139]
+PASSED: typeof(nullcall) == 'number' [Function.as:144]
+PASSED: isNaN(nullcall) [Function.as:145]
+PASSED: ret == o [Function.as:154]
+PASSED: c == 1 [Function.as:155]
+PASSED: c == 2 [Function.as:157]
+XPASSED: typeof(ret) == 'object' [Function.as:158]
+XPASSED: ret == undefined [Function.as:159]
+PASSED: ! (ret === undefined) [Function.as:160]
+PASSED: ! (ret === null) [Function.as:161]
+PASSED: typeOf(TestClass) == 'function' [Function.as:181]
+PASSED: typeOf(TestClass.apply) == 'function' [Function.as:186]
+PASSED: typeOf(TestClass.call) == 'function' [Function.as:189]
+PASSED: typeOf(TestClass.prototype) == 'object' [Function.as:194]
+PASSED: testInstance != undefined [Function.as:203]
+PASSED: testInstance.name != undefined [Function.as:204]
+PASSED: testInstance.name == "NONE" [Function.as:205]
+PASSED: typeof(testInstance.setname) == "function" [Function.as:206]
+PASSED: testInstance.name == "Test" [Function.as:210]
+PASSED: testInstance.__proto__ != undefined [Function.as:213]
+PASSED: testInstance.__proto__ == TestClass.prototype [Function.as:214]
+PASSED: testInstance instanceOf TestClass [Function.as:215]
+PASSED: testInstance instanceOf Object [Function.as:216]
+PASSED: typeOf(Function.prototype.addProperty) == 'function' [Function.as:219]
+PASSED: testInstance.__proto__ == TestClass.prototype [Function.as:220]
+PASSED: TestClass.__proto__ == Function.prototype [Function.as:221]
+PASSED: testInstance.addProperty == Object.prototype.addProperty [Function.as:222]
+PASSED: t == 7 [Function.as:225]
+PASSED: Function instanceOf Object [Function.as:226]
+PASSED: TestClass.hasOwnProperty('constructor') [Function.as:227]
+PASSED: TestClass.constructor == Function [Function.as:230]
+PASSED: typeOf(TestClass.prototype.constructor) == 'function' [Function.as:231]
+PASSED: TestClass.prototype.constructor == TestClass [Function.as:233]
+PASSED: testInstance.__proto__.constructor == TestClass [Function.as:234]
+PASSED: TestClass.prototype.additional == undefined [Function.as:239]
+PASSED: stringInstance.__proto__ != undefined [Function.as:243]
+PASSED: stringInstance.__proto__ == String.prototype [Function.as:244]
+PASSED: typeof(String.prototype.constructor) == 'function' [Function.as:245]
+PASSED: String.prototype.constructor == String [Function.as:246]
+PASSED: stringInstance.__proto__.constructor == String [Function.as:247]
+PASSED: testInstance instanceof TestClass [Function.as:250]
+PASSED: stringInstance instanceof String [Function.as:251]
+PASSED: f_func == undefined [Function.as:301]
+PASSED: tl_new == undefined [Function.as:302]
+PASSED: localvar == "lv" [Function.as:268]
+PASSED: tl_local == "tl_local" [Function.as:271]
+PASSED: tooverride == "overridden" [Function.as:280]
+PASSED: ! delete fl_func [Function.as:292]
+PASSED: ! delete f_func [Function.as:297]
+PASSED: tl_local == "tl_local2" [Function.as:304]
+PASSED: todelete == undefined [Function.as:305]
+PASSED: tooverride == "tooverride" [Function.as:306]
+PASSED: tl_new == "tl_new" [Function.as:307]
+PASSED: fl_func == undefined [Function.as:308]
+PASSED: typeof(f_func) == 'function' [Function.as:309]
+PASSED: eval("result1") == "initial_result1_value" [Function.as:320]
+PASSED: typeof(outer_func) == 'function' [Function.as:337]
+PASSED: typeof(inner_func) == 'function' [Function.as:341]
+PASSED: result1 == "hello" [Function.as:346]
+PASSED: result2 == "hello" [Function.as:347]
+PASSED: typeof(bla) == 'function' [Function.as:365]
+PASSED: bla(42) == 42 [Function.as:366]
+PASSED: typeof(bla) == 'function' [Function.as:367]
+PASSED: bla(43) == 42 [Function.as:371]
+PASSED: this.a == "a_in_obj" [Function.as:388]
+PASSED: this.a == "a_in_root" [Function.as:394]
+PASSED: this.a == "a_in_root" [Function.as:398]
+PASSED: typeof(arguments) == 'object' [Function.as:406]
+PASSED: arguments instanceOf Array [Function.as:407]
+PASSED: arguments instanceOf Object [Function.as:408]
+PASSED: arguments.length == 0 [Function.as:409]
+PASSED: typeof(arguments.callee) == 'function' [Function.as:411]
+PASSED: arguments.callee == _root.f [Function.as:413]
+XPASSED: typeof(arguments.caller) == 'null' [Function.as:415]
+PASSED: arguments.caller == null [Function.as:416]
+PASSED: propRecorder.length == 0 [Function.as:425]
+XPASSED: propRecorder.length == 5 [Function.as:433]
+PASSED: propRecorder[0] == '__proto__' [Function.as:434]
+PASSED: propRecorder[1] == 'callee' [Function.as:435]
+XPASSED: propRecorder[2] == 'caller' [Function.as:436]
+XPASSED: propRecorder[3] == 'constructor' [Function.as:437]
+XPASSED: propRecorder[4] == 'length' [Function.as:438]
+XPASSED: arguments.caller == parent_func [Function.as:449]
+PASSED: arguments.length == 3 [Function.as:462]
+PASSED: arguments[0] == 1 [Function.as:463]
+PASSED: arguments[1] == 2 [Function.as:464]
+PASSED: arguments[2] == 3 [Function.as:465]
+PASSED: arguments[3] == undefined [Function.as:466]
+PASSED: d == undefined [Function.as:467]
+PASSED: arguments[3] == 3 [Function.as:469]
+PASSED: d != 3 [Function.as:472]
+PASSED: arguments[0] == 'zero' [Function.as:474]
+PASSED: arguments.length == 10 [Function.as:476]
+PASSED: arguments.length == 9 [Function.as:478]
+PASSED: arguments.somethingelse == "can extend" [Function.as:480]
+PASSED: argsCounter(1,2,3) == 3 [Function.as:487]
+PASSED: argsCounter(a,b,c,d) == 4 [Function.as:488]
+PASSED: argsCounter([a,b]) == 1 [Function.as:489]
+PASSED: factorial(3) == 6 [Function.as:494]
+PASSED: factorial(4) == 24 [Function.as:495]
+PASSED: typeof(fooInstance) == 'object' [Function.as:511]
+PASSED: fooInstance instanceOf Foo [Function.as:512]
+PASSED: typeof(textOutFunc.toString()) == 'string' [Function.as:524]
+PASSED: textOutFunc.toString() == '[type Function]' [Function.as:525]
+PASSED: !textOutFunc.hasOwnProperty('toString') [Function.as:527]
+PASSED: !Function.prototype.hasOwnProperty('toString') [Function.as:528]
+PASSED: Object.prototype.hasOwnProperty('toString') [Function.as:529]
+PASSED: textOutFunc.toString == Object.prototype.toString [Function.as:530]
+PASSED: textOutFunc.hasOwnProperty('toString') [Function.as:536]
+PASSED: textOutFunc.toString() == 'custom text rep' [Function.as:538]
+PASSED: typeof(textOutFunc.toString()) == 'string' [Function.as:539]
+NOTE: custom text rep
+PASSED: typeof(textOutFunc.toString) == 'number' [Function.as:546]
+NOTE: [type Function]
+PASSED: typeof(a.constructor) == 'function' [Function.as:557]
+PASSED: typeof(a.__constructor__) == 'function' [Function.as:559]
+PASSED: !a.hasOwnProperty('constructor') [Function.as:563]
+PASSED: a.hasOwnProperty('__constructor__') [Function.as:565]
+PASSED: a.constructor == Number [Function.as:566]
+PASSED: a.__constructor__ == Number [Function.as:567]
+PASSED: ! a instanceof Number [Function.as:568]
+PASSED: a.constructor != Object [Function.as:569]
+PASSED: typeof(a.constructor) == 'function' [Function.as:573]
+PASSED: typeof(a.__constructor__) == 'function' [Function.as:575]
+PASSED: !a.hasOwnProperty('constructor') [Function.as:579]
+PASSED: a.hasOwnProperty('__constructor__') [Function.as:581]
+PASSED: a.constructor == String [Function.as:582]
+PASSED: a.__constructor__ == String [Function.as:583]
+PASSED: ! a instanceof String [Function.as:584]
+PASSED: a.constructor != Object [Function.as:585]
+PASSED: typeof(a.constructor) == 'function' [Function.as:589]
+PASSED: typeof(a.__constructor__) == 'function' [Function.as:591]
+PASSED: !a.hasOwnProperty('constructor') [Function.as:595]
+PASSED: a.hasOwnProperty('__constructor__') [Function.as:597]
+PASSED: a.constructor == Boolean [Function.as:598]
+PASSED: a.__constructor__ == Boolean [Function.as:599]
+PASSED: ! a instanceof String [Function.as:600]
+PASSED: a.constructor != Object [Function.as:601]
+PASSED: typeof(Email.prototype.__constructor__) == 'undefined' [Function.as:626]
+PASSED: typeof(Email.constructor) == 'function' [Function.as:635]
+PASSED: typeof(Email.constructor.constructor) == 'function' [Function.as:636]
+PASSED: typeof(Email.constructor.constructor.constructor) == 'function' [Function.as:637]
+PASSED: Email.constructor == Function [Function.as:639]
+PASSED: Email.constructor.constructor == Function [Function.as:640]
+PASSED: Email.constructor.constructor.constructor == Function [Function.as:641]
+PASSED: Email.hasOwnProperty('constructor') [Function.as:643]
+PASSED: Email.constructor.hasOwnProperty('constructor') [Function.as:644]
+PASSED: Email.constructor.constructor.hasOwnProperty('constructor') [Function.as:645]
+PASSED: typeof(Email.__constructor__) == 'undefined' [Function.as:650]
+PASSED: ! Email.hasOwnProperty('__constructor__') [Function.as:651]
+PASSED: typeof(Email.prototype.constructor) == 'function' [Function.as:655]
+PASSED: Email.prototype.constructor == Mail [Function.as:656]
+PASSED: typeof(Email.prototype.__constructor__) == 'function' [Function.as:659]
+PASSED: Email.prototype.__constructor__ == Email.prototype.constructor [Function.as:660]
+PASSED: typeof(super) == 'object' [Function.as:619]
+PASSED: myMail.subject == 'greetings' [Function.as:666]
+PASSED: myMail.to == 'you' [Function.as:669]
+PASSED: myMail.message == 'hello' [Function.as:670]
+PASSED: typeof(super) == 'object' [Function.as:619]
+PASSED: myMail.subject == 'greetings' [Function.as:686]
+PASSED: myMail.to == 'everyone' [Function.as:688]
+PASSED: myMail.message == 'enlarge yourself' [Function.as:689]
+PASSED: getThis() == this [Function.as:701]
+PASSED: o.getThis() == o [Function.as:705]
+PASSED: typeof(ret) == 'object' [Function.as:711]
+PASSED: ret == o.sub [Function.as:712]
+PASSED: typeof(ret) == 'object' [Function.as:718]
+PASSED: ret == o.sub [Function.as:719]
+PASSED: typeof(ret) == 'object' [Function.as:723]
+PASSED: ret == o [Function.as:724]
+PASSED: typeof(ret) == 'object' [Function.as:727]
+PASSED: ret == sub [Function.as:728]
+PASSED: delete o.sub.getThis [Function.as:731]
+PASSED: typeof(ret) == 'object' [Function.as:736]
+PASSED: getThis() == o [Function.as:737]
+PASSED: typeof(ret) == 'object' [Function.as:745]
+PASSED: ret != testInFunctionContext [Function.as:749]
+PASSED: ret != this [Function.as:751]
+PASSED: typeof(ret) == 'object' [Function.as:757]
+PASSED: ret == o [Function.as:758]
+PASSED: num == 5 [Function.as:761]
+PASSED: num == 4 [Function.as:763]
+PASSED: f() == 42 [Function.as:781]
+XPASSED: testvar1 == 1 [Function.as:812]
+XPASSED: testvar2 == 2 [Function.as:813]
+XPASSED: testvar3 == 3 [Function.as:814]
+XPASSED: testvar1 == 4 [Function.as:842]
+XPASSED: testvar2 == 5 [Function.as:843]
+XPASSED: testvar3 == 6 [Function.as:844]
+XPASSED: testvar1 == 9 [Function.as:897]
+XPASSED: testvar2 == 8 [Function.as:898]
+XPASSED: testvar3 == 7 [Function.as:899]
+PASSED: a.count == 2 [Function.as:914]
+PASSED: b.count == 1 [Function.as:915]
+check_totals: 208
diff --git a/test/gnash/actionscript.all/pending/Function.as b/test/gnash/actionscript.all/pending/Function.as
new file mode 100644
index 0000000..d235ace
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Function.as
@@ -0,0 +1,925 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+
+// Test case for Function ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: Function.as,v 1.73 2008/04/28 16:10:00 bwy Exp $";
+#include "check.as"
+
+#if OUTPUT_VERSION >= 6
+check_equals(Function.prototype.__proto__, Object.prototype);
+check_equals(Function.constructor, Function);
+check( ! Function.hasOwnProperty('__constructor__') );
+#endif
+
+// Define a function returning 'this'.name and the given args
+function getThisName(a,b,c) { return this.name+a+b+c; }
+
+// Every newly created function's super class is Object
+check_equals(getThisName.prototype.__proto__, Object.prototype);
+
+#if OUTPUT_VERSION >=6 
+ check (getThisName != undefined);
+#else
+ // this might be due to forced string comparison ?
+ check_equals (getThisName, undefined);
+ check_equals (getThisName, null);
+ check (getThisName != 0);
+ check (getThisName != 1);
+ check (! isNaN(getThisName) );
+ check (getThisName != "");
+ check (getThisName != "[type Function]");
+#endif
+check_equals ( typeof(getThisName), "function" );
+
+//----------------------------------------------------------
+//
+// Test Function.apply
+//
+//----------------------------------------------------------
+
+#if OUTPUT_VERSION >= 6
+
+check_equals(typeof(getThisName.apply), 'function');
+
+var this_ref = {name:"extname"};
+
+// Test Function.apply(this_ref, args_array)
+#if OUTPUT_VERSION >= 7
+  check_equals ( getThisName.apply(this_ref), "extnameundefinedundefinedundefined" );
+#else
+  check_equals ( getThisName.apply(this_ref), "extname" );
+#endif
+
+// Test Function.apply(this_ref, args_array)
+var ret=getThisName.apply(this_ref, [1,2,3]);
+check ( ret == "extname123" );
+
+// Test invalid Function.apply calls
+
+var ret=getThisName.apply();
+#if OUTPUT_VERSION > 6
+  check ( isNaN(ret) ); // result of the *numerical* sum of all undefined
+#else
+  check_equals ( ret , 0 ); // result of the *numerical* sum of all undefined
+#endif
+
+var ret=getThisName.apply(this_ref, [4,5,6], 4);
+check_equals ( ret , "extname456" );
+var ret=getThisName.apply(this_ref, "8");
+#if OUTPUT_VERSION >= 7
+  check_equals ( ret , "extnameundefinedundefinedundefined" );
+#else
+  check_equals ( ret , "extname" );
+#endif
+
+var ret=getThisName.apply(this_ref, 9);
+#if OUTPUT_VERSION >= 7
+  check_equals ( ret , "extnameundefinedundefinedundefined" );
+#else
+  check_equals ( ret , "extname" );
+#endif
+
+var ret=getThisName.apply(undefined, [4,5,6], 4);
+#if OUTPUT_VERSION >= 7
+  check ( isNaN(ret) ); // the sum will be considered numerical
+#else
+  check_equals ( ret , 15 ); // the sum will be considered numerical
+#endif
+
+var ret=getThisName.apply(undefined, 7);
+#if OUTPUT_VERSION >= 7
+  check ( isNaN(ret) ); 
+#else
+  check_equals ( ret , 0 );
+#endif
+
+var ret=getThisName.apply(undefined, "7");
+#if OUTPUT_VERSION >= 7
+  check ( isNaN(ret) ); 
+#else
+  check_equals ( ret , 0 );
+#endif
+
+#else // OUTPUT_VERSION < 6
+
+// No Function.apply... for SWF up to 5
+check_equals(typeOf(getThisName.apply), 'undefined');
+
+#endif
+
+//----------------------------------------------------------
+//
+// Test Function.call
+//
+//----------------------------------------------------------
+
+#if OUTPUT_VERSION >= 6
+
+// Test Function.call(this, arg1, arg2, arg3)
+check_equals ( getThisName.call(this_ref, 1, 2, 3), "extname123" );
+
+// Test Function.call(null, arg1, arg2, arg3)
+nullcall = getThisName.call(null, 1, 2, 3);
+#if OUTPUT_VERSION > 6
+ check_equals ( typeof(nullcall), 'number' );
+ check ( isNaN(nullcall) );
+#else
+ check_equals ( nullcall, 6 );
+#endif
+
+function getThis () { ++c; return this; }
+o={};
+c=0;
+ret = getThis.call(o);
+check_equals(ret, o);
+check_equals(c, 1);
+ret = getThis.call(null);
+check_equals(c, 2);
+xcheck_equals(typeof(ret), 'object');
+xcheck_equals(ret, undefined); // an object type which returns 'undefined' as primitive value ?
+check( ! (ret === undefined) ); // an object type which returns 'undefined' as primitive value ?
+check( ! (ret === null) ); // an object type which returns 'undefined' as primitive value ?
+
+#else // OUTPUT_VERSION < 6
+
+check_equals ( typeOf(getThisName.call), 'undefined' );
+
+#endif
+
+//----------------------------------------------------------
+//
+// Test Function definition
+//
+//----------------------------------------------------------
+
+// Define a class with its constructor
+var TestClass = function() {
+	this.name = "NONE";
+};
+
+// Test the Function constuctor
+check_equals ( typeOf(TestClass), 'function' );
+
+#if OUTPUT_VERSION >= 6
+
+  // Test existance of the Function::apply method
+  check_equals ( typeOf(TestClass.apply), 'function' );
+
+  // Test existance of the Function::call method
+  check_equals ( typeOf(TestClass.call), 'function' );
+
+#endif
+
+// test existance of the Function::prototype member
+check_equals ( typeOf(TestClass.prototype), 'object' );
+
+// Define methods 
+TestClass.prototype.setname = function(name) {
+	this.name = name;
+};
+
+// Test instanciation of Function
+var testInstance = new TestClass;
+check (testInstance != undefined);
+check (testInstance.name != undefined);
+check (testInstance.name == "NONE");
+check (typeof(testInstance.setname) == "function");
+
+// Test methods call
+testInstance.setname("Test");
+check (testInstance.name == "Test");
+
+// Test inheritance
+check (testInstance.__proto__ != undefined);
+check (testInstance.__proto__ == TestClass.prototype);
+check (testInstance instanceOf TestClass);
+check (testInstance instanceOf Object);
+#if OUTPUT_VERSION > 5
+// Function was added in version 5
+check_equals (typeOf(Function.prototype.addProperty), 'function');
+check_equals (testInstance.__proto__, TestClass.prototype)
+check_equals (TestClass.__proto__, Function.prototype)
+check_equals (testInstance.addProperty, Object.prototype.addProperty)
+Object.prototype.addProperty = function() { return 7; };
+var t = testInstance.addProperty();
+check_equals(t, 7);
+check (Function instanceOf Object);
+check(TestClass.hasOwnProperty('constructor'));
+#endif
+
+check_equals (TestClass.constructor, Function);
+check_equals (typeOf(TestClass.prototype.constructor), 'function');
+
+check (TestClass.prototype.constructor == TestClass);
+check (testInstance.__proto__.constructor == TestClass);
+
+// An instance .prototype is NOT a reference to 
+// the superclass's prototype. That would be __proto__.
+testInstance.prototype.additional = "not-in-super";
+check (TestClass.prototype.additional == undefined);
+
+// Test inheritance with built-in functions
+var stringInstance = new String();
+check (stringInstance.__proto__ != undefined);
+check (stringInstance.__proto__ == String.prototype);
+check_equals ( typeof(String.prototype.constructor), 'function' );
+check (String.prototype.constructor == String);
+check (stringInstance.__proto__.constructor == String);
+
+// Test the instanceof operator
+check ( testInstance instanceof TestClass );
+check ( stringInstance instanceof String );
+
+//----------------------------------------------------------
+//
+// Test access of a timeline locals from within a function
+//
+//----------------------------------------------------------
+
+// These are timeline "locals" (note the 'var' prefix).
+// They should produce DEFINELOCAL tags
+var tl_local = "tl_local";
+var todelete = "deleteme";
+var tooverride = "tooverride";
+a_func = function() {
+
+	// get a "local" var of this function
+	var localvar = "lv";
+	check_equals(localvar, "lv");
+
+	// get a "local" var of the timeline
+	check_equals(tl_local, "tl_local");
+
+	// A "local" var of this function with
+	// hides a "local" var of the timeline
+	// with the same name, but just within
+	// this context (there's another check
+	// outside the function to verify the
+	// original value is preserved there)
+	var tooverride = "overridden";
+	check_equals(tooverride, "overridden");
+
+	// set a "local" var of the timeline
+	tl_local = "tl_local2";
+
+	// delete a "local" var of the timeline
+	delete todelete;
+
+	// create a new variable of the timeline
+	tl_new = "tl_new";
+
+	// create a new function "local" for this function.
+	check(! delete fl_func); // make sure there's no other
+	var fl_func = function() { };
+
+	// create a new function on the timeline
+	// (this only works with SWF6 or up)
+	check(! delete f_func); // make sure there's no other
+	f_func = function() { };
+
+};
+check_equals(f_func, undefined); // will be created by a_func() call
+check_equals(tl_new, undefined); // will be created by a_func() call
+a_func(); // create tl_new and f_func
+check_equals(tl_local, "tl_local2");
+check_equals(todelete, undefined);
+check_equals(tooverride, "tooverride");
+check_equals(tl_new, "tl_new");
+check_equals(fl_func, undefined);
+check_equals(typeof(f_func), 'function'); // created by a_func() call
+
+//----------------------------------------------------------
+//
+// Test nested functions
+//
+//----------------------------------------------------------
+
+var result1 = "initial_result1_value";
+var result2 = "initial_result2_value";
+// just to make sure that eval works (more of a Ming test this one..)
+check_equals(eval("result1"), "initial_result1_value");
+
+outer_func = function() 
+{
+	var a = "hello";
+
+	// inner_func should be created on the timeline,
+	// see previous tests block
+	inner_func = function(var_ref) 
+	{
+		return(eval(var_ref));
+	};
+  
+	result1 = inner_func("a");  // should return "hello"
+};
+
+//call outer_func to set result1
+check_equals(typeof(outer_func), 'function');
+outer_func(); 
+
+// call inner_func to set result2
+check_equals(typeof(inner_func), 'function');
+result2 = inner_func("a");  // should return "hello"
+
+#if OUTPUT_VERSION >= 6
+
+  check_equals ( result1, "hello" );
+  check_equals ( result2, "hello" );
+
+#else // SWF5 or lower doesn't use a scope chain
+
+  check_equals ( result1, undefined );
+  check_equals ( result2, undefined );
+
+#endif
+
+function bla (num)
+{
+	bla = function ()
+	{
+		return num;
+	};
+	return num;
+}
+
+check_equals(typeof(bla), 'function');
+check_equals(bla(42), 42);
+check_equals(typeof(bla), 'function');
+#if OUTPUT_VERSION < 6
+check_equals(typeof(bla(43)), 'undefined');
+#else
+check_equals(bla(43), 42);
+#endif
+
+//----------------------------------------------------------
+//
+//  Test case for "this"  in Object's context
+//  by Zou Lunkai, zoulunkai at gmail.com
+//
+//----------------------------------------------------------
+
+var obj = new Object();
+obj.a = "a_in_obj";
+
+var a = "a_in_root";
+
+obj.func = function ()
+{
+        check_equals(this.a, "a_in_obj");
+};
+obj.func();
+
+func = function ()
+{
+   check_equals(this.a, "a_in_root");
+};
+func();
+
+check_equals(this.a, "a_in_root");
+
+//----------------------------------------------------------
+//  Test the 'arguments' object
+//----------------------------------------------------------
+
+function f()
+{
+    check_equals(typeof(arguments), 'object');
+    check(arguments instanceOf Array);
+    check(arguments instanceOf Object);
+    check_equals(arguments.length, 0);
+    
+    check_equals(typeof(arguments.callee), 'function');
+    // callee: the function being called
+    check_equals(arguments.callee, _root.f);
+    // caller: the caller function
+    xcheck_equals(typeof(arguments.caller), 'null'); //? typeof return 'null', seems new!
+    check_equals(arguments.caller, null);
+    
+    var a = arguments;
+    var propRecorder = new Array();
+    for(var props in a)
+    {
+        propRecorder.push(props.toString());
+    }
+    // no enumerable properties in default mode.
+    check_equals(propRecorder.length, 0); 
+    
+    ASSetPropFlags(a, null, 6, 1 );
+    for(var props in a)
+    {
+        propRecorder.push(props.toString());
+    }
+    propRecorder.sort();
+    xcheck_equals(propRecorder.length, 5);
+    check_equals(propRecorder[0], '__proto__');
+    check_equals(propRecorder[1], 'callee');
+    xcheck_equals(propRecorder[2], 'caller');
+    xcheck_equals(propRecorder[3], 'constructor');
+    xcheck_equals(propRecorder[4], 'length');
+}
+f();
+
+// test argument.caller
+function child_func()
+{
+#if OUTPUT_VERSION == 5
+    check_equals(arguments.caller, parent_func);
+#else
+    //? passed on swf5, but failed on swf6,7,8
+    xcheck_equals(arguments.caller, parent_func);
+#endif
+}
+function parent_func()
+{
+    child_func();
+}
+parent_func();
+
+
+// this is to be called argsChecker(1,2,3)
+function argsChecker(a, b, c, d, e, f, g)
+{
+	check_equals(arguments.length, 3);
+	check_equals(arguments[0], 1);
+	check_equals(arguments[1], 2);
+	check_equals(arguments[2], 3);
+	check_equals(arguments[3], undefined);
+	check_equals(d, undefined);
+	arguments[3] = 3;
+	check_equals(arguments[3], 3);
+	// Changing a member of the 'arguments' object doesn't change
+	// the corresponding named parameter, contrary to ECMA262 specs.
+	check(d != 3);
+	arguments[0] = 'zero';
+	check_equals(arguments[0], 'zero');
+	arguments.length = 10;
+	check_equals(arguments.length, 10);
+	arguments.pop();
+	check_equals(arguments.length, 9);
+	arguments.somethingelse = "can extend";
+	check_equals(arguments.somethingelse, "can extend");
+}
+argsChecker(1, 2, 3);
+
+function argsCounter() {
+	return arguments.length;
+}
+check_equals(argsCounter(1,2,3), 3);
+check_equals(argsCounter(a,b,c,d), 4);
+check_equals(argsCounter([a,b]), 1);
+
+function factorial(n) {
+	return n <= 1 ? n : n*arguments.callee(n-1);
+}
+check_equals(factorial(3), 6);
+check_equals(factorial(4), 24);
+
+//------------------------------------------------------
+// Test using 'this' as a constructor
+//------------------------------------------------------
+
+#if OUTPUT_VERSION >= 6
+
+Function.prototype['new'] = function()
+{
+	return new this;
+};
+
+function Foo() {};
+
+var fooInstance = Foo['new']();
+check_equals(typeof(fooInstance), 'object');
+check(fooInstance instanceOf Foo);
+
+#endif // OUTPUT_VERSION >= 6 
+
+//----------------------------------------------------------
+//
+// Test conversion to string
+//
+//----------------------------------------------------------
+
+function textOutFunc() {};
+#if OUTPUT_VERSION >= 6
+check_equals(typeof(textOutFunc.toString()), 'string');
+check_equals(textOutFunc.toString(), '[type Function]');
+// the toString method is inherited from Object class
+check(!textOutFunc.hasOwnProperty('toString'));
+check(!Function.prototype.hasOwnProperty('toString'));
+check(Object.prototype.hasOwnProperty('toString'));
+check_equals(textOutFunc.toString, Object.prototype.toString);
+#else
+check_equals(typeof(textOutFunc.toString), 'undefined');
+#endif
+textOutFunc.toString = function() { return "custom text rep"; };
+#if OUTPUT_VERSION >= 6
+check(textOutFunc.hasOwnProperty('toString'));
+#endif
+check_equals(textOutFunc.toString(), 'custom text rep');
+check_equals(typeof(textOutFunc.toString()), 'string');
+
+// expect 'custom text rep', not '[type Function]' in output.
+// No way to check in this framework, but it's known to be bogus.
+note(textOutFunc);
+
+textOutFunc.toString = 4;
+check_equals(typeof(textOutFunc.toString), 'number');
+
+// expect '[type Function]', not 'custom text rep' in output (no way to check this!!)
+note(textOutFunc);
+
+
+//-----------------------------------------------------
+// Test constructor and __constructor__ properties
+//-----------------------------------------------------
+
+a = 4; // number primitive to Number object
+check_equals(typeof(a.constructor), 'function');
+#if OUTPUT_VERSION > 5
+check_equals(typeof(a.__constructor__), 'function');
+#if OUTPUT_VERSION == 6
+check(a.hasOwnProperty('constructor'));
+#else // OUTPUT_VERSION > 6
+check(!a.hasOwnProperty('constructor'));
+#endif
+check(a.hasOwnProperty('__constructor__'));
+check_equals(a.constructor, Number);
+check_equals(a.__constructor__, Number);
+check(! a instanceof Number);
+check(a.constructor != Object);
+#endif
+
+a = "string"; // string primitive to String object
+check_equals(typeof(a.constructor), 'function');
+#if OUTPUT_VERSION > 5
+check_equals(typeof(a.__constructor__), 'function');
+#if OUTPUT_VERSION == 6
+check(a.hasOwnProperty('constructor'));
+#else // OUTPUT_VERSION > 6
+check(!a.hasOwnProperty('constructor'));
+#endif
+check(a.hasOwnProperty('__constructor__'));
+check_equals(a.constructor, String);
+check_equals(a.__constructor__, String);
+check(! a instanceof String);
+check(a.constructor != Object);
+#endif
+
+a = true; // boolean primitive to Boolean object
+check_equals(typeof(a.constructor), 'function');
+#if OUTPUT_VERSION > 5
+check_equals(typeof(a.__constructor__), 'function');
+#if OUTPUT_VERSION == 6
+check(a.hasOwnProperty('constructor'));
+#else // OUTPUT_VERSION > 6
+check(!a.hasOwnProperty('constructor'));
+#endif
+check(a.hasOwnProperty('__constructor__'));
+check_equals(a.constructor, Boolean);
+check_equals(a.__constructor__, Boolean);
+check(! a instanceof String);
+check(a.constructor != Object);
+#endif
+
+//-----------------------------------------------------
+// Test use of 'super'
+//-----------------------------------------------------
+
+function Mail(recipient, message)
+{
+	this.to = recipient;
+	this.message = message;
+}
+
+function Email(subject, recipient, message)
+{
+	this.subject = subject;
+
+#if OUTPUT_VERSION > 5
+	check_equals(typeof(super), 'object');
+#else // OUTPUT_VERSION <= 5
+	check_equals(typeof(super), 'undefined');
+#endif
+	super(recipient, message);
+}
+
+check_equals(typeof(Email.prototype.__constructor__), 'undefined');
+
+// Email is a Function instance, and it's "constructor" property
+// tells us so
+#if OUTPUT_VERSION == 5
+// Function is supported in SWF6 and above
+check_equals(Email.constructor.toString(), undefined);
+check_equals(Function, undefined);
+#endif
+check_equals(typeof(Email.constructor), 'function');
+check_equals(typeof(Email.constructor.constructor), 'function');
+check_equals(typeof(Email.constructor.constructor.constructor), 'function');
+#if OUTPUT_VERSION > 5
+check_equals(Email.constructor, Function);
+check_equals(Email.constructor.constructor, Function);
+check_equals(Email.constructor.constructor.constructor, Function);
+
+check(Email.hasOwnProperty('constructor'));
+check(Email.constructor.hasOwnProperty('constructor'));
+check(Email.constructor.constructor.hasOwnProperty('constructor'));
+#endif // OUTPUT_VERSION > 5
+
+// Anyway, Email was not created using 'new', so it does
+// not have a __constructor__ property
+check_equals(typeof(Email.__constructor__), 'undefined');
+check( ! Email.hasOwnProperty('__constructor__') );
+
+Email.prototype = new Mail;
+
+check_equals(typeof(Email.prototype.constructor), 'function');
+check_equals(Email.prototype.constructor, Mail);
+
+#if OUTPUT_VERSION > 5 
+check_equals(typeof(Email.prototype.__constructor__), 'function');
+check_equals(Email.prototype.__constructor__, Email.prototype.constructor);
+#else
+check_equals(typeof(Email.prototype.__constructor__), 'undefined');
+#endif
+
+myMail = new Email('greetings', "you", "hello");
+check_equals(myMail.subject, 'greetings');
+
+#if OUTPUT_VERSION > 5
+check_equals(myMail.to, 'you');
+check_equals(myMail.message, 'hello');
+#else // OUTPUT_VERSION <= 5
+// no 'super' defined for SWF5 and below, so don't expect it to be called
+check_equals(typeof(myMail.to), 'undefined');
+check_equals(typeof(myMail.message), 'undefined');
+#endif
+
+function Spam()
+{
+	this.to = 'everyone';
+	this.message = 'enlarge yourself';
+}
+
+Email.prototype.__constructor__ = Spam;
+
+myMail = new Email('greetings', "you", "hello");
+check_equals(myMail.subject, 'greetings');
+#if OUTPUT_VERSION > 5
+check_equals(myMail.to, 'everyone');
+check_equals(myMail.message, 'enlarge yourself');
+#else
+check_equals(myMail.to, undefined);
+check_equals(myMail.message, undefined);
+#endif
+
+//-----------------------------------------------------
+// Test the 'this' reference
+//-----------------------------------------------------
+
+getThis = function() { return this; };
+
+check_equals(getThis(), this);
+
+o = new Object;
+o.getThis = getThis;
+check_equals(o.getThis(), o);
+
+o.sub = new Object;
+o.sub.getThis = getThis;
+
+ret = o.sub.getThis();
+check_equals(typeof(ret), 'object');
+check_equals(ret, o.sub);
+
+
+with(o) {
+	with(sub) {
+		ret = getThis();
+		check_equals(typeof(ret), 'object');
+		check_equals(ret, o.sub);
+	}
+
+	ret = getThis();
+	check_equals(typeof(ret), 'object');
+	check_equals(ret, o);
+
+	ret = sub.getThis();
+	check_equals(typeof(ret), 'object');
+	check_equals(ret, sub);
+}
+
+check(delete o.sub.getThis);
+
+with(o) {
+	with (sub) {
+		ret = getThis();
+		check_equals(typeof(ret), 'object');
+		check_equals(getThis(), o);
+	}
+}
+
+function testInFunctionContext(o)
+{
+	var localGetThis = function() { return this; };
+	ret = localGetThis();
+	check_equals(typeof(ret), 'object');
+#if OUTPUT_VERSION < 6
+	check(ret == testInFunctionContext);
+#else
+	check(ret != testInFunctionContext);
+#endif
+	check(ret != this);
+
+	var num = 4;
+	with(o) {
+		// see bug #19704
+		ret = getThis();
+		check_equals(typeof(ret), 'object');
+		check_equals(ret, o);
+
+		// 'with' stack takes precedence over locals
+		check_equals(num, 5);
+	}
+	check_equals(num, 4);
+}
+
+o.num = 5;
+testInFunctionContext(o);
+
+//-----------------------------------------------------------------------------
+// Test local vars scope of outer function to be kept alive by inner functions
+//-----------------------------------------------------------------------------
+
+foo = function () {
+	var x = 42;
+	return function () { return x; }; 
+};
+
+f = foo();
+delete foo;
+#if OUTPUT_VERSION > 5
+check_equals(f(), 42);
+#else
+check_equals(typeof(f()), 'undefined');
+#endif
+
+#ifdef MING_SUPPORTS_ASM
+//
+// --case1--
+//
+testvar1 = 0;
+testvar2 = 0;
+testvar3 = 0;
+asm{
+    push 'testvar1'
+    push 1
+    push 'testvar2'
+    push 2
+    push 'testvar3'
+    push 3
+};
+function stack_test1()
+{
+    asm{
+        setvariable
+        setvariable
+        setvariable
+    };
+}
+
+stack_test1();
+
+xcheck_equals(testvar1, 1);
+xcheck_equals(testvar2, 2);
+xcheck_equals(testvar3, 3);
+
+//
+// --case2--
+//
+testvar1 = 0;
+testvar2 = 0;
+testvar3 = 0;
+asm{
+    push 'testvar1'
+    push 4
+    push 'testvar2'
+    push 5
+    push 'testvar3'
+    push 6
+};
+_root.createEmptyMovieClip("clip1", '9');
+clip1.stack_test2 = function () {
+    asm{
+        setvariable
+        setvariable
+        setvariable
+    };
+};
+
+clip1.stack_test2();
+
+#if OUTPUT_VERSION > 5
+    xcheck_equals(testvar1, 4);
+    xcheck_equals(testvar2, 5);
+    xcheck_equals(testvar3, 6);
+#endif
+
+//
+// --case3--
+//
+
+testvar1 = 0;
+testvar2 = 0;
+testvar3 = 0;
+
+function stack_test3 () {
+    asm{
+        // Please check the produced swf file to see if the 
+        // structure of opcodes are that you expect.
+        push 7, 8, 9, 'pad to make Ming work as I expect'
+        // pop out the pad stuff, I just want to push 7,8,9 actually. 
+        pop 
+    };
+}
+
+outer_func1 = function () {
+    stack_test3();
+};
+
+outer_func2 = function () {
+    outer_func1();
+};
+
+outer_func2();
+
+//stack content after calling outer_func2:
+//    7, 8, 9
+
+asm{
+    push 'testvar1'
+    swap
+    setvariable
+};
+
+//stack: 7, 8
+asm{
+    push 'testvar2'
+    swap
+    setvariable
+};
+
+//stack: 7
+asm{
+    push 'testvar3'
+    swap
+    setvariable
+};
+xcheck_equals(testvar1, 9);
+xcheck_equals(testvar2, 8);
+xcheck_equals(testvar3, 7);
+
+#endif //MING_SUPPORTS_ASM
+
+//-----------------------------------------------------------------------------
+// Test that local var names are still declared, even if not passed by caller
+//-----------------------------------------------------------------------------
+
+function inc(a,b)
+{
+	a.count++;
+	b.count++;
+}
+a={count:1}; b={count:1};
+inc(a);
+check_equals(a.count, 2);
+check_equals(b.count, 1); // See bug #22203
+
+#if OUTPUT_VERSION == 5
+ check_totals(147); // SWF5
+#endif
+#if OUTPUT_VERSION == 6
+ check_totals(207); // SWF6
+#endif
+#if OUTPUT_VERSION >= 7
+ check_totals(208); // SWF7,SWF8
+#endif
diff --git a/test/gnash/actionscript.all/pending/LoadVars-5.swf b/test/gnash/actionscript.all/pending/LoadVars-5.swf
new file mode 100644
index 0000000..644dd18
Binary files /dev/null and b/test/gnash/actionscript.all/pending/LoadVars-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/LoadVars-5.swf.trace b/test/gnash/actionscript.all/pending/LoadVars-5.swf.trace
new file mode 100644
index 0000000..de0f911
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/LoadVars-5.swf.trace
@@ -0,0 +1,3 @@
+XPASSED: typeof(LoadVars) == 'function' [LoadVars.as:30]
+XPASSED: typeof(loadvarsObj) == 'object' [LoadVars.as:35]
+check_totals: 2
diff --git a/test/gnash/actionscript.all/pending/LoadVars-6.swf b/test/gnash/actionscript.all/pending/LoadVars-6.swf
new file mode 100644
index 0000000..5569508
Binary files /dev/null and b/test/gnash/actionscript.all/pending/LoadVars-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/LoadVars-6.swf.trace b/test/gnash/actionscript.all/pending/LoadVars-6.swf.trace
new file mode 100644
index 0000000..053e298
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/LoadVars-6.swf.trace
@@ -0,0 +1,75 @@
+PASSED: typeof(LoadVars) == 'function' [LoadVars.as:41]
+PASSED: typeof(loadvarsObj) == 'object' [LoadVars.as:46]
+PASSED: LoadVars.prototype.hasOwnProperty('addRequestHeader') [LoadVars.as:49]
+PASSED: typeof(loadvarsObj.addRequestHeader) == 'function' [LoadVars.as:50]
+PASSED: LoadVars.prototype.hasOwnProperty('decode') [LoadVars.as:53]
+PASSED: typeof(loadvarsObj.decode) == 'function' [LoadVars.as:54]
+PASSED: typeof(ret) == 'undefined' [LoadVars.as:56]
+PASSED: loadvarsObj.ud3 == 3 [LoadVars.as:57]
+PASSED: loadvarsObj.ud2 == 2 [LoadVars.as:58]
+PASSED: loadvarsObj.ud4 == 4 [LoadVars.as:60]
+PASSED: loadvarsObj.ud3 == 3 [LoadVars.as:61]
+PASSED: loadvarsObj.ud2 == 20 [LoadVars.as:62]
+PASSED: typeof(ret) == 'boolean' [LoadVars.as:64]
+PASSED: ret == false [LoadVars.as:65]
+PASSED: typeof(ret) == 'undefined' [LoadVars.as:67]
+PASSED: typeof(ret) == 'undefined' [LoadVars.as:70]
+PASSED: typeof(ret) == 'undefined' [LoadVars.as:73]
+PASSED: loadvarsObj.ud5 == 5 [LoadVars.as:74]
+PASSED: typeof(ret) == 'undefined' [LoadVars.as:77]
+PASSED: loadvarsObj.ud6 == undefined [LoadVars.as:78]
+PASSED: loadvarsObj['ud6'] == 6 [LoadVars.as:79]
+PASSED: loadvarsObj.ud7 == 7 [LoadVars.as:80]
+PASSED: LoadVars.prototype.hasOwnProperty('getBytesLoaded') [LoadVars.as:83]
+PASSED: typeof(loadvarsObj.getBytesLoaded) == 'function' [LoadVars.as:84]
+PASSED: LoadVars.prototype.hasOwnProperty('getBytesTotal') [LoadVars.as:87]
+PASSED: typeof(loadvarsObj.getBytesTotal) == 'function' [LoadVars.as:88]
+PASSED: LoadVars.prototype.hasOwnProperty('load') [LoadVars.as:91]
+PASSED: typeof(loadvarsObj.load) == 'function' [LoadVars.as:92]
+PASSED: LoadVars.prototype.hasOwnProperty('send') [LoadVars.as:95]
+PASSED: typeof(loadvarsObj.send) == 'function' [LoadVars.as:96]
+PASSED: LoadVars.prototype.hasOwnProperty('sendAndLoad') [LoadVars.as:99]
+PASSED: typeof(loadvarsObj.sendAndLoad) == 'function' [LoadVars.as:100]
+PASSED: LoadVars.prototype.hasOwnProperty('toString') [LoadVars.as:103]
+PASSED: typeof(loadvarsObj.toString) == 'function' [LoadVars.as:104]
+PASSED: !LoadVars.prototype.hasOwnProperty('valueOf') [LoadVars.as:107]
+PASSED: loadvarsObj.valueOf == Object.prototype.valueOf [LoadVars.as:108]
+PASSED: typeof(loadvarsObj.valueOf) == 'function' [LoadVars.as:109]
+PASSED: LoadVars.prototype.hasOwnProperty('onData') [LoadVars.as:112]
+PASSED: typeof(loadvarsObj.onData) == 'function' [LoadVars.as:113]
+PASSED: LoadVars.prototype.hasOwnProperty('onLoad') [LoadVars.as:116]
+PASSED: typeof(loadvarsObj.onLoad) == 'function' [LoadVars.as:117]
+PASSED: !LoadVars.prototype.hasOwnProperty('loaded') [LoadVars.as:120]
+PASSED: typeof(loadvarsObj.loaded) == 'undefined' [LoadVars.as:121]
+PASSED: loadvarsObj instanceOf LoadVars [LoadVars.as:205]
+PASSED: loadvarsObj.load( MEDIA(vars.txt) ) [LoadVars.as:207]
+PASSED: typeof(this.loaded) == 'undefined' [LoadVars.as:208]
+PASSED: loadvarsObj.loaded == false [LoadVars.as:211]
+PASSED: varsloaded == 0 [LoadVars.as:214]
+PASSED: loadvarsObj['var1'] == 'previous val1' [LoadVars.as:215]
+PASSED: loadvarsObj['var2'] == undefined [LoadVars.as:216]
+PASSED: this == loadvarsObj [LoadVars.as:177]
+PASSED: typeof(this.loaded) == 'boolean' [LoadVars.as:178]
+PASSED: this.loaded == false [LoadVars.as:179]
+PASSED: arguments.length == 1 [LoadVars.as:180]
+PASSED: typeof(src) == 'string' [LoadVars.as:181]
+PASSED: src.substr(0, 10) == 'var1=val1&' [LoadVars.as:182]
+PASSED: src.substr(loadvarsObj.getBytesTotal()-13) == 'var3=val3\n' [LoadVars.as:183]
+PASSED: datareceived == 0 [LoadVars.as:184]
+NOTE: LoadVars.onData called (1), byte loaded: 1126/1126
+NOTE: LoadVars.onLoad called 1. Bytes loaded: 1126/1126
+PASSED: loadvarsObj.getBytesTotal() == loadvarsObj.getBytesLoaded() [LoadVars.as:139]
+PASSED: loadvarsObj.getBytesLoaded() > 10 [LoadVars.as:140]
+PASSED: this == loadvarsObj [LoadVars.as:141]
+PASSED: arguments.length == 1 [LoadVars.as:142]
+PASSED: typeof(success) == 'boolean' [LoadVars.as:143]
+PASSED: success == true [LoadVars.as:144]
+PASSED: this.loaded == success [LoadVars.as:145]
+PASSED: typeof(this.loaded) == 'boolean' [LoadVars.as:146]
+PASSED: typeof(this.loaded) == 'number' [LoadVars.as:148]
+PASSED: varsloaded < 3 [LoadVars.as:150]
+PASSED: loadvarsObj.getBytesLoaded() == loadvarsObj.getBytesTotal() [LoadVars.as:153]
+PASSED: loadvarsObj['var1'] == 'val1' [LoadVars.as:159]
+PASSED: loadvarsObj['var2'] == 'val2' [LoadVars.as:161]
+PASSED: loadvarsObj['var3'] == 'val3\n' [LoadVars.as:166]
+check_totals: 72
diff --git a/test/gnash/actionscript.all/pending/LoadVars-7.swf b/test/gnash/actionscript.all/pending/LoadVars-7.swf
new file mode 100644
index 0000000..5545fb3
Binary files /dev/null and b/test/gnash/actionscript.all/pending/LoadVars-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/LoadVars-7.swf.trace b/test/gnash/actionscript.all/pending/LoadVars-7.swf.trace
new file mode 100644
index 0000000..053e298
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/LoadVars-7.swf.trace
@@ -0,0 +1,75 @@
+PASSED: typeof(LoadVars) == 'function' [LoadVars.as:41]
+PASSED: typeof(loadvarsObj) == 'object' [LoadVars.as:46]
+PASSED: LoadVars.prototype.hasOwnProperty('addRequestHeader') [LoadVars.as:49]
+PASSED: typeof(loadvarsObj.addRequestHeader) == 'function' [LoadVars.as:50]
+PASSED: LoadVars.prototype.hasOwnProperty('decode') [LoadVars.as:53]
+PASSED: typeof(loadvarsObj.decode) == 'function' [LoadVars.as:54]
+PASSED: typeof(ret) == 'undefined' [LoadVars.as:56]
+PASSED: loadvarsObj.ud3 == 3 [LoadVars.as:57]
+PASSED: loadvarsObj.ud2 == 2 [LoadVars.as:58]
+PASSED: loadvarsObj.ud4 == 4 [LoadVars.as:60]
+PASSED: loadvarsObj.ud3 == 3 [LoadVars.as:61]
+PASSED: loadvarsObj.ud2 == 20 [LoadVars.as:62]
+PASSED: typeof(ret) == 'boolean' [LoadVars.as:64]
+PASSED: ret == false [LoadVars.as:65]
+PASSED: typeof(ret) == 'undefined' [LoadVars.as:67]
+PASSED: typeof(ret) == 'undefined' [LoadVars.as:70]
+PASSED: typeof(ret) == 'undefined' [LoadVars.as:73]
+PASSED: loadvarsObj.ud5 == 5 [LoadVars.as:74]
+PASSED: typeof(ret) == 'undefined' [LoadVars.as:77]
+PASSED: loadvarsObj.ud6 == undefined [LoadVars.as:78]
+PASSED: loadvarsObj['ud6'] == 6 [LoadVars.as:79]
+PASSED: loadvarsObj.ud7 == 7 [LoadVars.as:80]
+PASSED: LoadVars.prototype.hasOwnProperty('getBytesLoaded') [LoadVars.as:83]
+PASSED: typeof(loadvarsObj.getBytesLoaded) == 'function' [LoadVars.as:84]
+PASSED: LoadVars.prototype.hasOwnProperty('getBytesTotal') [LoadVars.as:87]
+PASSED: typeof(loadvarsObj.getBytesTotal) == 'function' [LoadVars.as:88]
+PASSED: LoadVars.prototype.hasOwnProperty('load') [LoadVars.as:91]
+PASSED: typeof(loadvarsObj.load) == 'function' [LoadVars.as:92]
+PASSED: LoadVars.prototype.hasOwnProperty('send') [LoadVars.as:95]
+PASSED: typeof(loadvarsObj.send) == 'function' [LoadVars.as:96]
+PASSED: LoadVars.prototype.hasOwnProperty('sendAndLoad') [LoadVars.as:99]
+PASSED: typeof(loadvarsObj.sendAndLoad) == 'function' [LoadVars.as:100]
+PASSED: LoadVars.prototype.hasOwnProperty('toString') [LoadVars.as:103]
+PASSED: typeof(loadvarsObj.toString) == 'function' [LoadVars.as:104]
+PASSED: !LoadVars.prototype.hasOwnProperty('valueOf') [LoadVars.as:107]
+PASSED: loadvarsObj.valueOf == Object.prototype.valueOf [LoadVars.as:108]
+PASSED: typeof(loadvarsObj.valueOf) == 'function' [LoadVars.as:109]
+PASSED: LoadVars.prototype.hasOwnProperty('onData') [LoadVars.as:112]
+PASSED: typeof(loadvarsObj.onData) == 'function' [LoadVars.as:113]
+PASSED: LoadVars.prototype.hasOwnProperty('onLoad') [LoadVars.as:116]
+PASSED: typeof(loadvarsObj.onLoad) == 'function' [LoadVars.as:117]
+PASSED: !LoadVars.prototype.hasOwnProperty('loaded') [LoadVars.as:120]
+PASSED: typeof(loadvarsObj.loaded) == 'undefined' [LoadVars.as:121]
+PASSED: loadvarsObj instanceOf LoadVars [LoadVars.as:205]
+PASSED: loadvarsObj.load( MEDIA(vars.txt) ) [LoadVars.as:207]
+PASSED: typeof(this.loaded) == 'undefined' [LoadVars.as:208]
+PASSED: loadvarsObj.loaded == false [LoadVars.as:211]
+PASSED: varsloaded == 0 [LoadVars.as:214]
+PASSED: loadvarsObj['var1'] == 'previous val1' [LoadVars.as:215]
+PASSED: loadvarsObj['var2'] == undefined [LoadVars.as:216]
+PASSED: this == loadvarsObj [LoadVars.as:177]
+PASSED: typeof(this.loaded) == 'boolean' [LoadVars.as:178]
+PASSED: this.loaded == false [LoadVars.as:179]
+PASSED: arguments.length == 1 [LoadVars.as:180]
+PASSED: typeof(src) == 'string' [LoadVars.as:181]
+PASSED: src.substr(0, 10) == 'var1=val1&' [LoadVars.as:182]
+PASSED: src.substr(loadvarsObj.getBytesTotal()-13) == 'var3=val3\n' [LoadVars.as:183]
+PASSED: datareceived == 0 [LoadVars.as:184]
+NOTE: LoadVars.onData called (1), byte loaded: 1126/1126
+NOTE: LoadVars.onLoad called 1. Bytes loaded: 1126/1126
+PASSED: loadvarsObj.getBytesTotal() == loadvarsObj.getBytesLoaded() [LoadVars.as:139]
+PASSED: loadvarsObj.getBytesLoaded() > 10 [LoadVars.as:140]
+PASSED: this == loadvarsObj [LoadVars.as:141]
+PASSED: arguments.length == 1 [LoadVars.as:142]
+PASSED: typeof(success) == 'boolean' [LoadVars.as:143]
+PASSED: success == true [LoadVars.as:144]
+PASSED: this.loaded == success [LoadVars.as:145]
+PASSED: typeof(this.loaded) == 'boolean' [LoadVars.as:146]
+PASSED: typeof(this.loaded) == 'number' [LoadVars.as:148]
+PASSED: varsloaded < 3 [LoadVars.as:150]
+PASSED: loadvarsObj.getBytesLoaded() == loadvarsObj.getBytesTotal() [LoadVars.as:153]
+PASSED: loadvarsObj['var1'] == 'val1' [LoadVars.as:159]
+PASSED: loadvarsObj['var2'] == 'val2' [LoadVars.as:161]
+PASSED: loadvarsObj['var3'] == 'val3\n' [LoadVars.as:166]
+check_totals: 72
diff --git a/test/gnash/actionscript.all/pending/LoadVars-8.swf b/test/gnash/actionscript.all/pending/LoadVars-8.swf
new file mode 100644
index 0000000..ff31f1f
Binary files /dev/null and b/test/gnash/actionscript.all/pending/LoadVars-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/LoadVars-8.swf.trace b/test/gnash/actionscript.all/pending/LoadVars-8.swf.trace
new file mode 100644
index 0000000..053e298
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/LoadVars-8.swf.trace
@@ -0,0 +1,75 @@
+PASSED: typeof(LoadVars) == 'function' [LoadVars.as:41]
+PASSED: typeof(loadvarsObj) == 'object' [LoadVars.as:46]
+PASSED: LoadVars.prototype.hasOwnProperty('addRequestHeader') [LoadVars.as:49]
+PASSED: typeof(loadvarsObj.addRequestHeader) == 'function' [LoadVars.as:50]
+PASSED: LoadVars.prototype.hasOwnProperty('decode') [LoadVars.as:53]
+PASSED: typeof(loadvarsObj.decode) == 'function' [LoadVars.as:54]
+PASSED: typeof(ret) == 'undefined' [LoadVars.as:56]
+PASSED: loadvarsObj.ud3 == 3 [LoadVars.as:57]
+PASSED: loadvarsObj.ud2 == 2 [LoadVars.as:58]
+PASSED: loadvarsObj.ud4 == 4 [LoadVars.as:60]
+PASSED: loadvarsObj.ud3 == 3 [LoadVars.as:61]
+PASSED: loadvarsObj.ud2 == 20 [LoadVars.as:62]
+PASSED: typeof(ret) == 'boolean' [LoadVars.as:64]
+PASSED: ret == false [LoadVars.as:65]
+PASSED: typeof(ret) == 'undefined' [LoadVars.as:67]
+PASSED: typeof(ret) == 'undefined' [LoadVars.as:70]
+PASSED: typeof(ret) == 'undefined' [LoadVars.as:73]
+PASSED: loadvarsObj.ud5 == 5 [LoadVars.as:74]
+PASSED: typeof(ret) == 'undefined' [LoadVars.as:77]
+PASSED: loadvarsObj.ud6 == undefined [LoadVars.as:78]
+PASSED: loadvarsObj['ud6'] == 6 [LoadVars.as:79]
+PASSED: loadvarsObj.ud7 == 7 [LoadVars.as:80]
+PASSED: LoadVars.prototype.hasOwnProperty('getBytesLoaded') [LoadVars.as:83]
+PASSED: typeof(loadvarsObj.getBytesLoaded) == 'function' [LoadVars.as:84]
+PASSED: LoadVars.prototype.hasOwnProperty('getBytesTotal') [LoadVars.as:87]
+PASSED: typeof(loadvarsObj.getBytesTotal) == 'function' [LoadVars.as:88]
+PASSED: LoadVars.prototype.hasOwnProperty('load') [LoadVars.as:91]
+PASSED: typeof(loadvarsObj.load) == 'function' [LoadVars.as:92]
+PASSED: LoadVars.prototype.hasOwnProperty('send') [LoadVars.as:95]
+PASSED: typeof(loadvarsObj.send) == 'function' [LoadVars.as:96]
+PASSED: LoadVars.prototype.hasOwnProperty('sendAndLoad') [LoadVars.as:99]
+PASSED: typeof(loadvarsObj.sendAndLoad) == 'function' [LoadVars.as:100]
+PASSED: LoadVars.prototype.hasOwnProperty('toString') [LoadVars.as:103]
+PASSED: typeof(loadvarsObj.toString) == 'function' [LoadVars.as:104]
+PASSED: !LoadVars.prototype.hasOwnProperty('valueOf') [LoadVars.as:107]
+PASSED: loadvarsObj.valueOf == Object.prototype.valueOf [LoadVars.as:108]
+PASSED: typeof(loadvarsObj.valueOf) == 'function' [LoadVars.as:109]
+PASSED: LoadVars.prototype.hasOwnProperty('onData') [LoadVars.as:112]
+PASSED: typeof(loadvarsObj.onData) == 'function' [LoadVars.as:113]
+PASSED: LoadVars.prototype.hasOwnProperty('onLoad') [LoadVars.as:116]
+PASSED: typeof(loadvarsObj.onLoad) == 'function' [LoadVars.as:117]
+PASSED: !LoadVars.prototype.hasOwnProperty('loaded') [LoadVars.as:120]
+PASSED: typeof(loadvarsObj.loaded) == 'undefined' [LoadVars.as:121]
+PASSED: loadvarsObj instanceOf LoadVars [LoadVars.as:205]
+PASSED: loadvarsObj.load( MEDIA(vars.txt) ) [LoadVars.as:207]
+PASSED: typeof(this.loaded) == 'undefined' [LoadVars.as:208]
+PASSED: loadvarsObj.loaded == false [LoadVars.as:211]
+PASSED: varsloaded == 0 [LoadVars.as:214]
+PASSED: loadvarsObj['var1'] == 'previous val1' [LoadVars.as:215]
+PASSED: loadvarsObj['var2'] == undefined [LoadVars.as:216]
+PASSED: this == loadvarsObj [LoadVars.as:177]
+PASSED: typeof(this.loaded) == 'boolean' [LoadVars.as:178]
+PASSED: this.loaded == false [LoadVars.as:179]
+PASSED: arguments.length == 1 [LoadVars.as:180]
+PASSED: typeof(src) == 'string' [LoadVars.as:181]
+PASSED: src.substr(0, 10) == 'var1=val1&' [LoadVars.as:182]
+PASSED: src.substr(loadvarsObj.getBytesTotal()-13) == 'var3=val3\n' [LoadVars.as:183]
+PASSED: datareceived == 0 [LoadVars.as:184]
+NOTE: LoadVars.onData called (1), byte loaded: 1126/1126
+NOTE: LoadVars.onLoad called 1. Bytes loaded: 1126/1126
+PASSED: loadvarsObj.getBytesTotal() == loadvarsObj.getBytesLoaded() [LoadVars.as:139]
+PASSED: loadvarsObj.getBytesLoaded() > 10 [LoadVars.as:140]
+PASSED: this == loadvarsObj [LoadVars.as:141]
+PASSED: arguments.length == 1 [LoadVars.as:142]
+PASSED: typeof(success) == 'boolean' [LoadVars.as:143]
+PASSED: success == true [LoadVars.as:144]
+PASSED: this.loaded == success [LoadVars.as:145]
+PASSED: typeof(this.loaded) == 'boolean' [LoadVars.as:146]
+PASSED: typeof(this.loaded) == 'number' [LoadVars.as:148]
+PASSED: varsloaded < 3 [LoadVars.as:150]
+PASSED: loadvarsObj.getBytesLoaded() == loadvarsObj.getBytesTotal() [LoadVars.as:153]
+PASSED: loadvarsObj['var1'] == 'val1' [LoadVars.as:159]
+PASSED: loadvarsObj['var2'] == 'val2' [LoadVars.as:161]
+PASSED: loadvarsObj['var3'] == 'val3\n' [LoadVars.as:166]
+check_totals: 72
diff --git a/test/gnash/actionscript.all/pending/LoadVars.as b/test/gnash/actionscript.all/pending/LoadVars.as
new file mode 100644
index 0000000..8662da9
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/LoadVars.as
@@ -0,0 +1,222 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+
+// Test case for LoadVars ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: LoadVars.as,v 1.29 2008/04/16 23:07:15 strk Exp $";
+#include "check.as"
+
+#if OUTPUT_VERSION < 6
+
+xcheck_equals(typeof(LoadVars), 'function');
+
+var loadvarsObj = new LoadVars;
+
+// test the LoadVars constuctor
+xcheck_equals (typeof(loadvarsObj), 'object');
+
+check_totals(2);
+
+#else // OUTPUT_VERSION >= 6
+
+check_equals(typeof(LoadVars), 'function');
+
+var loadvarsObj = new LoadVars;
+
+// test the LoadVars constuctor
+check_equals (typeof(loadvarsObj), 'object');
+
+// test the LoadVars::addrequestheader method
+check (LoadVars.prototype.hasOwnProperty('addRequestHeader'));
+check_equals (typeof(loadvarsObj.addRequestHeader), 'function');
+
+// test the LoadVars::decode method
+check (LoadVars.prototype.hasOwnProperty('decode'));
+check_equals (typeof(loadvarsObj.decode), 'function');
+ret = loadvarsObj.decode("ud3=3&ud2=2");
+check_equals(typeof(ret), 'undefined');
+check_equals (loadvarsObj.ud3, 3);
+check_equals (loadvarsObj.ud2, 2);
+loadvarsObj.decode("ud4=4&ud2=20");
+check_equals (loadvarsObj.ud4, 4);
+check_equals (loadvarsObj.ud3, 3);
+check_equals (loadvarsObj.ud2, 20);
+ret = loadvarsObj.decode();
+check_equals( typeof(ret), 'boolean');
+check_equals( ret, false );
+ret = loadvarsObj.decode("");
+check_equals( typeof(ret), 'undefined');
+o = {};
+ret = loadvarsObj.decode(o);
+check_equals( typeof(ret), 'undefined');
+o.toString = function() { return "ud5=5"; };
+ret = loadvarsObj.decode(o);
+check_equals( typeof(ret), 'undefined');
+check_equals (loadvarsObj.ud5, 5);
+bomstarting="ud6=6&ud7=7";
+ret = loadvarsObj.decode(bomstarting);
+check_equals( typeof(ret), 'undefined');
+check_equals (loadvarsObj.ud6, undefined);
+check_equals (loadvarsObj['ud6'], 6);
+check_equals (loadvarsObj.ud7, 7);
+
+// test the LoadVars::getbytesloaded method
+check (LoadVars.prototype.hasOwnProperty('getBytesLoaded'));
+check_equals (typeof(loadvarsObj.getBytesLoaded), 'function');
+
+// test the LoadVars::getbytestotal method
+check (LoadVars.prototype.hasOwnProperty('getBytesTotal'));
+check_equals (typeof(loadvarsObj.getBytesTotal), 'function');
+
+// test the LoadVars::load method
+check (LoadVars.prototype.hasOwnProperty('load'));
+check_equals (typeof(loadvarsObj.load), 'function');
+
+// test the LoadVars::send method
+check (LoadVars.prototype.hasOwnProperty('send'));
+check_equals (typeof(loadvarsObj.send), 'function');
+
+// test the LoadVars::sendandload method
+check (LoadVars.prototype.hasOwnProperty('sendAndLoad'));
+check_equals (typeof(loadvarsObj.sendAndLoad), 'function');
+
+// test the LoadVars::tostring method
+check (LoadVars.prototype.hasOwnProperty('toString'));
+check_equals (typeof(loadvarsObj.toString), 'function');
+
+// test the LoadVars::tostring method
+check (!LoadVars.prototype.hasOwnProperty('valueOf'));
+check_equals (loadvarsObj.valueOf, Object.prototype.valueOf);
+check_equals (typeof(loadvarsObj.valueOf), 'function');
+
+// test the LoadVars::onData method
+check (LoadVars.prototype.hasOwnProperty('onData'));
+check_equals (typeof(loadvarsObj.onData), 'function');
+
+// test the LoadVars::onLoad method
+check (LoadVars.prototype.hasOwnProperty('onLoad'));
+check_equals (typeof(loadvarsObj.onLoad), 'function');
+
+// test the LoadVars::loaded member
+check (!LoadVars.prototype.hasOwnProperty('loaded'));
+check_equals (typeof(loadvarsObj.loaded), 'undefined');
+
+//--------------------------------------------------------------------------
+// Test LoadVars::load()
+//--------------------------------------------------------------------------
+
+varsloaded = 0;
+datareceived = 0;
+//var1 = undefined;
+//var2 = undefined;
+loadvarsObj.onLoad = function(success) {
+	varsloaded++;
+	note("LoadVars.onLoad called "+varsloaded+". "
+		+"Bytes loaded: "+loadvarsObj.getBytesLoaded()
+		+"/"+loadvarsObj.getBytesTotal());
+
+	//delete loadvarsObj; // this to test robustness
+
+	check_equals (loadvarsObj.getBytesTotal(), loadvarsObj.getBytesLoaded());
+	check (loadvarsObj.getBytesLoaded() > 10);
+	check_equals (this, loadvarsObj);
+	check_equals(arguments.length, 1);
+	check_equals(typeof(success), 'boolean');
+	check_equals(success, true);
+	check_equals(this.loaded, success);
+	check_equals(typeof(this.loaded), 'boolean');
+	this.loaded = 5;
+	check_equals(typeof(this.loaded), 'number');
+
+	check(varsloaded < 3);
+
+	// onLoad is called after all vars have been called
+	check_equals( loadvarsObj.getBytesLoaded(), loadvarsObj.getBytesTotal() );
+
+	//for (var i in _root) { note("_root["+i+"] = "+_root[i]); }
+
+	if ( varsloaded == 1 )
+	{
+		check_equals(loadvarsObj['var1'], 'val1');
+		//check_equals(loadvarsObj['var1_check'], 'previous val1');
+		check_equals(loadvarsObj['var2'], 'val2');
+		//check_equals(loadvarsObj['v2_var1'], 'val1');
+		//check_equals(loadvarsObj['v2_var2'], 'val2');
+
+		// Gnash insists in looking for an ending & char !!		
+		check_equals(loadvarsObj['var3'], 'val3\n');
+
+		check_totals(72);
+
+		play();
+	}
+};
+
+// onData is called once with full parsed content.
+loadvarsObj.onDataReal = loadvarsObj.onData;
+loadvarsObj.onData = function(src) {
+	check_equals (this, loadvarsObj);
+	check_equals(typeof(this.loaded), 'boolean');
+	check_equals(this.loaded, false);
+	check_equals(arguments.length, 1);
+	check_equals(typeof(src), 'string');
+	check_equals(src.substr(0, 10), 'var1=val1&');
+	check_equals(src.substr(loadvarsObj.getBytesTotal()-13), 'var3=val3\n');
+	check_equals(datareceived, 0);
+	datareceived++; // we expecte it to be called only once ?
+	note("LoadVars.onData called ("+datareceived+"), byte loaded: "
+		+loadvarsObj.getBytesLoaded()
+		+"/"+loadvarsObj.getBytesTotal());
+	this.onDataReal(src);
+	//check_equals(loadvarsObj['var1'], 'val1');
+	//check_equals(loadvarsObj['var2'], 'val2');
+	//for (var i in _root) { note("_root["+i+"] = "+_root[i]); }
+	//play();
+};
+
+loadvarsObj.var1 = "previous val1";
+
+// We expect the loaded file to return this string:
+//
+// 	"var1=val1&var2=val2&"
+//
+// The final '&' char is important, and it must
+// not start with a '?' char.
+// 
+check( loadvarsObj instanceOf LoadVars );
+//check( loadvarsObj.sendAndLoad( 'http://localhost/vars.php', loadvarsObj ) );
+check( loadvarsObj.load( MEDIA(vars.txt) ) );
+check_equals(typeof(this.loaded), 'undefined');
+//loadvarsObj.load( 'vars.cgi' );
+
+check_equals( loadvarsObj.loaded, false );
+//loadvars.Obj.loaded = true;
+//check_equals( loadvarsObj.loaded, false );
+check_equals(varsloaded, 0);
+check_equals(loadvarsObj['var1'], 'previous val1'); // will be overridden
+check_equals(loadvarsObj['var2'], undefined);
+//delete loadvarsObj; // this to test robustness
+
+stop();
+
+#endif //  OUTPUT_VERSION >= 6
+
diff --git a/test/gnash/actionscript.all/pending/LocalConnection-5.swf b/test/gnash/actionscript.all/pending/LocalConnection-5.swf
new file mode 100644
index 0000000..34290fc
Binary files /dev/null and b/test/gnash/actionscript.all/pending/LocalConnection-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/LocalConnection-5.swf.trace b/test/gnash/actionscript.all/pending/LocalConnection-5.swf.trace
new file mode 100644
index 0000000..09bb5e4
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/LocalConnection-5.swf.trace
@@ -0,0 +1,2 @@
+PASSED: LocalConnection == undefined [LocalConnection.as:31]
+totals
diff --git a/test/gnash/actionscript.all/pending/LocalConnection-6.swf b/test/gnash/actionscript.all/pending/LocalConnection-6.swf
new file mode 100644
index 0000000..89cd5eb
Binary files /dev/null and b/test/gnash/actionscript.all/pending/LocalConnection-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/LocalConnection-6.swf.trace b/test/gnash/actionscript.all/pending/LocalConnection-6.swf.trace
new file mode 100644
index 0000000..4b47977
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/LocalConnection-6.swf.trace
@@ -0,0 +1,23 @@
+XPASSED: LocalConnection.prototype.hasOwnProperty("send") [LocalConnection.as:36]
+XPASSED: LocalConnection.prototype.hasOwnProperty("connect") [LocalConnection.as:37]
+XPASSED: LocalConnection.prototype.hasOwnProperty("close") [LocalConnection.as:38]
+XPASSED: LocalConnection.prototype.hasOwnProperty("domain") [LocalConnection.as:39]
+PASSED: ! LocalConnection.prototype.hasOwnProperty("allowDomain") [LocalConnection.as:40]
+PASSED: ! LocalConnection.prototype.hasOwnProperty("onStatus") [LocalConnection.as:41]
+PASSED: typeof(rec) == 'object' [LocalConnection.as:46]
+PASSED: rec != snd [LocalConnection.as:51]
+PASSED: typeof(rec.close) == 'function' [LocalConnection.as:54]
+PASSED: typeof(rec.connect) == 'function' [LocalConnection.as:57]
+PASSED: typeof(rec.domain) == 'function' [LocalConnection.as:60]
+PASSED: typeof(rec.send) == 'function' [LocalConnection.as:63]
+PASSED: domain == "localhost" [LocalConnection.as:68]
+XPASSED: rec.domain() == "localhost" [LocalConnection.as:78]
+PASSED: result == true [LocalConnection.as:82]
+XPASSED: result == true [LocalConnection.as:86]
+XPASSED: result == false [LocalConnection.as:90]
+XPASSED: result == false [LocalConnection.as:92]
+XPASSED: result == false [LocalConnection.as:95]
+XPASSED: result == false [LocalConnection.as:98]
+XPASSED: result == true [LocalConnection.as:103]
+XPASSED: result == true [LocalConnection.as:106]
+totals
diff --git a/test/gnash/actionscript.all/pending/LocalConnection-7.swf b/test/gnash/actionscript.all/pending/LocalConnection-7.swf
new file mode 100644
index 0000000..252443d
Binary files /dev/null and b/test/gnash/actionscript.all/pending/LocalConnection-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/LocalConnection-7.swf.trace b/test/gnash/actionscript.all/pending/LocalConnection-7.swf.trace
new file mode 100644
index 0000000..4b47977
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/LocalConnection-7.swf.trace
@@ -0,0 +1,23 @@
+XPASSED: LocalConnection.prototype.hasOwnProperty("send") [LocalConnection.as:36]
+XPASSED: LocalConnection.prototype.hasOwnProperty("connect") [LocalConnection.as:37]
+XPASSED: LocalConnection.prototype.hasOwnProperty("close") [LocalConnection.as:38]
+XPASSED: LocalConnection.prototype.hasOwnProperty("domain") [LocalConnection.as:39]
+PASSED: ! LocalConnection.prototype.hasOwnProperty("allowDomain") [LocalConnection.as:40]
+PASSED: ! LocalConnection.prototype.hasOwnProperty("onStatus") [LocalConnection.as:41]
+PASSED: typeof(rec) == 'object' [LocalConnection.as:46]
+PASSED: rec != snd [LocalConnection.as:51]
+PASSED: typeof(rec.close) == 'function' [LocalConnection.as:54]
+PASSED: typeof(rec.connect) == 'function' [LocalConnection.as:57]
+PASSED: typeof(rec.domain) == 'function' [LocalConnection.as:60]
+PASSED: typeof(rec.send) == 'function' [LocalConnection.as:63]
+PASSED: domain == "localhost" [LocalConnection.as:68]
+XPASSED: rec.domain() == "localhost" [LocalConnection.as:78]
+PASSED: result == true [LocalConnection.as:82]
+XPASSED: result == true [LocalConnection.as:86]
+XPASSED: result == false [LocalConnection.as:90]
+XPASSED: result == false [LocalConnection.as:92]
+XPASSED: result == false [LocalConnection.as:95]
+XPASSED: result == false [LocalConnection.as:98]
+XPASSED: result == true [LocalConnection.as:103]
+XPASSED: result == true [LocalConnection.as:106]
+totals
diff --git a/test/gnash/actionscript.all/pending/LocalConnection-8.swf b/test/gnash/actionscript.all/pending/LocalConnection-8.swf
new file mode 100644
index 0000000..1693c4c
Binary files /dev/null and b/test/gnash/actionscript.all/pending/LocalConnection-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/LocalConnection-8.swf.trace b/test/gnash/actionscript.all/pending/LocalConnection-8.swf.trace
new file mode 100644
index 0000000..4b47977
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/LocalConnection-8.swf.trace
@@ -0,0 +1,23 @@
+XPASSED: LocalConnection.prototype.hasOwnProperty("send") [LocalConnection.as:36]
+XPASSED: LocalConnection.prototype.hasOwnProperty("connect") [LocalConnection.as:37]
+XPASSED: LocalConnection.prototype.hasOwnProperty("close") [LocalConnection.as:38]
+XPASSED: LocalConnection.prototype.hasOwnProperty("domain") [LocalConnection.as:39]
+PASSED: ! LocalConnection.prototype.hasOwnProperty("allowDomain") [LocalConnection.as:40]
+PASSED: ! LocalConnection.prototype.hasOwnProperty("onStatus") [LocalConnection.as:41]
+PASSED: typeof(rec) == 'object' [LocalConnection.as:46]
+PASSED: rec != snd [LocalConnection.as:51]
+PASSED: typeof(rec.close) == 'function' [LocalConnection.as:54]
+PASSED: typeof(rec.connect) == 'function' [LocalConnection.as:57]
+PASSED: typeof(rec.domain) == 'function' [LocalConnection.as:60]
+PASSED: typeof(rec.send) == 'function' [LocalConnection.as:63]
+PASSED: domain == "localhost" [LocalConnection.as:68]
+XPASSED: rec.domain() == "localhost" [LocalConnection.as:78]
+PASSED: result == true [LocalConnection.as:82]
+XPASSED: result == true [LocalConnection.as:86]
+XPASSED: result == false [LocalConnection.as:90]
+XPASSED: result == false [LocalConnection.as:92]
+XPASSED: result == false [LocalConnection.as:95]
+XPASSED: result == false [LocalConnection.as:98]
+XPASSED: result == true [LocalConnection.as:103]
+XPASSED: result == true [LocalConnection.as:106]
+totals
diff --git a/test/gnash/actionscript.all/pending/LocalConnection.as b/test/gnash/actionscript.all/pending/LocalConnection.as
new file mode 100644
index 0000000..fb7f000
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/LocalConnection.as
@@ -0,0 +1,114 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for LocalConnection ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+// We need more than one frame to test the connection properly.
+
+rcsid="$Id: LocalConnection.as,v 1.21 2008/05/05 15:26:38 bwy Exp $";
+#include "check.as"
+
+#if OUTPUT_VERSION < 6
+
+check_equals(LocalConnection, undefined);
+totals(1);
+
+#else // OUTPUT_VERSION >= 6
+
+xcheck (LocalConnection.prototype.hasOwnProperty("send"));
+xcheck (LocalConnection.prototype.hasOwnProperty("connect"));
+xcheck (LocalConnection.prototype.hasOwnProperty("close"));
+xcheck (LocalConnection.prototype.hasOwnProperty("domain"));
+check (! LocalConnection.prototype.hasOwnProperty("allowDomain"));
+check (! LocalConnection.prototype.hasOwnProperty("onStatus"));
+
+var rec = new LocalConnection();
+
+// test the LocalConnection constuctor
+check_equals (typeof(rec), 'object');
+
+var snd = new LocalConnection();
+
+// Not sure if this is a sensible test.
+check(rec != snd);
+
+// test the LocalConnection::close method
+check_equals (typeof(rec.close), 'function');
+
+// test the LocalConnection::connect method
+check_equals (typeof(rec.connect), 'function');
+
+// test the LocalConnection::domain method
+check_equals (typeof(rec.domain), 'function');
+
+// test the LocalConnection::send method
+check_equals (typeof(rec.send), 'function');
+
+// Get the domain. By default this should be "localhost" because we
+// haven't made any connections yet,
+var domain = rec.domain();
+check_equals (domain, "localhost");
+
+// If the listen() times out waiting for a connection, it'll set the
+// main socket file descriptor to an error condition, although the
+// initial file descriptor returned by bind is still fine, since we
+// could always (in a normal application) check later for incoming
+// connections.
+
+rec.close();
+result = rec.connect("lc_test");
+xcheck_equals (rec.domain(), "localhost");
+
+// NOTE: This test will fail if a shared memory segment of the same
+// name exists. So the first time it'll pass, then it'll fail.
+check_equals (result, true);
+
+// Checks only for syntactical correctness, not success
+result = snd.send("lc_test", "testfunc", "val");
+xcheck_equals (result, true);
+
+// The function name may not be send or any other LC property.
+result = snd.send("lc_test", "send");
+xcheck_equals (result, false);
+result = snd.send("lc_test", "onStatus");
+xcheck_equals (result, false);
+// Numbers are also bad
+result = snd.send("lc_test", 1);
+xcheck_equals (result, false);
+// undefined
+result = snd.send("lc_test", funcname);
+xcheck_equals (result, false);
+
+
+// But anything else is fine.
+result = snd.send("lc_test", "getSeconds");
+xcheck_equals (result, true);
+funcname = "onFullScreen";
+result = snd.send("lc_test", funcname);
+xcheck_equals (result, true);
+
+rec.close();
+
+totals(22);
+
+#endif // OUTPUT_VERSION >= 6
+
+
diff --git a/test/gnash/actionscript.all/pending/Matrix-5.swf b/test/gnash/actionscript.all/pending/Matrix-5.swf
new file mode 100644
index 0000000..5434f1c
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Matrix-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/Matrix-5.swf.trace b/test/gnash/actionscript.all/pending/Matrix-5.swf.trace
new file mode 100644
index 0000000..df1259f
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Matrix-5.swf.trace
@@ -0,0 +1,2 @@
+PASSED: typeof(flash) == 'undefined' [Matrix.as:37]
+check_totals: 1
diff --git a/test/gnash/actionscript.all/pending/Matrix-6.swf b/test/gnash/actionscript.all/pending/Matrix-6.swf
new file mode 100644
index 0000000..3a9469e
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Matrix-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/Matrix-6.swf.trace b/test/gnash/actionscript.all/pending/Matrix-6.swf.trace
new file mode 100644
index 0000000..df1259f
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Matrix-6.swf.trace
@@ -0,0 +1,2 @@
+PASSED: typeof(flash) == 'undefined' [Matrix.as:37]
+check_totals: 1
diff --git a/test/gnash/actionscript.all/pending/Matrix-7.swf b/test/gnash/actionscript.all/pending/Matrix-7.swf
new file mode 100644
index 0000000..f0c2f0d
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Matrix-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/Matrix-7.swf.trace b/test/gnash/actionscript.all/pending/Matrix-7.swf.trace
new file mode 100644
index 0000000..df1259f
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Matrix-7.swf.trace
@@ -0,0 +1,2 @@
+PASSED: typeof(flash) == 'undefined' [Matrix.as:37]
+check_totals: 1
diff --git a/test/gnash/actionscript.all/pending/Matrix-8.swf b/test/gnash/actionscript.all/pending/Matrix-8.swf
new file mode 100644
index 0000000..4049c6d
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Matrix-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/Matrix-8.swf.trace b/test/gnash/actionscript.all/pending/Matrix-8.swf.trace
new file mode 100644
index 0000000..921c0f9
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Matrix-8.swf.trace
@@ -0,0 +1,163 @@
+PASSED: typeof(Matrix) == 'function' [Matrix.as:44]
+PASSED: typeof(Matrix.prototype) == 'object' [Matrix.as:45]
+PASSED: Matrix.prototype.hasOwnProperty('identity') [Matrix.as:46]
+PASSED: Matrix.prototype.hasOwnProperty('rotate') [Matrix.as:47]
+PASSED: Matrix.prototype.hasOwnProperty('concat') [Matrix.as:48]
+PASSED: Matrix.prototype.hasOwnProperty('translate') [Matrix.as:49]
+PASSED: Matrix.prototype.hasOwnProperty('scale') [Matrix.as:50]
+PASSED: Matrix.prototype.hasOwnProperty('transformPoint') [Matrix.as:51]
+PASSED: Matrix.prototype.hasOwnProperty('deltaTransformPoint') [Matrix.as:52]
+PASSED: Matrix.prototype.hasOwnProperty('createBox') [Matrix.as:53]
+PASSED: Matrix.prototype.hasOwnProperty('clone') [Matrix.as:54]
+PASSED: Matrix.prototype.hasOwnProperty('createGradientBox') [Matrix.as:55]
+PASSED: Matrix.prototype.hasOwnProperty('invert') [Matrix.as:56]
+PASSED: Matrix.prototype.hasOwnProperty('toString') [Matrix.as:57]
+PASSED: !Matrix.prototype.hasOwnProperty('a') [Matrix.as:58]
+PASSED: !Matrix.prototype.hasOwnProperty('b') [Matrix.as:59]
+PASSED: !Matrix.prototype.hasOwnProperty('c') [Matrix.as:60]
+PASSED: !Matrix.prototype.hasOwnProperty('d') [Matrix.as:61]
+PASSED: !Matrix.prototype.hasOwnProperty('tx') [Matrix.as:62]
+PASSED: !Matrix.prototype.hasOwnProperty('ty') [Matrix.as:63]
+PASSED: typeof(m) == 'object' [Matrix.as:70]
+PASSED: m instanceof Matrix [Matrix.as:71]
+PASSED: m.hasOwnProperty('a') [Matrix.as:72]
+PASSED: m.hasOwnProperty('b') [Matrix.as:73]
+PASSED: m.hasOwnProperty('c') [Matrix.as:74]
+PASSED: m.hasOwnProperty('d') [Matrix.as:75]
+PASSED: m.hasOwnProperty("tx") [Matrix.as:76]
+PASSED: m.hasOwnProperty("ty") [Matrix.as:77]
+PASSED: m.a == 1 [Matrix.as:79]
+PASSED: m.b == 0 [Matrix.as:80]
+PASSED: m.c == 0 [Matrix.as:81]
+PASSED: m.d == 1 [Matrix.as:82]
+PASSED: m.tx == 0 [Matrix.as:83]
+PASSED: m.ty == 0 [Matrix.as:84]
+PASSED: m.toString() == "(a=1, b=0, c=0, d=1, tx=0, ty=0)" [Matrix.as:86]
+PASSED: m.b == "5.4" [Matrix.as:89]
+PASSED: m.c == "4.548759874" [Matrix.as:92]
+PASSED: m.toString() == "(a=4.10203808667724, b=-3.65147689783865, c=-1.49969051027619, d=-4.40932475155777, tx=0, ty=0)" [Matrix.as:97]
+PASSED: m.a < 4.1020381 && m.a > 4.1020379 [Matrix.as:98]
+PASSED: m.b < -3.6514768 && m.b > -3.6514769 [Matrix.as:99]
+PASSED: m.c < -1.49969051 && m.c > -1.49969052 [Matrix.as:100]
+PASSED: m.d < -4.40932475 && m.d > -4.40932476 [Matrix.as:101]
+PASSED: m.tx == 0 [Matrix.as:102]
+PASSED: m.ty == 0 [Matrix.as:103]
+PASSED: fakematrix.a.toString() == 1 [Matrix.as:109]
+PASSED: fakematrix.b.toString() == 1 [Matrix.as:110]
+PASSED: fakematrix.c.toString() == 1 [Matrix.as:111]
+PASSED: fakematrix.d.toString() == 1 [Matrix.as:112]
+PASSED: fakematrix.tx.toString() == 5 [Matrix.as:113]
+PASSED: fakematrix.ty.toString() == 5 [Matrix.as:114]
+PASSED: m.toString() == "(a=-1406.99906373029, b=-1.23693717839177, c=514.393845024734, d=-1.49365801000499, tx=0, ty=0)" [Matrix.as:117]
+PASSED: m.toString() == "(a=-1406.99906373029, b=-1.23693717839177, c=514.393845024734, d=-1.49365801000499, tx=333, ty=-283747.22)" [Matrix.as:120]
+PASSED: fakematrix.tx.toString() == 205 [Matrix.as:126]
+PASSED: fakematrix.ty.toString() == 405 [Matrix.as:127]
+PASSED: m.a < -6.7518325360784e+107 && m.a > -6.7518325360786e+107 [Matrix.as:133]
+PASSED: m.c.toString() == "2.46844592063091e+107" [Matrix.as:134]
+PASSED: m.tx.toString() == "1.597982751e+107" [Matrix.as:135]
+PASSED: m.b.toString() == "-0.419012258900892" [Matrix.as:137]
+PASSED: m.d.toString() == "-0.505976396967328" [Matrix.as:138]
+PASSED: m.ty.toString() == "-96119.3225379726" [Matrix.as:139]
+PASSED: m.a.toString() == "-1.888016310255e+107" [Matrix.as:145]
+PASSED: m.b.toString() == "6.48248694618508e+107" [Matrix.as:146]
+PASSED: m.c.toString() == "6.9025203664787e+106" [Matrix.as:147]
+PASSED: m.d.toString() == "-2.36997413255563e+107" [Matrix.as:148]
+PASSED: m.tx < 4.46844242844097e+106 && m.tx > 4.46844242844095e+106 [Matrix.as:149]
+PASSED: m.ty.toString() == "-1.53423567131344e+107" [Matrix.as:150]
+PASSED: m1.toString() == "(a=8, b=undefined, c=undefined, d=undefined, tx=undefined, ty=undefined)" [Matrix.as:154]
+PASSED: m1.toString() == "(a=1, b=2, c=3, d=4, tx=5, ty=6)" [Matrix.as:157]
+PASSED: m1.toString() == "(a=32, b=-6.8, c=96, d=-13.6, tx=160, ty=-20.4)" [Matrix.as:160]
+PASSED: m2.a == -1 [Matrix.as:167]
+PASSED: m2.b < 0.00000000001 && m2.b > -0.000000000001 [Matrix.as:168]
+PASSED: m2.c < 0.00000000001 && m2.c > -0.000000000001 [Matrix.as:169]
+PASSED: m2.d == -1 [Matrix.as:170]
+PASSED: m2.tx == 0 [Matrix.as:171]
+PASSED: m2.ty == 0 [Matrix.as:172]
+PASSED: m2.b < 0.96355819 && m2.b > 0.96355818 [Matrix.as:178]
+PASSED: m2.c < -0.96355818 && m2.c > -0.96355819 [Matrix.as:179]
+PASSED: m2.d < 0.26749883 && m2.d > 0.26749881 [Matrix.as:180]
+PASSED: m2.tx == 0 [Matrix.as:181]
+PASSED: m2.ty == 0 [Matrix.as:182]
+PASSED: typeof(newP) == "object" [Matrix.as:191]
+PASSED: newP.toString() == "(x=31.2567984378314, y=26.6085052458191)" [Matrix.as:192]
+PASSED: typeof(newP2) == "object" [Matrix.as:196]
+PASSED: newP2 instanceof Point [Matrix.as:197]
+PASSED: newP.toString() == newP2.toString() [Matrix.as:198]
+PASSED: m3.toString() == "(a=6, b=0, c=0, d=8, tx=300, ty=400)" [Matrix.as:206]
+PASSED: fakematrix.a.toString() == "3" [Matrix.as:213]
+PASSED: fakematrix.b.toString() == "2" [Matrix.as:214]
+PASSED: fakematrix.c.toString() == "5" [Matrix.as:215]
+PASSED: fakematrix.d.toString() == "3" [Matrix.as:216]
+PASSED: fakematrix.tx.toString() == "5" [Matrix.as:217]
+PASSED: fakematrix.ty.toString() == "5" [Matrix.as:218]
+PASSED: fakematrix.toString() == "(a=3, b=2, c=5, d=3, tx=5, ty=5)" [Matrix.as:220]
+PASSED: m4.toString() == "(a=6, b=0, c=0, d=8, tx=300, ty=400)" [Matrix.as:224]
+PASSED: r.toString() == "(a=3, b=2, c=5, d=3, tx=5, ty=5)" [Matrix.as:231]
+PASSED: r instanceof Matrix [Matrix.as:232]
+PASSED: m3.toString() == "(a=0.166666666666667, b=0, c=0, d=0.125, tx=-50, ty=-50)" [Matrix.as:237]
+PASSED: m6.toString() == "(a=4, b=5, c=44, d=55, tx=2, ty=4)" [Matrix.as:241]
+PASSED: m6.toString() == "(a=1, b=0, c=0, d=1, tx=0, ty=0)" [Matrix.as:243]
+XPASSED: fakematrix.tx.toString() == "NaN" [Matrix.as:249]
+PASSED: fakematrix.a.toString() == -3 [Matrix.as:250]
+PASSED: m6.toString() == "(a=4, b=5, c=0, d=5, tx=2, ty=3)" [Matrix.as:254]
+PASSED: m6.toString() == "(a=0.25, b=-0.25, c=0, d=0.2, tx=-0.5, ty=-0.1)" [Matrix.as:256]
+PASSED: m6.toString() == "(a=0.0995392558215424, b=-0.339252025123644, c=0.0958851077208406, d=0.175516512378075, tx=-0.486733834805607, ty=0.151954513113064)" [Matrix.as:258]
+PASSED: m6.toString() == "(a=3.51033024756149, b=6.78504050247288, c=-1.91770215441681, d=1.99078511643085, tx=2, ty=3)" [Matrix.as:260]
+PASSED: p2.toString() == "(x=-99.4441089756828, y=348.180517617807)" [Matrix.as:266]
+PASSED: p3.toString() == "(x=-101.444108975683, y=345.180517617807)" [Matrix.as:268]
+PASSED: p2.toString() == "(x=-1014.78819244077, y=21.420285172384)" [Matrix.as:270]
+PASSED: f instanceof Point [Matrix.as:276]
+PASSED: f.toString() == "(x=-2937.26315146039, y=-1965.31552936439)" [Matrix.as:277]
+PASSED: f instanceof Point [Matrix.as:281]
+PASSED: f.toString() == "(x=-2932.26315146039, y=-1960.31552936439)" [Matrix.as:282]
+PASSED: m3.b.toString() == "1" [Matrix.as:289]
+PASSED: m3.c.toString() == "-1" [Matrix.as:290]
+PASSED: m3.tx.toString() == "-2" [Matrix.as:291]
+PASSED: m3.ty.toString() == "2" [Matrix.as:292]
+PASSED: m5 == undefined [Matrix.as:296]
+PASSED: m3.a.toString() == "1" [Matrix.as:297]
+PASSED: m3.b.toString() == "0" [Matrix.as:298]
+PASSED: m3.c.toString() == "0" [Matrix.as:299]
+PASSED: m3.d.toString() == "1" [Matrix.as:300]
+PASSED: m3.tx.toString() == "0" [Matrix.as:301]
+PASSED: m3.ty.toString() == "0" [Matrix.as:302]
+PASSED: t.a == undefined [Matrix.as:305]
+PASSED: t.a.toString() == "1" [Matrix.as:308]
+PASSED: t.b.toString() == "0" [Matrix.as:309]
+PASSED: t.c.toString() == "0" [Matrix.as:310]
+PASSED: t.d.toString() == "1" [Matrix.as:311]
+PASSED: t.tx.toString() == "0" [Matrix.as:312]
+PASSED: t.ty.toString() == "0" [Matrix.as:313]
+PASSED: m4.toString() == "(a=192, b=-40.8, c=768, d=-108.8, tx=48160, ty=-7500.4)" [Matrix.as:317]
+PASSED: m4.toString() == "(a=90.6729490609422, b=174.089219392218, c=310.274230957074, d=710.908813846049, tx=20109.8154004632, ty=44398.6139954762)" [Matrix.as:320]
+PASSED: fakematrix.tx.toString() == 44 [Matrix.as:326]
+PASSED: fakematrix.a.toString() == 8 [Matrix.as:327]
+PASSED: "" + m7 == "(a=A string, b=undefined, c=[object Object], d=true, tx=NaN, ty=(x=0, y=0))" [Matrix.as:330]
+PASSED: m7.toString() == "(a=NaN, b=NaN, c=NaN, d=NaN, tx=NaN, ty=NaN)" [Matrix.as:333]
+PASSED: m8.toString() == "(a=5, b=4, c=5, d=3, tx=2, ty=1)" [Matrix.as:336]
+PASSED: m8.toString() == "(a=-2.61457448345445, b=-2.27040748592378, c=3.02720998123171, d=-1.96093086259084, tx=2, ty=3)" [Matrix.as:338]
+PASSED: m8.toString() == "(a=8.2022824555003, b=-436.562099487155, c=44.2461587318062, d=80.9291868942697, tx=-47, ty=-2999398)" [Matrix.as:340]
+PASSED: m8.toString() == "(a=NaN, b=NaN, c=NaN, d=NaN, tx=a string, ty=0)" [Matrix.as:342]
+PASSED: m8.toString() == "(a=NaN, b=NaN, c=NaN, d=NaN, tx=0, ty=0)" [Matrix.as:344]
+XPASSED: fakematrix.a.toString() == undefined [Matrix.as:351]
+XPASSED: fakematrix.b.toString() == undefined [Matrix.as:352]
+XPASSED: fakematrix.c.toString() == undefined [Matrix.as:353]
+XPASSED: fakematrix.d.toString() == undefined [Matrix.as:354]
+PASSED: fakematrix.tx.toString() == "2" [Matrix.as:355]
+PASSED: fakematrix.ty.toString() == "3" [Matrix.as:356]
+PASSED: m8.a.toString() == "0.01220703125" [Matrix.as:362]
+PASSED: m8.d.toString() == "0.018310546875" [Matrix.as:363]
+PASSED: m8.tx.toString() == "20" [Matrix.as:364]
+PASSED: m8.ty.toString() == "40" [Matrix.as:365]
+PASSED: Math.abs(m8.b) < 0.0000000000001 [Matrix.as:366]
+PASSED: Math.abs(m8.c) < 0.0000000000001 [Matrix.as:367]
+PASSED: m8.toString() == "(a=0.0244140625, b=0, c=0, d=0.0299072265625, tx=string20, ty=NaN)" [Matrix.as:371]
+PASSED: m8.toString() == "(a=0.0030517578125, b=0, c=0, d=0.003662109375, tx=3.5, ty=4)" [Matrix.as:373]
+PASSED: m8.toString() == "(a=-0.0012699793595799, b=0.00332994663144171, c=-0.00277495552620142, d=-0.00152397523149588, tx=3.5, ty=4)" [Matrix.as:375]
+PASSED: fakematrix.a.toString() == undefined [Matrix.as:382]
+PASSED: fakematrix.b.toString() == undefined [Matrix.as:383]
+PASSED: fakematrix.c.toString() == undefined [Matrix.as:384]
+PASSED: fakematrix.d.toString() == undefined [Matrix.as:385]
+PASSED: fakematrix.tx.toString() == undefined [Matrix.as:386]
+PASSED: fakematrix.ty.toString() == undefined [Matrix.as:387]
+totals
diff --git a/test/gnash/actionscript.all/pending/Matrix.as b/test/gnash/actionscript.all/pending/Matrix.as
new file mode 100644
index 0000000..9cf52ea
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Matrix.as
@@ -0,0 +1,399 @@
+// 
+//   Copyright (C) 2008 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+//
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+// Test case for TextFormat ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+rcsid="$Id: Matrix.as,v 1.11 2008/06/19 11:49:17 bwy Exp $";
+
+
+// There are lots of floating point calculations here. Comparing them
+// as a string means they are checked to the 15th significant digit, which
+// isn't always unreasonable. I've handled the ones that failed for me with
+// an epsilon; others may fail for other people - so please edit as necessary
+// - but it's good to be as accurate as possible.
+//
+// A ming bug up to version 0.4 beta 5 makes very large numbers fail.
+#include "check.as"
+
+#if OUTPUT_VERSION < 8
+
+check_equals(typeof(flash), 'undefined');
+
+check_totals(1);
+
+#else
+
+Matrix = flash.geom.Matrix;
+check_equals(typeof(Matrix), 'function');
+check_equals(typeof(Matrix.prototype), 'object');
+check(Matrix.prototype.hasOwnProperty('identity'));
+check(Matrix.prototype.hasOwnProperty('rotate'));
+check(Matrix.prototype.hasOwnProperty('concat'));
+check(Matrix.prototype.hasOwnProperty('translate'));
+check(Matrix.prototype.hasOwnProperty('scale'));
+check(Matrix.prototype.hasOwnProperty('transformPoint'));
+check(Matrix.prototype.hasOwnProperty('deltaTransformPoint'));
+check(Matrix.prototype.hasOwnProperty('createBox'));
+check(Matrix.prototype.hasOwnProperty('clone'));
+check(Matrix.prototype.hasOwnProperty('createGradientBox'));
+check(Matrix.prototype.hasOwnProperty('invert'));
+check(Matrix.prototype.hasOwnProperty('toString'));
+check(!Matrix.prototype.hasOwnProperty('a'));
+check(!Matrix.prototype.hasOwnProperty('b'));
+check(!Matrix.prototype.hasOwnProperty('c'));
+check(!Matrix.prototype.hasOwnProperty('d'));
+check(!Matrix.prototype.hasOwnProperty('tx'));
+check(!Matrix.prototype.hasOwnProperty('ty'));
+
+//-------------------------------------------------------------
+// Test constructor
+//-------------------------------------------------------------
+
+m = new Matrix();
+check_equals(typeof(m), 'object');
+check(m instanceof Matrix);
+check(m.hasOwnProperty('a'));
+check(m.hasOwnProperty('b'));
+check(m.hasOwnProperty('c'));
+check(m.hasOwnProperty('d'));
+check(m.hasOwnProperty("tx"));
+check(m.hasOwnProperty("ty"));
+
+check_equals(m.a, 1);
+check_equals(m.b, 0);
+check_equals(m.c, 0);
+check_equals(m.d, 1);
+check_equals(m.tx, 0);
+check_equals(m.ty, 0);
+
+check_equals (m.toString(), "(a=1, b=0, c=0, d=1, tx=0, ty=0)");
+
+m.b = 5.4;
+check_equals(m.b, "5.4");
+
+m.c = 4.548759874;
+check_equals(m.c, "4.548759874");
+
+m.rotate(67);
+// PP: (a=4.10203808667724, b=-3.65147689783865, c=-1.49969051027619, d=-4.40932475155777, tx=0, ty=0)
+// Some of these may be accurate enough:
+check_equals(m.toString(), "(a=4.10203808667724, b=-3.65147689783865, c=-1.49969051027619, d=-4.40932475155777, tx=0, ty=0)");
+check (m.a < 4.1020381 && m.a > 4.1020379);
+check (m.b < -3.6514768 && m.b > -3.6514769);
+check (m.c < -1.49969051 && m.c > -1.49969052);
+check (m.d < -4.40932475 && m.d > -4.40932476);
+check (m.tx == 0);
+check (m.ty == 0);
+
+// A non-matrix with a matrix's rotate method (fails?).
+fakematrix = {a:1, b:1, c: 1, d: 1, tx:5, ty: 5};
+fakematrix.rotate = Matrix.prototype.rotate;
+fakematrix.rotate(2);
+check_equals(fakematrix.a.toString(), 1);
+check_equals(fakematrix.b.toString(), 1);
+check_equals(fakematrix.c.toString(), 1);
+check_equals(fakematrix.d.toString(), 1);
+check_equals(fakematrix.tx.toString(), 5);
+check_equals(fakematrix.ty.toString(), 5);
+
+m.scale(-343, 0.33874983);
+check_equals (m.toString(), "(a=-1406.99906373029, b=-1.23693717839177, c=514.393845024734, d=-1.49365801000499, tx=0, ty=0)");
+
+m.translate(333,-283747.22);
+check_equals (m.toString(), "(a=-1406.99906373029, b=-1.23693717839177, c=514.393845024734, d=-1.49365801000499, tx=333, ty=-283747.22)");
+
+// A non-matrix with a matrix's translate method (works).
+fakematrix = {a:1, b:1, c: 1, d: 1, tx:5, ty: 5};
+fakematrix.translate = Matrix.prototype.translate;
+fakematrix.translate(200,400);
+check_equals(fakematrix.tx.toString(), 205);
+check_equals(fakematrix.ty.toString(), 405);
+
+m.scale(4798747e+98, 0.33874983);
+// PP: (a=-6.75183253607854e+107, b=-0.419012258900892, c=2.46844592063091e+107, d=-0.505976396967328, tx=1.597982751e+107, ty=-96119.3225379726)
+// I get one discrepancy in 'a' here.
+#if MING_VERSION_CODE > 00040005
+check(m.a < -6.7518325360784e+107 && m.a > -6.7518325360786e+107)
+check_equals(m.c.toString(), "2.46844592063091e+107");
+check_equals(m.tx.toString(), "1.597982751e+107");
+#endif
+check_equals(m.b.toString(), "-0.419012258900892");
+check_equals(m.d.toString(), "-0.505976396967328");
+check_equals(m.ty.toString(), "-96119.3225379726");
+
+m.rotate(-1.2873874);
+// PP: (a=-1.888016310255e+107, b=6.48248694618508e+107, c=6.9025203664787e+106, d=-2.36997413255563e+107, tx=4.46844242844096e+106, ty=-1.53423567131344e+107)
+// tx is slightly different for me.
+#if MING_VERSION_CODE > 00040005
+check_equals(m.a.toString(), "-1.888016310255e+107");
+check_equals(m.b.toString(), "6.48248694618508e+107");
+check_equals(m.c.toString(), "6.9025203664787e+106");
+check_equals(m.d.toString(), "-2.36997413255563e+107");
+check(m.tx < 4.46844242844097e+106 && m.tx > 4.46844242844095e+106)
+check_equals(m.ty.toString(), "-1.53423567131344e+107");
+#endif
+
+m1 = new Matrix(8);
+check_equals(m1.toString(), "(a=8, b=undefined, c=undefined, d=undefined, tx=undefined, ty=undefined)");
+
+m1 = new Matrix(1, 2, 3, 4, 5, 6);
+check_equals(m1.toString(), "(a=1, b=2, c=3, d=4, tx=5, ty=6)");
+
+m1.scale(32, -3.4);
+check_equals(m1.toString(), "(a=32, b=-6.8, c=96, d=-13.6, tx=160, ty=-20.4)");
+// Do not change m1; it's used later to test concat!
+
+m2 = new Matrix();
+m2.rotate(Math.PI);
+
+// PP: "(a=-1, b=1.22460635382238e-16, c=-1.22460635382238e-16, d=-1, tx=0, ty=0) ");
+check_equals (m2.a, -1);
+check (m2.b < 0.00000000001 && m2.b > -0.000000000001);
+check (m2.c < 0.00000000001 && m2.c > -0.000000000001);
+check (m2.d == -1);
+check (m2.tx == 0);
+check (m2.ty == 0);
+
+m2 = new Matrix();
+m2.rotate(1.3);
+
+//PP: (a=0.267498828624587, b=0.963558185417193, c=-0.963558185417193, d=0.267498828624587, tx=0, ty=0)
+check (m2.b < 0.96355819 && m2.b > 0.96355818);
+check (m2.c < -0.96355818 && m2.c > -0.96355819);
+check (m2.d < 0.26749883 && m2.d > 0.26749881);
+check (m2.tx == 0);
+check (m2.ty == 0);
+// Do not change m2 after this; it's used later to test concat!
+
+///
+/// Test deltaTransform of Point
+///
+Point = flash.geom.Point;
+p = new Point(34, -23);
+newP = m2.deltaTransformPoint(p);
+check_equals(typeof(newP), "object");
+check_equals(newP.toString(), "(x=31.2567984378314, y=26.6085052458191)");
+
+fakepoint = {x: 34, y: -23};
+newP2 = m2.deltaTransformPoint(fakepoint);
+check_equals(typeof(newP2), "object");
+check(newP2 instanceof Point);
+check_equals(newP.toString(), newP2.toString());
+
+
+
+
+// Scale
+m3 = new Matrix(2, 0, 0, 2, 100, 100);
+m3.scale(3, 4);
+check_equals(m3.toString(), "(a=6, b=0, c=0, d=8, tx=300, ty=400)");
+// Do not change m3; it is used to test invert!
+
+// A non-matrix with a matrix's invert method (fails?).
+fakematrix = {a:3, b:2, c: 5, d: 3, tx:5, ty: 5};
+fakematrix.scale = Matrix.prototype.scale;
+fakematrix.scale(4, 5);
+check_equals(fakematrix.a.toString(), "3");
+check_equals(fakematrix.b.toString(), "2");
+check_equals(fakematrix.c.toString(), "5");
+check_equals(fakematrix.d.toString(), "3");
+check_equals(fakematrix.tx.toString(), "5");
+check_equals(fakematrix.ty.toString(), "5");
+fakematrix.toString = Matrix.prototype.toString;
+check_equals(fakematrix.toString(), "(a=3, b=2, c=5, d=3, tx=5, ty=5)");
+
+// Test clone
+m4 = m3.clone();
+check_equals(m4.toString(), "(a=6, b=0, c=0, d=8, tx=300, ty=400)");
+// Do not change m4; it's used later to test concat!
+
+// A non-matrix with a matrix's invert method (works).
+fakematrix = {a:3, b:2, c: 5, d: 3, tx:5, ty: 5};
+fakematrix.clone = Matrix.prototype.clone;
+r = fakematrix.clone();
+check_equals(r.toString(), "(a=3, b=2, c=5, d=3, tx=5, ty=5)");
+check(r instanceof Matrix);
+
+
+// Test invert
+m3.invert();
+check_equals(m3.toString(), "(a=0.166666666666667, b=0, c=0, d=0.125, tx=-50, ty=-50)");
+
+// Invalid inverse
+m6 = new Matrix(4, 5, 44, 55, 2, 4);
+check_equals(m6.toString(), "(a=4, b=5, c=44, d=55, tx=2, ty=4)");
+m6.invert();
+check_equals(m6.toString(), "(a=1, b=0, c=0, d=1, tx=0, ty=0)");
+
+// A non-matrix with a matrix's invert method (half works).
+fakematrix = {a:3, b:2, c: 5, d: 3, tx:5, ty: 5};
+fakematrix.invert = Matrix.prototype.invert;
+fakematrix.invert();
+xcheck_equals(fakematrix.tx.toString(), "NaN");
+check_equals(fakematrix.a.toString(), -3);
+
+// Valid inverse2.
+m6 = new Matrix(4, 5, 0, 5, 2, 3);
+check_equals(m6.toString(), "(a=4, b=5, c=0, d=5, tx=2, ty=3)");
+m6.invert();
+check_equals(m6.toString(), "(a=0.25, b=-0.25, c=0, d=0.2, tx=-0.5, ty=-0.1)");
+m6.rotate(-0.5);
+check_equals(m6.toString(), "(a=0.0995392558215424, b=-0.339252025123644, c=0.0958851077208406, d=0.175516512378075, tx=-0.486733834805607, ty=0.151954513113064)");
+m6.invert();
+check_equals(m6.toString(), "(a=3.51033024756149, b=6.78504050247288, c=-1.91770215441681, d=1.99078511643085, tx=2, ty=3)");
+
+
+// Matrix.transformPoint (and deltaTransformPoint again)
+p = new Point(23, 95);
+p2 = m6.transformPoint(p);
+check_equals(p2.toString(), "(x=-99.4441089756828, y=348.180517617807)");
+p3 = m6.deltaTransformPoint(p);
+check_equals(p3.toString(), "(x=-101.444108975683, y=345.180517617807)");
+p2 = m6.transformPoint(p2);
+check_equals(p2.toString(), "(x=-1014.78819244077, y=21.420285172384)");
+
+// Transforming points with a fake matrix.
+fakematrix = {a:3, b:2, c: 5, d: 3, tx:5, ty: 5};
+fakematrix.deltaTransformPoint = Matrix.prototype.deltaTransformPoint;
+f = fakematrix.deltaTransformPoint(p2);
+check (f instanceof Point);
+check_equals (f.toString(), "(x=-2937.26315146039, y=-1965.31552936439)");
+
+fakematrix.transformPoint = Matrix.prototype.transformPoint;
+f = fakematrix.transformPoint(p2);
+check (f instanceof Point);
+check_equals (f.toString(), "(x=-2932.26315146039, y=-1960.31552936439)");
+
+
+// Rotation applies to translation
+m3 = new Matrix(1, 0, 0, 1, 2, 2);
+m3.rotate (Math.PI / 2);
+// PP: "(a=6.12303176911189e-17, b=1, c=-1, d=6.12303176911189e-17, tx=-2, ty=2)"
+check_equals(m3.b.toString(), "1");
+check_equals(m3.c.toString(), "-1");
+check_equals(m3.tx.toString(), "-2");
+check_equals(m3.ty.toString(), "2");
+
+m5 = m3.identity();
+/// identity() returns void.
+check_equals(m5, undefined);
+check_equals(m3.a.toString(), "1");
+check_equals(m3.b.toString(), "0");
+check_equals(m3.c.toString(), "0");
+check_equals(m3.d.toString(), "1");
+check_equals(m3.tx.toString(), "0");
+check_equals(m3.ty.toString(), "0");
+
+t = new Object();
+check_equals(t.a, undefined)
+t.identity = Matrix.prototype.identity;
+t.identity();
+check_equals(t.a.toString(), "1");
+check_equals(t.b.toString(), "0");
+check_equals(t.c.toString(), "0");
+check_equals(t.d.toString(), "1");
+check_equals(t.tx.toString(), "0");
+check_equals(t.ty.toString(), "0");
+
+// m4 is still interesting
+m4.concat(m1);
+check_equals(m4.toString(), "(a=192, b=-40.8, c=768, d=-108.8, tx=48160, ty=-7500.4)");
+m4.concat(m2);
+// Works for me.
+check_equals(m4.toString(), "(a=90.6729490609422, b=174.089219392218, c=310.274230957074, d=710.908813846049, tx=20109.8154004632, ty=44398.6139954762)");
+
+// A non-matrix with a matrix's concat method (works).
+fakematrix = {a:1, b:1, c: 1, d: 1, tx:5, ty: 5};
+fakematrix.concat = Matrix.prototype.concat;
+fakematrix.concat(new Matrix(4, 4, 4, 4, 4, 4));
+check_equals(fakematrix.tx.toString(), 44);
+check_equals(fakematrix.a.toString(), 8);
+
+m7 = new Matrix ("A string", undefined, new Object, true, NaN, new Point);
+check_equals("" + m7, "(a=A string, b=undefined, c=[object Object], d=true, tx=NaN, ty=(x=0, y=0))");
+
+m7.rotate(2);
+check_equals(m7.toString(), "(a=NaN, b=NaN, c=NaN, d=NaN, tx=NaN, ty=NaN)");
+
+m8 = new Matrix(5, 4, 5, 3, 2, 1);
+check_equals(m8.toString(), "(a=5, b=4, c=5, d=3, tx=2, ty=1)");
+m8.createBox(4, 3, 4, 2, 3);
+check_equals(m8.toString(), "(a=-2.61457448345445, b=-2.27040748592378, c=3.02720998123171, d=-1.96093086259084, tx=2, ty=3)");
+m8.createBox(45, 444, -1.3874987, -47, -2999398);
+check_equals(m8.toString(), "(a=8.2022824555003, b=-436.562099487155, c=44.2461587318062, d=80.9291868942697, tx=-47, ty=-2999398)");
+m8.createBox(4, 3, new Object(), "a string");
+check_equals(m8.toString(), "(a=NaN, b=NaN, c=NaN, d=NaN, tx=a string, ty=0)");
+m8.createBox("a", "b");
+check_equals(m8.toString(), "(a=NaN, b=NaN, c=NaN, d=NaN, tx=0, ty=0)");
+
+// A non-matrix with a matrix's createBox method (half works).
+delete fakematrix;
+fakematrix = new Object();
+fakematrix.createBox = Matrix.prototype.createBox;
+fakematrix.createBox(4, 3, 4, 2, 3);
+xcheck_equals(fakematrix.a.toString(), undefined);
+xcheck_equals(fakematrix.b.toString(), undefined);
+xcheck_equals(fakematrix.c.toString(), undefined);
+xcheck_equals(fakematrix.d.toString(), undefined);
+check_equals(fakematrix.tx.toString(), "2");
+check_equals(fakematrix.ty.toString(), "3");
+
+
+m8.createGradientBox(20, 30, 2 * Math.PI, 10, 25);
+
+// The very small numbers aren't very 'accurate', of course.
+check_equals(m8.a.toString(), "0.01220703125");
+check_equals(m8.d.toString(), "0.018310546875");
+check_equals(m8.tx.toString(), "20");
+check_equals(m8.ty.toString(), "40");
+check(Math.abs(m8.b) < 0.0000000000001);
+check(Math.abs(m8.c) < 0.0000000000001);
+
+m8.createGradientBox(40, 49, 0, "string", undefined);
+// Half of the width is added to the translation - they take that quite literally...
+check_equals(m8.toString(), "(a=0.0244140625, b=0, c=0, d=0.0299072265625, tx=string20, ty=NaN)");
+m8.createGradientBox(5, 6, 0, 1, 1);
+check_equals(m8.toString(), "(a=0.0030517578125, b=0, c=0, d=0.003662109375, tx=3.5, ty=4)");
+m8.createGradientBox(5, 6, 2, 1, 1);
+check_equals(m8.toString(), "(a=-0.0012699793595799, b=0.00332994663144171, c=-0.00277495552620142, d=-0.00152397523149588, tx=3.5, ty=4)");
+
+// A non-matrix with a matrix's createGradientBox method (fails).
+delete fakematrix;
+fakematrix = new Object();
+fakematrix.createGradientBox = Matrix.prototype.createGradientBox;
+fakematrix.createGradientBox(20, 30, 2 * Math.PI, 10, 25);
+check_equals(fakematrix.a.toString(), undefined);
+check_equals(fakematrix.b.toString(), undefined);
+check_equals(fakematrix.c.toString(), undefined);
+check_equals(fakematrix.d.toString(), undefined);
+check_equals(fakematrix.tx.toString(), undefined);
+check_equals(fakematrix.ty.toString(), undefined);
+
+
+//-------------------------------------------------------------
+// END OF TEST
+//-------------------------------------------------------------
+#if MING_VERSION_CODE > 00040005
+totals(162);
+#else
+totals(153);
+#endif
+
+#endif // OUTPUT_VERSION >= 8
diff --git a/test/gnash/actionscript.all/pending/Microphone-5.swf b/test/gnash/actionscript.all/pending/Microphone-5.swf
new file mode 100644
index 0000000..feff531
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Microphone-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/Microphone-5.swf.trace b/test/gnash/actionscript.all/pending/Microphone-5.swf.trace
new file mode 100644
index 0000000..abd55c7
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Microphone-5.swf.trace
@@ -0,0 +1 @@
+totals
diff --git a/test/gnash/actionscript.all/pending/Microphone-6.swf b/test/gnash/actionscript.all/pending/Microphone-6.swf
new file mode 100644
index 0000000..dc111b7
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Microphone-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/Microphone-6.swf.trace b/test/gnash/actionscript.all/pending/Microphone-6.swf.trace
new file mode 100644
index 0000000..4f01c2b
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Microphone-6.swf.trace
@@ -0,0 +1,84 @@
+PASSED: typeof(Microphone) == 'function' [Microphone.as:32]
+PASSED: typeof(Microphone.prototype.setGain) == 'function' [Microphone.as:33]
+PASSED: typeof(Microphone.prototype.setRate) == 'function' [Microphone.as:34]
+PASSED: typeof(Microphone.prototype.setSilenceLevel) == 'function' [Microphone.as:35]
+PASSED: typeof(Microphone.prototype.setUseEchoSuppression) == 'function' [Microphone.as:36]
+PASSED: Microphone.prototype.hasOwnProperty("setGain") [Microphone.as:39]
+PASSED: Microphone.prototype.hasOwnProperty("setRate") [Microphone.as:40]
+PASSED: Microphone.prototype.hasOwnProperty("setSilenceLevel") [Microphone.as:41]
+PASSED: Microphone.prototype.hasOwnProperty("setUseEchoSuppression") [Microphone.as:42]
+XPASSED: !Microphone.prototype.hasOwnProperty("get") [Microphone.as:45]
+PASSED: !Microphone.prototype.hasOwnProperty("activityLevel") [Microphone.as:46]
+PASSED: !Microphone.prototype.hasOwnProperty("gain") [Microphone.as:47]
+PASSED: !Microphone.prototype.hasOwnProperty("index") [Microphone.as:48]
+PASSED: !Microphone.prototype.hasOwnProperty("muted") [Microphone.as:49]
+PASSED: !Microphone.prototype.hasOwnProperty("name") [Microphone.as:50]
+PASSED: !Microphone.prototype.hasOwnProperty("names") [Microphone.as:51]
+PASSED: !Microphone.prototype.hasOwnProperty("onActivity") [Microphone.as:52]
+PASSED: !Microphone.prototype.hasOwnProperty("onStatus") [Microphone.as:53]
+PASSED: !Microphone.prototype.hasOwnProperty("rate") [Microphone.as:54]
+PASSED: !Microphone.prototype.hasOwnProperty("silenceLevel") [Microphone.as:55]
+PASSED: !Microphone.prototype.hasOwnProperty("silenceTimeOut") [Microphone.as:56]
+PASSED: !Microphone.prototype.hasOwnProperty("useEchoSuppression") [Microphone.as:57]
+PASSED: typeof(f) == 'object' [Microphone.as:63]
+PASSED: typeof(f.setGain) == 'function' [Microphone.as:64]
+PASSED: typeof(f.gain) == 'undefined' [Microphone.as:65]
+PASSED: typeof(f.rate) == 'undefined' [Microphone.as:66]
+XPASSED: !Microphone.prototype.hasOwnProperty("get") [Microphone.as:69]
+PASSED: !Microphone.prototype.hasOwnProperty("activityLevel") [Microphone.as:70]
+PASSED: !Microphone.prototype.hasOwnProperty("gain") [Microphone.as:71]
+PASSED: !Microphone.prototype.hasOwnProperty("index") [Microphone.as:72]
+PASSED: !Microphone.prototype.hasOwnProperty("muted") [Microphone.as:73]
+PASSED: !Microphone.prototype.hasOwnProperty("name") [Microphone.as:74]
+PASSED: !Microphone.prototype.hasOwnProperty("names") [Microphone.as:75]
+PASSED: !Microphone.prototype.hasOwnProperty("onActivity") [Microphone.as:76]
+PASSED: !Microphone.prototype.hasOwnProperty("onStatus") [Microphone.as:77]
+PASSED: !Microphone.prototype.hasOwnProperty("rate") [Microphone.as:78]
+PASSED: !Microphone.prototype.hasOwnProperty("silenceLevel") [Microphone.as:79]
+PASSED: !Microphone.prototype.hasOwnProperty("silenceTimeOut") [Microphone.as:80]
+PASSED: !Microphone.prototype.hasOwnProperty("useEchoSuppression") [Microphone.as:81]
+XPASSED: Microphone.hasOwnProperty("names") [Microphone.as:84]
+XPASSED: typeof (Microphone.names) == 'object' [Microphone.as:85]
+XPASSED: typeof(microphoneObj) == 'object' [Microphone.as:89]
+XPASSED: !Microphone.prototype.hasOwnProperty("get") [Microphone.as:94]
+XPASSED: Microphone.prototype.hasOwnProperty("activityLevel") [Microphone.as:95]
+XPASSED: Microphone.prototype.hasOwnProperty("gain") [Microphone.as:96]
+XPASSED: Microphone.prototype.hasOwnProperty("index") [Microphone.as:97]
+XPASSED: Microphone.prototype.hasOwnProperty("muted") [Microphone.as:98]
+XPASSED: Microphone.prototype.hasOwnProperty("name") [Microphone.as:99]
+XPASSED: Microphone.prototype.hasOwnProperty("rate") [Microphone.as:100]
+XPASSED: Microphone.prototype.hasOwnProperty("silenceLevel") [Microphone.as:101]
+XPASSED: Microphone.prototype.hasOwnProperty("useEchoSuppression") [Microphone.as:102]
+PASSED: microphoneObj == Microphone.get() [Microphone.as:105]
+PASSED: typeof(microphoneObj.get) == 'undefined' [Microphone.as:108]
+XPASSED: typeof(microphoneObj.setGain) == 'function' [Microphone.as:111]
+XPASSED: typeof(microphoneObj.setRate) == 'function' [Microphone.as:114]
+XPASSED: typeof(microphoneObj.setSilenceLevel) == 'function' [Microphone.as:117]
+XPASSED: typeof(microphoneObj.setUseEchoSuppression) == 'function' [Microphone.as:120]
+XPASSED: typeof(microphoneObj.activityLevel) == 'number' [Microphone.as:124]
+XPASSED: typeof(microphoneObj.gain) == 'number' [Microphone.as:125]
+XPASSED: typeof(microphoneObj.index) == 'number' [Microphone.as:126]
+XPASSED: typeof(microphoneObj.muted) == 'boolean' [Microphone.as:127]
+XPASSED: typeof(microphoneObj.name) == 'string' [Microphone.as:128]
+XPASSED: typeof(microphoneObj.rate) == 'number' [Microphone.as:129]
+XPASSED: typeof(microphoneObj.silenceTimeout) == 'number' [Microphone.as:130]
+XPASSED: typeof(microphoneObj.useEchoSuppression) == 'number' [Microphone.as:132]
+XPASSED: microphoneObj.activityLevel == -1 [Microphone.as:135]
+XPASSED: microphoneObj.gain == 50 [Microphone.as:136]
+XPASSED: microphoneObj.index == 0 [Microphone.as:137]
+XPASSED: microphoneObj.muted == true [Microphone.as:138]
+XPASSED: microphoneObj.rate == 8 [Microphone.as:139]
+XPASSED: microphoneObj.silenceTimeout == 2000 [Microphone.as:140]
+XPASSED: microphoneObj.gain == 5 [Microphone.as:146]
+XPASSED: microphoneObj.silenceLevel == 16 [Microphone.as:149]
+XPASSED: microphoneObj.rate == 5 [Microphone.as:154]
+XPASSED: microphoneObj.rate == 8 [Microphone.as:156]
+XPASSED: microphoneObj.rate == 11 [Microphone.as:158]
+XPASSED: microphoneObj.rate == 16 [Microphone.as:160]
+XPASSED: microphoneObj.rate == 22 [Microphone.as:162]
+XPASSED: microphoneObj.rate == 44 [Microphone.as:164]
+XPASSED: microphoneObj.rate == 44 [Microphone.as:166]
+XPASSED: microphoneObj.rate == 44 [Microphone.as:168]
+XPASSED: microphoneObj.useEchoSuppression == false [Microphone.as:173]
+XPASSED: microphoneObj.useEchoSuppression == true [Microphone.as:176]
+totals
diff --git a/test/gnash/actionscript.all/pending/Microphone-7.swf b/test/gnash/actionscript.all/pending/Microphone-7.swf
new file mode 100644
index 0000000..d6f9594
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Microphone-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/Microphone-7.swf.trace b/test/gnash/actionscript.all/pending/Microphone-7.swf.trace
new file mode 100644
index 0000000..4f01c2b
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Microphone-7.swf.trace
@@ -0,0 +1,84 @@
+PASSED: typeof(Microphone) == 'function' [Microphone.as:32]
+PASSED: typeof(Microphone.prototype.setGain) == 'function' [Microphone.as:33]
+PASSED: typeof(Microphone.prototype.setRate) == 'function' [Microphone.as:34]
+PASSED: typeof(Microphone.prototype.setSilenceLevel) == 'function' [Microphone.as:35]
+PASSED: typeof(Microphone.prototype.setUseEchoSuppression) == 'function' [Microphone.as:36]
+PASSED: Microphone.prototype.hasOwnProperty("setGain") [Microphone.as:39]
+PASSED: Microphone.prototype.hasOwnProperty("setRate") [Microphone.as:40]
+PASSED: Microphone.prototype.hasOwnProperty("setSilenceLevel") [Microphone.as:41]
+PASSED: Microphone.prototype.hasOwnProperty("setUseEchoSuppression") [Microphone.as:42]
+XPASSED: !Microphone.prototype.hasOwnProperty("get") [Microphone.as:45]
+PASSED: !Microphone.prototype.hasOwnProperty("activityLevel") [Microphone.as:46]
+PASSED: !Microphone.prototype.hasOwnProperty("gain") [Microphone.as:47]
+PASSED: !Microphone.prototype.hasOwnProperty("index") [Microphone.as:48]
+PASSED: !Microphone.prototype.hasOwnProperty("muted") [Microphone.as:49]
+PASSED: !Microphone.prototype.hasOwnProperty("name") [Microphone.as:50]
+PASSED: !Microphone.prototype.hasOwnProperty("names") [Microphone.as:51]
+PASSED: !Microphone.prototype.hasOwnProperty("onActivity") [Microphone.as:52]
+PASSED: !Microphone.prototype.hasOwnProperty("onStatus") [Microphone.as:53]
+PASSED: !Microphone.prototype.hasOwnProperty("rate") [Microphone.as:54]
+PASSED: !Microphone.prototype.hasOwnProperty("silenceLevel") [Microphone.as:55]
+PASSED: !Microphone.prototype.hasOwnProperty("silenceTimeOut") [Microphone.as:56]
+PASSED: !Microphone.prototype.hasOwnProperty("useEchoSuppression") [Microphone.as:57]
+PASSED: typeof(f) == 'object' [Microphone.as:63]
+PASSED: typeof(f.setGain) == 'function' [Microphone.as:64]
+PASSED: typeof(f.gain) == 'undefined' [Microphone.as:65]
+PASSED: typeof(f.rate) == 'undefined' [Microphone.as:66]
+XPASSED: !Microphone.prototype.hasOwnProperty("get") [Microphone.as:69]
+PASSED: !Microphone.prototype.hasOwnProperty("activityLevel") [Microphone.as:70]
+PASSED: !Microphone.prototype.hasOwnProperty("gain") [Microphone.as:71]
+PASSED: !Microphone.prototype.hasOwnProperty("index") [Microphone.as:72]
+PASSED: !Microphone.prototype.hasOwnProperty("muted") [Microphone.as:73]
+PASSED: !Microphone.prototype.hasOwnProperty("name") [Microphone.as:74]
+PASSED: !Microphone.prototype.hasOwnProperty("names") [Microphone.as:75]
+PASSED: !Microphone.prototype.hasOwnProperty("onActivity") [Microphone.as:76]
+PASSED: !Microphone.prototype.hasOwnProperty("onStatus") [Microphone.as:77]
+PASSED: !Microphone.prototype.hasOwnProperty("rate") [Microphone.as:78]
+PASSED: !Microphone.prototype.hasOwnProperty("silenceLevel") [Microphone.as:79]
+PASSED: !Microphone.prototype.hasOwnProperty("silenceTimeOut") [Microphone.as:80]
+PASSED: !Microphone.prototype.hasOwnProperty("useEchoSuppression") [Microphone.as:81]
+XPASSED: Microphone.hasOwnProperty("names") [Microphone.as:84]
+XPASSED: typeof (Microphone.names) == 'object' [Microphone.as:85]
+XPASSED: typeof(microphoneObj) == 'object' [Microphone.as:89]
+XPASSED: !Microphone.prototype.hasOwnProperty("get") [Microphone.as:94]
+XPASSED: Microphone.prototype.hasOwnProperty("activityLevel") [Microphone.as:95]
+XPASSED: Microphone.prototype.hasOwnProperty("gain") [Microphone.as:96]
+XPASSED: Microphone.prototype.hasOwnProperty("index") [Microphone.as:97]
+XPASSED: Microphone.prototype.hasOwnProperty("muted") [Microphone.as:98]
+XPASSED: Microphone.prototype.hasOwnProperty("name") [Microphone.as:99]
+XPASSED: Microphone.prototype.hasOwnProperty("rate") [Microphone.as:100]
+XPASSED: Microphone.prototype.hasOwnProperty("silenceLevel") [Microphone.as:101]
+XPASSED: Microphone.prototype.hasOwnProperty("useEchoSuppression") [Microphone.as:102]
+PASSED: microphoneObj == Microphone.get() [Microphone.as:105]
+PASSED: typeof(microphoneObj.get) == 'undefined' [Microphone.as:108]
+XPASSED: typeof(microphoneObj.setGain) == 'function' [Microphone.as:111]
+XPASSED: typeof(microphoneObj.setRate) == 'function' [Microphone.as:114]
+XPASSED: typeof(microphoneObj.setSilenceLevel) == 'function' [Microphone.as:117]
+XPASSED: typeof(microphoneObj.setUseEchoSuppression) == 'function' [Microphone.as:120]
+XPASSED: typeof(microphoneObj.activityLevel) == 'number' [Microphone.as:124]
+XPASSED: typeof(microphoneObj.gain) == 'number' [Microphone.as:125]
+XPASSED: typeof(microphoneObj.index) == 'number' [Microphone.as:126]
+XPASSED: typeof(microphoneObj.muted) == 'boolean' [Microphone.as:127]
+XPASSED: typeof(microphoneObj.name) == 'string' [Microphone.as:128]
+XPASSED: typeof(microphoneObj.rate) == 'number' [Microphone.as:129]
+XPASSED: typeof(microphoneObj.silenceTimeout) == 'number' [Microphone.as:130]
+XPASSED: typeof(microphoneObj.useEchoSuppression) == 'number' [Microphone.as:132]
+XPASSED: microphoneObj.activityLevel == -1 [Microphone.as:135]
+XPASSED: microphoneObj.gain == 50 [Microphone.as:136]
+XPASSED: microphoneObj.index == 0 [Microphone.as:137]
+XPASSED: microphoneObj.muted == true [Microphone.as:138]
+XPASSED: microphoneObj.rate == 8 [Microphone.as:139]
+XPASSED: microphoneObj.silenceTimeout == 2000 [Microphone.as:140]
+XPASSED: microphoneObj.gain == 5 [Microphone.as:146]
+XPASSED: microphoneObj.silenceLevel == 16 [Microphone.as:149]
+XPASSED: microphoneObj.rate == 5 [Microphone.as:154]
+XPASSED: microphoneObj.rate == 8 [Microphone.as:156]
+XPASSED: microphoneObj.rate == 11 [Microphone.as:158]
+XPASSED: microphoneObj.rate == 16 [Microphone.as:160]
+XPASSED: microphoneObj.rate == 22 [Microphone.as:162]
+XPASSED: microphoneObj.rate == 44 [Microphone.as:164]
+XPASSED: microphoneObj.rate == 44 [Microphone.as:166]
+XPASSED: microphoneObj.rate == 44 [Microphone.as:168]
+XPASSED: microphoneObj.useEchoSuppression == false [Microphone.as:173]
+XPASSED: microphoneObj.useEchoSuppression == true [Microphone.as:176]
+totals
diff --git a/test/gnash/actionscript.all/pending/Microphone-8.swf b/test/gnash/actionscript.all/pending/Microphone-8.swf
new file mode 100644
index 0000000..b44fd92
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Microphone-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/Microphone-8.swf.trace b/test/gnash/actionscript.all/pending/Microphone-8.swf.trace
new file mode 100644
index 0000000..4f01c2b
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Microphone-8.swf.trace
@@ -0,0 +1,84 @@
+PASSED: typeof(Microphone) == 'function' [Microphone.as:32]
+PASSED: typeof(Microphone.prototype.setGain) == 'function' [Microphone.as:33]
+PASSED: typeof(Microphone.prototype.setRate) == 'function' [Microphone.as:34]
+PASSED: typeof(Microphone.prototype.setSilenceLevel) == 'function' [Microphone.as:35]
+PASSED: typeof(Microphone.prototype.setUseEchoSuppression) == 'function' [Microphone.as:36]
+PASSED: Microphone.prototype.hasOwnProperty("setGain") [Microphone.as:39]
+PASSED: Microphone.prototype.hasOwnProperty("setRate") [Microphone.as:40]
+PASSED: Microphone.prototype.hasOwnProperty("setSilenceLevel") [Microphone.as:41]
+PASSED: Microphone.prototype.hasOwnProperty("setUseEchoSuppression") [Microphone.as:42]
+XPASSED: !Microphone.prototype.hasOwnProperty("get") [Microphone.as:45]
+PASSED: !Microphone.prototype.hasOwnProperty("activityLevel") [Microphone.as:46]
+PASSED: !Microphone.prototype.hasOwnProperty("gain") [Microphone.as:47]
+PASSED: !Microphone.prototype.hasOwnProperty("index") [Microphone.as:48]
+PASSED: !Microphone.prototype.hasOwnProperty("muted") [Microphone.as:49]
+PASSED: !Microphone.prototype.hasOwnProperty("name") [Microphone.as:50]
+PASSED: !Microphone.prototype.hasOwnProperty("names") [Microphone.as:51]
+PASSED: !Microphone.prototype.hasOwnProperty("onActivity") [Microphone.as:52]
+PASSED: !Microphone.prototype.hasOwnProperty("onStatus") [Microphone.as:53]
+PASSED: !Microphone.prototype.hasOwnProperty("rate") [Microphone.as:54]
+PASSED: !Microphone.prototype.hasOwnProperty("silenceLevel") [Microphone.as:55]
+PASSED: !Microphone.prototype.hasOwnProperty("silenceTimeOut") [Microphone.as:56]
+PASSED: !Microphone.prototype.hasOwnProperty("useEchoSuppression") [Microphone.as:57]
+PASSED: typeof(f) == 'object' [Microphone.as:63]
+PASSED: typeof(f.setGain) == 'function' [Microphone.as:64]
+PASSED: typeof(f.gain) == 'undefined' [Microphone.as:65]
+PASSED: typeof(f.rate) == 'undefined' [Microphone.as:66]
+XPASSED: !Microphone.prototype.hasOwnProperty("get") [Microphone.as:69]
+PASSED: !Microphone.prototype.hasOwnProperty("activityLevel") [Microphone.as:70]
+PASSED: !Microphone.prototype.hasOwnProperty("gain") [Microphone.as:71]
+PASSED: !Microphone.prototype.hasOwnProperty("index") [Microphone.as:72]
+PASSED: !Microphone.prototype.hasOwnProperty("muted") [Microphone.as:73]
+PASSED: !Microphone.prototype.hasOwnProperty("name") [Microphone.as:74]
+PASSED: !Microphone.prototype.hasOwnProperty("names") [Microphone.as:75]
+PASSED: !Microphone.prototype.hasOwnProperty("onActivity") [Microphone.as:76]
+PASSED: !Microphone.prototype.hasOwnProperty("onStatus") [Microphone.as:77]
+PASSED: !Microphone.prototype.hasOwnProperty("rate") [Microphone.as:78]
+PASSED: !Microphone.prototype.hasOwnProperty("silenceLevel") [Microphone.as:79]
+PASSED: !Microphone.prototype.hasOwnProperty("silenceTimeOut") [Microphone.as:80]
+PASSED: !Microphone.prototype.hasOwnProperty("useEchoSuppression") [Microphone.as:81]
+XPASSED: Microphone.hasOwnProperty("names") [Microphone.as:84]
+XPASSED: typeof (Microphone.names) == 'object' [Microphone.as:85]
+XPASSED: typeof(microphoneObj) == 'object' [Microphone.as:89]
+XPASSED: !Microphone.prototype.hasOwnProperty("get") [Microphone.as:94]
+XPASSED: Microphone.prototype.hasOwnProperty("activityLevel") [Microphone.as:95]
+XPASSED: Microphone.prototype.hasOwnProperty("gain") [Microphone.as:96]
+XPASSED: Microphone.prototype.hasOwnProperty("index") [Microphone.as:97]
+XPASSED: Microphone.prototype.hasOwnProperty("muted") [Microphone.as:98]
+XPASSED: Microphone.prototype.hasOwnProperty("name") [Microphone.as:99]
+XPASSED: Microphone.prototype.hasOwnProperty("rate") [Microphone.as:100]
+XPASSED: Microphone.prototype.hasOwnProperty("silenceLevel") [Microphone.as:101]
+XPASSED: Microphone.prototype.hasOwnProperty("useEchoSuppression") [Microphone.as:102]
+PASSED: microphoneObj == Microphone.get() [Microphone.as:105]
+PASSED: typeof(microphoneObj.get) == 'undefined' [Microphone.as:108]
+XPASSED: typeof(microphoneObj.setGain) == 'function' [Microphone.as:111]
+XPASSED: typeof(microphoneObj.setRate) == 'function' [Microphone.as:114]
+XPASSED: typeof(microphoneObj.setSilenceLevel) == 'function' [Microphone.as:117]
+XPASSED: typeof(microphoneObj.setUseEchoSuppression) == 'function' [Microphone.as:120]
+XPASSED: typeof(microphoneObj.activityLevel) == 'number' [Microphone.as:124]
+XPASSED: typeof(microphoneObj.gain) == 'number' [Microphone.as:125]
+XPASSED: typeof(microphoneObj.index) == 'number' [Microphone.as:126]
+XPASSED: typeof(microphoneObj.muted) == 'boolean' [Microphone.as:127]
+XPASSED: typeof(microphoneObj.name) == 'string' [Microphone.as:128]
+XPASSED: typeof(microphoneObj.rate) == 'number' [Microphone.as:129]
+XPASSED: typeof(microphoneObj.silenceTimeout) == 'number' [Microphone.as:130]
+XPASSED: typeof(microphoneObj.useEchoSuppression) == 'number' [Microphone.as:132]
+XPASSED: microphoneObj.activityLevel == -1 [Microphone.as:135]
+XPASSED: microphoneObj.gain == 50 [Microphone.as:136]
+XPASSED: microphoneObj.index == 0 [Microphone.as:137]
+XPASSED: microphoneObj.muted == true [Microphone.as:138]
+XPASSED: microphoneObj.rate == 8 [Microphone.as:139]
+XPASSED: microphoneObj.silenceTimeout == 2000 [Microphone.as:140]
+XPASSED: microphoneObj.gain == 5 [Microphone.as:146]
+XPASSED: microphoneObj.silenceLevel == 16 [Microphone.as:149]
+XPASSED: microphoneObj.rate == 5 [Microphone.as:154]
+XPASSED: microphoneObj.rate == 8 [Microphone.as:156]
+XPASSED: microphoneObj.rate == 11 [Microphone.as:158]
+XPASSED: microphoneObj.rate == 16 [Microphone.as:160]
+XPASSED: microphoneObj.rate == 22 [Microphone.as:162]
+XPASSED: microphoneObj.rate == 44 [Microphone.as:164]
+XPASSED: microphoneObj.rate == 44 [Microphone.as:166]
+XPASSED: microphoneObj.rate == 44 [Microphone.as:168]
+XPASSED: microphoneObj.useEchoSuppression == false [Microphone.as:173]
+XPASSED: microphoneObj.useEchoSuppression == true [Microphone.as:176]
+totals
diff --git a/test/gnash/actionscript.all/pending/Microphone.as b/test/gnash/actionscript.all/pending/Microphone.as
new file mode 100644
index 0000000..74da558
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Microphone.as
@@ -0,0 +1,184 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+
+// Test case for Microphone ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: Microphone.as,v 1.18 2008/06/04 13:43:24 bwy Exp $";
+#include "check.as"
+
+// There was no Microphone class in SWF5 or lower
+#if OUTPUT_VERSION > 5
+
+// test the Microphone class
+check_equals(typeof(Microphone), 'function');
+check_equals ( typeof(Microphone.prototype.setGain), 'function' );
+check_equals ( typeof(Microphone.prototype.setRate), 'function' );
+check_equals ( typeof(Microphone.prototype.setSilenceLevel), 'function' );
+check_equals ( typeof(Microphone.prototype.setUseEchoSuppression), 'function' );
+
+
+check(Microphone.prototype.hasOwnProperty("setGain"));
+check(Microphone.prototype.hasOwnProperty("setRate"));
+check(Microphone.prototype.hasOwnProperty("setSilenceLevel"));
+check(Microphone.prototype.hasOwnProperty("setUseEchoSuppression"));
+
+// These aren't present yet.
+xcheck(!Microphone.prototype.hasOwnProperty("get"));
+check(!Microphone.prototype.hasOwnProperty("activityLevel"));
+check(!Microphone.prototype.hasOwnProperty("gain"));
+check(!Microphone.prototype.hasOwnProperty("index"));
+check(!Microphone.prototype.hasOwnProperty("muted"));
+check(!Microphone.prototype.hasOwnProperty("name"));
+check(!Microphone.prototype.hasOwnProperty("names"));
+check(!Microphone.prototype.hasOwnProperty("onActivity"));
+check(!Microphone.prototype.hasOwnProperty("onStatus"));
+check(!Microphone.prototype.hasOwnProperty("rate"));
+check(!Microphone.prototype.hasOwnProperty("silenceLevel"));
+check(!Microphone.prototype.hasOwnProperty("silenceTimeOut"));
+check(!Microphone.prototype.hasOwnProperty("useEchoSuppression"));
+
+f = new Microphone;
+
+// Called with new, Microphone returns an object with static
+// properties.
+check_equals(typeof(f), 'object');
+check_equals(typeof(f.setGain), 'function')
+check_equals(typeof(f.gain), 'undefined')
+check_equals(typeof(f.rate), 'undefined')
+
+// Still not present
+xcheck(!Microphone.prototype.hasOwnProperty("get"));
+check(!Microphone.prototype.hasOwnProperty("activityLevel"));
+check(!Microphone.prototype.hasOwnProperty("gain"));
+check(!Microphone.prototype.hasOwnProperty("index"));
+check(!Microphone.prototype.hasOwnProperty("muted"));
+check(!Microphone.prototype.hasOwnProperty("name"));
+check(!Microphone.prototype.hasOwnProperty("names"));
+check(!Microphone.prototype.hasOwnProperty("onActivity"));
+check(!Microphone.prototype.hasOwnProperty("onStatus"));
+check(!Microphone.prototype.hasOwnProperty("rate"));
+check(!Microphone.prototype.hasOwnProperty("silenceLevel"));
+check(!Microphone.prototype.hasOwnProperty("silenceTimeOut"));
+check(!Microphone.prototype.hasOwnProperty("useEchoSuppression"));
+
+// Documented to be an array.
+xcheck ( Microphone.hasOwnProperty("names"));
+xcheck_equals (typeof (Microphone.names), 'object');
+
+// test the Microphone constuctor
+var microphoneObj = Microphone.get();
+xcheck_equals (typeof(microphoneObj), 'object');
+
+// Microphone.get() adds these properties.
+// Other properties are probably dependent on whether a microphone
+// is present or not.
+xcheck(!Microphone.prototype.hasOwnProperty("get"));
+xcheck(Microphone.prototype.hasOwnProperty("activityLevel"));
+xcheck(Microphone.prototype.hasOwnProperty("gain"));
+xcheck(Microphone.prototype.hasOwnProperty("index"));
+xcheck(Microphone.prototype.hasOwnProperty("muted"));
+xcheck(Microphone.prototype.hasOwnProperty("name"));
+xcheck(Microphone.prototype.hasOwnProperty("rate"));
+xcheck(Microphone.prototype.hasOwnProperty("silenceLevel"));
+xcheck(Microphone.prototype.hasOwnProperty("useEchoSuppression"));
+
+// test that Microphone.get() returns a singleton
+check_equals(microphoneObj, Microphone.get());
+
+// test that get() method is NOT exported to instances
+check_equals (typeof(microphoneObj.get), 'undefined');
+
+// test the Microphone::setGain method
+xcheck_equals ( typeof(microphoneObj.setGain), 'function' );
+
+// test the Microphone::setRate method
+xcheck_equals ( typeof(microphoneObj.setRate), 'function' );
+
+// test the Microphone::setSilenceLevel method
+xcheck_equals ( typeof(microphoneObj.setSilenceLevel), 'function' );
+
+// test the Microphone::setUseEchoSuppression method
+xcheck_equals ( typeof(microphoneObj.setUseEchoSuppression), 'function' );
+
+/// Microphone properties
+
+xcheck_equals ( typeof(microphoneObj.activityLevel), 'number' );
+xcheck_equals ( typeof(microphoneObj.gain), 'number' );
+xcheck_equals ( typeof(microphoneObj.index), 'number' );
+xcheck_equals ( typeof(microphoneObj.muted), 'boolean' );
+xcheck_equals ( typeof(microphoneObj.name), 'string' );
+xcheck_equals ( typeof(microphoneObj.rate), 'number' );
+xcheck_equals ( typeof(microphoneObj.silenceTimeout), 'number' );
+// Documented to be boolean
+xcheck_equals ( typeof(microphoneObj.useEchoSuppression), 'number' );
+
+// Starting values // values before microphone is activated
+xcheck_equals ( microphoneObj.activityLevel, -1 );
+xcheck_equals ( microphoneObj.gain, 50 );
+xcheck_equals ( microphoneObj.index, 0 );
+xcheck_equals ( microphoneObj.muted, true );
+xcheck_equals ( microphoneObj.rate, 8 );
+xcheck_equals ( microphoneObj.silenceTimeout, 2000 );
+
+
+// Setting and getting
+
+microphoneObj.setGain(5);
+xcheck_equals (microphoneObj.gain, 5);
+
+microphoneObj.setSilenceLevel(16);
+xcheck_equals (microphoneObj.silenceLevel, 16);
+
+
+// 5, 8, 11, 22, or 44 documented...
+microphoneObj.setRate(1);
+xcheck_equals (microphoneObj.rate, 5);
+microphoneObj.setRate(7);
+xcheck_equals (microphoneObj.rate, 8);
+microphoneObj.setRate(10);
+xcheck_equals (microphoneObj.rate, 11);
+microphoneObj.setRate(15);
+xcheck_equals (microphoneObj.rate, 16);
+microphoneObj.setRate(17);
+xcheck_equals (microphoneObj.rate, 22);
+microphoneObj.setRate(27);
+xcheck_equals (microphoneObj.rate, 44);
+microphoneObj.setRate(34);
+xcheck_equals (microphoneObj.rate, 44);
+microphoneObj.setRate(1000000);
+xcheck_equals (microphoneObj.rate, 44);
+
+
+/// It's still a number, though.
+microphoneObj.setUseEchoSuppression(false);
+xcheck_equals (microphoneObj.useEchoSuppression, false);
+
+microphoneObj.setUseEchoSuppression(16);
+xcheck_equals (microphoneObj.useEchoSuppression, true);
+
+// listen to the microphone.
+_root.attachAudio(microphoneObj);
+
+
+
+#endif // OUTPUT_VERSION > 5
+totals();
diff --git a/test/gnash/actionscript.all/pending/NetConnection-5.swf b/test/gnash/actionscript.all/pending/NetConnection-5.swf
new file mode 100644
index 0000000..4fcffe4
Binary files /dev/null and b/test/gnash/actionscript.all/pending/NetConnection-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/NetConnection-5.swf.trace b/test/gnash/actionscript.all/pending/NetConnection-5.swf.trace
new file mode 100644
index 0000000..10035fa
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/NetConnection-5.swf.trace
@@ -0,0 +1,2 @@
+PASSED: NetConnection == undefined [NetConnection.as:29]
+check_totals: 1
diff --git a/test/gnash/actionscript.all/pending/NetConnection-6.swf b/test/gnash/actionscript.all/pending/NetConnection-6.swf
new file mode 100644
index 0000000..fbbc99e
Binary files /dev/null and b/test/gnash/actionscript.all/pending/NetConnection-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/NetConnection-6.swf.trace b/test/gnash/actionscript.all/pending/NetConnection-6.swf.trace
new file mode 100644
index 0000000..768ae3b
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/NetConnection-6.swf.trace
@@ -0,0 +1,10 @@
+PASSED: typeof(NetConnection) == 'function' [NetConnection.as:34]
+PASSED: typeof(NetConnection.prototype) == 'object' [NetConnection.as:35]
+PASSED: typeof(NetConnection.prototype.isConnected) == 'undefined' [NetConnection.as:36]
+PASSED: typeof(NetConnection.prototype.connect) == 'function' [NetConnection.as:37]
+PASSED: typeof(tmp) == 'object' [NetConnection.as:41]
+PASSED: tmp.__proto__ == NetConnection.prototype [NetConnection.as:42]
+PASSED: tmp instanceof NetConnection [NetConnection.as:43]
+XPASSED: typeof(tmp.isConnected) == 'boolean' [NetConnection.as:44]
+XPASSED: tmp.isConnected == false [NetConnection.as:45]
+check_totals: 10
diff --git a/test/gnash/actionscript.all/pending/NetConnection-7.swf b/test/gnash/actionscript.all/pending/NetConnection-7.swf
new file mode 100644
index 0000000..7a3fb08
Binary files /dev/null and b/test/gnash/actionscript.all/pending/NetConnection-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/NetConnection-7.swf.trace b/test/gnash/actionscript.all/pending/NetConnection-7.swf.trace
new file mode 100644
index 0000000..768ae3b
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/NetConnection-7.swf.trace
@@ -0,0 +1,10 @@
+PASSED: typeof(NetConnection) == 'function' [NetConnection.as:34]
+PASSED: typeof(NetConnection.prototype) == 'object' [NetConnection.as:35]
+PASSED: typeof(NetConnection.prototype.isConnected) == 'undefined' [NetConnection.as:36]
+PASSED: typeof(NetConnection.prototype.connect) == 'function' [NetConnection.as:37]
+PASSED: typeof(tmp) == 'object' [NetConnection.as:41]
+PASSED: tmp.__proto__ == NetConnection.prototype [NetConnection.as:42]
+PASSED: tmp instanceof NetConnection [NetConnection.as:43]
+XPASSED: typeof(tmp.isConnected) == 'boolean' [NetConnection.as:44]
+XPASSED: tmp.isConnected == false [NetConnection.as:45]
+check_totals: 10
diff --git a/test/gnash/actionscript.all/pending/NetConnection-8.swf b/test/gnash/actionscript.all/pending/NetConnection-8.swf
new file mode 100644
index 0000000..db0ca26
Binary files /dev/null and b/test/gnash/actionscript.all/pending/NetConnection-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/NetConnection-8.swf.trace b/test/gnash/actionscript.all/pending/NetConnection-8.swf.trace
new file mode 100644
index 0000000..768ae3b
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/NetConnection-8.swf.trace
@@ -0,0 +1,10 @@
+PASSED: typeof(NetConnection) == 'function' [NetConnection.as:34]
+PASSED: typeof(NetConnection.prototype) == 'object' [NetConnection.as:35]
+PASSED: typeof(NetConnection.prototype.isConnected) == 'undefined' [NetConnection.as:36]
+PASSED: typeof(NetConnection.prototype.connect) == 'function' [NetConnection.as:37]
+PASSED: typeof(tmp) == 'object' [NetConnection.as:41]
+PASSED: tmp.__proto__ == NetConnection.prototype [NetConnection.as:42]
+PASSED: tmp instanceof NetConnection [NetConnection.as:43]
+XPASSED: typeof(tmp.isConnected) == 'boolean' [NetConnection.as:44]
+XPASSED: tmp.isConnected == false [NetConnection.as:45]
+check_totals: 10
diff --git a/test/gnash/actionscript.all/pending/NetConnection.as b/test/gnash/actionscript.all/pending/NetConnection.as
new file mode 100644
index 0000000..2416b95
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/NetConnection.as
@@ -0,0 +1,62 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for NetConnection ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: NetConnection.as,v 1.18 2008/03/11 19:31:47 strk Exp $";
+#include "check.as"
+
+#if OUTPUT_VERSION < 6
+
+check_equals(NetConnection, undefined);
+check_totals(1);
+
+#else // OUTPUT_VERSION >= 7
+
+check_equals(typeof(NetConnection), 'function');
+check_equals(typeof(NetConnection.prototype), 'object');
+check_equals(typeof(NetConnection.prototype.isConnected), 'undefined');
+check_equals(typeof(NetConnection.prototype.connect), 'function');
+// TODO: add tests for all interfaces
+
+var tmp = new NetConnection;
+check_equals(typeof(tmp), 'object');
+check_equals(tmp.__proto__, NetConnection.prototype);
+check(tmp instanceof NetConnection);
+xcheck_equals(typeof(tmp.isConnected), 'boolean');
+xcheck_equals(tmp.isConnected, false);
+// TODO: add tests for all properties
+
+// test the NetConnection::connect method
+tmp.connect();
+if ( ! tmp.connect("rtmp://www.mediacollege.com/flash/media-player/testclip-4sec.flv") )
+{
+	// FIXME: this would fail in the reference player too...
+	xfail("NetConnection::connect() didn't initialized correctly");
+}
+else
+{
+	pass("NetConnection::connect() initialized correctly");
+}
+
+check_totals(10);
+
+#endif // OUTPUT_VERSION >= 7
diff --git a/test/gnash/actionscript.all/pending/NetStream-5.swf b/test/gnash/actionscript.all/pending/NetStream-5.swf
new file mode 100644
index 0000000..3f91dbe
Binary files /dev/null and b/test/gnash/actionscript.all/pending/NetStream-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/NetStream-5.swf.trace b/test/gnash/actionscript.all/pending/NetStream-5.swf.trace
new file mode 100644
index 0000000..58b7eef
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/NetStream-5.swf.trace
@@ -0,0 +1 @@
+check_totals: 0
diff --git a/test/gnash/actionscript.all/pending/NetStream-6.swf b/test/gnash/actionscript.all/pending/NetStream-6.swf
new file mode 100644
index 0000000..205734a
Binary files /dev/null and b/test/gnash/actionscript.all/pending/NetStream-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/NetStream-6.swf.trace b/test/gnash/actionscript.all/pending/NetStream-6.swf.trace
new file mode 100644
index 0000000..0f56d8b
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/NetStream-6.swf.trace
@@ -0,0 +1,61 @@
+PASSED: typeof(NetStream) == 'function' [NetStream.as:36]
+PASSED: typeof(NetStream.prototype) == 'object' [NetStream.as:37]
+PASSED: typeof(netstreamObj) == 'object' [NetStream.as:45]
+XPASSED: ! NetStream.prototype.hasOwnProperty('currentFps') [NetStream.as:53]
+PASSED: ! netstreamObj.hasOwnProperty('currentFps') [NetStream.as:54]
+XPASSED: ! NetStream.prototype.hasOwnProperty('bufferLength') [NetStream.as:56]
+PASSED: ! netstreamObj.hasOwnProperty('bufferLength') [NetStream.as:57]
+XPASSED: ! NetStream.prototype.hasOwnProperty('bufferTime') [NetStream.as:59]
+PASSED: ! netstreamObj.hasOwnProperty('bufferTime') [NetStream.as:60]
+XPASSED: ! NetStream.prototype.hasOwnProperty('liveDelay') [NetStream.as:62]
+PASSED: ! netstreamObj.hasOwnProperty('liveDelay') [NetStream.as:63]
+XPASSED: ! NetStream.prototype.hasOwnProperty('time') [NetStream.as:65]
+PASSED: ! netstreamObj.hasOwnProperty('time') [NetStream.as:66]
+XPASSED: ! NetStream.prototype.hasOwnProperty('bytesLoaded') [NetStream.as:69]
+PASSED: ! netstreamObj.hasOwnProperty('bytesLoaded') [NetStream.as:70]
+XPASSED: ! NetStream.prototype.hasOwnProperty('bytesTotal') [NetStream.as:72]
+PASSED: ! netstreamObj.hasOwnProperty('bytesTotal') [NetStream.as:73]
+PASSED: typeof(netstreamObj.close) == 'function' [NetStream.as:80]
+PASSED: typeof(netstreamObj.setBufferTime) == 'function' [NetStream.as:82]
+PASSED: typeof(netstreamObj.pause) == 'function' [NetStream.as:91]
+PASSED: typeof(netstreamObj.play) == 'function' [NetStream.as:93]
+PASSED: typeof(netstreamObj.seek) == 'function' [NetStream.as:95]
+PASSED: typeof(netstreamObj.receiveAudio()) == 'undefined' [NetStream.as:98]
+PASSED: typeof(netstreamObj.receiveVideo()) == 'undefined' [NetStream.as:100]
+PASSED: typeof(netstreamObj.setbuffertime) == 'function' [NetStream.as:103]
+PASSED: typeof(netstreamObj.attachAudio()) == 'undefined' [NetStream.as:114]
+PASSED: typeof(netstreamObj.attachVideo()) == 'undefined' [NetStream.as:116]
+PASSED: typeof(netstreamObj.publish()) == 'undefined' [NetStream.as:118]
+PASSED: typeof(netstreamObj.send()) == 'undefined' [NetStream.as:120]
+PASSED: typeof(netstreamObj.onPlayStatus) == 'undefined' [NetStream.as:125]
+PASSED: typeof(netstreamObj.onPlayStatus) == 'number' [NetStream.as:127]
+PASSED: typeof(netstreamObj.onPlayStatus) == 'string' [NetStream.as:129]
+PASSED: typeof(netstreamObj.onStatus) == 'undefined' [NetStream.as:131]
+PASSED: typeof(netstreamObj.onStatus) == 'number' [NetStream.as:133]
+PASSED: typeof(netstreamObj.onStatus) == 'string' [NetStream.as:135]
+PASSED: typeof(netstreamObj.onCuePoint) == 'undefined' [NetStream.as:137]
+PASSED: typeof(netstreamObj.onCuePoint) == 'number' [NetStream.as:139]
+PASSED: typeof(netstreamObj.onCuePoint) == 'string' [NetStream.as:141]
+PASSED: typeof(netstreamObj.onMetaData) == 'undefined' [NetStream.as:143]
+PASSED: typeof(netstreamObj.onMetaData) == 'number' [NetStream.as:145]
+PASSED: typeof(netstreamObj.onMetaData) == 'string' [NetStream.as:147]
+PASSED: typeof(netstreamObj.currentFps) == 'undefined' [NetStream.as:153]
+XPASSED: typeof(netstreamObj.currentFps) == 'string' [NetStream.as:155]
+XPASSED: typeof(netstreamObj.currentFps) == 'boolean' [NetStream.as:157]
+XPASSED: typeof(netstreamObj.bufferLength) == 'undefined' [NetStream.as:160]
+XPASSED: typeof(netstreamObj.bufferLength) == 'string' [NetStream.as:162]
+XPASSED: typeof(netstreamObj.bufferLength) == 'boolean' [NetStream.as:164]
+XPASSED: typeof(netstreamObj.bufferTime) == 'undefined' [NetStream.as:167]
+XPASSED: netstreamObj.bufferTime == NULL [NetStream.as:169]
+XPASSED: netstreamObj.bufferTime == 20 [NetStream.as:171]
+XPASSED: netstreamObj.bufferTime == 20 [NetStream.as:173]
+XPASSED: netstreamObj.bufferTime == 20 [NetStream.as:175]
+XPASSED: netstreamObj.bufferTime == 20 [NetStream.as:177]
+XPASSED: netstreamObj.bufferTime == 20 [NetStream.as:179]
+PASSED: typeof(netstreamObj.liveDelay) == 'undefined' [NetStream.as:182]
+XPASSED: typeof(netstreamObj.liveDelay) == 'string' [NetStream.as:184]
+XPASSED: typeof(netstreamObj.time) == 'undefined' [NetStream.as:187]
+XPASSED: typeof(netstreamObj.time) == 'string' [NetStream.as:189]
+PASSED: typeof(netstreamObj.bytesLoaded) == 'undefined' [NetStream.as:195]
+PASSED: typeof(netstreamObj.bytesTotal) == 'undefined' [NetStream.as:197]
+check_totals: 60
diff --git a/test/gnash/actionscript.all/pending/NetStream-7.swf b/test/gnash/actionscript.all/pending/NetStream-7.swf
new file mode 100644
index 0000000..5b05de1
Binary files /dev/null and b/test/gnash/actionscript.all/pending/NetStream-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/NetStream-7.swf.trace b/test/gnash/actionscript.all/pending/NetStream-7.swf.trace
new file mode 100644
index 0000000..4a9745e
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/NetStream-7.swf.trace
@@ -0,0 +1,61 @@
+PASSED: typeof(NetStream) == 'function' [NetStream.as:36]
+PASSED: typeof(NetStream.prototype) == 'object' [NetStream.as:37]
+PASSED: typeof(netstreamObj) == 'object' [NetStream.as:45]
+XPASSED: ! NetStream.prototype.hasOwnProperty('currentFps') [NetStream.as:53]
+PASSED: ! netstreamObj.hasOwnProperty('currentFps') [NetStream.as:54]
+XPASSED: ! NetStream.prototype.hasOwnProperty('bufferLength') [NetStream.as:56]
+PASSED: ! netstreamObj.hasOwnProperty('bufferLength') [NetStream.as:57]
+XPASSED: ! NetStream.prototype.hasOwnProperty('bufferTime') [NetStream.as:59]
+PASSED: ! netstreamObj.hasOwnProperty('bufferTime') [NetStream.as:60]
+XPASSED: ! NetStream.prototype.hasOwnProperty('liveDelay') [NetStream.as:62]
+PASSED: ! netstreamObj.hasOwnProperty('liveDelay') [NetStream.as:63]
+XPASSED: ! NetStream.prototype.hasOwnProperty('time') [NetStream.as:65]
+PASSED: ! netstreamObj.hasOwnProperty('time') [NetStream.as:66]
+XPASSED: ! NetStream.prototype.hasOwnProperty('bytesLoaded') [NetStream.as:69]
+PASSED: ! netstreamObj.hasOwnProperty('bytesLoaded') [NetStream.as:70]
+XPASSED: ! NetStream.prototype.hasOwnProperty('bytesTotal') [NetStream.as:72]
+PASSED: ! netstreamObj.hasOwnProperty('bytesTotal') [NetStream.as:73]
+PASSED: typeof(netstreamObj.close) == 'function' [NetStream.as:80]
+PASSED: typeof(netstreamObj.setBufferTime) == 'function' [NetStream.as:82]
+PASSED: typeof(netstreamObj.pause) == 'function' [NetStream.as:91]
+PASSED: typeof(netstreamObj.play) == 'function' [NetStream.as:93]
+PASSED: typeof(netstreamObj.seek) == 'function' [NetStream.as:95]
+PASSED: typeof(netstreamObj.receiveAudio()) == 'undefined' [NetStream.as:98]
+PASSED: typeof(netstreamObj.receiveVideo()) == 'undefined' [NetStream.as:100]
+PASSED: typeof(netstreamObj.setbuffertime) == 'undefined' [NetStream.as:106]
+PASSED: typeof(netstreamObj.attachAudio()) == 'undefined' [NetStream.as:114]
+PASSED: typeof(netstreamObj.attachVideo()) == 'undefined' [NetStream.as:116]
+PASSED: typeof(netstreamObj.publish()) == 'undefined' [NetStream.as:118]
+PASSED: typeof(netstreamObj.send()) == 'undefined' [NetStream.as:120]
+PASSED: typeof(netstreamObj.onPlayStatus) == 'undefined' [NetStream.as:125]
+PASSED: typeof(netstreamObj.onPlayStatus) == 'number' [NetStream.as:127]
+PASSED: typeof(netstreamObj.onPlayStatus) == 'string' [NetStream.as:129]
+PASSED: typeof(netstreamObj.onStatus) == 'undefined' [NetStream.as:131]
+PASSED: typeof(netstreamObj.onStatus) == 'number' [NetStream.as:133]
+PASSED: typeof(netstreamObj.onStatus) == 'string' [NetStream.as:135]
+PASSED: typeof(netstreamObj.onCuePoint) == 'undefined' [NetStream.as:137]
+PASSED: typeof(netstreamObj.onCuePoint) == 'number' [NetStream.as:139]
+PASSED: typeof(netstreamObj.onCuePoint) == 'string' [NetStream.as:141]
+PASSED: typeof(netstreamObj.onMetaData) == 'undefined' [NetStream.as:143]
+PASSED: typeof(netstreamObj.onMetaData) == 'number' [NetStream.as:145]
+PASSED: typeof(netstreamObj.onMetaData) == 'string' [NetStream.as:147]
+PASSED: typeof(netstreamObj.currentFps) == 'undefined' [NetStream.as:153]
+XPASSED: typeof(netstreamObj.currentFps) == 'string' [NetStream.as:155]
+XPASSED: typeof(netstreamObj.currentFps) == 'boolean' [NetStream.as:157]
+XPASSED: typeof(netstreamObj.bufferLength) == 'undefined' [NetStream.as:160]
+XPASSED: typeof(netstreamObj.bufferLength) == 'string' [NetStream.as:162]
+XPASSED: typeof(netstreamObj.bufferLength) == 'boolean' [NetStream.as:164]
+XPASSED: typeof(netstreamObj.bufferTime) == 'undefined' [NetStream.as:167]
+XPASSED: netstreamObj.bufferTime == NULL [NetStream.as:169]
+XPASSED: netstreamObj.bufferTime == 20 [NetStream.as:171]
+XPASSED: netstreamObj.bufferTime == 20 [NetStream.as:173]
+XPASSED: netstreamObj.bufferTime == 20 [NetStream.as:175]
+XPASSED: netstreamObj.bufferTime == 20 [NetStream.as:177]
+XPASSED: netstreamObj.bufferTime == 20 [NetStream.as:179]
+PASSED: typeof(netstreamObj.liveDelay) == 'undefined' [NetStream.as:182]
+XPASSED: typeof(netstreamObj.liveDelay) == 'string' [NetStream.as:184]
+XPASSED: typeof(netstreamObj.time) == 'undefined' [NetStream.as:187]
+XPASSED: typeof(netstreamObj.time) == 'string' [NetStream.as:189]
+PASSED: typeof(netstreamObj.bytesLoaded) == 'undefined' [NetStream.as:195]
+PASSED: typeof(netstreamObj.bytesTotal) == 'undefined' [NetStream.as:197]
+check_totals: 60
diff --git a/test/gnash/actionscript.all/pending/NetStream-8.swf b/test/gnash/actionscript.all/pending/NetStream-8.swf
new file mode 100644
index 0000000..4476abb
Binary files /dev/null and b/test/gnash/actionscript.all/pending/NetStream-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/NetStream-8.swf.trace b/test/gnash/actionscript.all/pending/NetStream-8.swf.trace
new file mode 100644
index 0000000..4a9745e
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/NetStream-8.swf.trace
@@ -0,0 +1,61 @@
+PASSED: typeof(NetStream) == 'function' [NetStream.as:36]
+PASSED: typeof(NetStream.prototype) == 'object' [NetStream.as:37]
+PASSED: typeof(netstreamObj) == 'object' [NetStream.as:45]
+XPASSED: ! NetStream.prototype.hasOwnProperty('currentFps') [NetStream.as:53]
+PASSED: ! netstreamObj.hasOwnProperty('currentFps') [NetStream.as:54]
+XPASSED: ! NetStream.prototype.hasOwnProperty('bufferLength') [NetStream.as:56]
+PASSED: ! netstreamObj.hasOwnProperty('bufferLength') [NetStream.as:57]
+XPASSED: ! NetStream.prototype.hasOwnProperty('bufferTime') [NetStream.as:59]
+PASSED: ! netstreamObj.hasOwnProperty('bufferTime') [NetStream.as:60]
+XPASSED: ! NetStream.prototype.hasOwnProperty('liveDelay') [NetStream.as:62]
+PASSED: ! netstreamObj.hasOwnProperty('liveDelay') [NetStream.as:63]
+XPASSED: ! NetStream.prototype.hasOwnProperty('time') [NetStream.as:65]
+PASSED: ! netstreamObj.hasOwnProperty('time') [NetStream.as:66]
+XPASSED: ! NetStream.prototype.hasOwnProperty('bytesLoaded') [NetStream.as:69]
+PASSED: ! netstreamObj.hasOwnProperty('bytesLoaded') [NetStream.as:70]
+XPASSED: ! NetStream.prototype.hasOwnProperty('bytesTotal') [NetStream.as:72]
+PASSED: ! netstreamObj.hasOwnProperty('bytesTotal') [NetStream.as:73]
+PASSED: typeof(netstreamObj.close) == 'function' [NetStream.as:80]
+PASSED: typeof(netstreamObj.setBufferTime) == 'function' [NetStream.as:82]
+PASSED: typeof(netstreamObj.pause) == 'function' [NetStream.as:91]
+PASSED: typeof(netstreamObj.play) == 'function' [NetStream.as:93]
+PASSED: typeof(netstreamObj.seek) == 'function' [NetStream.as:95]
+PASSED: typeof(netstreamObj.receiveAudio()) == 'undefined' [NetStream.as:98]
+PASSED: typeof(netstreamObj.receiveVideo()) == 'undefined' [NetStream.as:100]
+PASSED: typeof(netstreamObj.setbuffertime) == 'undefined' [NetStream.as:106]
+PASSED: typeof(netstreamObj.attachAudio()) == 'undefined' [NetStream.as:114]
+PASSED: typeof(netstreamObj.attachVideo()) == 'undefined' [NetStream.as:116]
+PASSED: typeof(netstreamObj.publish()) == 'undefined' [NetStream.as:118]
+PASSED: typeof(netstreamObj.send()) == 'undefined' [NetStream.as:120]
+PASSED: typeof(netstreamObj.onPlayStatus) == 'undefined' [NetStream.as:125]
+PASSED: typeof(netstreamObj.onPlayStatus) == 'number' [NetStream.as:127]
+PASSED: typeof(netstreamObj.onPlayStatus) == 'string' [NetStream.as:129]
+PASSED: typeof(netstreamObj.onStatus) == 'undefined' [NetStream.as:131]
+PASSED: typeof(netstreamObj.onStatus) == 'number' [NetStream.as:133]
+PASSED: typeof(netstreamObj.onStatus) == 'string' [NetStream.as:135]
+PASSED: typeof(netstreamObj.onCuePoint) == 'undefined' [NetStream.as:137]
+PASSED: typeof(netstreamObj.onCuePoint) == 'number' [NetStream.as:139]
+PASSED: typeof(netstreamObj.onCuePoint) == 'string' [NetStream.as:141]
+PASSED: typeof(netstreamObj.onMetaData) == 'undefined' [NetStream.as:143]
+PASSED: typeof(netstreamObj.onMetaData) == 'number' [NetStream.as:145]
+PASSED: typeof(netstreamObj.onMetaData) == 'string' [NetStream.as:147]
+PASSED: typeof(netstreamObj.currentFps) == 'undefined' [NetStream.as:153]
+XPASSED: typeof(netstreamObj.currentFps) == 'string' [NetStream.as:155]
+XPASSED: typeof(netstreamObj.currentFps) == 'boolean' [NetStream.as:157]
+XPASSED: typeof(netstreamObj.bufferLength) == 'undefined' [NetStream.as:160]
+XPASSED: typeof(netstreamObj.bufferLength) == 'string' [NetStream.as:162]
+XPASSED: typeof(netstreamObj.bufferLength) == 'boolean' [NetStream.as:164]
+XPASSED: typeof(netstreamObj.bufferTime) == 'undefined' [NetStream.as:167]
+XPASSED: netstreamObj.bufferTime == NULL [NetStream.as:169]
+XPASSED: netstreamObj.bufferTime == 20 [NetStream.as:171]
+XPASSED: netstreamObj.bufferTime == 20 [NetStream.as:173]
+XPASSED: netstreamObj.bufferTime == 20 [NetStream.as:175]
+XPASSED: netstreamObj.bufferTime == 20 [NetStream.as:177]
+XPASSED: netstreamObj.bufferTime == 20 [NetStream.as:179]
+PASSED: typeof(netstreamObj.liveDelay) == 'undefined' [NetStream.as:182]
+XPASSED: typeof(netstreamObj.liveDelay) == 'string' [NetStream.as:184]
+XPASSED: typeof(netstreamObj.time) == 'undefined' [NetStream.as:187]
+XPASSED: typeof(netstreamObj.time) == 'string' [NetStream.as:189]
+PASSED: typeof(netstreamObj.bytesLoaded) == 'undefined' [NetStream.as:195]
+PASSED: typeof(netstreamObj.bytesTotal) == 'undefined' [NetStream.as:197]
+check_totals: 60
diff --git a/test/gnash/actionscript.all/pending/NetStream.as b/test/gnash/actionscript.all/pending/NetStream.as
new file mode 100644
index 0000000..df07712
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/NetStream.as
@@ -0,0 +1,205 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for NetStream ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: NetStream.as,v 1.21 2008/03/11 19:31:47 strk Exp $";
+#include "check.as"
+
+#if OUTPUT_VERSION < 6
+
+// Added in SWF6; some versions of the pp won't care, but not
+// testing anyway.
+// Use changes quite significantly from SWF6 (connections to media
+// server) to SWF7 (streaming from various sources).
+
+#else // OUTPUT_VERSION >= 6
+
+check_equals(typeof(NetStream), 'function');
+check_equals(typeof(NetStream.prototype), 'object');
+
+var netstreamObj = new NetStream;
+
+
+/* Constructor */
+
+// test the NetStream constuct FAILED: ! NetStream.prototype.hasOwnProperty('bufferLength')or
+check_equals ( typeof(netstreamObj), 'object' );
+
+
+/* 
+ * These properties should not yet exist. They may be added  *
+ * when the NetStream connection is established.             *
+ *                                                           */
+
+xcheck(! NetStream.prototype.hasOwnProperty('currentFps'));
+check(! netstreamObj.hasOwnProperty('currentFps'));
+
+xcheck(! NetStream.prototype.hasOwnProperty('bufferLength'));
+check(! netstreamObj.hasOwnProperty('bufferLength'));
+
+xcheck(! NetStream.prototype.hasOwnProperty('bufferTime'));
+check(! netstreamObj.hasOwnProperty('bufferTime'));
+
+xcheck(! NetStream.prototype.hasOwnProperty('liveDelay'));
+check(! netstreamObj.hasOwnProperty('liveDelay'));
+
+xcheck(! NetStream.prototype.hasOwnProperty('time'));
+check(! netstreamObj.hasOwnProperty('time'));
+
+/* Added in SWF7 (still apply to SWF6) */
+xcheck(! NetStream.prototype.hasOwnProperty('bytesLoaded'));
+check(! netstreamObj.hasOwnProperty('bytesLoaded'));
+
+xcheck(! NetStream.prototype.hasOwnProperty('bytesTotal'));
+check(! netstreamObj.hasOwnProperty('bytesTotal'));
+
+
+/* Subscriber Methods */
+
+# if OUTPUT_VERSION > 5
+// test the NetStream::close method
+check_equals ( typeof(netstreamObj.close), 'function' );
+// test the NetStream::setBufferTime method
+check_equals ( typeof(netstreamObj.setBufferTime), 'function');
+# else
+// this is verified on at least one pp version for SWF5, but we
+// aren't testing it. 
+// test the NetStream::close method
+check_equals ( typeof(netstreamObj.close), 'undefined' );
+// test the NetStream::setBufferTime method
+check_equals ( typeof(netstreamObj.setBufferTime), 'undefined');
+# endif
+check_equals ( typeof(netstreamObj.pause), 'function' );
+// test the NetStream::play method
+check_equals ( typeof(netstreamObj.play), 'function');
+// test the NetStream::seek method
+check_equals ( typeof(netstreamObj.seek), 'function' );
+
+// receiveAudio (use with media server)
+check_equals ( typeof(netstreamObj.receiveAudio()), 'undefined');
+// receiveVideo (use with media server)
+check_equals ( typeof(netstreamObj.receiveVideo()), 'undefined');
+
+# if OUTPUT_VERSION == 6
+check_equals ( typeof(netstreamObj.setbuffertime), 'function');
+# else 
+// SWF7 up is case-sensitive !
+check_equals ( typeof(netstreamObj.setbuffertime), 'undefined');
+# endif 
+
+
+/* Publisher Methods */
+
+// For use with a media server, in SWF6
+// test attachAudio
+check_equals ( typeof(netstreamObj.attachAudio()), 'undefined');
+// test attachVideo
+check_equals ( typeof(netstreamObj.attachVideo()), 'undefined');
+// test publish
+check_equals ( typeof(netstreamObj.publish()), 'undefined');
+// test send
+check_equals ( typeof(netstreamObj.send()), 'undefined');
+
+
+/* Event Handlers */
+
+check_equals(typeof(netstreamObj.onPlayStatus), 'undefined');
+netstreamObj.onPlayStatus = 4;
+check_equals(typeof(netstreamObj.onPlayStatus), 'number');
+netstreamObj.onPlayStatus = "str";
+check_equals(typeof(netstreamObj.onPlayStatus), 'string');
+
+check_equals(typeof(netstreamObj.onStatus), 'undefined');
+netstreamObj.onStatus = 4;
+check_equals(typeof(netstreamObj.onStatus), 'number');
+netstreamObj.onStatus = "str";
+check_equals(typeof(netstreamObj.onStatus), 'string');
+
+check_equals(typeof(netstreamObj.onCuePoint), 'undefined');
+netstreamObj.onCuePoint = 4;
+check_equals(typeof(netstreamObj.onCuePoint), 'number');
+netstreamObj.onCuePoint = "str";
+check_equals(typeof(netstreamObj.onCuePoint), 'string');
+
+check_equals(typeof(netstreamObj.onMetaData), 'undefined');
+netstreamObj.onMetaData = 4;
+check_equals(typeof(netstreamObj.onMetaData), 'number');
+netstreamObj.onMetaData = "str";
+check_equals(typeof(netstreamObj.onMetaData), 'string');
+
+
+/* Properties */
+
+// currentFps (read-only)
+check_equals ( typeof(netstreamObj.currentFps), 'undefined' );
+netstreamObj.currentFps = 'string';
+xcheck_equals ( typeof(netstreamObj.currentFps), 'string' );
+netstreamObj.currentFps = false;
+xcheck_equals ( typeof(netstreamObj.currentFps), 'boolean' );
+
+// bufferLength (read-only)
+xcheck_equals ( typeof(netstreamObj.bufferLength), 'undefined' );
+netstreamObj.bufferLength = 'string';
+xcheck_equals ( typeof(netstreamObj.bufferLength), 'string' );
+netstreamObj.bufferLength = false;
+xcheck_equals ( typeof(netstreamObj.bufferLength), 'boolean' );
+
+// bufferTime
+xcheck_equals ( typeof(netstreamObj.bufferTime), 'undefined' );
+netstreamObj.setBufferTime(10);
+xcheck_equals(netstreamObj.bufferTime, NULL);
+netstreamObj.bufferTime = 20;
+xcheck_equals(netstreamObj.bufferTime, 20);
+netstreamObj.setBufferTime = 30;
+xcheck_equals(netstreamObj.bufferTime, 20);
+netstreamObj.setBufferTime(false);
+xcheck_equals(netstreamObj.bufferTime, 20);
+netstreamObj.setBufferTime('string');
+xcheck_equals(netstreamObj.bufferTime, 20);
+xnetstreamObj.setBufferTime('5');
+xcheck_equals(netstreamObj.bufferTime, 20);
+
+// liveDelay (read-only)
+check_equals ( typeof(netstreamObj.liveDelay), 'undefined' );
+netstreamObj.liveDelay = 'string';
+xcheck_equals ( typeof(netstreamObj.liveDelay), 'string' );
+
+// time (read-only)
+xcheck_equals ( typeof(netstreamObj.time), 'undefined' );
+netstreamObj.time = 'string';
+xcheck_equals ( typeof(netstreamObj.time), 'string' );
+
+
+/* Two properties added in SWF7 */
+
+// bytesLoaded (read-only)
+check_equals ( typeof(netstreamObj.bytesLoaded), 'undefined' );
+// bytesLoaded (read-only)
+check_equals ( typeof(netstreamObj.bytesTotal), 'undefined' );
+
+#endif // OUTPUT_VERSION >= 6
+
+#if OUTPUT_VERSION < 6
+check_totals(0);
+#else
+check_totals(60);
+#endif
diff --git a/test/gnash/actionscript.all/pending/Number-5.swf b/test/gnash/actionscript.all/pending/Number-5.swf
new file mode 100644
index 0000000..30ff8bf
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Number-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/Number-5.swf.trace b/test/gnash/actionscript.all/pending/Number-5.swf.trace
new file mode 100644
index 0000000..f1c86ab
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Number-5.swf.trace
@@ -0,0 +1,214 @@
+PASSED: Number.hasOwnProperty('MAX_VALUE') [Number.as:36]
+PASSED: typeof(Number.MAX_VALUE) == "number" [Number.as:37]
+XPASSED: Number.MAX_VALUE.toString() == "1.79769313486231e+308" [Number.as:40]
+PASSED: Number.hasOwnProperty('MIN_VALUE') [Number.as:42]
+PASSED: typeof(Number.MIN_VALUE) == "number" [Number.as:43]
+PASSED: Number.MIN_VALUE.toString() == "4.94065645841247e-324" [Number.as:44]
+PASSED: Number.hasOwnProperty('NEGATIVE_INFINITY') [Number.as:46]
+PASSED: Number.NEGATIVE_INFINITY == -Infinity [Number.as:47]
+PASSED: Number.hasOwnProperty('NaN') [Number.as:49]
+PASSED: Number.NaN == NaN [Number.as:50]
+PASSED: Number.hasOwnProperty('POSITIVE_INFINITY') [Number.as:52]
+PASSED: Number.POSITIVE_INFINITY == Infinity [Number.as:53]
+PASSED: typeof(n1) == 'object' [Number.as:56]
+PASSED: typeof(n1prim) == 'number' [Number.as:58]
+PASSED: n1 == n1prim [Number.as:61]
+PASSED: n1 == 268 [Number.as:71]
+PASSED: 268 == n1 [Number.as:72]
+PASSED: typeof(n1.toString) == "function" [Number.as:78]
+PASSED: typeof(n1.toString()) == "string" [Number.as:79]
+PASSED: n1.toString() == "268" [Number.as:80]
+PASSED: n1.toString() == "268" [Number.as:84]
+PASSED: tmp.toString(2) == '1010' [Number.as:92]
+PASSED: tmp.toString(2) == '110' [Number.as:94]
+PASSED: tmp.toString(3) == '20' [Number.as:95]
+PASSED: tmp.toString(8) == '6' [Number.as:96]
+PASSED: tmp.toString(-2) == '6' [Number.as:97]
+PASSED: tmp.toString(0) == '6' [Number.as:98]
+PASSED: tmp.toString(5) == '11' [Number.as:99]
+PASSED: tmp.toString(2) == '-101' [Number.as:101]
+PASSED: tmp.toString(16) == '-5' [Number.as:102]
+PASSED: tmp.toString(16) == '-b' [Number.as:104]
+PASSED: typeof(n1.valueOf) == "function" [Number.as:110]
+PASSED: typeof(n1.__proto__.valueOf) == "function" [Number.as:111]
+PASSED: typeof(n1.__proto__.__proto__.valueOf) == "function" [Number.as:112]
+PASSED: typeof(n1.valueOf()) == "number" [Number.as:113]
+PASSED: n1.valueOf() == 268 [Number.as:114]
+PASSED: n1.valueOf() == 268 [Number.as:123]
+PASSED: n1.valueOf() == "fake_value" [Number.as:128]
+PASSED: -268 == n1 [Number.as:133]
+PASSED: n1.toString() == "-268" [Number.as:134]
+PASSED: typeof(NaN) == 'number' [Number.as:140]
+PASSED: typeof(isNaN) == 'function' [Number.as:141]
+PASSED: typeof(isNaN(NaN)) == 'boolean' [Number.as:142]
+PASSED: NaN == NaN [Number.as:143]
+PASSED: (0/2) == (0/5) [Number.as:144]
+PASSED: ! (NaN != NaN) [Number.as:145]
+PASSED: isNaN(NaN) [Number.as:146]
+PASSED: typeof(isNaN(0/0)) == 'boolean' [Number.as:147]
+PASSED: isNaN(0/0) [Number.as:148]
+PASSED: typeof(_global) == 'undefined' [Number.as:156]
+PASSED: typeof(Object) == 'function' [Number.as:157]
+PASSED: typeof(Object.prototype) == 'object' [Number.as:158]
+PASSED: typeof(Object.prototype.NaN) == 'undefined' [Number.as:159]
+PASSED: ! isNaN(undefined) [Number.as:167]
+PASSED: ! isNaN(null) [Number.as:168]
+PASSED: ! isNaN(Object.prototype.NaN) [Number.as:169]
+PASSED: ! Object.hasOwnProperty('NaN') [Number.as:172]
+PASSED: ! Object.prototype.hasOwnProperty('NaN') [Number.as:173]
+PASSED: ! this.__proto__.hasOwnProperty('NaN') [Number.as:174]
+PASSED: typeof(Infinity) == 'number' [Number.as:180]
+PASSED: typeof(isFinite) == 'function' [Number.as:181]
+PASSED: typeof(isFinite(Infinity)) == 'boolean' [Number.as:182]
+PASSED: Infinity == Infinity [Number.as:183]
+PASSED: ! isFinite(Infinity) [Number.as:184]
+PASSED: typeof(isFinite(0/0)) == 'boolean' [Number.as:185]
+PASSED: ! isFinite(0/0) [Number.as:186]
+PASSED: typeof(_global) == 'undefined' [Number.as:194]
+PASSED: typeof(Object) == 'function' [Number.as:195]
+PASSED: typeof(Object.prototype) == 'object' [Number.as:196]
+PASSED: typeof(Object.prototype.Infinity) == 'undefined' [Number.as:197]
+PASSED: isFinite(undefined) [Number.as:205]
+PASSED: isFinite(null) [Number.as:206]
+PASSED: isFinite(Object.prototype.NaN) [Number.as:207]
+PASSED: ! Object.hasOwnProperty('Infinity') [Number.as:210]
+PASSED: ! Object.prototype.hasOwnProperty('Infinity') [Number.as:211]
+PASSED: ! this.__proto__.hasOwnProperty('Infinity') [Number.as:212]
+PASSED: isNaN(0+this) [Number.as:218]
+PASSED: isNaN(this) [Number.as:219]
+PASSED: isNaN(this) [Number.as:221]
+PASSED: isNaN(o) [Number.as:223]
+PASSED: isNaN(0+o) [Number.as:224]
+PASSED: 0+o == 3 [Number.as:226]
+PASSED: 0+"string" == "0string" [Number.as:227]
+PASSED: !isNaN(2+Number) [Number.as:230]
+PASSED: !isNaN(2/undefined) [Number.as:241]
+PASSED: !isNaN(undefined/2) [Number.as:242]
+PASSED: isFinite(undefined/2) [Number.as:243]
+PASSED: 2/undefined == Infinity [Number.as:244]
+PASSED: !isFinite(Infinity) [Number.as:247]
+PASSED: !isFinite(2/undefined) [Number.as:248]
+PASSED: typeof(("string"<7)) == 'undefined' [Number.as:250]
+PASSED: typeof((7<"string")) == 'undefined' [Number.as:251]
+PASSED: typeof(("18"<7)) == 'boolean' [Number.as:252]
+PASSED: typeof((7<"18")) == 'boolean' [Number.as:253]
+PASSED: ("18"<"7") == true [Number.as:254]
+PASSED: ("18"<7) == false [Number.as:255]
+PASSED: (7<"18") == true [Number.as:256]
+PASSED: typeof(_root<"18") == 'undefined' [Number.as:257]
+PASSED: typeof(undefined<7) == 'boolean' [Number.as:277]
+PASSED: typeof(undefined>7) == 'boolean' [Number.as:278]
+PASSED: typeof(undefined<-7) == 'boolean' [Number.as:279]
+PASSED: typeof(undefined>-7) == 'boolean' [Number.as:280]
+PASSED: typeof(7<undefined) == 'boolean' [Number.as:281]
+PASSED: typeof(7>undefined) == 'boolean' [Number.as:282]
+PASSED: typeof(-7<undefined) == 'boolean' [Number.as:283]
+PASSED: typeof(-7>undefined) == 'boolean' [Number.as:284]
+PASSED: (undefined<7) == true [Number.as:286]
+PASSED: (undefined>7) == false [Number.as:287]
+PASSED: (undefined<-7) == false [Number.as:288]
+PASSED: (undefined>-7) == true [Number.as:289]
+PASSED: (7<undefined) == false [Number.as:290]
+PASSED: (7>undefined) == true [Number.as:291]
+PASSED: (-7<undefined) == true [Number.as:292]
+PASSED: (-7>undefined) == false [Number.as:293]
+PASSED: '0' + -1 == '0-1' [Number.as:297]
+PASSED: '00' == 0 [Number.as:300]
+PASSED: "0xFF0000" != 0xFF0000 [Number.as:309]
+PASSED: "0XFF0000" != 0xFF0000 [Number.as:310]
+PASSED: isNaN("0xff000z") [Number.as:313]
+PASSED: typeof(Number.prototype.valueOf) == 'function' [Number.as:315]
+PASSED: typeof(Number.prototype.toString) == 'function' [Number.as:316]
+PASSED: !isNaN(Number.valueOf()) [Number.as:320]
+PASSED: typeof(Number) == 'function' [Number.as:323]
+PASSED: Number.hasOwnProperty('prototype') [Number.as:324]
+PASSED: Number.hasOwnProperty('__proto__') [Number.as:325]
+PASSED: Number.hasOwnProperty('constructor') [Number.as:326]
+PASSED: typeof(Number.prototype) == 'object' [Number.as:327]
+PASSED: Number.prototype == Object [Number.as:329]
+PASSED: Number.prototype == Function [Number.as:330]
+PASSED: Number.prototype == Object.__proto__ [Number.as:331]
+PASSED: Number.prototype == null [Number.as:332]
+PASSED: Number.prototype == undefined [Number.as:333]
+PASSED: Number.prototype != 0 [Number.as:334]
+PASSED: Number.prototype != "string" [Number.as:335]
+PASSED: typeof(Number.valueOf) == 'undefined' [Number.as:342]
+PASSED: typeof(Number.toString) == 'undefined' [Number.as:343]
+PASSED: typeof(Number.__proto__) == 'undefined' [Number.as:344]
+PASSED: typeof(Number.__proto__) == 'object' [Number.as:349]
+PASSED: Number.prototype.__proto__ == Object.prototype [Number.as:350]
+PASSED: typeof(Number.toString) == 'function' [Number.as:352]
+PASSED: typeof(Number.valueOf) == 'function' [Number.as:353]
+PASSED: !Number.hasOwnProperty('valueOf') [Number.as:354]
+PASSED: !Number.hasOwnProperty('toString') [Number.as:355]
+PASSED: !Number.__proto__.hasOwnProperty('valueOf') [Number.as:356]
+PASSED: !Number.__proto__.hasOwnProperty('toString') [Number.as:357]
+PASSED: Number.__proto__.__proto__ == Object.prototype [Number.as:358]
+PASSED: typeof(Number.valueOf()) == 'function' [Number.as:360]
+PASSED: typeof(a.toString) == 'function' [Number.as:363]
+PASSED: typeof(a.valueOf) == 'function' [Number.as:364]
+PASSED: !a.hasOwnProperty('valueOf') [Number.as:365]
+PASSED: a.__proto__.hasOwnProperty('valueOf') [Number.as:371]
+PASSED: !a.hasOwnProperty('toString') [Number.as:372]
+PASSED: typeof(anum.toString) == 'function' [Number.as:376]
+PASSED: typeof(anum.valueOf) == 'function' [Number.as:377]
+PASSED: !anum.hasOwnProperty('valueOf') [Number.as:378]
+PASSED: anum.__proto__.hasOwnProperty('valueOf') [Number.as:379]
+PASSED: !anum.hasOwnProperty('toString') [Number.as:380]
+PASSED: val == 4 [Number.as:390]
+PASSED: val == 0 [Number.as:394]
+PASSED: !isNaN(val) [Number.as:395]
+PASSED: val == 0 [Number.as:402]
+PASSED: !isNaN(val) [Number.as:403]
+PASSED: val == 10 [Number.as:409]
+PASSED: val == 300 [Number.as:412]
+PASSED: val == 20 [Number.as:415]
+PASSED: isNaN(val) [Number.as:418]
+PASSED: val == 2.6 [Number.as:421]
+PASSED: isNaN(val) [Number.as:424]
+PASSED: isNaN(val) [Number.as:427]
+PASSED: val != Infinity [Number.as:430]
+PASSED: isNaN(val) [Number.as:431]
+PASSED: val != Infinity [Number.as:434]
+PASSED: isNaN(val) [Number.as:435]
+PASSED: isNaN(val) [Number.as:439]
+PASSED: val == 7 [Number.as:443]
+PASSED: !isNaN(val) [Number.as:450]
+PASSED: typeof(val) == 'number' [Number.as:451]
+PASSED: val == 0 [Number.as:452]
+PASSED: 0 == val [Number.as:453]
+PASSED: val == 9 [Number.as:458]
+PASSED: 9 == val [Number.as:459]
+PASSED: 450 - undefined == 450 [Number.as:471]
+PASSED: a.toString() == "11111111111111.1" [Number.as:486]
+PASSED: a.toString() == "111111111111111" [Number.as:489]
+PASSED: a.toString() == "1.11111111111111e+15" [Number.as:492]
+PASSED: a.toString() == "0.000123456789012346" [Number.as:495]
+PASSED: a.toString() == "0.0000123456789012346" [Number.as:498]
+PASSED: a.toString() == "1.23456789012346e-6" [Number.as:501]
+PASSED: a.toString() == "1.23456789012346e-7" [Number.as:504]
+PASSED: a.toString() == "0.0999999999999999" [Number.as:507]
+PASSED: a.toString() == "0.999999999999999" [Number.as:510]
+PASSED: a.toString() == "0.999999999999999" [Number.as:513]
+PASSED: a.toString() == "0.000054" [Number.as:516]
+PASSED: a.toString() == "5.4e-6" [Number.as:519]
+PASSED: a.toString(10) == "5.4e-6" [Number.as:520]
+PASSED: a.toString() == "2.12345678912346" [Number.as:523]
+PASSED: a.toString() == "-2.12345678912346" [Number.as:526]
+PASSED: a.toString() == "0.123456789123457" [Number.as:529]
+PASSED: a.toString() == "-0.123456789123457" [Number.as:532]
+PASSED: a.toString() == "1.23456789123456e+308" [Number.as:535]
+PASSED: a.toString() == "-1.23456789123456e+308" [Number.as:538]
+XPASSED: a.toString() == "1.23456789123457e-308" [Number.as:541]
+XPASSED: a.toString() == "-1.23456789123457e-308" [Number.as:544]
+XPASSED: a.toString() == "1.23456789123457e-6" [Number.as:547]
+XPASSED: a.toString() == "-1.23456789123457e-6" [Number.as:550]
+PASSED: a.toString() == "-1.24456789123457e-6" [Number.as:553]
+PASSED: a.toString() == "-1.24466789123457e-6" [Number.as:556]
+PASSED: a.toString() == "-0.00123456789123457" [Number.as:559]
+PASSED: a.toString() == "-0.00124456789123456" [Number.as:562]
+PASSED: a.toString() == "-0.00123456789123456" [Number.as:565]
+PASSED: a.toString() == "0.00123456789123457" [Number.as:568]
+PASSED: a.toString() == "0.00123456789123456" [Number.as:571]
+PASSED: isNaN(0/0) [Number.as:573]
+check_totals: 213
diff --git a/test/gnash/actionscript.all/pending/Number-6.swf b/test/gnash/actionscript.all/pending/Number-6.swf
new file mode 100644
index 0000000..e90d306
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Number-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/Number-6.swf.trace b/test/gnash/actionscript.all/pending/Number-6.swf.trace
new file mode 100644
index 0000000..590ec80
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Number-6.swf.trace
@@ -0,0 +1,207 @@
+PASSED: Number.hasOwnProperty('MAX_VALUE') [Number.as:36]
+PASSED: typeof(Number.MAX_VALUE) == "number" [Number.as:37]
+XPASSED: Number.MAX_VALUE.toString() == "1.79769313486231e+308" [Number.as:40]
+PASSED: Number.hasOwnProperty('MIN_VALUE') [Number.as:42]
+PASSED: typeof(Number.MIN_VALUE) == "number" [Number.as:43]
+PASSED: Number.MIN_VALUE.toString() == "4.94065645841247e-324" [Number.as:44]
+PASSED: Number.hasOwnProperty('NEGATIVE_INFINITY') [Number.as:46]
+PASSED: Number.NEGATIVE_INFINITY == -Infinity [Number.as:47]
+PASSED: Number.hasOwnProperty('NaN') [Number.as:49]
+PASSED: Number.NaN == NaN [Number.as:50]
+PASSED: Number.hasOwnProperty('POSITIVE_INFINITY') [Number.as:52]
+PASSED: Number.POSITIVE_INFINITY == Infinity [Number.as:53]
+PASSED: typeof(n1) == 'object' [Number.as:56]
+PASSED: typeof(n1prim) == 'number' [Number.as:58]
+PASSED: n1 == n1prim [Number.as:61]
+PASSED: ! (n1 === 268) [Number.as:65]
+PASSED: ! (n1 === Number(268)) [Number.as:67]
+PASSED: n1 == 268 [Number.as:71]
+PASSED: 268 == n1 [Number.as:72]
+PASSED: typeof(n1.toString) == "function" [Number.as:78]
+PASSED: typeof(n1.toString()) == "string" [Number.as:79]
+PASSED: n1.toString() == "268" [Number.as:80]
+PASSED: n1.toString() == "268" [Number.as:84]
+PASSED: Number.prototype.hasOwnProperty('toString') [Number.as:88]
+PASSED: tmp.toString(2) == '1010' [Number.as:92]
+PASSED: tmp.toString(2) == '110' [Number.as:94]
+PASSED: tmp.toString(3) == '20' [Number.as:95]
+PASSED: tmp.toString(8) == '6' [Number.as:96]
+PASSED: tmp.toString(-2) == '6' [Number.as:97]
+PASSED: tmp.toString(0) == '6' [Number.as:98]
+PASSED: tmp.toString(5) == '11' [Number.as:99]
+PASSED: tmp.toString(2) == '-101' [Number.as:101]
+PASSED: tmp.toString(16) == '-5' [Number.as:102]
+PASSED: tmp.toString(16) == '-b' [Number.as:104]
+PASSED: typeof(n1.valueOf) == "function" [Number.as:110]
+PASSED: typeof(n1.__proto__.valueOf) == "function" [Number.as:111]
+PASSED: typeof(n1.__proto__.__proto__.valueOf) == "function" [Number.as:112]
+PASSED: typeof(n1.valueOf()) == "number" [Number.as:113]
+PASSED: n1.valueOf() == 268 [Number.as:114]
+PASSED: Number.prototype.hasOwnProperty('valueOf') [Number.as:117]
+PASSED: Object.prototype.hasOwnProperty('valueOf') [Number.as:118]
+PASSED: n1.valueOf() == 268 [Number.as:123]
+PASSED: n1.valueOf() == "fake_value" [Number.as:128]
+PASSED: -268 == n1 [Number.as:133]
+PASSED: n1.toString() == "-268" [Number.as:134]
+PASSED: typeof(NaN) == 'number' [Number.as:140]
+PASSED: typeof(isNaN) == 'function' [Number.as:141]
+PASSED: typeof(isNaN(NaN)) == 'boolean' [Number.as:142]
+PASSED: NaN == NaN [Number.as:143]
+PASSED: (0/2) == (0/5) [Number.as:144]
+PASSED: ! (NaN != NaN) [Number.as:145]
+PASSED: isNaN(NaN) [Number.as:146]
+PASSED: typeof(isNaN(0/0)) == 'boolean' [Number.as:147]
+PASSED: isNaN(0/0) [Number.as:148]
+PASSED: typeof(_global.NaN) == 'number' [Number.as:152]
+PASSED: typeof(isNaN(_global.NaN)) == 'boolean' [Number.as:153]
+PASSED: isNaN(_global.NaN) [Number.as:154]
+PASSED: ! isNaN(undefined) [Number.as:167]
+PASSED: ! isNaN(null) [Number.as:168]
+PASSED: ! isNaN(Object.prototype.NaN) [Number.as:169]
+PASSED: ! Object.hasOwnProperty('NaN') [Number.as:172]
+PASSED: ! Object.prototype.hasOwnProperty('NaN') [Number.as:173]
+PASSED: ! this.__proto__.hasOwnProperty('NaN') [Number.as:174]
+PASSED: typeof(Infinity) == 'number' [Number.as:180]
+PASSED: typeof(isFinite) == 'function' [Number.as:181]
+PASSED: typeof(isFinite(Infinity)) == 'boolean' [Number.as:182]
+PASSED: Infinity == Infinity [Number.as:183]
+PASSED: ! isFinite(Infinity) [Number.as:184]
+PASSED: typeof(isFinite(0/0)) == 'boolean' [Number.as:185]
+PASSED: ! isFinite(0/0) [Number.as:186]
+PASSED: typeof(_global.Infinity) == 'number' [Number.as:190]
+PASSED: typeof(isFinite(_global.Infinity)) == 'boolean' [Number.as:191]
+PASSED: ! isFinite(_global.Infinity) [Number.as:192]
+PASSED: isFinite(undefined) [Number.as:205]
+PASSED: isFinite(null) [Number.as:206]
+PASSED: isFinite(Object.prototype.NaN) [Number.as:207]
+PASSED: ! Object.hasOwnProperty('Infinity') [Number.as:210]
+PASSED: ! Object.prototype.hasOwnProperty('Infinity') [Number.as:211]
+PASSED: ! this.__proto__.hasOwnProperty('Infinity') [Number.as:212]
+PASSED: isNaN(0+this) [Number.as:218]
+PASSED: isNaN(this) [Number.as:219]
+PASSED: isNaN(this) [Number.as:221]
+PASSED: isNaN(o) [Number.as:223]
+PASSED: isNaN(0+o) [Number.as:224]
+PASSED: 0+o == 3 [Number.as:226]
+PASSED: 0+"string" == "0string" [Number.as:227]
+PASSED: isNaN(2+Number) [Number.as:232]
+PASSED: !isNaN(2/undefined) [Number.as:241]
+PASSED: !isNaN(undefined/2) [Number.as:242]
+PASSED: isFinite(undefined/2) [Number.as:243]
+PASSED: 2/undefined == Infinity [Number.as:244]
+PASSED: !isFinite(Infinity) [Number.as:247]
+PASSED: !isFinite(2/undefined) [Number.as:248]
+PASSED: typeof(("string"<7)) == 'undefined' [Number.as:250]
+PASSED: typeof((7<"string")) == 'undefined' [Number.as:251]
+PASSED: typeof(("18"<7)) == 'boolean' [Number.as:252]
+PASSED: typeof((7<"18")) == 'boolean' [Number.as:253]
+PASSED: ("18"<"7") == true [Number.as:254]
+PASSED: ("18"<7) == false [Number.as:255]
+PASSED: (7<"18") == true [Number.as:256]
+PASSED: typeof(_root<"18") == 'undefined' [Number.as:257]
+PASSED: typeof(undefined<7) == 'boolean' [Number.as:277]
+PASSED: typeof(undefined>7) == 'boolean' [Number.as:278]
+PASSED: typeof(undefined<-7) == 'boolean' [Number.as:279]
+PASSED: typeof(undefined>-7) == 'boolean' [Number.as:280]
+PASSED: typeof(7<undefined) == 'boolean' [Number.as:281]
+PASSED: typeof(7>undefined) == 'boolean' [Number.as:282]
+PASSED: typeof(-7<undefined) == 'boolean' [Number.as:283]
+PASSED: typeof(-7>undefined) == 'boolean' [Number.as:284]
+PASSED: (undefined<7) == true [Number.as:286]
+PASSED: (undefined>7) == false [Number.as:287]
+PASSED: (undefined<-7) == false [Number.as:288]
+PASSED: (undefined>-7) == true [Number.as:289]
+PASSED: (7<undefined) == false [Number.as:290]
+PASSED: (7>undefined) == true [Number.as:291]
+PASSED: (-7<undefined) == true [Number.as:292]
+PASSED: (-7>undefined) == false [Number.as:293]
+PASSED: '0' + -1 == '0-1' [Number.as:297]
+PASSED: '00' == 0 [Number.as:300]
+PASSED: "0xFF0000" == 0xFF0000 [Number.as:304]
+PASSED: "0XFF0000" == 0xFF0000 [Number.as:305]
+PASSED: "0Xff0000" == 0xFF0000 [Number.as:306]
+PASSED: "0Xff000000" != 0xFF000000 [Number.as:307]
+PASSED: isNaN("0xff000z") [Number.as:313]
+PASSED: typeof(Number.prototype.valueOf) == 'function' [Number.as:315]
+PASSED: typeof(Number.prototype.toString) == 'function' [Number.as:316]
+PASSED: isNaN(Number.valueOf()) [Number.as:318]
+PASSED: typeof(Number) == 'function' [Number.as:323]
+PASSED: Number.hasOwnProperty('prototype') [Number.as:324]
+PASSED: Number.hasOwnProperty('__proto__') [Number.as:325]
+PASSED: Number.hasOwnProperty('constructor') [Number.as:326]
+PASSED: typeof(Number.prototype) == 'object' [Number.as:327]
+PASSED: Number.prototype != Object [Number.as:337]
+PASSED: typeof(Number.__proto__) == 'object' [Number.as:349]
+PASSED: Number.prototype.__proto__ == Object.prototype [Number.as:350]
+PASSED: typeof(Number.toString) == 'function' [Number.as:352]
+PASSED: typeof(Number.valueOf) == 'function' [Number.as:353]
+PASSED: !Number.hasOwnProperty('valueOf') [Number.as:354]
+PASSED: !Number.hasOwnProperty('toString') [Number.as:355]
+PASSED: !Number.__proto__.hasOwnProperty('valueOf') [Number.as:356]
+PASSED: !Number.__proto__.hasOwnProperty('toString') [Number.as:357]
+PASSED: Number.__proto__.__proto__ == Object.prototype [Number.as:358]
+PASSED: typeof(Number.valueOf()) == 'function' [Number.as:360]
+PASSED: typeof(a.toString) == 'function' [Number.as:363]
+PASSED: typeof(a.valueOf) == 'function' [Number.as:364]
+PASSED: !a.hasOwnProperty('valueOf') [Number.as:365]
+PASSED: a.__proto__.hasOwnProperty('valueOf') [Number.as:371]
+PASSED: !a.hasOwnProperty('toString') [Number.as:372]
+PASSED: typeof(anum.toString) == 'function' [Number.as:376]
+PASSED: typeof(anum.valueOf) == 'function' [Number.as:377]
+PASSED: !anum.hasOwnProperty('valueOf') [Number.as:378]
+PASSED: anum.__proto__.hasOwnProperty('valueOf') [Number.as:379]
+PASSED: !anum.hasOwnProperty('toString') [Number.as:380]
+PASSED: val == 4 [Number.as:390]
+PASSED: val == 0 [Number.as:394]
+PASSED: !isNaN(val) [Number.as:395]
+PASSED: val == 0 [Number.as:402]
+PASSED: !isNaN(val) [Number.as:403]
+PASSED: val == 10 [Number.as:409]
+PASSED: val == 300 [Number.as:412]
+PASSED: val == 20 [Number.as:415]
+PASSED: isNaN(val) [Number.as:418]
+PASSED: val == 2.6 [Number.as:421]
+PASSED: isNaN(val) [Number.as:424]
+PASSED: isNaN(val) [Number.as:427]
+PASSED: val != Infinity [Number.as:430]
+PASSED: isNaN(val) [Number.as:431]
+PASSED: val != Infinity [Number.as:434]
+PASSED: isNaN(val) [Number.as:435]
+PASSED: isNaN(val) [Number.as:439]
+PASSED: val == 7 [Number.as:443]
+PASSED: isNaN(val) [Number.as:448]
+PASSED: val == 9 [Number.as:458]
+PASSED: 9 == val [Number.as:459]
+PASSED: 450 - undefined == 450 [Number.as:471]
+PASSED: a.toString() == "11111111111111.1" [Number.as:486]
+PASSED: a.toString() == "111111111111111" [Number.as:489]
+PASSED: a.toString() == "1.11111111111111e+15" [Number.as:492]
+PASSED: a.toString() == "0.000123456789012346" [Number.as:495]
+PASSED: a.toString() == "0.0000123456789012346" [Number.as:498]
+PASSED: a.toString() == "1.23456789012346e-6" [Number.as:501]
+PASSED: a.toString() == "1.23456789012346e-7" [Number.as:504]
+PASSED: a.toString() == "0.0999999999999999" [Number.as:507]
+PASSED: a.toString() == "0.999999999999999" [Number.as:510]
+PASSED: a.toString() == "0.999999999999999" [Number.as:513]
+PASSED: a.toString() == "0.000054" [Number.as:516]
+PASSED: a.toString() == "5.4e-6" [Number.as:519]
+PASSED: a.toString(10) == "5.4e-6" [Number.as:520]
+PASSED: a.toString() == "2.12345678912346" [Number.as:523]
+PASSED: a.toString() == "-2.12345678912346" [Number.as:526]
+PASSED: a.toString() == "0.123456789123457" [Number.as:529]
+PASSED: a.toString() == "-0.123456789123457" [Number.as:532]
+PASSED: a.toString() == "1.23456789123456e+308" [Number.as:535]
+PASSED: a.toString() == "-1.23456789123456e+308" [Number.as:538]
+XPASSED: a.toString() == "1.23456789123457e-308" [Number.as:541]
+XPASSED: a.toString() == "-1.23456789123457e-308" [Number.as:544]
+XPASSED: a.toString() == "1.23456789123457e-6" [Number.as:547]
+XPASSED: a.toString() == "-1.23456789123457e-6" [Number.as:550]
+PASSED: a.toString() == "-1.24456789123457e-6" [Number.as:553]
+PASSED: a.toString() == "-1.24466789123457e-6" [Number.as:556]
+PASSED: a.toString() == "-0.00123456789123457" [Number.as:559]
+PASSED: a.toString() == "-0.00124456789123456" [Number.as:562]
+PASSED: a.toString() == "-0.00123456789123456" [Number.as:565]
+PASSED: a.toString() == "0.00123456789123457" [Number.as:568]
+PASSED: a.toString() == "0.00123456789123456" [Number.as:571]
+PASSED: isNaN(0/0) [Number.as:573]
+check_totals: 206
diff --git a/test/gnash/actionscript.all/pending/Number-7.swf b/test/gnash/actionscript.all/pending/Number-7.swf
new file mode 100644
index 0000000..4beee89
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Number-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/Number-7.swf.trace b/test/gnash/actionscript.all/pending/Number-7.swf.trace
new file mode 100644
index 0000000..65488a9
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Number-7.swf.trace
@@ -0,0 +1,205 @@
+PASSED: Number.hasOwnProperty('MAX_VALUE') [Number.as:36]
+PASSED: typeof(Number.MAX_VALUE) == "number" [Number.as:37]
+XPASSED: Number.MAX_VALUE.toString() == "1.79769313486231e+308" [Number.as:40]
+PASSED: Number.hasOwnProperty('MIN_VALUE') [Number.as:42]
+PASSED: typeof(Number.MIN_VALUE) == "number" [Number.as:43]
+PASSED: Number.MIN_VALUE.toString() == "4.94065645841247e-324" [Number.as:44]
+PASSED: Number.hasOwnProperty('NEGATIVE_INFINITY') [Number.as:46]
+PASSED: Number.NEGATIVE_INFINITY == -Infinity [Number.as:47]
+PASSED: Number.hasOwnProperty('NaN') [Number.as:49]
+PASSED: Number.NaN == NaN [Number.as:50]
+PASSED: Number.hasOwnProperty('POSITIVE_INFINITY') [Number.as:52]
+PASSED: Number.POSITIVE_INFINITY == Infinity [Number.as:53]
+PASSED: typeof(n1) == 'object' [Number.as:56]
+PASSED: typeof(n1prim) == 'number' [Number.as:58]
+PASSED: n1 == n1prim [Number.as:61]
+PASSED: ! (n1 === 268) [Number.as:65]
+PASSED: ! (n1 === Number(268)) [Number.as:67]
+PASSED: n1 == 268 [Number.as:71]
+PASSED: 268 == n1 [Number.as:72]
+PASSED: typeof(n1.toString) == "function" [Number.as:78]
+PASSED: typeof(n1.toString()) == "string" [Number.as:79]
+PASSED: n1.toString() == "268" [Number.as:80]
+PASSED: n1.toString() == "268" [Number.as:84]
+PASSED: Number.prototype.hasOwnProperty('toString') [Number.as:88]
+PASSED: tmp.toString(2) == '1010' [Number.as:92]
+PASSED: tmp.toString(2) == '110' [Number.as:94]
+PASSED: tmp.toString(3) == '20' [Number.as:95]
+PASSED: tmp.toString(8) == '6' [Number.as:96]
+PASSED: tmp.toString(-2) == '6' [Number.as:97]
+PASSED: tmp.toString(0) == '6' [Number.as:98]
+PASSED: tmp.toString(5) == '11' [Number.as:99]
+PASSED: tmp.toString(2) == '-101' [Number.as:101]
+PASSED: tmp.toString(16) == '-5' [Number.as:102]
+PASSED: tmp.toString(16) == '-b' [Number.as:104]
+PASSED: typeof(n1.valueOf) == "function" [Number.as:110]
+PASSED: typeof(n1.__proto__.valueOf) == "function" [Number.as:111]
+PASSED: typeof(n1.__proto__.__proto__.valueOf) == "function" [Number.as:112]
+PASSED: typeof(n1.valueOf()) == "number" [Number.as:113]
+PASSED: n1.valueOf() == 268 [Number.as:114]
+PASSED: Number.prototype.hasOwnProperty('valueOf') [Number.as:117]
+PASSED: Object.prototype.hasOwnProperty('valueOf') [Number.as:118]
+PASSED: n1.valueOf() == 268 [Number.as:123]
+PASSED: n1.valueOf() == "fake_value" [Number.as:128]
+PASSED: -268 == n1 [Number.as:133]
+PASSED: n1.toString() == "-268" [Number.as:134]
+PASSED: typeof(NaN) == 'number' [Number.as:140]
+PASSED: typeof(isNaN) == 'function' [Number.as:141]
+PASSED: typeof(isNaN(NaN)) == 'boolean' [Number.as:142]
+PASSED: NaN == NaN [Number.as:143]
+PASSED: (0/2) == (0/5) [Number.as:144]
+PASSED: ! (NaN != NaN) [Number.as:145]
+PASSED: isNaN(NaN) [Number.as:146]
+PASSED: typeof(isNaN(0/0)) == 'boolean' [Number.as:147]
+PASSED: isNaN(0/0) [Number.as:148]
+PASSED: typeof(_global.NaN) == 'number' [Number.as:152]
+PASSED: typeof(isNaN(_global.NaN)) == 'boolean' [Number.as:153]
+PASSED: isNaN(_global.NaN) [Number.as:154]
+PASSED: isNaN(undefined) [Number.as:163]
+PASSED: isNaN(null) [Number.as:164]
+PASSED: isNaN(Object.prototype.NaN) [Number.as:165]
+PASSED: ! Object.hasOwnProperty('NaN') [Number.as:172]
+PASSED: ! Object.prototype.hasOwnProperty('NaN') [Number.as:173]
+PASSED: ! this.__proto__.hasOwnProperty('NaN') [Number.as:174]
+PASSED: typeof(Infinity) == 'number' [Number.as:180]
+PASSED: typeof(isFinite) == 'function' [Number.as:181]
+PASSED: typeof(isFinite(Infinity)) == 'boolean' [Number.as:182]
+PASSED: Infinity == Infinity [Number.as:183]
+PASSED: ! isFinite(Infinity) [Number.as:184]
+PASSED: typeof(isFinite(0/0)) == 'boolean' [Number.as:185]
+PASSED: ! isFinite(0/0) [Number.as:186]
+PASSED: typeof(_global.Infinity) == 'number' [Number.as:190]
+PASSED: typeof(isFinite(_global.Infinity)) == 'boolean' [Number.as:191]
+PASSED: ! isFinite(_global.Infinity) [Number.as:192]
+PASSED: ! isFinite(undefined) [Number.as:201]
+PASSED: ! isFinite(null) [Number.as:202]
+PASSED: ! isFinite(Object.prototype.NaN) [Number.as:203]
+PASSED: ! Object.hasOwnProperty('Infinity') [Number.as:210]
+PASSED: ! Object.prototype.hasOwnProperty('Infinity') [Number.as:211]
+PASSED: ! this.__proto__.hasOwnProperty('Infinity') [Number.as:212]
+PASSED: isNaN(0+this) [Number.as:218]
+PASSED: isNaN(this) [Number.as:219]
+PASSED: isNaN(this) [Number.as:221]
+PASSED: isNaN(o) [Number.as:223]
+PASSED: isNaN(0+o) [Number.as:224]
+PASSED: 0+o == 3 [Number.as:226]
+PASSED: 0+"string" == "0string" [Number.as:227]
+PASSED: isNaN(2+Number) [Number.as:232]
+PASSED: isNaN(2/undefined) [Number.as:236]
+PASSED: isNaN(undefined/2) [Number.as:237]
+PASSED: !isFinite(undefined/2) [Number.as:238]
+PASSED: 2/undefined != Infinity [Number.as:239]
+PASSED: !isFinite(Infinity) [Number.as:247]
+PASSED: !isFinite(2/undefined) [Number.as:248]
+PASSED: typeof(("string"<7)) == 'undefined' [Number.as:250]
+PASSED: typeof((7<"string")) == 'undefined' [Number.as:251]
+PASSED: typeof(("18"<7)) == 'boolean' [Number.as:252]
+PASSED: typeof((7<"18")) == 'boolean' [Number.as:253]
+PASSED: ("18"<"7") == true [Number.as:254]
+PASSED: ("18"<7) == false [Number.as:255]
+PASSED: (7<"18") == true [Number.as:256]
+PASSED: typeof(_root<"18") == 'undefined' [Number.as:257]
+PASSED: typeof(undefined<7) == 'undefined' [Number.as:260]
+PASSED: typeof(undefined>7) == 'undefined' [Number.as:261]
+PASSED: typeof(undefined<-7) == 'undefined' [Number.as:262]
+PASSED: typeof(undefined>-7) == 'undefined' [Number.as:263]
+PASSED: typeof(7<undefined) == 'undefined' [Number.as:264]
+PASSED: typeof(7>undefined) == 'undefined' [Number.as:265]
+PASSED: typeof(-7<undefined) == 'undefined' [Number.as:266]
+PASSED: typeof(-7>undefined) == 'undefined' [Number.as:267]
+PASSED: typeof(null<7) == 'undefined' [Number.as:268]
+PASSED: typeof(null>7) == 'undefined' [Number.as:269]
+PASSED: typeof(null<-7) == 'undefined' [Number.as:270]
+PASSED: typeof(null>-7) == 'undefined' [Number.as:271]
+PASSED: typeof(7<null) == 'undefined' [Number.as:272]
+PASSED: typeof(7>null) == 'undefined' [Number.as:273]
+PASSED: typeof(-7<null) == 'undefined' [Number.as:274]
+PASSED: typeof(-7>null) == 'undefined' [Number.as:275]
+PASSED: '0' + -1 == '0-1' [Number.as:297]
+PASSED: '00' == 0 [Number.as:300]
+PASSED: "0xFF0000" == 0xFF0000 [Number.as:304]
+PASSED: "0XFF0000" == 0xFF0000 [Number.as:305]
+PASSED: "0Xff0000" == 0xFF0000 [Number.as:306]
+PASSED: "0Xff000000" != 0xFF000000 [Number.as:307]
+PASSED: isNaN("0xff000z") [Number.as:313]
+PASSED: typeof(Number.prototype.valueOf) == 'function' [Number.as:315]
+PASSED: typeof(Number.prototype.toString) == 'function' [Number.as:316]
+PASSED: isNaN(Number.valueOf()) [Number.as:318]
+PASSED: typeof(Number) == 'function' [Number.as:323]
+PASSED: Number.hasOwnProperty('prototype') [Number.as:324]
+PASSED: Number.hasOwnProperty('__proto__') [Number.as:325]
+PASSED: Number.hasOwnProperty('constructor') [Number.as:326]
+PASSED: typeof(Number.prototype) == 'object' [Number.as:327]
+PASSED: Number.prototype != Object [Number.as:337]
+PASSED: typeof(Number.__proto__) == 'object' [Number.as:349]
+PASSED: Number.prototype.__proto__ == Object.prototype [Number.as:350]
+PASSED: typeof(Number.toString) == 'function' [Number.as:352]
+PASSED: typeof(Number.valueOf) == 'function' [Number.as:353]
+PASSED: !Number.hasOwnProperty('valueOf') [Number.as:354]
+PASSED: !Number.hasOwnProperty('toString') [Number.as:355]
+PASSED: !Number.__proto__.hasOwnProperty('valueOf') [Number.as:356]
+PASSED: !Number.__proto__.hasOwnProperty('toString') [Number.as:357]
+PASSED: Number.__proto__.__proto__ == Object.prototype [Number.as:358]
+PASSED: typeof(Number.valueOf()) == 'function' [Number.as:360]
+PASSED: typeof(a.toString) == 'function' [Number.as:363]
+PASSED: typeof(a.valueOf) == 'function' [Number.as:364]
+PASSED: !a.hasOwnProperty('valueOf') [Number.as:365]
+PASSED: a.__proto__.hasOwnProperty('valueOf') [Number.as:371]
+PASSED: !a.hasOwnProperty('toString') [Number.as:372]
+PASSED: typeof(anum.toString) == 'function' [Number.as:376]
+PASSED: typeof(anum.valueOf) == 'function' [Number.as:377]
+PASSED: !anum.hasOwnProperty('valueOf') [Number.as:378]
+PASSED: anum.__proto__.hasOwnProperty('valueOf') [Number.as:379]
+PASSED: !anum.hasOwnProperty('toString') [Number.as:380]
+PASSED: val == 4 [Number.as:390]
+PASSED: isNaN(val) [Number.as:397]
+PASSED: isNaN(val) [Number.as:405]
+PASSED: val == 10 [Number.as:409]
+PASSED: val == 300 [Number.as:412]
+PASSED: val == 20 [Number.as:415]
+PASSED: isNaN(val) [Number.as:418]
+PASSED: val == 2.6 [Number.as:421]
+PASSED: isNaN(val) [Number.as:424]
+PASSED: isNaN(val) [Number.as:427]
+PASSED: val != Infinity [Number.as:430]
+PASSED: isNaN(val) [Number.as:431]
+PASSED: val != Infinity [Number.as:434]
+PASSED: isNaN(val) [Number.as:435]
+PASSED: isNaN(val) [Number.as:439]
+PASSED: val == 7 [Number.as:443]
+PASSED: isNaN(val) [Number.as:448]
+PASSED: val == 9 [Number.as:458]
+PASSED: 9 == val [Number.as:459]
+PASSED: isNaN(450 - undefined) [Number.as:469]
+PASSED: a.toString() == "11111111111111.1" [Number.as:486]
+PASSED: a.toString() == "111111111111111" [Number.as:489]
+PASSED: a.toString() == "1.11111111111111e+15" [Number.as:492]
+PASSED: a.toString() == "0.000123456789012346" [Number.as:495]
+PASSED: a.toString() == "0.0000123456789012346" [Number.as:498]
+PASSED: a.toString() == "1.23456789012346e-6" [Number.as:501]
+PASSED: a.toString() == "1.23456789012346e-7" [Number.as:504]
+PASSED: a.toString() == "0.0999999999999999" [Number.as:507]
+PASSED: a.toString() == "0.999999999999999" [Number.as:510]
+PASSED: a.toString() == "0.999999999999999" [Number.as:513]
+PASSED: a.toString() == "0.000054" [Number.as:516]
+PASSED: a.toString() == "5.4e-6" [Number.as:519]
+PASSED: a.toString(10) == "5.4e-6" [Number.as:520]
+PASSED: a.toString() == "2.12345678912346" [Number.as:523]
+PASSED: a.toString() == "-2.12345678912346" [Number.as:526]
+PASSED: a.toString() == "0.123456789123457" [Number.as:529]
+PASSED: a.toString() == "-0.123456789123457" [Number.as:532]
+PASSED: a.toString() == "1.23456789123456e+308" [Number.as:535]
+PASSED: a.toString() == "-1.23456789123456e+308" [Number.as:538]
+XPASSED: a.toString() == "1.23456789123457e-308" [Number.as:541]
+XPASSED: a.toString() == "-1.23456789123457e-308" [Number.as:544]
+XPASSED: a.toString() == "1.23456789123457e-6" [Number.as:547]
+XPASSED: a.toString() == "-1.23456789123457e-6" [Number.as:550]
+PASSED: a.toString() == "-1.24456789123457e-6" [Number.as:553]
+PASSED: a.toString() == "-1.24466789123457e-6" [Number.as:556]
+PASSED: a.toString() == "-0.00123456789123457" [Number.as:559]
+PASSED: a.toString() == "-0.00124456789123456" [Number.as:562]
+PASSED: a.toString() == "-0.00123456789123456" [Number.as:565]
+PASSED: a.toString() == "0.00123456789123457" [Number.as:568]
+PASSED: a.toString() == "0.00123456789123456" [Number.as:571]
+PASSED: isNaN(0/0) [Number.as:573]
+check_totals: 204
diff --git a/test/gnash/actionscript.all/pending/Number-8.swf b/test/gnash/actionscript.all/pending/Number-8.swf
new file mode 100644
index 0000000..7d3f2ed
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Number-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/Number-8.swf.trace b/test/gnash/actionscript.all/pending/Number-8.swf.trace
new file mode 100644
index 0000000..65488a9
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Number-8.swf.trace
@@ -0,0 +1,205 @@
+PASSED: Number.hasOwnProperty('MAX_VALUE') [Number.as:36]
+PASSED: typeof(Number.MAX_VALUE) == "number" [Number.as:37]
+XPASSED: Number.MAX_VALUE.toString() == "1.79769313486231e+308" [Number.as:40]
+PASSED: Number.hasOwnProperty('MIN_VALUE') [Number.as:42]
+PASSED: typeof(Number.MIN_VALUE) == "number" [Number.as:43]
+PASSED: Number.MIN_VALUE.toString() == "4.94065645841247e-324" [Number.as:44]
+PASSED: Number.hasOwnProperty('NEGATIVE_INFINITY') [Number.as:46]
+PASSED: Number.NEGATIVE_INFINITY == -Infinity [Number.as:47]
+PASSED: Number.hasOwnProperty('NaN') [Number.as:49]
+PASSED: Number.NaN == NaN [Number.as:50]
+PASSED: Number.hasOwnProperty('POSITIVE_INFINITY') [Number.as:52]
+PASSED: Number.POSITIVE_INFINITY == Infinity [Number.as:53]
+PASSED: typeof(n1) == 'object' [Number.as:56]
+PASSED: typeof(n1prim) == 'number' [Number.as:58]
+PASSED: n1 == n1prim [Number.as:61]
+PASSED: ! (n1 === 268) [Number.as:65]
+PASSED: ! (n1 === Number(268)) [Number.as:67]
+PASSED: n1 == 268 [Number.as:71]
+PASSED: 268 == n1 [Number.as:72]
+PASSED: typeof(n1.toString) == "function" [Number.as:78]
+PASSED: typeof(n1.toString()) == "string" [Number.as:79]
+PASSED: n1.toString() == "268" [Number.as:80]
+PASSED: n1.toString() == "268" [Number.as:84]
+PASSED: Number.prototype.hasOwnProperty('toString') [Number.as:88]
+PASSED: tmp.toString(2) == '1010' [Number.as:92]
+PASSED: tmp.toString(2) == '110' [Number.as:94]
+PASSED: tmp.toString(3) == '20' [Number.as:95]
+PASSED: tmp.toString(8) == '6' [Number.as:96]
+PASSED: tmp.toString(-2) == '6' [Number.as:97]
+PASSED: tmp.toString(0) == '6' [Number.as:98]
+PASSED: tmp.toString(5) == '11' [Number.as:99]
+PASSED: tmp.toString(2) == '-101' [Number.as:101]
+PASSED: tmp.toString(16) == '-5' [Number.as:102]
+PASSED: tmp.toString(16) == '-b' [Number.as:104]
+PASSED: typeof(n1.valueOf) == "function" [Number.as:110]
+PASSED: typeof(n1.__proto__.valueOf) == "function" [Number.as:111]
+PASSED: typeof(n1.__proto__.__proto__.valueOf) == "function" [Number.as:112]
+PASSED: typeof(n1.valueOf()) == "number" [Number.as:113]
+PASSED: n1.valueOf() == 268 [Number.as:114]
+PASSED: Number.prototype.hasOwnProperty('valueOf') [Number.as:117]
+PASSED: Object.prototype.hasOwnProperty('valueOf') [Number.as:118]
+PASSED: n1.valueOf() == 268 [Number.as:123]
+PASSED: n1.valueOf() == "fake_value" [Number.as:128]
+PASSED: -268 == n1 [Number.as:133]
+PASSED: n1.toString() == "-268" [Number.as:134]
+PASSED: typeof(NaN) == 'number' [Number.as:140]
+PASSED: typeof(isNaN) == 'function' [Number.as:141]
+PASSED: typeof(isNaN(NaN)) == 'boolean' [Number.as:142]
+PASSED: NaN == NaN [Number.as:143]
+PASSED: (0/2) == (0/5) [Number.as:144]
+PASSED: ! (NaN != NaN) [Number.as:145]
+PASSED: isNaN(NaN) [Number.as:146]
+PASSED: typeof(isNaN(0/0)) == 'boolean' [Number.as:147]
+PASSED: isNaN(0/0) [Number.as:148]
+PASSED: typeof(_global.NaN) == 'number' [Number.as:152]
+PASSED: typeof(isNaN(_global.NaN)) == 'boolean' [Number.as:153]
+PASSED: isNaN(_global.NaN) [Number.as:154]
+PASSED: isNaN(undefined) [Number.as:163]
+PASSED: isNaN(null) [Number.as:164]
+PASSED: isNaN(Object.prototype.NaN) [Number.as:165]
+PASSED: ! Object.hasOwnProperty('NaN') [Number.as:172]
+PASSED: ! Object.prototype.hasOwnProperty('NaN') [Number.as:173]
+PASSED: ! this.__proto__.hasOwnProperty('NaN') [Number.as:174]
+PASSED: typeof(Infinity) == 'number' [Number.as:180]
+PASSED: typeof(isFinite) == 'function' [Number.as:181]
+PASSED: typeof(isFinite(Infinity)) == 'boolean' [Number.as:182]
+PASSED: Infinity == Infinity [Number.as:183]
+PASSED: ! isFinite(Infinity) [Number.as:184]
+PASSED: typeof(isFinite(0/0)) == 'boolean' [Number.as:185]
+PASSED: ! isFinite(0/0) [Number.as:186]
+PASSED: typeof(_global.Infinity) == 'number' [Number.as:190]
+PASSED: typeof(isFinite(_global.Infinity)) == 'boolean' [Number.as:191]
+PASSED: ! isFinite(_global.Infinity) [Number.as:192]
+PASSED: ! isFinite(undefined) [Number.as:201]
+PASSED: ! isFinite(null) [Number.as:202]
+PASSED: ! isFinite(Object.prototype.NaN) [Number.as:203]
+PASSED: ! Object.hasOwnProperty('Infinity') [Number.as:210]
+PASSED: ! Object.prototype.hasOwnProperty('Infinity') [Number.as:211]
+PASSED: ! this.__proto__.hasOwnProperty('Infinity') [Number.as:212]
+PASSED: isNaN(0+this) [Number.as:218]
+PASSED: isNaN(this) [Number.as:219]
+PASSED: isNaN(this) [Number.as:221]
+PASSED: isNaN(o) [Number.as:223]
+PASSED: isNaN(0+o) [Number.as:224]
+PASSED: 0+o == 3 [Number.as:226]
+PASSED: 0+"string" == "0string" [Number.as:227]
+PASSED: isNaN(2+Number) [Number.as:232]
+PASSED: isNaN(2/undefined) [Number.as:236]
+PASSED: isNaN(undefined/2) [Number.as:237]
+PASSED: !isFinite(undefined/2) [Number.as:238]
+PASSED: 2/undefined != Infinity [Number.as:239]
+PASSED: !isFinite(Infinity) [Number.as:247]
+PASSED: !isFinite(2/undefined) [Number.as:248]
+PASSED: typeof(("string"<7)) == 'undefined' [Number.as:250]
+PASSED: typeof((7<"string")) == 'undefined' [Number.as:251]
+PASSED: typeof(("18"<7)) == 'boolean' [Number.as:252]
+PASSED: typeof((7<"18")) == 'boolean' [Number.as:253]
+PASSED: ("18"<"7") == true [Number.as:254]
+PASSED: ("18"<7) == false [Number.as:255]
+PASSED: (7<"18") == true [Number.as:256]
+PASSED: typeof(_root<"18") == 'undefined' [Number.as:257]
+PASSED: typeof(undefined<7) == 'undefined' [Number.as:260]
+PASSED: typeof(undefined>7) == 'undefined' [Number.as:261]
+PASSED: typeof(undefined<-7) == 'undefined' [Number.as:262]
+PASSED: typeof(undefined>-7) == 'undefined' [Number.as:263]
+PASSED: typeof(7<undefined) == 'undefined' [Number.as:264]
+PASSED: typeof(7>undefined) == 'undefined' [Number.as:265]
+PASSED: typeof(-7<undefined) == 'undefined' [Number.as:266]
+PASSED: typeof(-7>undefined) == 'undefined' [Number.as:267]
+PASSED: typeof(null<7) == 'undefined' [Number.as:268]
+PASSED: typeof(null>7) == 'undefined' [Number.as:269]
+PASSED: typeof(null<-7) == 'undefined' [Number.as:270]
+PASSED: typeof(null>-7) == 'undefined' [Number.as:271]
+PASSED: typeof(7<null) == 'undefined' [Number.as:272]
+PASSED: typeof(7>null) == 'undefined' [Number.as:273]
+PASSED: typeof(-7<null) == 'undefined' [Number.as:274]
+PASSED: typeof(-7>null) == 'undefined' [Number.as:275]
+PASSED: '0' + -1 == '0-1' [Number.as:297]
+PASSED: '00' == 0 [Number.as:300]
+PASSED: "0xFF0000" == 0xFF0000 [Number.as:304]
+PASSED: "0XFF0000" == 0xFF0000 [Number.as:305]
+PASSED: "0Xff0000" == 0xFF0000 [Number.as:306]
+PASSED: "0Xff000000" != 0xFF000000 [Number.as:307]
+PASSED: isNaN("0xff000z") [Number.as:313]
+PASSED: typeof(Number.prototype.valueOf) == 'function' [Number.as:315]
+PASSED: typeof(Number.prototype.toString) == 'function' [Number.as:316]
+PASSED: isNaN(Number.valueOf()) [Number.as:318]
+PASSED: typeof(Number) == 'function' [Number.as:323]
+PASSED: Number.hasOwnProperty('prototype') [Number.as:324]
+PASSED: Number.hasOwnProperty('__proto__') [Number.as:325]
+PASSED: Number.hasOwnProperty('constructor') [Number.as:326]
+PASSED: typeof(Number.prototype) == 'object' [Number.as:327]
+PASSED: Number.prototype != Object [Number.as:337]
+PASSED: typeof(Number.__proto__) == 'object' [Number.as:349]
+PASSED: Number.prototype.__proto__ == Object.prototype [Number.as:350]
+PASSED: typeof(Number.toString) == 'function' [Number.as:352]
+PASSED: typeof(Number.valueOf) == 'function' [Number.as:353]
+PASSED: !Number.hasOwnProperty('valueOf') [Number.as:354]
+PASSED: !Number.hasOwnProperty('toString') [Number.as:355]
+PASSED: !Number.__proto__.hasOwnProperty('valueOf') [Number.as:356]
+PASSED: !Number.__proto__.hasOwnProperty('toString') [Number.as:357]
+PASSED: Number.__proto__.__proto__ == Object.prototype [Number.as:358]
+PASSED: typeof(Number.valueOf()) == 'function' [Number.as:360]
+PASSED: typeof(a.toString) == 'function' [Number.as:363]
+PASSED: typeof(a.valueOf) == 'function' [Number.as:364]
+PASSED: !a.hasOwnProperty('valueOf') [Number.as:365]
+PASSED: a.__proto__.hasOwnProperty('valueOf') [Number.as:371]
+PASSED: !a.hasOwnProperty('toString') [Number.as:372]
+PASSED: typeof(anum.toString) == 'function' [Number.as:376]
+PASSED: typeof(anum.valueOf) == 'function' [Number.as:377]
+PASSED: !anum.hasOwnProperty('valueOf') [Number.as:378]
+PASSED: anum.__proto__.hasOwnProperty('valueOf') [Number.as:379]
+PASSED: !anum.hasOwnProperty('toString') [Number.as:380]
+PASSED: val == 4 [Number.as:390]
+PASSED: isNaN(val) [Number.as:397]
+PASSED: isNaN(val) [Number.as:405]
+PASSED: val == 10 [Number.as:409]
+PASSED: val == 300 [Number.as:412]
+PASSED: val == 20 [Number.as:415]
+PASSED: isNaN(val) [Number.as:418]
+PASSED: val == 2.6 [Number.as:421]
+PASSED: isNaN(val) [Number.as:424]
+PASSED: isNaN(val) [Number.as:427]
+PASSED: val != Infinity [Number.as:430]
+PASSED: isNaN(val) [Number.as:431]
+PASSED: val != Infinity [Number.as:434]
+PASSED: isNaN(val) [Number.as:435]
+PASSED: isNaN(val) [Number.as:439]
+PASSED: val == 7 [Number.as:443]
+PASSED: isNaN(val) [Number.as:448]
+PASSED: val == 9 [Number.as:458]
+PASSED: 9 == val [Number.as:459]
+PASSED: isNaN(450 - undefined) [Number.as:469]
+PASSED: a.toString() == "11111111111111.1" [Number.as:486]
+PASSED: a.toString() == "111111111111111" [Number.as:489]
+PASSED: a.toString() == "1.11111111111111e+15" [Number.as:492]
+PASSED: a.toString() == "0.000123456789012346" [Number.as:495]
+PASSED: a.toString() == "0.0000123456789012346" [Number.as:498]
+PASSED: a.toString() == "1.23456789012346e-6" [Number.as:501]
+PASSED: a.toString() == "1.23456789012346e-7" [Number.as:504]
+PASSED: a.toString() == "0.0999999999999999" [Number.as:507]
+PASSED: a.toString() == "0.999999999999999" [Number.as:510]
+PASSED: a.toString() == "0.999999999999999" [Number.as:513]
+PASSED: a.toString() == "0.000054" [Number.as:516]
+PASSED: a.toString() == "5.4e-6" [Number.as:519]
+PASSED: a.toString(10) == "5.4e-6" [Number.as:520]
+PASSED: a.toString() == "2.12345678912346" [Number.as:523]
+PASSED: a.toString() == "-2.12345678912346" [Number.as:526]
+PASSED: a.toString() == "0.123456789123457" [Number.as:529]
+PASSED: a.toString() == "-0.123456789123457" [Number.as:532]
+PASSED: a.toString() == "1.23456789123456e+308" [Number.as:535]
+PASSED: a.toString() == "-1.23456789123456e+308" [Number.as:538]
+XPASSED: a.toString() == "1.23456789123457e-308" [Number.as:541]
+XPASSED: a.toString() == "-1.23456789123457e-308" [Number.as:544]
+XPASSED: a.toString() == "1.23456789123457e-6" [Number.as:547]
+XPASSED: a.toString() == "-1.23456789123457e-6" [Number.as:550]
+PASSED: a.toString() == "-1.24456789123457e-6" [Number.as:553]
+PASSED: a.toString() == "-1.24466789123457e-6" [Number.as:556]
+PASSED: a.toString() == "-0.00123456789123457" [Number.as:559]
+PASSED: a.toString() == "-0.00124456789123456" [Number.as:562]
+PASSED: a.toString() == "-0.00123456789123456" [Number.as:565]
+PASSED: a.toString() == "0.00123456789123457" [Number.as:568]
+PASSED: a.toString() == "0.00123456789123456" [Number.as:571]
+PASSED: isNaN(0/0) [Number.as:573]
+check_totals: 204
diff --git a/test/gnash/actionscript.all/pending/Number.as b/test/gnash/actionscript.all/pending/Number.as
new file mode 100644
index 0000000..54d8943
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Number.as
@@ -0,0 +1,585 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for Number ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+//
+// TODO: have ming output ACTION_EQUAL
+//       it seems it will only do it for SWF4 output
+//
+// TODO: test with SWF target != 6 (the only one tested so far)
+//  
+
+
+rcsid="$Id: Number.as,v 1.53 2008/04/02 10:55:32 strk Exp $";
+#include "check.as"
+
+Number.hasOwnProperty = ASnative(101, 5);
+
+check(Number.hasOwnProperty('MAX_VALUE'));
+check_equals(typeof(Number.MAX_VALUE), "number");
+// gnash fails in rounding (ends in 2316, we round up to 232)
+// TODO: check that we're close, if not extremely accurate
+xcheck_equals(Number.MAX_VALUE.toString(), "1.79769313486231e+308");
+
+check(Number.hasOwnProperty('MIN_VALUE'));
+check_equals(typeof(Number.MIN_VALUE), "number");
+check_equals(Number.MIN_VALUE.toString(), "4.94065645841247e-324"); 
+
+check(Number.hasOwnProperty('NEGATIVE_INFINITY'));
+check_equals(Number.NEGATIVE_INFINITY, -Infinity);
+
+check(Number.hasOwnProperty('NaN'));
+check_equals(Number.NaN, NaN);
+
+check(Number.hasOwnProperty('POSITIVE_INFINITY'));
+check_equals(Number.POSITIVE_INFINITY, Infinity);
+
+var n1=new Number(268);
+check_equals(typeof(n1), 'object');
+var n1prim = Number(268);
+check_equals(typeof(n1prim), 'number');
+// gnash used to fail below because it compares 2 objects
+// rather then an object and a primitive
+check_equals(n1, n1prim);
+
+// strict-equality operator was introduced in SWF6
+#if OUTPUT_VERSION > 5
+check ( ! (n1 === 268) );
+// They are not the same object !
+check ( ! (n1 === Number(268)) );
+#endif
+
+// but they have the same numeric value
+check_equals (n1 , 268 );
+check_equals (268 , n1 );
+
+//------------------------------------
+// Test Number.toString 
+//------------------------------------
+
+check_equals(typeof(n1.toString), "function");
+check_equals(typeof(n1.toString()), "string"); 
+check_equals(n1.toString(), "268");
+
+var backup = Object.prototype.toString;
+Object.prototype.toString = function() { return "fake_string"; };
+check_equals(n1.toString(), "268"); // doesn't inherit from Object
+Object.prototype.toString = backup;
+
+#if OUTPUT_VERSION >= 6
+check(Number.prototype.hasOwnProperty('toString'));
+#endif
+
+tmp = new Number(10);
+check_equals(tmp.toString(2), '1010'); 
+tmp = 6;
+check_equals(tmp.toString(2), '110'); 
+check_equals(tmp.toString(3), '20'); 
+check_equals(tmp.toString(8), '6'); 
+check_equals(tmp.toString(-2), '6'); // invalid, returns 10 ?
+check_equals(tmp.toString(0), '6'); // invalid, returns 10 ?
+check_equals(tmp.toString(5), '11'); 
+tmp = -5;
+check_equals(tmp.toString(2), '-101'); 
+check_equals(tmp.toString(16), '-5'); 
+tmp = -11;
+check_equals(tmp.toString(16), '-b'); 
+
+//------------------------------------
+// Test Number.valueOf 
+//------------------------------------
+
+check_equals(typeof(n1.valueOf), "function");
+check_equals(typeof(n1.__proto__.valueOf), "function");
+check_equals(typeof(n1.__proto__.__proto__.valueOf), "function");
+check_equals(typeof(n1.valueOf()), "number");
+check_equals(n1.valueOf(), 268);
+
+#if OUTPUT_VERSION >= 6
+check(Number.prototype.hasOwnProperty('valueOf'));
+check(Object.prototype.hasOwnProperty('valueOf'));
+#endif
+
+var backup = Object.prototype.valueOf;
+Object.prototype.valueOf = function() { return "fake_value"; };
+check_equals(n1.valueOf(), 268); // doesn't inherit from Object
+Object.prototype.valueOf = backup;
+
+backup = Number.prototype.valueOf;
+Number.prototype.valueOf = function() { return "fake_value"; };
+check_equals(n1.valueOf(), "fake_value"); // does inherit from Number
+Number.prototype.valueOf = backup;
+
+// Check unary minus operator
+n1 = -n1;
+check_equals (-268 , n1);
+check_equals (n1.toString(), "-268");
+
+//---------------------------------------
+// Check NaN 
+//---------------------------------------
+
+check_equals( typeof(NaN), 'number' );
+check_equals( typeof(isNaN), 'function' );
+check_equals( typeof(isNaN(NaN)), 'boolean' );
+check(NaN == NaN); 
+check((0/2) == (0/5)); 
+check(! (NaN != NaN) ); 
+check( isNaN(NaN) );
+check_equals( typeof(isNaN(0/0)), 'boolean' );
+check( isNaN(0/0) );
+
+
+#if OUTPUT_VERSION >= 6
+check_equals( typeof(_global.NaN), 'number' );
+check_equals( typeof(isNaN(_global.NaN)), 'boolean' );
+check( isNaN(_global.NaN) ); // NOTE: isNaN(undefined) is true for SWF7 up
+#else // SWF5 or below
+check_equals( typeof(_global), 'undefined' );
+check_equals( typeof(Object), 'function' );
+check_equals( typeof(Object.prototype), 'object' );
+check_equals( typeof(Object.prototype.NaN), 'undefined' );
+#endif
+
+#if OUTPUT_VERSION >= 7
+check( isNaN(undefined) ); 
+check( isNaN(null) );
+check( isNaN(Object.prototype.NaN) );
+#else // SWF6 or below
+check( ! isNaN(undefined) );
+check( ! isNaN(null) );
+check( ! isNaN(Object.prototype.NaN) );
+#endif
+
+check(! Object.hasOwnProperty('NaN'));
+check(! Object.prototype.hasOwnProperty('NaN'));
+check(! this.__proto__.hasOwnProperty('NaN'));
+
+//---------------------------------------
+// Check Infinity
+//---------------------------------------
+
+check_equals( typeof(Infinity), 'number' );
+check_equals( typeof(isFinite), 'function' );
+check_equals( typeof(isFinite(Infinity)), 'boolean' );
+check_equals(Infinity, Infinity);
+check( ! isFinite(Infinity) );
+check_equals( typeof(isFinite(0/0)), 'boolean' );
+check( ! isFinite(0/0) );
+
+
+#if OUTPUT_VERSION >= 6
+check_equals( typeof(_global.Infinity), 'number' );
+check_equals( typeof(isFinite(_global.Infinity)), 'boolean' );
+check( ! isFinite(_global.Infinity) ); // NOTE: isFinite(undefined) is false for SWF7 up
+#else // SWF5 or below
+check_equals( typeof(_global), 'undefined' );
+check_equals( typeof(Object), 'function' );
+check_equals( typeof(Object.prototype), 'object' );
+check_equals( typeof(Object.prototype.Infinity), 'undefined' );
+#endif
+
+#if OUTPUT_VERSION >= 7
+check( ! isFinite(undefined) ); 
+check( ! isFinite(null) );
+check( ! isFinite(Object.prototype.NaN) );
+#else // SWF6 or below
+check( isFinite(undefined) );
+check( isFinite(null) );
+check( isFinite(Object.prototype.NaN) );
+#endif
+
+check(! Object.hasOwnProperty('Infinity'));
+check(! Object.prototype.hasOwnProperty('Infinity'));
+check(! this.__proto__.hasOwnProperty('Infinity'));
+
+//--------------------------------------------------------
+// Test automatic conversion to number 
+//--------------------------------------------------------
+
+check(isNaN(0+this));
+check(isNaN(this));
+this.valueOf = function() { return 5; };
+check(isNaN(this));
+o = new Object;
+check(isNaN(o));
+check(isNaN(0+o));
+o.valueOf = function() { return 3; };
+check_equals(0+o, 3);
+check_equals(0+"string", "0string");
+
+#if OUTPUT_VERSION < 6
+check(!isNaN(2+Number));
+#else
+check(isNaN(2+Number));
+#endif
+
+#if OUTPUT_VERSION >= 7
+check(isNaN(2/undefined));
+check(isNaN(undefined/2));
+check(!isFinite(undefined/2));
+check(2/undefined != Infinity);
+#else
+check(!isNaN(2/undefined));
+check(!isNaN(undefined/2));
+check(isFinite(undefined/2));
+check_equals(2/undefined, Infinity);
+#endif
+
+check(!isFinite(Infinity));
+check(!isFinite(2/undefined));
+
+check_equals(typeof(("string"<7)), 'undefined');
+check_equals(typeof((7<"string")), 'undefined');
+check_equals(typeof(("18"<7)), 'boolean');
+check_equals(typeof((7<"18")), 'boolean');
+check_equals(("18"<"7"), true); // string comparison
+check_equals(("18"<7), false); // numeric comparison
+check_equals((7<"18"), true); // numeric comparison
+check_equals(typeof(_root<"18"), 'undefined'); // _root is ensured to be NAN for SWF6 too
+
+#if OUTPUT_VERSION > 6
+check_equals(typeof(undefined<7), 'undefined');
+check_equals(typeof(undefined>7), 'undefined');
+check_equals(typeof(undefined<-7), 'undefined');
+check_equals(typeof(undefined>-7), 'undefined');
+check_equals(typeof(7<undefined), 'undefined');
+check_equals(typeof(7>undefined), 'undefined');
+check_equals(typeof(-7<undefined), 'undefined');
+check_equals(typeof(-7>undefined), 'undefined');
+check_equals(typeof(null<7), 'undefined');
+check_equals(typeof(null>7), 'undefined');
+check_equals(typeof(null<-7), 'undefined');
+check_equals(typeof(null>-7), 'undefined');
+check_equals(typeof(7<null), 'undefined');
+check_equals(typeof(7>null), 'undefined');
+check_equals(typeof(-7<null), 'undefined');
+check_equals(typeof(-7>null), 'undefined');
+#else
+check_equals(typeof(undefined<7), 'boolean');
+check_equals(typeof(undefined>7), 'boolean');
+check_equals(typeof(undefined<-7), 'boolean');
+check_equals(typeof(undefined>-7), 'boolean');
+check_equals(typeof(7<undefined), 'boolean');
+check_equals(typeof(7>undefined), 'boolean');
+check_equals(typeof(-7<undefined), 'boolean');
+check_equals(typeof(-7>undefined), 'boolean');
+
+check_equals((undefined<7), true);
+check_equals((undefined>7), false);
+check_equals((undefined<-7), false);
+check_equals((undefined>-7), true);
+check_equals((7<undefined), false);
+check_equals((7>undefined), true);
+check_equals((-7<undefined), true);
+check_equals((-7>undefined), false);
+#endif
+
+// ActionNewAdd
+check_equals('0' + -1, '0-1');
+
+// string:00 number:0 equality
+check_equals('00', 0);
+
+// string:0xFF0000 number:0xFF0000 equality
+#if OUTPUT_VERSION > 5
+ check_equals("0xFF0000", 0xFF0000);
+ check_equals("0XFF0000", 0xFF0000);
+ check_equals("0Xff0000", 0xFF0000);
+ check("0Xff000000" != 0xFF000000);
+#else
+ check("0xFF0000" != 0xFF0000);
+ check("0XFF0000" != 0xFF0000);
+#endif
+
+check(isNaN("0xff000z"));
+
+check_equals(typeof(Number.prototype.valueOf), 'function'); 
+check_equals(typeof(Number.prototype.toString), 'function'); 
+#if OUTPUT_VERSION > 5
+    check(isNaN(Number.valueOf()));
+#else
+    check(!isNaN(Number.valueOf()) );
+#endif
+
+check_equals(typeof(Number), 'function'); 
+check(Number.hasOwnProperty('prototype')); 
+check(Number.hasOwnProperty('__proto__')); 
+check(Number.hasOwnProperty('constructor')); 
+check_equals(typeof(Number.prototype), 'object'); 
+#if OUTPUT_VERSION == 5
+    check_equals(Number.prototype, Object);
+    check_equals(Number.prototype, Function);
+    check_equals(Number.prototype, Object.__proto__);
+    check_equals(Number.prototype, null);
+    check_equals(Number.prototype, undefined);
+    check(Number.prototype != 0);
+    check(Number.prototype != "string");
+#else
+    check(Number.prototype != Object);
+#endif
+ 
+#if OUTPUT_VERSION == 5
+    // not visible in swf5 by default.
+    check_equals(typeof(Number.valueOf), 'undefined'); 
+    check_equals(typeof(Number.toString), 'undefined'); 
+    check_equals(typeof(Number.__proto__), 'undefined'); 
+    // make properties visible.
+    ASSetPropFlags(Number, null, 0, 128 + 1);
+    ASSetPropFlags(Object, null, 0, 128 + 1);
+#endif
+check_equals(typeof(Number.__proto__), 'object'); 
+check_equals(Number.prototype.__proto__, Object.prototype); 
+
+check_equals(typeof(Number.toString), 'function');
+check_equals(typeof(Number.valueOf), 'function');
+check(!Number.hasOwnProperty('valueOf'));
+check(!Number.hasOwnProperty('toString'));
+check(!Number.__proto__.hasOwnProperty('valueOf'));
+check(!Number.__proto__.hasOwnProperty('toString'));
+check(Number.__proto__.__proto__ == Object.prototype);
+
+check_equals(typeof(Number.valueOf()), 'function'); // this is odd
+
+a = 1;
+check_equals(typeof(a.toString), 'function');
+check_equals(typeof(a.valueOf), 'function');
+check(!a.hasOwnProperty('valueOf'));
+#if OUTPUT_VERSION == 5
+    // make properties visible.
+    ASSetPropFlags(Number.prototype, null, 0, 128 + 1);
+    ASSetPropFlags(Object.prototype, null, 0, 128 + 1);
+#endif
+check(a.__proto__.hasOwnProperty('valueOf'));
+check(!a.hasOwnProperty('toString'));
+
+
+anum = new Number(1);
+check_equals(typeof(anum.toString), 'function');
+check_equals(typeof(anum.valueOf), 'function');
+check(!anum.hasOwnProperty('valueOf'));
+check(anum.__proto__.hasOwnProperty('valueOf'));
+check(!anum.hasOwnProperty('toString'));
+
+
+//-----------------------------------------------------------
+// Check conversion to number
+//-----------------------------------------------------------
+
+#ifdef MING_SUPPORTS_ASM
+
+asm { push 'val',4 tonumber setvariable };
+check_equals(val, 4);
+
+asm { push 'val',null tonumber setvariable };
+#if OUTPUT_VERSION < 7
+ check_equals(val, 0);
+ check(!isNaN(val));
+#else
+ check(isNaN(val));
+#endif
+
+asm { push 'val',undefined tonumber setvariable };
+#if OUTPUT_VERSION < 7
+ check_equals(val, 0);
+ check(!isNaN(val));
+#else
+ check(isNaN(val));
+#endif
+
+asm { push 'val','10' tonumber setvariable };
+check_equals(val, 10);
+
+asm { push 'val','3e2' tonumber setvariable };
+check_equals(val, 300);
+
+asm { push 'val','2E1' tonumber setvariable };
+check_equals(val, 20);
+
+asm { push 'val','2p' tonumber setvariable };
+check(isNaN(val));
+
+asm { push 'val','2.6' tonumber setvariable };
+check_equals(val, 2.6);
+
+asm { push 'val','string' tonumber setvariable };
+check(isNaN(val));
+
+asm { push 'val','NaN' tonumber setvariable };
+check(isNaN(val));
+
+asm { push 'val','Infinity' tonumber setvariable };
+check(val != Infinity);
+check(isNaN(val));
+
+asm { push 'val','-Infinity' tonumber setvariable };
+check(val != Infinity);
+check(isNaN(val));
+
+obj = new Object();
+asm { push 'val','obj' getvariable tonumber setvariable };
+check(isNaN(val));
+
+obj = new Object(); obj.valueOf = function() { return 7; };
+asm { push 'val','obj' getvariable tonumber setvariable };
+check_equals(val, 7); 
+
+obj = function() {}; 
+asm { push 'val','obj' getvariable tonumber setvariable };
+#if OUTPUT_VERSION > 5
+check(isNaN(val));
+#else
+check(!isNaN(val));
+check_equals(typeof(val), 'number');
+check_equals(val, 0);
+check_equals(0, val);
+#endif
+
+obj = function() {}; obj.valueOf = function() { return 9; };
+asm { push 'val','obj' getvariable tonumber setvariable };
+check_equals(val, 9); 
+check_equals(9, val); 
+
+#endif // defined(MING_SUPPORTS_ASM)
+
+//-----------------------------------------------------------
+// Check subtraction operator TODO: create an ops.as file 
+// for testing operators in general ?
+//-----------------------------------------------------------
+
+#if OUTPUT_VERSION > 6
+check( isNaN(450 - undefined) );
+#else
+check_equals(450 - undefined, 450);
+#endif
+
+//-----------------------------------------------------------
+// Check number formatting as documented in as_value.cpp. 
+// Rules are:
+// Numbers should be rounded to 15 significant digits.
+// Numbers above 10e+15 are expressed with exponent.
+// Numbers below 0 with more than 4 leading zeros expressed
+//  with exponent.
+// Exponent has no leading zero.
+// Trailing zeros are always trimmed.
+//-----------------------------------------------------------
+
+a=new Number(11111111111111.11111111);
+check_equals(a.toString(), "11111111111111.1");
+
+a=new Number(111111111111111.1111111);
+check_equals(a.toString(), "111111111111111");
+
+a=new Number(1111111111111111.1111111);
+check_equals(a.toString(), "1.11111111111111e+15");
+
+a=new Number(0.000123456789012346);
+check_equals(a.toString(), "0.000123456789012346");
+
+a=new Number(0.0000123456789012346);
+check_equals(a.toString(), "0.0000123456789012346");
+
+a=new Number(0.00000123456789012346);
+check_equals(a.toString(), "1.23456789012346e-6");
+
+a=new Number(0.000000123456789012346);
+check_equals(a.toString(), "1.23456789012346e-7");
+
+a=new Number(0.0999999999999999);
+check_equals(a.toString(), "0.0999999999999999");
+
+a=new Number(0.99999999999999938);
+check_equals(a.toString(), "0.999999999999999");
+
+a=new Number(9.9999999999999939 / 10);
+check_equals(a.toString(), "0.999999999999999");
+
+a=new Number(5.4 / 100000);
+check_equals(a.toString(), "0.000054");
+
+a=new Number(5.4 / 1000000);
+check_equals(a.toString(), "5.4e-6");
+check_equals(a.toString(10), "5.4e-6");
+
+a=new Number(2.123456789123455);
+check_equals(a.toString(), "2.12345678912346"); // rounds abs up
+
+a=new Number(-2.123456789123455);
+check_equals(a.toString(), "-2.12345678912346"); // rounds abs up
+
+a=new Number(0.1234567891234565);
+check_equals(a.toString(), "0.123456789123457"); // rounds abs up
+
+a=new Number(-0.1234567891234565);
+check_equals(a.toString(), "-0.123456789123457"); // round abs up
+
+a=new Number(1.234567891234565e+308); 
+check_equals(a.toString(), "1.23456789123456e+308"); // round abs down
+
+a=new Number(-1.234567891234565e+308); 
+check_equals(a.toString(), "-1.23456789123456e+308"); // round abs down
+
+a=new Number(1.234567891234565e-308);  // gnash rounds this down, pp up
+xcheck_equals(a.toString(), "1.23456789123457e-308"); // round abs up 
+
+a=new Number(-1.234567891234565e-308);  // gnash rounds this down, pp up
+xcheck_equals(a.toString(), "-1.23456789123457e-308"); // round abs up 
+
+a=new Number(1.234567891234565e-6);  // gnash rounds this down, pp up
+xcheck_equals(a.toString(), "1.23456789123457e-6"); // round abs up 
+
+a=new Number(-1.234567891234565e-6);  // gnash rounds this down, pp up
+xcheck_equals(a.toString(), "-1.23456789123457e-6"); // round abs up 
+
+a=new Number(-1.244567891234565e-6);  // gnash rounds this down, pp up
+check_equals(a.toString(), "-1.24456789123457e-6"); // round abs up 
+
+a=new Number(-1.244667891234565e-6);  // gnash rounds this down, pp up
+check_equals(a.toString(), "-1.24466789123457e-6"); // round abs up 
+
+a=new Number(-0.001234567891234565); // gnash succeeds in rounding this up
+check_equals(a.toString(), "-0.00123456789123457"); // round abs up 
+
+a=new Number(-0.001244567891234565); // gnash succeeds in rounding this down
+check_equals(a.toString(), "-0.00124456789123456"); 
+
+a=new Number(-0.001234567891234564); 
+check_equals(a.toString(), "-0.00123456789123456"); // round abs down (obvious?)
+
+a=new Number(0.001234567891234565); 
+check_equals(a.toString(), "0.00123456789123457"); // round abs up 
+
+a=new Number(0.001234567891234564);
+check_equals(a.toString(), "0.00123456789123456"); // round abs down (obvious?)
+
+check( isNaN(0/0) );
+
+// END OF TEST
+
+#if OUTPUT_VERSION < 6
+ check_totals(213);
+#else
+#if OUTPUT_VERSION < 7
+ check_totals(206);
+#else
+ check_totals(204);
+#endif
+#endif
diff --git a/test/gnash/actionscript.all/pending/Object-5.swf b/test/gnash/actionscript.all/pending/Object-5.swf
new file mode 100644
index 0000000..d0c8500
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Object-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/Object-5.swf.trace b/test/gnash/actionscript.all/pending/Object-5.swf.trace
new file mode 100644
index 0000000..e90c80a
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Object-5.swf.trace
@@ -0,0 +1,84 @@
+PASSED: typeof(Object) == 'function' [Object.as:28]
+PASSED: typeof(Object.prototype) == 'object' [Object.as:29]
+PASSED: typeof(Object.constructor) == 'function' [Object.as:30]
+PASSED: typeof(Object.__proto__) == 'undefined' [Object.as:32]
+PASSED: typeof(Object.__proto__) == 'object' [Object.as:36]
+PASSED: typeof(Object.registerClass) == 'function' [Object.as:39]
+PASSED: Object.prototype.registerClass == undefined [Object.as:40]
+PASSED: typeof(Object.prototype.toString) == 'function' [Object.as:43]
+PASSED: typeof(Object.prototype.toLocaleString) == 'function' [Object.as:44]
+PASSED: typeof(Object.prototype.valueOf) == 'function' [Object.as:45]
+PASSED: typeof(Object.prototype.constructor) == 'function' [Object.as:46]
+PASSED: typeof(Object.prototype.addProperty) == 'undefined' [Object.as:48]
+PASSED: typeof(Object.prototype.watch) == 'undefined' [Object.as:49]
+PASSED: typeof(Object.prototype.unwatch) == 'undefined' [Object.as:50]
+PASSED: typeof(Object.prototype.isPropertyEnumerable) == 'undefined' [Object.as:51]
+PASSED: typeof(Object.prototype.isPrototypeOs) == 'undefined' [Object.as:52]
+PASSED: typeof(Object.prototype.hasOwnProperty) == 'undefined' [Object.as:53]
+PASSED: typeof(Object.prototype.addProperty) == 'function' [Object.as:58]
+PASSED: typeof(Object.prototype.watch) == 'function' [Object.as:59]
+PASSED: typeof(Object.prototype.unwatch) == 'function' [Object.as:60]
+PASSED: typeof(Object.prototype.isPropertyEnumerable) == 'function' [Object.as:61]
+PASSED: typeof(Object.prototype.isPrototypeOf) == 'function' [Object.as:62]
+PASSED: typeof(Object.prototype.hasOwnProperty) == 'function' [Object.as:63]
+PASSED: Object.prototype.constructor == Object [Object.as:65]
+PASSED: typeof(Object.prototype.toString.constructor) == 'function' [Object.as:66]
+PASSED: typeof(Function) == 'undefined' [Object.as:72]
+PASSED: Object.prototype.prototype == undefined [Object.as:74]
+PASSED: Object.prototype.__proto__ == undefined [Object.as:80]
+PASSED: !Object.prototype.hasOwnProperty("__proto__") [Object.as:81]
+PASSED: obj != undefined [Object.as:142]
+PASSED: typeof(obj) == "object" [Object.as:143]
+PASSED: obj.__proto__ == Object.prototype [Object.as:145]
+PASSED: typeof(obj.prototype) == 'undefined' [Object.as:146]
+PASSED: typeof(obj.__proto__) == 'object' [Object.as:147]
+PASSED: obj.__constructor__ == undefined [Object.as:150]
+PASSED: obj.__constructor__ == Object [Object.as:153]
+PASSED: obj.constructor == Object [Object.as:158]
+PASSED: Object.prototype.constructor == Object [Object.as:159]
+PASSED: obj.__proto__.constructor == Object [Object.as:160]
+PASSED: typeof(obj.toString) == 'function' [Object.as:163]
+PASSED: typeof(obj.valueOf) == 'function' [Object.as:164]
+PASSED: typeof(obj.addProperty) == 'function' [Object.as:165]
+PASSED: Object.hasOwnProperty('constructor') [Object.as:167]
+PASSED: obj.hasOwnProperty('__constructor__') [Object.as:175]
+PASSED: obj.member == 1 [Object.as:179]
+PASSED: typeof(obj.toString()) == 'string' [Object.as:180]
+PASSED: obj.toString() == '[object Object]' [Object.as:181]
+PASSED: typeof(obj.valueOf()) == 'object' [Object.as:182]
+PASSED: obj.valueOf() == obj [Object.as:183]
+PASSED: typeof(obj2) == "object" [Object.as:187]
+PASSED: typeof(obj2.__proto__) == 'object' [Object.as:188]
+PASSED: obj2.__proto__ == Object.prototype [Object.as:189]
+PASSED: obj2.__proto__.constructor == Object [Object.as:190]
+PASSED: typeof(obj2.prototype) == 'undefined' [Object.as:191]
+PASSED: obj2.member == 1 [Object.as:195]
+PASSED: obj3 != undefined [Object.as:199]
+PASSED: typeof(obj3) == "object" [Object.as:200]
+PASSED: obj3.__proto__.constructor == Object [Object.as:201]
+PASSED: obj3.member != undefined [Object.as:204]
+PASSED: obj3.member == 1 [Object.as:205]
+PASSED: obj3.member2 != undefined [Object.as:209]
+PASSED: obj3.member2 == 3 [Object.as:210]
+PASSED: copy.member2 == 3 [Object.as:217]
+PASSED: copy.test == 4 [Object.as:219]
+PASSED: obj3.test == 4 [Object.as:220]
+PASSED: copy.__proto__.constructor == Object [Object.as:221]
+PASSED: Object.prototype.toString() == '[object Object]' [Object.as:577]
+PASSED: typeof(Object.prototype.toString()) == 'object' [Object.as:580]
+PASSED: Object.prototype.toString() == 0 [Object.as:582]
+PASSED: Object.prototype.toLocaleString(1) == "toString0" [Object.as:597]
+PASSED: enum["a"] == 1 [Object.as:626]
+PASSED: enum["b"] == 2 [Object.as:627]
+PASSED: enum["c"] == 3 [Object.as:628]
+PASSED: enum["d"] == 4 [Object.as:629]
+PASSED: enum["e"] == 5 [Object.as:630]
+PASSED: enum["f"] == 6 [Object.as:631]
+PASSED: enum["a"] == undefined [Object.as:642]
+PASSED: obj5['a'] == 1 [Object.as:646]
+PASSED: obj5['A'] == 1 [Object.as:648]
+PASSED: "string + " + nothing == "string + toString" [Object.as:828]
+PASSED: "string + " + nothing == "string + " [Object.as:831]
+PASSED: "string + " + nothing2 == "string + " [Object.as:839]
+PASSED: "string + " + nothing2 == "string + valueOf" [Object.as:845]
+totals
diff --git a/test/gnash/actionscript.all/pending/Object-6.swf b/test/gnash/actionscript.all/pending/Object-6.swf
new file mode 100644
index 0000000..a99cda2
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Object-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/Object-6.swf.trace b/test/gnash/actionscript.all/pending/Object-6.swf.trace
new file mode 100644
index 0000000..1bef82f
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Object-6.swf.trace
@@ -0,0 +1,263 @@
+PASSED: typeof(Object) == 'function' [Object.as:28]
+PASSED: typeof(Object.prototype) == 'object' [Object.as:29]
+PASSED: typeof(Object.constructor) == 'function' [Object.as:30]
+PASSED: typeof(Object.__proto__) == 'object' [Object.as:36]
+PASSED: typeof(Object.registerClass) == 'function' [Object.as:39]
+PASSED: Object.prototype.registerClass == undefined [Object.as:40]
+PASSED: typeof(Object.prototype.toString) == 'function' [Object.as:43]
+PASSED: typeof(Object.prototype.toLocaleString) == 'function' [Object.as:44]
+PASSED: typeof(Object.prototype.valueOf) == 'function' [Object.as:45]
+PASSED: typeof(Object.prototype.constructor) == 'function' [Object.as:46]
+PASSED: typeof(Object.prototype.addProperty) == 'function' [Object.as:58]
+PASSED: typeof(Object.prototype.watch) == 'function' [Object.as:59]
+PASSED: typeof(Object.prototype.unwatch) == 'function' [Object.as:60]
+PASSED: typeof(Object.prototype.isPropertyEnumerable) == 'function' [Object.as:61]
+PASSED: typeof(Object.prototype.isPrototypeOf) == 'function' [Object.as:62]
+PASSED: typeof(Object.prototype.hasOwnProperty) == 'function' [Object.as:63]
+PASSED: Object.prototype.constructor == Object [Object.as:65]
+PASSED: typeof(Object.prototype.toString.constructor) == 'function' [Object.as:66]
+PASSED: Object.prototype.toString.constructor == Function [Object.as:70]
+PASSED: Object.prototype.prototype == undefined [Object.as:74]
+PASSED: Object.prototype.__proto__ == undefined [Object.as:80]
+PASSED: !Object.prototype.hasOwnProperty("__proto__") [Object.as:81]
+PASSED: Object.hasOwnProperty('__proto__') [Object.as:88]
+PASSED: O == Object [Object.as:91]
+PASSED: O.hasOwnProperty('__proto__') [Object.as:94]
+PASSED: O.hasOwnProperty('registerClass') [Object.as:95]
+PASSED: O.hasOwnProperty('constructor') [Object.as:96]
+PASSED: O.hasOwnProperty('prototype') [Object.as:97]
+PASSED: O.__proto__.hasOwnProperty('__proto__') [Object.as:100]
+PASSED: O.__proto__.hasOwnProperty('apply') [Object.as:101]
+PASSED: O.__proto__.hasOwnProperty('call') [Object.as:102]
+PASSED: O.__proto__.hasOwnProperty('constructor') [Object.as:103]
+PASSED: O.__proto__ != Object.prototype [Object.as:105]
+PASSED: O.__proto__.__proto__ == Object.prototype [Object.as:106]
+PASSED: O.constructor.hasOwnProperty('__proto__') [Object.as:109]
+PASSED: O.constructor.hasOwnProperty('constructor') [Object.as:110]
+PASSED: O.constructor.hasOwnProperty('prototype') [Object.as:111]
+PASSED: O.prototype.hasOwnProperty('addProperty') [Object.as:114]
+PASSED: O.prototype.hasOwnProperty('constructor') [Object.as:115]
+PASSED: O.prototype.hasOwnProperty('hasOwnProperty') [Object.as:116]
+PASSED: O.prototype.hasOwnProperty('isPropertyEnumerable') [Object.as:117]
+PASSED: O.prototype.hasOwnProperty('isPrototypeOf') [Object.as:118]
+PASSED: O.prototype.hasOwnProperty('toString') [Object.as:119]
+PASSED: O.prototype.hasOwnProperty('valueOf') [Object.as:120]
+PASSED: O.prototype.hasOwnProperty('unwatch') [Object.as:121]
+PASSED: O.prototype.hasOwnProperty('watch') [Object.as:122]
+PASSED: O.prototype.constructor.hasOwnProperty('__proto__') [Object.as:125]
+PASSED: O.prototype.constructor.hasOwnProperty('constructor') [Object.as:126]
+PASSED: O.prototype.constructor.hasOwnProperty('prototype') [Object.as:127]
+PASSED: O.prototype.constructor == Object [Object.as:129]
+PASSED: O.constructor == Function [Object.as:130]
+PASSED: typeof(Object.prototype.addProperty) == 'function' [Object.as:132]
+PASSED: typeof(Object.prototype.hasOwnProperty) == 'function' [Object.as:133]
+PASSED: typeof(Object.prototype.isPropertyEnumerable) == 'function' [Object.as:134]
+PASSED: typeof(Object.prototype.isPrototypeOf) == 'function' [Object.as:135]
+PASSED: typeof(Object.prototype.watch) == 'function' [Object.as:136]
+PASSED: typeof(Object.prototype.unwatch) == 'function' [Object.as:137]
+PASSED: obj != undefined [Object.as:142]
+PASSED: typeof(obj) == "object" [Object.as:143]
+PASSED: obj.__proto__ == Object.prototype [Object.as:145]
+PASSED: typeof(obj.prototype) == 'undefined' [Object.as:146]
+PASSED: typeof(obj.__proto__) == 'object' [Object.as:147]
+PASSED: obj.__constructor__ == Object [Object.as:155]
+PASSED: obj.constructor == Object [Object.as:158]
+PASSED: Object.prototype.constructor == Object [Object.as:159]
+PASSED: obj.__proto__.constructor == Object [Object.as:160]
+PASSED: typeof(obj.toString) == 'function' [Object.as:163]
+PASSED: typeof(obj.valueOf) == 'function' [Object.as:164]
+PASSED: typeof(obj.addProperty) == 'function' [Object.as:165]
+PASSED: Object.hasOwnProperty('constructor') [Object.as:167]
+PASSED: obj.hasOwnProperty('constructor') [Object.as:169]
+PASSED: obj.hasOwnProperty('__constructor__') [Object.as:175]
+PASSED: obj.member == 1 [Object.as:179]
+PASSED: typeof(obj.toString()) == 'string' [Object.as:180]
+PASSED: obj.toString() == '[object Object]' [Object.as:181]
+PASSED: typeof(obj.valueOf()) == 'object' [Object.as:182]
+PASSED: obj.valueOf() == obj [Object.as:183]
+PASSED: typeof(obj2) == "object" [Object.as:187]
+PASSED: typeof(obj2.__proto__) == 'object' [Object.as:188]
+PASSED: obj2.__proto__ == Object.prototype [Object.as:189]
+PASSED: obj2.__proto__.constructor == Object [Object.as:190]
+PASSED: typeof(obj2.prototype) == 'undefined' [Object.as:191]
+PASSED: obj2.member == 1 [Object.as:195]
+PASSED: obj3 != undefined [Object.as:199]
+PASSED: typeof(obj3) == "object" [Object.as:200]
+PASSED: obj3.__proto__.constructor == Object [Object.as:201]
+PASSED: obj3.member != undefined [Object.as:204]
+PASSED: obj3.member == 1 [Object.as:205]
+PASSED: obj3.member2 != undefined [Object.as:209]
+PASSED: obj3.member2 == 3 [Object.as:210]
+PASSED: copy.member2 == 3 [Object.as:217]
+PASSED: copy.test == 4 [Object.as:219]
+PASSED: obj3.test == 4 [Object.as:220]
+PASSED: copy.__proto__.constructor == Object [Object.as:221]
+PASSED: ret == true [Object.as:243]
+PASSED: typeof(obj3.toString) == 'function' [Object.as:246]
+PASSED: typeof(ownPropertyCheck) == 'boolean' [Object.as:248]
+PASSED: !ownPropertyCheck [Object.as:249]
+PASSED: typeof(ownPropertyCheck) == 'boolean' [Object.as:253]
+PASSED: ownPropertyCheck [Object.as:254]
+PASSED: typeof(ownPropertyCheck) == 'boolean' [Object.as:258]
+PASSED: ownPropertyCheck [Object.as:259]
+PASSED: obj3.len == undefined [Object.as:261]
+PASSED: obj3.len == 3 [Object.as:263]
+PASSED: obj3._len == 5 [Object.as:265]
+PASSED: obj3.len == 5 [Object.as:266]
+PASSED: ret == false [Object.as:270]
+PASSED: obj3.len2 == undefined [Object.as:271]
+PASSED: obj3.len2 == 'test' [Object.as:273]
+PASSED: typeof(obj3) == "object" [Object.as:276]
+PASSED: typeof(obj3.__proto__) == 'undefined' [Object.as:277]
+XPASSED: obj3 == undefined [Object.as:278]
+PASSED: r [Object.as:288]
+PASSED: test_set_calls == 0 [Object.as:289]
+PASSED: test_get_calls == 0 [Object.as:290]
+PASSED: test_set_calls == 0 [Object.as:293]
+PASSED: test_get_calls == 1 [Object.as:295]
+PASSED: v == 5 [Object.as:299]
+PASSED: test_get_calls == 0 [Object.as:302]
+PASSED: test_set_calls == 1 [Object.as:304]
+PASSED: r [Object.as:310]
+PASSED: test_get_calls == 0 [Object.as:311]
+PASSED: test_set_calls == 0 [Object.as:312]
+PASSED: v == 16 [Object.as:317]
+PASSED: test_get_calls == 1 [Object.as:319]
+PASSED: test_set_calls == 0 [Object.as:323]
+PASSED: o.test == 19 [Object.as:331]
+PASSED: r [Object.as:333]
+PASSED: v == undefined [Object.as:335]
+PASSED: o._target == "/hello" [Object.as:340]
+PASSED: _root.target_get_calls == 0 [Object.as:345]
+PASSED: _root.target_set_calls == 0 [Object.as:346]
+PASSED: typeof(o._target) == "undefined" [Object.as:347]
+PASSED: proto.addProperty("len", getLen, setLen) [Object.as:352]
+PASSED: inh1._len == undefined [Object.as:357]
+PASSED: inh2._len == undefined [Object.as:358]
+PASSED: inh1._len == 4 [Object.as:361]
+PASSED: inh2._len == 9 [Object.as:362]
+PASSED: proto._len == undefined [Object.as:363]
+PASSED: inh1.len == 5 [Object.as:366]
+PASSED: inh2.len == 7 [Object.as:367]
+PASSED: proto.len == undefined [Object.as:368]
+PASSED: proto.addProperty("ogs", getLen, setLen) [Object.as:372]
+PASSED: ! inh2d.hasOwnProperty("ogs") [Object.as:383]
+PASSED: inh2d.__proto__.hasOwnProperty("ogs") [Object.as:384]
+PASSED: inh2d.__proto__.__proto__.hasOwnProperty("ogs") [Object.as:385]
+PASSED: inh2d.ogs == 5 [Object.as:386]
+PASSED: inh2.ogs == 5 [Object.as:387]
+PASSED: inh2.__proto__.ogs == 14 [Object.as:388]
+PASSED: inh2d._len == 54 [Object.as:390]
+PASSED: inh2d.ogs == 5 [Object.as:391]
+PASSED: inh2.ogs == 5 [Object.as:392]
+PASSED: inh2.__proto__.ogs == 14 [Object.as:393]
+PASSED: c == 7 [Object.as:399]
+PASSED: o.addProperty != Object.prototype.addProperty [Object.as:400]
+PASSED: typeof(o.mem) == 'undefined' [Object.as:414]
+PASSED: o.mem == 3 [Object.as:416]
+PASSED: o.mem2 == 3 [Object.as:417]
+PASSED: o1.setterCalls == 1 [Object.as:452]
+PASSED: o2.setterCalls == 1 [Object.as:453]
+PASSED: o1.mem1 == 3 [Object.as:459]
+PASSED: o1.mem1 == 3 [Object.as:460]
+PASSED: o1.setterCalls == 1 [Object.as:465]
+PASSED: o2.setterCalls == 1 [Object.as:466]
+PASSED: o1.mem1 == 6 [Object.as:472]
+PASSED: o2.mem2 == 6 [Object.as:473]
+PASSED: !r [Object.as:479]
+PASSED: !r [Object.as:481]
+PASSED: !r [Object.as:483]
+PASSED: r [Object.as:485]
+PASSED: getcalls == 1 [Object.as:488]
+PASSED: o.lnull == 5 [Object.as:491]
+PASSED: !r [Object.as:497]
+PASSED: !r [Object.as:499]
+PASSED: noset_setter_calls == 1 [Object.as:508]
+PASSED: v == 2 [Object.as:510]
+PASSED: noset_setter_calls == 2 [Object.as:512]
+PASSED: v == 5 [Object.as:514]
+PASSED: v == 2 [Object.as:526]
+PASSED: v == 5 [Object.as:529]
+PASSED: obj8_getter_cnt == 1 [Object.as:548]
+PASSED: obj8_setter_cnt == 1 [Object.as:549]
+PASSED: obj9_getter_cnt == 0 [Object.as:564]
+PASSED: obj9_setter_cnt == 1 [Object.as:565]
+PASSED: obj9.obj9_prop == 10 [Object.as:566]
+PASSED: obj9_getter_cnt == 1 [Object.as:567]
+PASSED: obj9_setter_cnt == 1 [Object.as:568]
+PASSED: Object.prototype.toString() == '[object Object]' [Object.as:577]
+PASSED: typeof(Object.prototype.toString()) == 'object' [Object.as:580]
+PASSED: Object.prototype.toString() == 0 [Object.as:582]
+PASSED: Object.prototype.toLocaleString(1) == "toString0" [Object.as:597]
+PASSED: enumlen == 6 [Object.as:624]
+PASSED: enum["a"] == 1 [Object.as:626]
+PASSED: enum["b"] == 2 [Object.as:627]
+PASSED: enum["c"] == 3 [Object.as:628]
+PASSED: enum["d"] == 4 [Object.as:629]
+PASSED: enum["e"] == 5 [Object.as:630]
+PASSED: enum["f"] == 6 [Object.as:631]
+PASSED: enumlen == 5 [Object.as:639]
+PASSED: enum["a"] == undefined [Object.as:642]
+PASSED: obj5['a'] == 1 [Object.as:646]
+PASSED: obj5['A'] == 1 [Object.as:648]
+PASSED: Object.prototype.hasOwnProperty("isPropertyEnumerable") [Object.as:660]
+PASSED: ! Object.prototype.isPropertyEnumerable("isPropertyEnumerable") [Object.as:661]
+PASSED: Object.prototype.hasOwnProperty("addProperty") [Object.as:662]
+PASSED: ! Object.prototype.isPropertyEnumerable("addProperty") [Object.as:663]
+PASSED: Object.prototype.hasOwnProperty("hasOwnProperty") [Object.as:664]
+PASSED: ! Object.prototype.isPropertyEnumerable("hasOwnProperty") [Object.as:665]
+PASSED: typeof(ret) == 'boolean' [Object.as:671]
+PASSED: ! ret [Object.as:672]
+PASSED: typeof(ret) == 'boolean' [Object.as:675]
+PASSED: ret [Object.as:676]
+PASSED: typeof(ret) == 'undefined' [Object.as:687]
+PASSED: obj7.isPropertyEnumerable('member1') [Object.as:690]
+PASSED: ! obj7.isPropertyEnumerable('member2') [Object.as:691]
+PASSED: typeof(obj7.member3) == 'object' [Object.as:692]
+PASSED: ! obj7.isPropertyEnumerable('member3') [Object.as:693]
+PASSED: typeof(obj8.isPrototypeOf(obj8)) == 'boolean' [Object.as:708]
+PASSED: typeof(obj8.isPrototypeOf(undefined)) == 'boolean' [Object.as:709]
+PASSED: obj9.prototype.isPrototypeOf(obj10) [Object.as:710]
+PASSED: ! obj8.prototype.isPrototypeOf(obj10) [Object.as:711]
+PASSED: obj8.prototype.isPrototypeOf(obj9) [Object.as:712]
+PASSED: r [Object.as:729]
+PASSED: o.l == 2 [Object.as:732]
+PASSED: _root.info.nam == 'l' [Object.as:733]
+PASSED: typeof(_root.info.ov) == 'undefined' [Object.as:734]
+PASSED: _root.info.nv == 5 [Object.as:735]
+PASSED: _root.info.d == 'cust' [Object.as:736]
+PASSED: _root.info.tv == o [Object.as:737]
+PASSED: delete o.l [Object.as:739]
+PASSED: !o.unwatch('p') [Object.as:741]
+PASSED: !o.unwatch('r') [Object.as:742]
+PASSED: o.unwatch('l') [Object.as:743]
+PASSED: r [Object.as:750]
+PASSED: typeof(_root.info) == 'undefined' [Object.as:751]
+PASSED: r [Object.as:755]
+PASSED: _root.info.nam == 'l' [Object.as:756]
+PASSED: typeof(_root.info.ov) == 'undefined' [Object.as:757]
+PASSED: typeof(_root.info.nv) == 'undefined' [Object.as:758]
+PASSED: _root.info.d == 'cust2' [Object.as:759]
+PASSED: _root.info.tv == o [Object.as:760]
+PASSED: _root.get_l_calls == 0 [Object.as:761]
+PASSED: _root.set_l_calls == 0 [Object.as:762]
+PASSED: r [Object.as:769]
+PASSED: typeof(_root.info) == 'undefined' [Object.as:770]
+PASSED: _root.get_l_calls == 0 [Object.as:771]
+PASSED: _root.set_l_calls == 0 [Object.as:772]
+PASSED: r == 'return from watch' [Object.as:774]
+PASSED: v == 'return from watch' [Object.as:779]
+PASSED: _root.info.ov == 'return from watch' [Object.as:786]
+XPASSED: _root.info.nv == 'ciao' [Object.as:787]
+PASSED: _root.info.d == 'cust2' [Object.as:788]
+PASSED: _root.info.tv == o [Object.as:789]
+PASSED: _root.get_l_calls == 0 [Object.as:790]
+PASSED: _root.set_l_calls == 1 [Object.as:791]
+PASSED: !r [Object.as:802]
+PASSED: delete o.l [Object.as:803]
+PASSED: r [Object.as:805]
+PASSED: "string + " + nothing == "string + toString" [Object.as:828]
+PASSED: "string + " + nothing == "string + " [Object.as:831]
+PASSED: "string + " + nothing2 == "string + " [Object.as:839]
+PASSED: "string + " + nothing2 == "string + valueOf" [Object.as:845]
+totals
diff --git a/test/gnash/actionscript.all/pending/Object-7.swf b/test/gnash/actionscript.all/pending/Object-7.swf
new file mode 100644
index 0000000..759240f
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Object-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/Object-7.swf.trace b/test/gnash/actionscript.all/pending/Object-7.swf.trace
new file mode 100644
index 0000000..a6b1f82
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Object-7.swf.trace
@@ -0,0 +1,263 @@
+PASSED: typeof(Object) == 'function' [Object.as:28]
+PASSED: typeof(Object.prototype) == 'object' [Object.as:29]
+PASSED: typeof(Object.constructor) == 'function' [Object.as:30]
+PASSED: typeof(Object.__proto__) == 'object' [Object.as:36]
+PASSED: typeof(Object.registerClass) == 'function' [Object.as:39]
+PASSED: Object.prototype.registerClass == undefined [Object.as:40]
+PASSED: typeof(Object.prototype.toString) == 'function' [Object.as:43]
+PASSED: typeof(Object.prototype.toLocaleString) == 'function' [Object.as:44]
+PASSED: typeof(Object.prototype.valueOf) == 'function' [Object.as:45]
+PASSED: typeof(Object.prototype.constructor) == 'function' [Object.as:46]
+PASSED: typeof(Object.prototype.addProperty) == 'function' [Object.as:58]
+PASSED: typeof(Object.prototype.watch) == 'function' [Object.as:59]
+PASSED: typeof(Object.prototype.unwatch) == 'function' [Object.as:60]
+PASSED: typeof(Object.prototype.isPropertyEnumerable) == 'function' [Object.as:61]
+PASSED: typeof(Object.prototype.isPrototypeOf) == 'function' [Object.as:62]
+PASSED: typeof(Object.prototype.hasOwnProperty) == 'function' [Object.as:63]
+PASSED: Object.prototype.constructor == Object [Object.as:65]
+PASSED: typeof(Object.prototype.toString.constructor) == 'function' [Object.as:66]
+PASSED: Object.prototype.toString.constructor == Function [Object.as:70]
+PASSED: Object.prototype.prototype == undefined [Object.as:74]
+PASSED: Object.prototype.__proto__ == undefined [Object.as:80]
+PASSED: !Object.prototype.hasOwnProperty("__proto__") [Object.as:81]
+PASSED: Object.hasOwnProperty('__proto__') [Object.as:88]
+PASSED: O == Object [Object.as:91]
+PASSED: O.hasOwnProperty('__proto__') [Object.as:94]
+PASSED: O.hasOwnProperty('registerClass') [Object.as:95]
+PASSED: O.hasOwnProperty('constructor') [Object.as:96]
+PASSED: O.hasOwnProperty('prototype') [Object.as:97]
+PASSED: O.__proto__.hasOwnProperty('__proto__') [Object.as:100]
+PASSED: O.__proto__.hasOwnProperty('apply') [Object.as:101]
+PASSED: O.__proto__.hasOwnProperty('call') [Object.as:102]
+PASSED: O.__proto__.hasOwnProperty('constructor') [Object.as:103]
+PASSED: O.__proto__ != Object.prototype [Object.as:105]
+PASSED: O.__proto__.__proto__ == Object.prototype [Object.as:106]
+PASSED: O.constructor.hasOwnProperty('__proto__') [Object.as:109]
+PASSED: O.constructor.hasOwnProperty('constructor') [Object.as:110]
+PASSED: O.constructor.hasOwnProperty('prototype') [Object.as:111]
+PASSED: O.prototype.hasOwnProperty('addProperty') [Object.as:114]
+PASSED: O.prototype.hasOwnProperty('constructor') [Object.as:115]
+PASSED: O.prototype.hasOwnProperty('hasOwnProperty') [Object.as:116]
+PASSED: O.prototype.hasOwnProperty('isPropertyEnumerable') [Object.as:117]
+PASSED: O.prototype.hasOwnProperty('isPrototypeOf') [Object.as:118]
+PASSED: O.prototype.hasOwnProperty('toString') [Object.as:119]
+PASSED: O.prototype.hasOwnProperty('valueOf') [Object.as:120]
+PASSED: O.prototype.hasOwnProperty('unwatch') [Object.as:121]
+PASSED: O.prototype.hasOwnProperty('watch') [Object.as:122]
+PASSED: O.prototype.constructor.hasOwnProperty('__proto__') [Object.as:125]
+PASSED: O.prototype.constructor.hasOwnProperty('constructor') [Object.as:126]
+PASSED: O.prototype.constructor.hasOwnProperty('prototype') [Object.as:127]
+PASSED: O.prototype.constructor == Object [Object.as:129]
+PASSED: O.constructor == Function [Object.as:130]
+PASSED: typeof(Object.prototype.addProperty) == 'function' [Object.as:132]
+PASSED: typeof(Object.prototype.hasOwnProperty) == 'function' [Object.as:133]
+PASSED: typeof(Object.prototype.isPropertyEnumerable) == 'function' [Object.as:134]
+PASSED: typeof(Object.prototype.isPrototypeOf) == 'function' [Object.as:135]
+PASSED: typeof(Object.prototype.watch) == 'function' [Object.as:136]
+PASSED: typeof(Object.prototype.unwatch) == 'function' [Object.as:137]
+PASSED: obj != undefined [Object.as:142]
+PASSED: typeof(obj) == "object" [Object.as:143]
+PASSED: obj.__proto__ == Object.prototype [Object.as:145]
+PASSED: typeof(obj.prototype) == 'undefined' [Object.as:146]
+PASSED: typeof(obj.__proto__) == 'object' [Object.as:147]
+PASSED: obj.__constructor__ == Object [Object.as:155]
+PASSED: obj.constructor == Object [Object.as:158]
+PASSED: Object.prototype.constructor == Object [Object.as:159]
+PASSED: obj.__proto__.constructor == Object [Object.as:160]
+PASSED: typeof(obj.toString) == 'function' [Object.as:163]
+PASSED: typeof(obj.valueOf) == 'function' [Object.as:164]
+PASSED: typeof(obj.addProperty) == 'function' [Object.as:165]
+PASSED: Object.hasOwnProperty('constructor') [Object.as:167]
+PASSED: !obj.hasOwnProperty('constructor') [Object.as:172]
+PASSED: obj.hasOwnProperty('__constructor__') [Object.as:175]
+PASSED: obj.member == 1 [Object.as:179]
+PASSED: typeof(obj.toString()) == 'string' [Object.as:180]
+PASSED: obj.toString() == '[object Object]' [Object.as:181]
+PASSED: typeof(obj.valueOf()) == 'object' [Object.as:182]
+PASSED: obj.valueOf() == obj [Object.as:183]
+PASSED: typeof(obj2) == "object" [Object.as:187]
+PASSED: typeof(obj2.__proto__) == 'object' [Object.as:188]
+PASSED: obj2.__proto__ == Object.prototype [Object.as:189]
+PASSED: obj2.__proto__.constructor == Object [Object.as:190]
+PASSED: typeof(obj2.prototype) == 'undefined' [Object.as:191]
+PASSED: obj2.member == 1 [Object.as:195]
+PASSED: obj3 != undefined [Object.as:199]
+PASSED: typeof(obj3) == "object" [Object.as:200]
+PASSED: obj3.__proto__.constructor == Object [Object.as:201]
+PASSED: obj3.member != undefined [Object.as:204]
+PASSED: obj3.member == 1 [Object.as:205]
+PASSED: obj3.member2 != undefined [Object.as:209]
+PASSED: obj3.member2 == 3 [Object.as:210]
+PASSED: copy.member2 == 3 [Object.as:217]
+PASSED: copy.test == 4 [Object.as:219]
+PASSED: obj3.test == 4 [Object.as:220]
+PASSED: copy.__proto__.constructor == Object [Object.as:221]
+PASSED: ret == true [Object.as:243]
+PASSED: typeof(obj3.toString) == 'function' [Object.as:246]
+PASSED: typeof(ownPropertyCheck) == 'boolean' [Object.as:248]
+PASSED: !ownPropertyCheck [Object.as:249]
+PASSED: typeof(ownPropertyCheck) == 'boolean' [Object.as:253]
+PASSED: ownPropertyCheck [Object.as:254]
+PASSED: typeof(ownPropertyCheck) == 'boolean' [Object.as:258]
+PASSED: ownPropertyCheck [Object.as:259]
+PASSED: obj3.len == undefined [Object.as:261]
+PASSED: obj3.len == 3 [Object.as:263]
+PASSED: obj3._len == 5 [Object.as:265]
+PASSED: obj3.len == 5 [Object.as:266]
+PASSED: ret == false [Object.as:270]
+PASSED: obj3.len2 == undefined [Object.as:271]
+PASSED: obj3.len2 == 'test' [Object.as:273]
+PASSED: typeof(obj3) == "object" [Object.as:276]
+PASSED: typeof(obj3.__proto__) == 'undefined' [Object.as:277]
+XPASSED: obj3 == undefined [Object.as:278]
+PASSED: r [Object.as:288]
+PASSED: test_set_calls == 0 [Object.as:289]
+PASSED: test_get_calls == 0 [Object.as:290]
+PASSED: test_set_calls == 0 [Object.as:293]
+XPASSED: test_get_calls == 65 [Object.as:297]
+PASSED: v == 5 [Object.as:299]
+PASSED: test_get_calls == 0 [Object.as:302]
+XPASSED: test_set_calls == 65 [Object.as:306]
+PASSED: r [Object.as:310]
+PASSED: test_get_calls == 0 [Object.as:311]
+PASSED: test_set_calls == 0 [Object.as:312]
+PASSED: v == 16 [Object.as:317]
+XPASSED: test_get_calls == 65 [Object.as:321]
+PASSED: test_set_calls == 0 [Object.as:323]
+PASSED: o.test == 19 [Object.as:331]
+PASSED: r [Object.as:333]
+PASSED: v == undefined [Object.as:335]
+PASSED: o._target == "/hello" [Object.as:340]
+PASSED: _root.target_get_calls == 0 [Object.as:345]
+PASSED: _root.target_set_calls == 0 [Object.as:346]
+PASSED: typeof(o._target) == "undefined" [Object.as:347]
+PASSED: proto.addProperty("len", getLen, setLen) [Object.as:352]
+PASSED: inh1._len == undefined [Object.as:357]
+PASSED: inh2._len == undefined [Object.as:358]
+PASSED: inh1._len == 4 [Object.as:361]
+PASSED: inh2._len == 9 [Object.as:362]
+PASSED: proto._len == undefined [Object.as:363]
+PASSED: inh1.len == 5 [Object.as:366]
+PASSED: inh2.len == 7 [Object.as:367]
+PASSED: proto.len == undefined [Object.as:368]
+PASSED: proto.addProperty("ogs", getLen, setLen) [Object.as:372]
+PASSED: ! inh2d.hasOwnProperty("ogs") [Object.as:383]
+PASSED: inh2d.__proto__.hasOwnProperty("ogs") [Object.as:384]
+PASSED: inh2d.__proto__.__proto__.hasOwnProperty("ogs") [Object.as:385]
+PASSED: inh2d.ogs == 5 [Object.as:386]
+PASSED: inh2.ogs == 5 [Object.as:387]
+PASSED: inh2.__proto__.ogs == 14 [Object.as:388]
+PASSED: inh2d._len == 54 [Object.as:390]
+PASSED: inh2d.ogs == 5 [Object.as:391]
+PASSED: inh2.ogs == 5 [Object.as:392]
+PASSED: inh2.__proto__.ogs == 14 [Object.as:393]
+PASSED: c == 7 [Object.as:399]
+PASSED: o.addProperty != Object.prototype.addProperty [Object.as:400]
+PASSED: typeof(o.mem) == 'undefined' [Object.as:414]
+PASSED: o.mem == 3 [Object.as:416]
+PASSED: o.mem2 == 3 [Object.as:417]
+XPASSED: o1.setterCalls == 3 [Object.as:456]
+XPASSED: o2.setterCalls == 3 [Object.as:457]
+PASSED: o1.mem1 == 3 [Object.as:459]
+PASSED: o1.mem1 == 3 [Object.as:460]
+XPASSED: o1.setterCalls == 3 [Object.as:469]
+XPASSED: o2.setterCalls == 3 [Object.as:470]
+PASSED: o1.mem1 == 6 [Object.as:472]
+PASSED: o2.mem2 == 6 [Object.as:473]
+PASSED: !r [Object.as:479]
+PASSED: !r [Object.as:481]
+PASSED: !r [Object.as:483]
+PASSED: r [Object.as:485]
+PASSED: getcalls == 1 [Object.as:488]
+PASSED: o.lnull == 5 [Object.as:491]
+PASSED: !r [Object.as:497]
+PASSED: !r [Object.as:499]
+PASSED: noset_setter_calls == 1 [Object.as:508]
+PASSED: v == 2 [Object.as:510]
+PASSED: noset_setter_calls == 2 [Object.as:512]
+PASSED: v == 5 [Object.as:514]
+PASSED: v == 2 [Object.as:526]
+PASSED: v == 5 [Object.as:529]
+PASSED: obj8_getter_cnt == 1 [Object.as:548]
+PASSED: obj8_setter_cnt == 1 [Object.as:549]
+PASSED: obj9_getter_cnt == 0 [Object.as:564]
+PASSED: obj9_setter_cnt == 1 [Object.as:565]
+PASSED: obj9.obj9_prop == 10 [Object.as:566]
+PASSED: obj9_getter_cnt == 1 [Object.as:567]
+PASSED: obj9_setter_cnt == 1 [Object.as:568]
+PASSED: Object.prototype.toString() == '[object Object]' [Object.as:577]
+PASSED: typeof(Object.prototype.toString()) == 'object' [Object.as:580]
+PASSED: Object.prototype.toString() == 0 [Object.as:582]
+PASSED: Object.prototype.toLocaleString(1) == "toString0" [Object.as:597]
+PASSED: enumlen == 6 [Object.as:624]
+PASSED: enum["a"] == 1 [Object.as:626]
+PASSED: enum["b"] == 2 [Object.as:627]
+PASSED: enum["c"] == 3 [Object.as:628]
+PASSED: enum["d"] == 4 [Object.as:629]
+PASSED: enum["e"] == 5 [Object.as:630]
+PASSED: enum["f"] == 6 [Object.as:631]
+PASSED: enumlen == 5 [Object.as:639]
+PASSED: enum["a"] == undefined [Object.as:642]
+PASSED: obj5['a'] == 1 [Object.as:646]
+PASSED: obj5['A'] == undefined [Object.as:650]
+PASSED: Object.prototype.hasOwnProperty("isPropertyEnumerable") [Object.as:660]
+PASSED: ! Object.prototype.isPropertyEnumerable("isPropertyEnumerable") [Object.as:661]
+PASSED: Object.prototype.hasOwnProperty("addProperty") [Object.as:662]
+PASSED: ! Object.prototype.isPropertyEnumerable("addProperty") [Object.as:663]
+PASSED: Object.prototype.hasOwnProperty("hasOwnProperty") [Object.as:664]
+PASSED: ! Object.prototype.isPropertyEnumerable("hasOwnProperty") [Object.as:665]
+PASSED: typeof(ret) == 'boolean' [Object.as:671]
+PASSED: ! ret [Object.as:672]
+PASSED: typeof(ret) == 'boolean' [Object.as:675]
+PASSED: ret [Object.as:676]
+PASSED: typeof(ret) == 'undefined' [Object.as:687]
+PASSED: obj7.isPropertyEnumerable('member1') [Object.as:690]
+PASSED: ! obj7.isPropertyEnumerable('member2') [Object.as:691]
+PASSED: typeof(obj7.member3) == 'object' [Object.as:692]
+PASSED: ! obj7.isPropertyEnumerable('member3') [Object.as:693]
+PASSED: typeof(obj8.isPrototypeOf(obj8)) == 'boolean' [Object.as:708]
+PASSED: typeof(obj8.isPrototypeOf(undefined)) == 'boolean' [Object.as:709]
+PASSED: obj9.prototype.isPrototypeOf(obj10) [Object.as:710]
+PASSED: ! obj8.prototype.isPrototypeOf(obj10) [Object.as:711]
+PASSED: obj8.prototype.isPrototypeOf(obj9) [Object.as:712]
+PASSED: r [Object.as:729]
+PASSED: o.l == 2 [Object.as:732]
+PASSED: _root.info.nam == 'l' [Object.as:733]
+PASSED: typeof(_root.info.ov) == 'undefined' [Object.as:734]
+PASSED: _root.info.nv == 5 [Object.as:735]
+PASSED: _root.info.d == 'cust' [Object.as:736]
+PASSED: _root.info.tv == o [Object.as:737]
+PASSED: delete o.l [Object.as:739]
+PASSED: !o.unwatch('p') [Object.as:741]
+PASSED: !o.unwatch('r') [Object.as:742]
+PASSED: o.unwatch('l') [Object.as:743]
+PASSED: r [Object.as:750]
+PASSED: typeof(_root.info) == 'undefined' [Object.as:751]
+PASSED: r [Object.as:755]
+PASSED: _root.info.nam == 'l' [Object.as:756]
+PASSED: typeof(_root.info.ov) == 'undefined' [Object.as:757]
+PASSED: typeof(_root.info.nv) == 'undefined' [Object.as:758]
+PASSED: _root.info.d == 'cust2' [Object.as:759]
+PASSED: _root.info.tv == o [Object.as:760]
+PASSED: _root.get_l_calls == 0 [Object.as:761]
+PASSED: _root.set_l_calls == 0 [Object.as:762]
+PASSED: r [Object.as:769]
+PASSED: typeof(_root.info) == 'undefined' [Object.as:770]
+PASSED: _root.get_l_calls == 0 [Object.as:771]
+PASSED: _root.set_l_calls == 0 [Object.as:772]
+PASSED: r == 'return from watch' [Object.as:774]
+PASSED: v == 'return from watch' [Object.as:779]
+PASSED: _root.info.ov == 'return from watch' [Object.as:793]
+PASSED: _root.info.nv == 'return from watch' [Object.as:794]
+PASSED: _root.info.d == 'cust2' [Object.as:795]
+PASSED: _root.info.tv == o [Object.as:796]
+PASSED: _root.get_l_calls == 0 [Object.as:797]
+XPASSED: _root.set_l_calls == 65 [Object.as:798]
+PASSED: !r [Object.as:802]
+PASSED: delete o.l [Object.as:803]
+PASSED: r [Object.as:805]
+PASSED: "string + " + nothing == "string + toString" [Object.as:828]
+PASSED: "string + " + nothing == "string + undefined" [Object.as:833]
+PASSED: "string + " + nothing == "string + undefined" [Object.as:841]
+PASSED: "string + " + nothing2 == "string + valueOf" [Object.as:845]
+totals
diff --git a/test/gnash/actionscript.all/pending/Object-8.swf b/test/gnash/actionscript.all/pending/Object-8.swf
new file mode 100644
index 0000000..a2820ed
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Object-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/Object-8.swf.trace b/test/gnash/actionscript.all/pending/Object-8.swf.trace
new file mode 100644
index 0000000..a6b1f82
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Object-8.swf.trace
@@ -0,0 +1,263 @@
+PASSED: typeof(Object) == 'function' [Object.as:28]
+PASSED: typeof(Object.prototype) == 'object' [Object.as:29]
+PASSED: typeof(Object.constructor) == 'function' [Object.as:30]
+PASSED: typeof(Object.__proto__) == 'object' [Object.as:36]
+PASSED: typeof(Object.registerClass) == 'function' [Object.as:39]
+PASSED: Object.prototype.registerClass == undefined [Object.as:40]
+PASSED: typeof(Object.prototype.toString) == 'function' [Object.as:43]
+PASSED: typeof(Object.prototype.toLocaleString) == 'function' [Object.as:44]
+PASSED: typeof(Object.prototype.valueOf) == 'function' [Object.as:45]
+PASSED: typeof(Object.prototype.constructor) == 'function' [Object.as:46]
+PASSED: typeof(Object.prototype.addProperty) == 'function' [Object.as:58]
+PASSED: typeof(Object.prototype.watch) == 'function' [Object.as:59]
+PASSED: typeof(Object.prototype.unwatch) == 'function' [Object.as:60]
+PASSED: typeof(Object.prototype.isPropertyEnumerable) == 'function' [Object.as:61]
+PASSED: typeof(Object.prototype.isPrototypeOf) == 'function' [Object.as:62]
+PASSED: typeof(Object.prototype.hasOwnProperty) == 'function' [Object.as:63]
+PASSED: Object.prototype.constructor == Object [Object.as:65]
+PASSED: typeof(Object.prototype.toString.constructor) == 'function' [Object.as:66]
+PASSED: Object.prototype.toString.constructor == Function [Object.as:70]
+PASSED: Object.prototype.prototype == undefined [Object.as:74]
+PASSED: Object.prototype.__proto__ == undefined [Object.as:80]
+PASSED: !Object.prototype.hasOwnProperty("__proto__") [Object.as:81]
+PASSED: Object.hasOwnProperty('__proto__') [Object.as:88]
+PASSED: O == Object [Object.as:91]
+PASSED: O.hasOwnProperty('__proto__') [Object.as:94]
+PASSED: O.hasOwnProperty('registerClass') [Object.as:95]
+PASSED: O.hasOwnProperty('constructor') [Object.as:96]
+PASSED: O.hasOwnProperty('prototype') [Object.as:97]
+PASSED: O.__proto__.hasOwnProperty('__proto__') [Object.as:100]
+PASSED: O.__proto__.hasOwnProperty('apply') [Object.as:101]
+PASSED: O.__proto__.hasOwnProperty('call') [Object.as:102]
+PASSED: O.__proto__.hasOwnProperty('constructor') [Object.as:103]
+PASSED: O.__proto__ != Object.prototype [Object.as:105]
+PASSED: O.__proto__.__proto__ == Object.prototype [Object.as:106]
+PASSED: O.constructor.hasOwnProperty('__proto__') [Object.as:109]
+PASSED: O.constructor.hasOwnProperty('constructor') [Object.as:110]
+PASSED: O.constructor.hasOwnProperty('prototype') [Object.as:111]
+PASSED: O.prototype.hasOwnProperty('addProperty') [Object.as:114]
+PASSED: O.prototype.hasOwnProperty('constructor') [Object.as:115]
+PASSED: O.prototype.hasOwnProperty('hasOwnProperty') [Object.as:116]
+PASSED: O.prototype.hasOwnProperty('isPropertyEnumerable') [Object.as:117]
+PASSED: O.prototype.hasOwnProperty('isPrototypeOf') [Object.as:118]
+PASSED: O.prototype.hasOwnProperty('toString') [Object.as:119]
+PASSED: O.prototype.hasOwnProperty('valueOf') [Object.as:120]
+PASSED: O.prototype.hasOwnProperty('unwatch') [Object.as:121]
+PASSED: O.prototype.hasOwnProperty('watch') [Object.as:122]
+PASSED: O.prototype.constructor.hasOwnProperty('__proto__') [Object.as:125]
+PASSED: O.prototype.constructor.hasOwnProperty('constructor') [Object.as:126]
+PASSED: O.prototype.constructor.hasOwnProperty('prototype') [Object.as:127]
+PASSED: O.prototype.constructor == Object [Object.as:129]
+PASSED: O.constructor == Function [Object.as:130]
+PASSED: typeof(Object.prototype.addProperty) == 'function' [Object.as:132]
+PASSED: typeof(Object.prototype.hasOwnProperty) == 'function' [Object.as:133]
+PASSED: typeof(Object.prototype.isPropertyEnumerable) == 'function' [Object.as:134]
+PASSED: typeof(Object.prototype.isPrototypeOf) == 'function' [Object.as:135]
+PASSED: typeof(Object.prototype.watch) == 'function' [Object.as:136]
+PASSED: typeof(Object.prototype.unwatch) == 'function' [Object.as:137]
+PASSED: obj != undefined [Object.as:142]
+PASSED: typeof(obj) == "object" [Object.as:143]
+PASSED: obj.__proto__ == Object.prototype [Object.as:145]
+PASSED: typeof(obj.prototype) == 'undefined' [Object.as:146]
+PASSED: typeof(obj.__proto__) == 'object' [Object.as:147]
+PASSED: obj.__constructor__ == Object [Object.as:155]
+PASSED: obj.constructor == Object [Object.as:158]
+PASSED: Object.prototype.constructor == Object [Object.as:159]
+PASSED: obj.__proto__.constructor == Object [Object.as:160]
+PASSED: typeof(obj.toString) == 'function' [Object.as:163]
+PASSED: typeof(obj.valueOf) == 'function' [Object.as:164]
+PASSED: typeof(obj.addProperty) == 'function' [Object.as:165]
+PASSED: Object.hasOwnProperty('constructor') [Object.as:167]
+PASSED: !obj.hasOwnProperty('constructor') [Object.as:172]
+PASSED: obj.hasOwnProperty('__constructor__') [Object.as:175]
+PASSED: obj.member == 1 [Object.as:179]
+PASSED: typeof(obj.toString()) == 'string' [Object.as:180]
+PASSED: obj.toString() == '[object Object]' [Object.as:181]
+PASSED: typeof(obj.valueOf()) == 'object' [Object.as:182]
+PASSED: obj.valueOf() == obj [Object.as:183]
+PASSED: typeof(obj2) == "object" [Object.as:187]
+PASSED: typeof(obj2.__proto__) == 'object' [Object.as:188]
+PASSED: obj2.__proto__ == Object.prototype [Object.as:189]
+PASSED: obj2.__proto__.constructor == Object [Object.as:190]
+PASSED: typeof(obj2.prototype) == 'undefined' [Object.as:191]
+PASSED: obj2.member == 1 [Object.as:195]
+PASSED: obj3 != undefined [Object.as:199]
+PASSED: typeof(obj3) == "object" [Object.as:200]
+PASSED: obj3.__proto__.constructor == Object [Object.as:201]
+PASSED: obj3.member != undefined [Object.as:204]
+PASSED: obj3.member == 1 [Object.as:205]
+PASSED: obj3.member2 != undefined [Object.as:209]
+PASSED: obj3.member2 == 3 [Object.as:210]
+PASSED: copy.member2 == 3 [Object.as:217]
+PASSED: copy.test == 4 [Object.as:219]
+PASSED: obj3.test == 4 [Object.as:220]
+PASSED: copy.__proto__.constructor == Object [Object.as:221]
+PASSED: ret == true [Object.as:243]
+PASSED: typeof(obj3.toString) == 'function' [Object.as:246]
+PASSED: typeof(ownPropertyCheck) == 'boolean' [Object.as:248]
+PASSED: !ownPropertyCheck [Object.as:249]
+PASSED: typeof(ownPropertyCheck) == 'boolean' [Object.as:253]
+PASSED: ownPropertyCheck [Object.as:254]
+PASSED: typeof(ownPropertyCheck) == 'boolean' [Object.as:258]
+PASSED: ownPropertyCheck [Object.as:259]
+PASSED: obj3.len == undefined [Object.as:261]
+PASSED: obj3.len == 3 [Object.as:263]
+PASSED: obj3._len == 5 [Object.as:265]
+PASSED: obj3.len == 5 [Object.as:266]
+PASSED: ret == false [Object.as:270]
+PASSED: obj3.len2 == undefined [Object.as:271]
+PASSED: obj3.len2 == 'test' [Object.as:273]
+PASSED: typeof(obj3) == "object" [Object.as:276]
+PASSED: typeof(obj3.__proto__) == 'undefined' [Object.as:277]
+XPASSED: obj3 == undefined [Object.as:278]
+PASSED: r [Object.as:288]
+PASSED: test_set_calls == 0 [Object.as:289]
+PASSED: test_get_calls == 0 [Object.as:290]
+PASSED: test_set_calls == 0 [Object.as:293]
+XPASSED: test_get_calls == 65 [Object.as:297]
+PASSED: v == 5 [Object.as:299]
+PASSED: test_get_calls == 0 [Object.as:302]
+XPASSED: test_set_calls == 65 [Object.as:306]
+PASSED: r [Object.as:310]
+PASSED: test_get_calls == 0 [Object.as:311]
+PASSED: test_set_calls == 0 [Object.as:312]
+PASSED: v == 16 [Object.as:317]
+XPASSED: test_get_calls == 65 [Object.as:321]
+PASSED: test_set_calls == 0 [Object.as:323]
+PASSED: o.test == 19 [Object.as:331]
+PASSED: r [Object.as:333]
+PASSED: v == undefined [Object.as:335]
+PASSED: o._target == "/hello" [Object.as:340]
+PASSED: _root.target_get_calls == 0 [Object.as:345]
+PASSED: _root.target_set_calls == 0 [Object.as:346]
+PASSED: typeof(o._target) == "undefined" [Object.as:347]
+PASSED: proto.addProperty("len", getLen, setLen) [Object.as:352]
+PASSED: inh1._len == undefined [Object.as:357]
+PASSED: inh2._len == undefined [Object.as:358]
+PASSED: inh1._len == 4 [Object.as:361]
+PASSED: inh2._len == 9 [Object.as:362]
+PASSED: proto._len == undefined [Object.as:363]
+PASSED: inh1.len == 5 [Object.as:366]
+PASSED: inh2.len == 7 [Object.as:367]
+PASSED: proto.len == undefined [Object.as:368]
+PASSED: proto.addProperty("ogs", getLen, setLen) [Object.as:372]
+PASSED: ! inh2d.hasOwnProperty("ogs") [Object.as:383]
+PASSED: inh2d.__proto__.hasOwnProperty("ogs") [Object.as:384]
+PASSED: inh2d.__proto__.__proto__.hasOwnProperty("ogs") [Object.as:385]
+PASSED: inh2d.ogs == 5 [Object.as:386]
+PASSED: inh2.ogs == 5 [Object.as:387]
+PASSED: inh2.__proto__.ogs == 14 [Object.as:388]
+PASSED: inh2d._len == 54 [Object.as:390]
+PASSED: inh2d.ogs == 5 [Object.as:391]
+PASSED: inh2.ogs == 5 [Object.as:392]
+PASSED: inh2.__proto__.ogs == 14 [Object.as:393]
+PASSED: c == 7 [Object.as:399]
+PASSED: o.addProperty != Object.prototype.addProperty [Object.as:400]
+PASSED: typeof(o.mem) == 'undefined' [Object.as:414]
+PASSED: o.mem == 3 [Object.as:416]
+PASSED: o.mem2 == 3 [Object.as:417]
+XPASSED: o1.setterCalls == 3 [Object.as:456]
+XPASSED: o2.setterCalls == 3 [Object.as:457]
+PASSED: o1.mem1 == 3 [Object.as:459]
+PASSED: o1.mem1 == 3 [Object.as:460]
+XPASSED: o1.setterCalls == 3 [Object.as:469]
+XPASSED: o2.setterCalls == 3 [Object.as:470]
+PASSED: o1.mem1 == 6 [Object.as:472]
+PASSED: o2.mem2 == 6 [Object.as:473]
+PASSED: !r [Object.as:479]
+PASSED: !r [Object.as:481]
+PASSED: !r [Object.as:483]
+PASSED: r [Object.as:485]
+PASSED: getcalls == 1 [Object.as:488]
+PASSED: o.lnull == 5 [Object.as:491]
+PASSED: !r [Object.as:497]
+PASSED: !r [Object.as:499]
+PASSED: noset_setter_calls == 1 [Object.as:508]
+PASSED: v == 2 [Object.as:510]
+PASSED: noset_setter_calls == 2 [Object.as:512]
+PASSED: v == 5 [Object.as:514]
+PASSED: v == 2 [Object.as:526]
+PASSED: v == 5 [Object.as:529]
+PASSED: obj8_getter_cnt == 1 [Object.as:548]
+PASSED: obj8_setter_cnt == 1 [Object.as:549]
+PASSED: obj9_getter_cnt == 0 [Object.as:564]
+PASSED: obj9_setter_cnt == 1 [Object.as:565]
+PASSED: obj9.obj9_prop == 10 [Object.as:566]
+PASSED: obj9_getter_cnt == 1 [Object.as:567]
+PASSED: obj9_setter_cnt == 1 [Object.as:568]
+PASSED: Object.prototype.toString() == '[object Object]' [Object.as:577]
+PASSED: typeof(Object.prototype.toString()) == 'object' [Object.as:580]
+PASSED: Object.prototype.toString() == 0 [Object.as:582]
+PASSED: Object.prototype.toLocaleString(1) == "toString0" [Object.as:597]
+PASSED: enumlen == 6 [Object.as:624]
+PASSED: enum["a"] == 1 [Object.as:626]
+PASSED: enum["b"] == 2 [Object.as:627]
+PASSED: enum["c"] == 3 [Object.as:628]
+PASSED: enum["d"] == 4 [Object.as:629]
+PASSED: enum["e"] == 5 [Object.as:630]
+PASSED: enum["f"] == 6 [Object.as:631]
+PASSED: enumlen == 5 [Object.as:639]
+PASSED: enum["a"] == undefined [Object.as:642]
+PASSED: obj5['a'] == 1 [Object.as:646]
+PASSED: obj5['A'] == undefined [Object.as:650]
+PASSED: Object.prototype.hasOwnProperty("isPropertyEnumerable") [Object.as:660]
+PASSED: ! Object.prototype.isPropertyEnumerable("isPropertyEnumerable") [Object.as:661]
+PASSED: Object.prototype.hasOwnProperty("addProperty") [Object.as:662]
+PASSED: ! Object.prototype.isPropertyEnumerable("addProperty") [Object.as:663]
+PASSED: Object.prototype.hasOwnProperty("hasOwnProperty") [Object.as:664]
+PASSED: ! Object.prototype.isPropertyEnumerable("hasOwnProperty") [Object.as:665]
+PASSED: typeof(ret) == 'boolean' [Object.as:671]
+PASSED: ! ret [Object.as:672]
+PASSED: typeof(ret) == 'boolean' [Object.as:675]
+PASSED: ret [Object.as:676]
+PASSED: typeof(ret) == 'undefined' [Object.as:687]
+PASSED: obj7.isPropertyEnumerable('member1') [Object.as:690]
+PASSED: ! obj7.isPropertyEnumerable('member2') [Object.as:691]
+PASSED: typeof(obj7.member3) == 'object' [Object.as:692]
+PASSED: ! obj7.isPropertyEnumerable('member3') [Object.as:693]
+PASSED: typeof(obj8.isPrototypeOf(obj8)) == 'boolean' [Object.as:708]
+PASSED: typeof(obj8.isPrototypeOf(undefined)) == 'boolean' [Object.as:709]
+PASSED: obj9.prototype.isPrototypeOf(obj10) [Object.as:710]
+PASSED: ! obj8.prototype.isPrototypeOf(obj10) [Object.as:711]
+PASSED: obj8.prototype.isPrototypeOf(obj9) [Object.as:712]
+PASSED: r [Object.as:729]
+PASSED: o.l == 2 [Object.as:732]
+PASSED: _root.info.nam == 'l' [Object.as:733]
+PASSED: typeof(_root.info.ov) == 'undefined' [Object.as:734]
+PASSED: _root.info.nv == 5 [Object.as:735]
+PASSED: _root.info.d == 'cust' [Object.as:736]
+PASSED: _root.info.tv == o [Object.as:737]
+PASSED: delete o.l [Object.as:739]
+PASSED: !o.unwatch('p') [Object.as:741]
+PASSED: !o.unwatch('r') [Object.as:742]
+PASSED: o.unwatch('l') [Object.as:743]
+PASSED: r [Object.as:750]
+PASSED: typeof(_root.info) == 'undefined' [Object.as:751]
+PASSED: r [Object.as:755]
+PASSED: _root.info.nam == 'l' [Object.as:756]
+PASSED: typeof(_root.info.ov) == 'undefined' [Object.as:757]
+PASSED: typeof(_root.info.nv) == 'undefined' [Object.as:758]
+PASSED: _root.info.d == 'cust2' [Object.as:759]
+PASSED: _root.info.tv == o [Object.as:760]
+PASSED: _root.get_l_calls == 0 [Object.as:761]
+PASSED: _root.set_l_calls == 0 [Object.as:762]
+PASSED: r [Object.as:769]
+PASSED: typeof(_root.info) == 'undefined' [Object.as:770]
+PASSED: _root.get_l_calls == 0 [Object.as:771]
+PASSED: _root.set_l_calls == 0 [Object.as:772]
+PASSED: r == 'return from watch' [Object.as:774]
+PASSED: v == 'return from watch' [Object.as:779]
+PASSED: _root.info.ov == 'return from watch' [Object.as:793]
+PASSED: _root.info.nv == 'return from watch' [Object.as:794]
+PASSED: _root.info.d == 'cust2' [Object.as:795]
+PASSED: _root.info.tv == o [Object.as:796]
+PASSED: _root.get_l_calls == 0 [Object.as:797]
+XPASSED: _root.set_l_calls == 65 [Object.as:798]
+PASSED: !r [Object.as:802]
+PASSED: delete o.l [Object.as:803]
+PASSED: r [Object.as:805]
+PASSED: "string + " + nothing == "string + toString" [Object.as:828]
+PASSED: "string + " + nothing == "string + undefined" [Object.as:833]
+PASSED: "string + " + nothing == "string + undefined" [Object.as:841]
+PASSED: "string + " + nothing2 == "string + valueOf" [Object.as:845]
+totals
diff --git a/test/gnash/actionscript.all/pending/Object.as b/test/gnash/actionscript.all/pending/Object.as
new file mode 100644
index 0000000..0c7d0a0
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Object.as
@@ -0,0 +1,854 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for Object ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: Object.as,v 1.66 2008/04/28 16:10:00 bwy Exp $";
+#include "check.as"
+
+// Test things in Class Object (swf5~swf8)
+check_equals(typeof(Object), 'function');
+check_equals(typeof(Object.prototype), 'object');
+check_equals(typeof(Object.constructor), 'function');
+#if OUTPUT_VERSION == 5
+	check_equals(typeof(Object.__proto__), 'undefined');
+	// make Object.__proto__  visible in swf5
+	ASSetPropFlags(Object, null, 8, 128 + 1);
+#endif
+check_equals(typeof(Object.__proto__), 'object');
+
+// registerClass is a public static function of Object
+check_equals(typeof(Object.registerClass), 'function');
+check_equals(Object.prototype.registerClass, undefined);
+
+// Test things in Object.prototype (swf5~swf8)
+check_equals(typeof(Object.prototype.toString), 'function');
+check_equals(typeof(Object.prototype.toLocaleString), 'function');
+check_equals(typeof(Object.prototype.valueOf), 'function');
+check_equals(typeof(Object.prototype.constructor), 'function'); 
+#if OUTPUT_VERSION == 5
+	check_equals(typeof(Object.prototype.addProperty), 'undefined');
+	check_equals(typeof(Object.prototype.watch), 'undefined');
+	check_equals(typeof(Object.prototype.unwatch), 'undefined');
+	check_equals(typeof(Object.prototype.isPropertyEnumerable), 'undefined'); 
+	check_equals(typeof(Object.prototype.isPrototypeOs), 'undefined');
+	check_equals(typeof(Object.prototype.hasOwnProperty), 'undefined'); 
+	// make functions above visible
+	ASSetPropFlags(Object.prototype, null, 8, 128 + 1);
+#endif
+// These functions are visible now even in swf5 (swf5 ~ swf8)
+check_equals(typeof(Object.prototype.addProperty), 'function');
+check_equals(typeof(Object.prototype.watch), 'function');
+check_equals(typeof(Object.prototype.unwatch), 'function');
+check_equals(typeof(Object.prototype.isPropertyEnumerable), 'function'); 
+check_equals(typeof(Object.prototype.isPrototypeOf), 'function');
+check_equals(typeof(Object.prototype.hasOwnProperty), 'function'); 
+
+check_equals(Object.prototype.constructor, Object); 
+check_equals(typeof(Object.prototype.toString.constructor), 'function');
+
+#if OUTPUT_VERSION > 5
+ // Function Object only exists in swf6 and above
+ check_equals(Object.prototype.toString.constructor, Function);
+#else
+ check_equals(typeof(Function), 'undefined');
+#endif
+check_equals(Object.prototype.prototype, undefined);
+
+// The bug below (no end in the inheritance chain) triggers endless
+// recursions during run of the trace_properties() function defined
+// in trace_properties.as from swfdec testsuite.
+// WE WANT THIS FIXED !!
+check_equals(Object.prototype.__proto__, undefined);
+check(!Object.prototype.hasOwnProperty("__proto__"));
+
+
+#if OUTPUT_VERSION > 5
+
+// Through test of existance of methods!
+
+check(Object.hasOwnProperty('__proto__'));
+
+O = Object;
+check_equals(O, Object);
+
+// found 4 methods in Object
+check(O.hasOwnProperty('__proto__'));
+check(O.hasOwnProperty('registerClass'));
+check(O.hasOwnProperty('constructor'));
+check(O.hasOwnProperty('prototype'));
+
+// fount 4 methods in Object.__proto__
+check(O.__proto__.hasOwnProperty('__proto__'));
+check(O.__proto__.hasOwnProperty('apply'));
+check(O.__proto__.hasOwnProperty('call'));
+check(O.__proto__.hasOwnProperty('constructor'));
+
+check(O.__proto__ != Object.prototype);
+check(O.__proto__.__proto__ == Object.prototype);
+
+// found 3 methods in Object.constructor
+check(O.constructor.hasOwnProperty('__proto__'));
+check(O.constructor.hasOwnProperty('constructor'));
+check(O.constructor.hasOwnProperty('prototype'));
+
+// found 9 methods in Object.prototype
+check(O.prototype.hasOwnProperty('addProperty'));
+check(O.prototype.hasOwnProperty('constructor'));
+check(O.prototype.hasOwnProperty('hasOwnProperty'));
+check(O.prototype.hasOwnProperty('isPropertyEnumerable'));
+check(O.prototype.hasOwnProperty('isPrototypeOf'));
+check(O.prototype.hasOwnProperty('toString'));
+check(O.prototype.hasOwnProperty('valueOf'));
+check(O.prototype.hasOwnProperty('unwatch'));
+check(O.prototype.hasOwnProperty('watch'));
+
+// found 3 methods in Object.prototype.constructor
+check(O.prototype.constructor.hasOwnProperty('__proto__'));
+check(O.prototype.constructor.hasOwnProperty('constructor'));
+check(O.prototype.constructor.hasOwnProperty('prototype'));
+
+check_equals(O.prototype.constructor, Object);
+check_equals(O.constructor, Function);
+
+check_equals(typeof(Object.prototype.addProperty), 'function');
+check_equals(typeof(Object.prototype.hasOwnProperty), 'function');
+check_equals(typeof(Object.prototype.isPropertyEnumerable), 'function');
+check_equals(typeof(Object.prototype.isPrototypeOf), 'function');
+check_equals(typeof(Object.prototype.watch), 'function');
+check_equals(typeof(Object.prototype.unwatch), 'function');
+#endif
+
+// Test Object creation using 'new'
+var obj = new Object; // uses SWFACTION_NEWOBJECT
+check (obj != undefined);
+check_equals (typeof(obj), "object");
+
+check_equals(obj.__proto__, Object.prototype);
+check_equals(typeof(obj.prototype), 'undefined');
+check_equals(typeof(obj.__proto__), 'object');
+
+#if OUTPUT_VERSION == 5
+	check(obj.__constructor__ == undefined);
+	// make obj.__constructor__ visible
+	ASSetPropFlags(obj, null, 8, 128 + 1);
+	check(obj.__constructor__ == Object);
+#else
+	check(obj.__constructor__ == Object);
+#endif
+
+check(obj.constructor == Object);
+check(Object.prototype.constructor == Object); 
+check (obj.__proto__.constructor == Object);
+
+// Test instantiated Object methods
+check_equals(typeof(obj.toString), 'function');
+check_equals(typeof(obj.valueOf), 'function');
+check_equals(typeof(obj.addProperty), 'function');
+
+check(Object.hasOwnProperty('constructor'));
+#if OUTPUT_VERSION == 6
+	check(obj.hasOwnProperty('constructor'));  
+#elif  OUTPUT_VERSION > 6
+	// seems swf7 and above are different.
+	check(!obj.hasOwnProperty('constructor'));  
+#endif
+// swf5~8
+check(obj.hasOwnProperty('__constructor__')); 
+
+// Test instantiated Object members
+obj.member = 1;
+check (obj.member == 1)
+check_equals(typeof(obj.toString()), 'string');
+check_equals(obj.toString(), '[object Object]');
+check_equals(typeof(obj.valueOf()), 'object');
+check_equals(obj.valueOf(), obj);
+
+// Test Object creation using literal initialization
+var obj2 = { member:1 }; // uses SWFACTION_INITOBJECT
+check_equals(typeof(obj2), "object");
+check_equals(typeof(obj2.__proto__), 'object');
+check_equals(obj2.__proto__, Object.prototype);
+check_equals(obj2.__proto__.constructor, Object);
+check_equals(typeof(obj2.prototype), 'undefined');
+
+
+// Test initialized object members
+check ( obj2.member == 1 )
+
+// Test Object creation using initializing constructor
+var obj3 = new Object({ member:1 });
+check (obj3 != undefined);
+check (typeof(obj3) == "object");
+check (obj3.__proto__.constructor == Object);
+
+// Test initialized object members
+check ( obj3.member != undefined );
+check ( obj3.member == 1 );
+
+// Test after-initialization members set/get
+obj3.member2 = 3;
+check ( obj3.member2 != undefined );
+check ( obj3.member2 == 3 );
+
+//----------------------
+// Test copy ctors
+//----------------------
+
+var copy = new Object(obj3);
+check_equals( copy.member2, 3 );
+copy.test = 4;
+check_equals( copy.test, 4 );
+check_equals( obj3.test, 4 );
+check (copy.__proto__.constructor == Object);
+
+
+//---------------------------------------------
+// Test addProperty / hasOwnProperty (SWF6 up)
+//---------------------------------------------
+
+// Object.addProperty wasn't in SWF5
+#if OUTPUT_VERSION > 5
+
+// the 'getter' function
+function getLen() {
+  return this._len;
+}
+
+// the 'setter' function
+function setLen(l) {
+  this._len = l;
+}
+
+// add the "len" property
+var ret = obj3.addProperty("len", getLen, setLen);
+check_equals(ret, true);
+
+// toString is not obj3 "own" property, but it's inherited !
+check_equals(typeof(obj3.toString), 'function');
+ownPropertyCheck = obj3.hasOwnProperty("toString");
+check_equals(typeof(ownPropertyCheck), 'boolean');
+check(!ownPropertyCheck);
+
+// 'member' is an obj3 "own" member (not inherited) 
+ownPropertyCheck = obj3.hasOwnProperty("member");
+check_equals(typeof(ownPropertyCheck), 'boolean');
+check(ownPropertyCheck);
+
+// 'len' is an obj3 "own" property (not inherited) 
+ownPropertyCheck = obj3.hasOwnProperty("len");
+check_equals(typeof(ownPropertyCheck), 'boolean');
+check(ownPropertyCheck);
+
+check_equals (obj3.len, undefined);
+obj3._len = 3;
+check_equals (obj3.len, 3);
+obj3.len = 5;
+check_equals (obj3._len, 5);
+check_equals (obj3.len, 5);
+
+// TODO: try omitting the "setter" argument
+var ret = obj3.addProperty("len2", getLen);
+check_equals(ret, false);
+check_equals (obj3.len2, undefined);
+obj3.len2 = 'test';
+check_equals (obj3.len2, 'test');
+
+obj3.__proto__ = undefined;
+check_equals(typeof(obj3), "object");
+check_equals(typeof(obj3.__proto__), 'undefined');
+xcheck_equals(obj3, undefined);
+
+// Use name of an existing property
+
+o = {};
+o.test = 5;
+function test_get() { _root.test_get_calls++; return this.test; }
+function test_set(v) { this.test=v; _root.test_set_calls++; }
+test_set_calls=test_get_calls=0;
+r = o.addProperty("test", test_get, test_set);
+check(r);
+check_equals(test_set_calls, 0);
+check_equals(test_get_calls, 0);
+test_set_calls=test_get_calls=0;
+v = o.test;
+check_equals(test_set_calls, 0);
+#if OUTPUT_VERSION < 7
+ check_equals(test_get_calls, 1);
+#else
+ xcheck_equals(test_get_calls, 65); // urgh ! :)
+#endif
+check_equals(v, 5); // underlying value was initializied to existing prop
+test_set_calls=test_get_calls=0;
+o.test = 16; // should change underlying as well I guess
+check_equals(test_get_calls, 0);
+#if OUTPUT_VERSION < 7
+ check_equals(test_set_calls, 1);
+#else
+ xcheck_equals(test_set_calls, 65); // urgh ! :)
+#endif
+test_set_calls=test_get_calls=0;
+r = o.addProperty("test", test_get, test_set);
+check(r);
+check_equals(test_get_calls, 0); // didn't invoke the former getter..
+check_equals(test_set_calls, 0); // .. to fetch underlying var
+
+test_set_calls=test_get_calls=0;
+v = o.test;
+// got underlying value from previous getter-setter
+check_equals(v, 16);
+#if OUTPUT_VERSION < 7
+ check_equals(test_get_calls, 1);
+#else
+ xcheck_equals(test_get_calls, 65); // urgh ! :)
+#endif
+check_equals(test_set_calls, 0);
+
+// Existing property higher in inheritance chain
+
+delete o.test;
+o2 = {};
+o2.test = 19;
+o.__proto__ = o2;
+check_equals(o.test, 19); 
+r = o.addProperty("test", test_get, test_set);
+check(r);
+v = o.test;
+check_equals(v, undefined); // but not existing prop from inheritance chain
+
+// Existing native property 
+
+o = createEmptyMovieClip("hello", 10);
+check_equals(o._target, "/hello");
+function target_get() { _root.target_get_calls++; return this._target; }
+function target_set(v) { this._target=v; _root.target_set_calls++; }
+target_get_calls=target_set_calls=0;
+o.addProperty("_target", target_get, target_set);
+check_equals(_root.target_get_calls, 0);
+check_equals(_root.target_set_calls, 0);
+check_equals(typeof(o._target), "undefined"); // native getter-setter don't get initialized with underlying value
+
+// Try property inheritance
+
+var proto = new Object();
+check(proto.addProperty("len", getLen, setLen));
+var inh1 = new Object();
+inh1.__proto__ = proto;
+var inh2 = new Object();
+inh2.__proto__ = proto;
+check_equals (inh1._len, undefined);
+check_equals (inh2._len, undefined);
+inh1.len = 4; 
+inh2.len = 9;
+check_equals (inh1._len, 4);
+check_equals (inh2._len, 9);
+check_equals (proto._len, undefined);
+inh1._len = 5;
+inh2._len = 7;
+check_equals (inh1.len, 5);
+check_equals (inh2.len, 7);
+check_equals (proto.len, undefined);
+
+inh2.ogs = 5; // overridden getter-setter
+var inh2d = new Object;
+check(proto.addProperty("ogs", getLen, setLen));
+inh2d.__proto__ = inh2;
+inh2d._len = 8;
+proto._len = 14;
+
+//
+// Inheritance is: inh2d : inh2 : proto
+//	inh2d.ogs doesn't exist at this time
+//	inh2.ogs is a normal member (value: 5)
+//	proto.ogs is a getter-setter (changes: this._len)
+//
+check( ! inh2d.hasOwnProperty("ogs") );
+check( inh2d.__proto__.hasOwnProperty("ogs") );
+check( inh2d.__proto__.__proto__.hasOwnProperty("ogs") );
+check_equals(inh2d.ogs, 5); // find inh2.ogs
+check_equals(inh2.ogs, 5); // find inh2.ogs
+check_equals(inh2.__proto__.ogs, 14); // find proto.ogs
+inh2d.ogs = 54; // sets what ?
+check_equals(inh2d._len, 54); // this._len ! So the getter-setter takes precedence
+check_equals(inh2d.ogs, 5); // does NOT override inh2.ogs normal member
+check_equals(inh2.ogs, 5); // find inh2.ogs
+check_equals(inh2.__proto__.ogs, 14); // find proto.ogs
+
+// Override addProperty member
+var o = new Object();
+o.addProperty = function(a, b) { return a+b; };
+var c = o.addProperty(2,5);
+check_equals(c, 7);
+check(o.addProperty != Object.prototype.addProperty );
+
+// recursive setter
+mem_setter = function(x)
+{
+	this.mem2 = x;
+	this.mem = x;
+};
+mem_getter = function()
+{
+	return this.mem;
+};
+o = {};
+o.addProperty('mem', mem_getter, mem_setter);
+check_equals(typeof(o.mem), 'undefined');
+o.mem = 3; // watch out for recursion !
+check_equals(o.mem, 3);
+check_equals(o.mem2, 3);
+
+// Test double-recursion of setter:
+//  setter1 triggers setter2
+
+mem1_getter = function() { return this.mem1; };
+mem1_setter = function(x)
+{
+	if ( this.setterCalls > 2 )
+	{
+		return;
+	}
+	++this.setterCalls;
+	o2.mem2 = x;
+	this.mem1 = x;
+};
+
+mem2_getter = function() { return this.mem2; };
+mem2_setter = function(x)
+{
+	if ( this.setterCalls > 2 )
+	{
+		return;
+	}
+	++this.setterCalls;
+	o1.mem1 = x;
+	this.mem2 = x;
+};
+
+o1 = {}; o1.addProperty('mem1', mem1_getter, mem1_setter);
+o2 = {}; o2.addProperty('mem2', mem2_getter, mem2_setter);
+
+o1.setterCalls = o2.setterCalls = 0; // reset counters
+o1.mem1 = 3;
+#if OUTPUT_VERSION == 6
+ check_equals(o1.setterCalls, 1);
+ check_equals(o2.setterCalls, 1);
+#else
+ // SWF7+ doesn't protect recursion..
+ xcheck_equals(o1.setterCalls, 3);
+ xcheck_equals(o2.setterCalls, 3);
+#endif
+check_equals(o1.mem1, 3);
+check_equals(o1.mem1, 3);
+
+o1.setterCalls = o2.setterCalls = 0; // reset counters
+o2.mem2 = 6;
+#if OUTPUT_VERSION == 6
+ check_equals(o1.setterCalls, 1);
+ check_equals(o2.setterCalls, 1);
+#else
+ // SWF7+ doesn't protect recursion..
+ xcheck_equals(o1.setterCalls, 3);
+ xcheck_equals(o2.setterCalls, 3);
+#endif
+check_equals(o1.mem1, 6);
+check_equals(o2.mem2, 6);
+
+// Test having a getter but not a setter
+getter = function() { _root.getcalls++; return this[_root.retwhat]; };
+o = {};
+r = o.addProperty('lmissing', getter);
+check(!r);
+r = o.addProperty('lundef', getter, undefined);
+check(!r);
+r = o.addProperty('lnull', getter, o); // self as setter..
+check(!r);
+r = o.addProperty('lnull', getter, null);
+check(r);
+getcalls=0;
+t=o.lnull;
+check_equals(getcalls, 1);
+o.lnull = 5;
+_root.retwhat='lnull';
+check_equals(o.lnull, 5);
+
+// Test having a setter but not a getter (invalid)
+setter = function() { _root.setcalls++; };
+o = {};
+r = o.addProperty('lmissing', undefined, setter);
+check(!r);
+r = o.addProperty('lundef', null, setter);
+check(!r);
+
+// not-setting setter
+noset_setter = function(v) { noset_setter_calls++; }; // doesn't set cache
+simple_test_getter = function() { return this.test; };
+o = {};
+o.addProperty("test", simple_test_getter, noset_setter);
+noset_setter_calls=0;
+o.test = 2;
+check_equals(noset_setter_calls, 1);
+v = o.test;
+check_equals(v, 2); // did still set the cache
+o.test = 5;
+check_equals(noset_setter_calls, 2);
+v = o.test;
+check_equals(v, 5);
+
+// test setter visibility of value (multiplies * 2)
+timetwo_test_setter = function(v) {
+	// note("timetwo_test_setter sees this.test as "+this.test);
+	this.test *= 2;
+};
+o = {};
+o.test = 1;
+o.addProperty("test", simple_test_getter, timetwo_test_setter);
+o.test = 2;
+v = o.test;
+check_equals(v, 2);
+o.test = 5;
+v = o.test;
+check_equals(v, 5);
+
+///
+/// more sane getter setter test
+///
+obj8 = {};
+obj8_getter_cnt = 0;
+obj8_setter_cnt = 0;
+function obj8_getter () { 
+	obj8_getter_cnt++;
+	return obj8_prop; 
+}
+function obj8_setter (v) { 
+	obj8_setter_cnt++;
+	obj8_prop = v; 
+}
+obj8.addProperty("obj8_prop", obj8_getter, obj8_setter);
+obj8.obj8_prop = 1;
+v = obj8.obj8_prop;
+check_equals(obj8_getter_cnt, 1);
+check_equals(obj8_setter_cnt, 1);
+
+obj9 = {};
+obj9_getter_cnt = 0;
+obj9_setter_cnt = 0;
+function obj9_getter () { 
+	obj9_getter_cnt++;
+	return this.obj9_prop_cache; 
+}
+function obj9_setter (v) { 
+	obj9_setter_cnt++;
+	this.obj9_prop_cache = v; 
+}
+obj9.addProperty("obj9_prop", obj9_getter, obj9_setter);
+obj9.obj9_prop = 10;
+check_equals(obj9_getter_cnt, 0);
+check_equals(obj9_setter_cnt, 1);
+check_equals(obj9.obj9_prop, 10);
+check_equals(obj9_getter_cnt, 1);
+check_equals(obj9_setter_cnt, 1);
+
+// Object.addProperty wasn't in SWF5
+#endif // OUTPUT_VERSION > 5
+
+//----------------------------------------------------
+// Test Object.toString 
+//----------------------------------------------------
+
+check_equals(Object.prototype.toString(), '[object Object]');
+backup = Object.prototype.toString;
+Object.prototype.toString = function() { return new Object; };
+check_equals(typeof(Object.prototype.toString()), 'object');
+Object.prototype.toString = function() { return new Number; };
+check_equals(Object.prototype.toString(), 0);
+Object.prototype.toString = backup;
+
+/// This will ruin later tests while it fails hasOwnProperty.
+//xcheck_equals(Object.prototype.toLocaleString(), '[object Object]');
+//backup = Object.prototype.toLocaleString;
+//Object.prototype.toLocaleString = function() { return new Object; };
+//xcheck_equals(typeof(Object.prototype.toLocaleString()), 'object');
+//Object.prototype.toLocaleString = function() { return new Number; };
+//xcheck_equals(Object.prototype.toLocaleString(), 0);
+//Object.prototype.toLocaleString = NULL;
+
+// Check toLocaleString calls toString
+backup = Object.prototype.toString;
+Object.prototype.toString = function() { return "toString"+arguments.length; };
+check_equals(Object.prototype.toLocaleString(1), "toString0");
+Object.prototype.toString = backup;
+
+//----------------------
+// Test enumeration
+//----------------------
+
+function enumerate(obj, enum)
+{
+  var enumlen = 0;
+  for (var i in obj) {
+    enum[i] = obj[i];
+    ++enumlen;
+  }
+  return enumlen;
+}
+
+var l0 = new Object({a:1, b:2});
+var l1 = new Object({c:3, d:4});
+l1.__proto__ = l0;
+var l2 = new Object({e:5, f:6});
+l2.__proto__ = l1;
+
+// check properties
+var enum = new Object;
+var enumlen = enumerate(l2, enum);
+#if OUTPUT_VERSION  > 5
+	check_equals( enumlen, 6);
+#endif
+check_equals( enum["a"], 1);
+check_equals( enum["b"], 2);
+check_equals( enum["c"], 3);
+check_equals( enum["d"], 4);
+check_equals( enum["e"], 5);
+check_equals( enum["f"], 6);
+
+// Hide a property of a base object
+var ret = ASSetPropFlags(l0, "a", 1);
+
+var enum = new Object;
+var enumlen = enumerate(l2, enum);
+#if OUTPUT_VERSION  > 5
+	check_equals( enumlen, 5);
+#endif
+
+check_equals( enum["a"], undefined);
+
+var obj5 = new Object();
+obj5['a'] = 1;
+check_equals(obj5['a'], 1);
+#if OUTPUT_VERSION < 7
+check_equals(obj5['A'], 1);
+#else
+check_equals(obj5['A'], undefined);
+#endif
+
+//----------------------------------------------------
+// Test Object.isPropertyEnumerable (SWF6 up)
+//----------------------------------------------------
+
+#if OUTPUT_VERSION > 5
+
+// quick built-ins check
+check( Object.prototype.hasOwnProperty("isPropertyEnumerable") );
+check( ! Object.prototype.isPropertyEnumerable("isPropertyEnumerable") );
+check( Object.prototype.hasOwnProperty("addProperty") );
+check( ! Object.prototype.isPropertyEnumerable("addProperty") );
+check( Object.prototype.hasOwnProperty("hasOwnProperty") );
+check( ! Object.prototype.isPropertyEnumerable("hasOwnProperty") );
+
+obj6 = new Object();
+obj6.member = "a member";
+
+ret = obj6.isPropertyEnumerable('unexistent');
+check_equals(typeof(ret), 'boolean');
+check( ! ret ); // non-existant
+
+ret = obj6.isPropertyEnumerable('member');
+check_equals(typeof(ret), 'boolean');
+check( ret );
+
+function enumerableThings()
+{
+  this.member1 = "a string";
+  this.member2 = 3;
+  ASSetPropFlags(this, "member2", 1); // hide member2
+}
+enumerableThings.prototype.member3 = new Object;
+
+ret = enumerableThing.isPropertyEnumerable('member1');
+check_equals( typeof(ret), 'undefined' );
+
+obj7 = new enumerableThings();
+check( obj7.isPropertyEnumerable('member1') );
+check( ! obj7.isPropertyEnumerable('member2') );
+check_equals( typeof(obj7.member3), 'object' );
+check( ! obj7.isPropertyEnumerable('member3') );
+
+#endif // OUTPUT_VERSION > 5
+
+//----------------------------------------------------
+// Test Object.isPrototypeOf (SWF6 up)
+//----------------------------------------------------
+
+#if OUTPUT_VERSION > 5
+
+obj8 = function() {};
+obj9 = function() {};
+obj9.__proto__ = new obj8;
+obj10 = new obj9;
+
+check_equals( typeof(obj8.isPrototypeOf(obj8)), 'boolean' );
+check_equals( typeof(obj8.isPrototypeOf(undefined)), 'boolean' );
+check( obj9.prototype.isPrototypeOf(obj10) );
+check( ! obj8.prototype.isPrototypeOf(obj10) );
+check( obj8.prototype.isPrototypeOf(obj9) );
+// TODO: add tests here !
+
+#endif // OUTPUT_VERSION > 5
+
+//----------------------------------------------------
+// Test Object.watch (SWF6 up)
+//----------------------------------------------------
+
+#if OUTPUT_VERSION > 5
+
+o = {};
+simplewatch = function(nam, ov, nv, d) {
+	_root.info = { nam:nam, ov:ov, nv:nv, d:d, tv:this };
+	return _root.ret;
+};
+r = o.watch('l', simplewatch, 'cust');
+check(r); // can watch unexisting prop
+_root.ret = 2;
+o.l = 5;
+check_equals(o.l, 2); // returned by watcher
+check_equals(_root.info.nam, 'l');
+check_equals(typeof(_root.info.ov), 'undefined');
+check_equals(_root.info.nv, 5);
+check_equals(_root.info.d, 'cust');
+check_equals(_root.info.tv, o);
+delete _root.info;
+check(delete o.l);
+o.p = 4;
+check(!o.unwatch('p')); // can not unwatch not-watched props
+check(!o.unwatch('r')); // can not unwatch non-watched props
+check(o.unwatch('l')); // can unwatch non-existing but watched vars
+
+// watch a getter-setter 
+
+get_l = function() { _root.get_l_calls++; return this.l; };
+set_l = function(v) { _root.set_l_calls++; this.l=v; };
+r = o.watch('l', simplewatch, 'cust2');
+check(r);
+check_equals(typeof(_root.info), 'undefined'); // just checking...
+_root.ret = 'return from watch';
+_root.get_l_calls=_root.set_l_calls=0;
+r = o.addProperty("l", get_l, set_l);
+check(r);
+check_equals(_root.info.nam, 'l'); // gnash fails calling the watch trigger at all here
+check_equals(typeof(_root.info.ov), 'undefined');
+check_equals(typeof(_root.info.nv), 'undefined'); // underlying value of getter-setter was undefined
+check_equals(_root.info.d, 'cust2');
+check_equals(_root.info.tv, o); 
+check_equals(_root.get_l_calls, 0);
+check_equals(_root.set_l_calls, 0);
+
+// if a property did exist already when adding a getter-setter, it's watcher
+// isn't called
+delete _root.info;
+_root.get_l_calls=_root.set_l_calls=0;
+r = o.addProperty("l", get_l, set_l);
+check(r);
+check_equals(typeof(_root.info), 'undefined');
+check_equals(_root.get_l_calls, 0);
+check_equals(_root.set_l_calls, 0);
+r = o.l;
+check_equals(r, 'return from watch');
+
+// Getter/setter is not invoked, but watcher was used to set it's 
+// underlying value, check this:
+v = o.l;
+check_equals(v, 'return from watch'); 
+
+delete _root.info;
+_root.get_l_calls=_root.set_l_calls=0;
+
+o.l = 'ciao'; // watched, and invokes setter
+#if OUTPUT_VERSION < 7
+  check_equals(_root.info.ov, 'return from watch'); // old value
+  xcheck_equals(_root.info.nv, 'ciao'); // we requested this
+  check_equals(_root.info.d, 'cust2'); 
+  check_equals(_root.info.tv, o); 
+  check_equals(_root.get_l_calls, 0); // should get underlying value, not invoke getter
+  check_equals(_root.set_l_calls, 1);
+#else
+  check_equals(_root.info.ov, 'return from watch'); // old value
+  check_equals(_root.info.nv, 'return from watch'); // mmm ?
+  check_equals(_root.info.d, 'cust2'); 
+  check_equals(_root.info.tv, o); 
+  check_equals(_root.get_l_calls, 0); // should get underlying value, not invoke getter
+  xcheck_equals(_root.set_l_calls, 65);
+#endif
+
+r = o.unwatch("l");
+check(!r); // can't unwatch while the property is a getter-setter
+check(delete o.l);
+r = o.unwatch("l");
+check(r); // now we can unwatch.. (gnash fails as it removed the watch before)
+
+// TODO: watch a getter-setter in the inheritance chain
+
+//o2 = {}; o2.__proto__ = o;
+//o2.l = 
+
+#endif // OUTPUT_VERSION > 5
+
+//----------------------------------------------------
+// Test Object.unwatch (SWF6 up)
+//----------------------------------------------------
+
+#if OUTPUT_VERSION > 5
+
+// TODO: add tests here !
+
+#endif // OUTPUT_VERSION > 5
+
+
+nothing = new Object ();
+nothing.toString = function() { return "toString"; };
+
+check_equals ("string + " + nothing, "string + toString");
+nothing.__proto__ = undefined;
+#if OUTPUT_VERSION < 7
+check_equals ("string + " + nothing, "string + ");
+#else
+check_equals ("string + " + nothing, "string + undefined");
+#endif
+
+nothing2 = new Object();
+nothing2.__proto__ = undefined;
+#if OUTPUT_VERSION < 7
+check_equals ("string + " + nothing2, "string + ");
+#else
+check_equals ("string + " + nothing, "string + undefined");
+#endif
+
+nothing2.valueOf = function() { return "valueOf"; };
+check_equals ("string + " + nothing2, "string + valueOf");
+
+#if OUTPUT_VERSION <= 5
+totals(83);
+#endif
+
+#if OUTPUT_VERSION >= 6
+totals(262);
+#endif
+
diff --git a/test/gnash/actionscript.all/pending/SharedObject-5.swf b/test/gnash/actionscript.all/pending/SharedObject-5.swf
new file mode 100644
index 0000000..e7b8e2b
Binary files /dev/null and b/test/gnash/actionscript.all/pending/SharedObject-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/SharedObject-5.swf.trace b/test/gnash/actionscript.all/pending/SharedObject-5.swf.trace
new file mode 100644
index 0000000..ec84db4
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/SharedObject-5.swf.trace
@@ -0,0 +1,4 @@
+XPASSED: typeof(sharedobjectObj) == 'object' [SharedObject.as:32]
+PASSED: typeof(sharedobjectObj.getLocal) == 'undefined' [SharedObject.as:35]
+XPASSED: typeof(SharedObject.getLocal) == 'function' [SharedObject.as:36]
+check_totals: 3
diff --git a/test/gnash/actionscript.all/pending/SharedObject-6.swf b/test/gnash/actionscript.all/pending/SharedObject-6.swf
new file mode 100644
index 0000000..ece089a
Binary files /dev/null and b/test/gnash/actionscript.all/pending/SharedObject-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/SharedObject-6.swf.trace b/test/gnash/actionscript.all/pending/SharedObject-6.swf.trace
new file mode 100644
index 0000000..91ec8d0
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/SharedObject-6.swf.trace
@@ -0,0 +1,42 @@
+PASSED: typeof(sharedobjectObj) == 'object' [SharedObject.as:43]
+PASSED: typeof(sharedobjectObj.clear) == 'function' [SharedObject.as:46]
+PASSED: typeof(sharedobjectObj.flush) == 'function' [SharedObject.as:48]
+PASSED: typeof(sharedobjectObj.getLocal) == 'undefined' [SharedObject.as:51]
+PASSED: typeof(SharedObject.getLocal) == 'function' [SharedObject.as:52]
+PASSED: typeof(sharedobjectObj.getSize) == 'function' [SharedObject.as:55]
+PASSED: so2.data.tmp == "custom value" [SharedObject.as:83]
+PASSED: so == so2 [SharedObject.as:84]
+XPASSED: so3 != so [SharedObject.as:90]
+PASSED: typeof(ret) == 'boolean' [SharedObject.as:95]
+PASSED: ret == true [SharedObject.as:96]
+PASSED: typeof(newso) == 'object' [SharedObject.as:100]
+297
+XPASSED: newso.getSize() == 297 [SharedObject.as:102]
+New Shared Object, checking data...
+number
+PASSED: typeof(newso.data.gain) == 'number' [SharedObject.as:107]
+PASSED: newso.data.gain == so.data.gain [SharedObject.as:108]
+PASSED: typeof(newso.data.echosuppression) == 'boolean' [SharedObject.as:109]
+PASSED: newso.data.echosuppression == so.data.echosuppression [SharedObject.as:110]
+PASSED: typeof(newso.data.defaultmicrophone) == 'string' [SharedObject.as:111]
+PASSED: newso.data.defaultmicrophone == so.data.defaultmicrophone [SharedObject.as:112]
+PASSED: typeof(newso.data.defaultcamera) == 'string' [SharedObject.as:113]
+PASSED: newso.data.defaultcamera == '' [SharedObject.as:114]
+PASSED: typeof(newso.data.defaultklimit) == 'number' [SharedObject.as:115]
+PASSED: newso.data.defaultklimit == so.data.defaultklimit [SharedObject.as:116]
+PASSED: typeof(newso.data.defaultalways) == 'boolean' [SharedObject.as:117]
+PASSED: newso.data.defaultalways == so.data.defaultalways [SharedObject.as:118]
+PASSED: typeof(newso.data.crossdomainAllow) == 'boolean' [SharedObject.as:122]
+PASSED: newso.data.crossdomainAllow == true [SharedObject.as:123]
+PASSED: typeof(newso.data.crossdomainAlways) == 'boolean' [SharedObject.as:124]
+PASSED: newso.data.crossdomainAlways == true [SharedObject.as:125]
+PASSED: typeof(newso.data.allowThirdPartyLSOAccess) == 'boolean' [SharedObject.as:126]
+PASSED: newso.data.allowThirdPartyLSOAccess == true [SharedObject.as:127]
+PASSED: typeof(newso.data.localSecPath) == 'string' [SharedObject.as:128]
+PASSED: newso.data.localSecPath == '' [SharedObject.as:129]
+PASSED: typeof(newso.data.localSecPathTime) == 'number' [SharedObject.as:130]
+PASSED: newso.data.localSecPathTime == 1.19751160683e+12 [SharedObject.as:131]
+XPASSED: so4 != so3 [SharedObject.as:137]
+XPASSED: typeof(so4.data) == 'undefined' [SharedObject.as:138]
+XPASSED: typeof(ret) == 'undefined' [SharedObject.as:140]
+check_totals: 38
diff --git a/test/gnash/actionscript.all/pending/SharedObject-7.swf b/test/gnash/actionscript.all/pending/SharedObject-7.swf
new file mode 100644
index 0000000..61461a2
Binary files /dev/null and b/test/gnash/actionscript.all/pending/SharedObject-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/SharedObject-7.swf.trace b/test/gnash/actionscript.all/pending/SharedObject-7.swf.trace
new file mode 100644
index 0000000..91ec8d0
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/SharedObject-7.swf.trace
@@ -0,0 +1,42 @@
+PASSED: typeof(sharedobjectObj) == 'object' [SharedObject.as:43]
+PASSED: typeof(sharedobjectObj.clear) == 'function' [SharedObject.as:46]
+PASSED: typeof(sharedobjectObj.flush) == 'function' [SharedObject.as:48]
+PASSED: typeof(sharedobjectObj.getLocal) == 'undefined' [SharedObject.as:51]
+PASSED: typeof(SharedObject.getLocal) == 'function' [SharedObject.as:52]
+PASSED: typeof(sharedobjectObj.getSize) == 'function' [SharedObject.as:55]
+PASSED: so2.data.tmp == "custom value" [SharedObject.as:83]
+PASSED: so == so2 [SharedObject.as:84]
+XPASSED: so3 != so [SharedObject.as:90]
+PASSED: typeof(ret) == 'boolean' [SharedObject.as:95]
+PASSED: ret == true [SharedObject.as:96]
+PASSED: typeof(newso) == 'object' [SharedObject.as:100]
+297
+XPASSED: newso.getSize() == 297 [SharedObject.as:102]
+New Shared Object, checking data...
+number
+PASSED: typeof(newso.data.gain) == 'number' [SharedObject.as:107]
+PASSED: newso.data.gain == so.data.gain [SharedObject.as:108]
+PASSED: typeof(newso.data.echosuppression) == 'boolean' [SharedObject.as:109]
+PASSED: newso.data.echosuppression == so.data.echosuppression [SharedObject.as:110]
+PASSED: typeof(newso.data.defaultmicrophone) == 'string' [SharedObject.as:111]
+PASSED: newso.data.defaultmicrophone == so.data.defaultmicrophone [SharedObject.as:112]
+PASSED: typeof(newso.data.defaultcamera) == 'string' [SharedObject.as:113]
+PASSED: newso.data.defaultcamera == '' [SharedObject.as:114]
+PASSED: typeof(newso.data.defaultklimit) == 'number' [SharedObject.as:115]
+PASSED: newso.data.defaultklimit == so.data.defaultklimit [SharedObject.as:116]
+PASSED: typeof(newso.data.defaultalways) == 'boolean' [SharedObject.as:117]
+PASSED: newso.data.defaultalways == so.data.defaultalways [SharedObject.as:118]
+PASSED: typeof(newso.data.crossdomainAllow) == 'boolean' [SharedObject.as:122]
+PASSED: newso.data.crossdomainAllow == true [SharedObject.as:123]
+PASSED: typeof(newso.data.crossdomainAlways) == 'boolean' [SharedObject.as:124]
+PASSED: newso.data.crossdomainAlways == true [SharedObject.as:125]
+PASSED: typeof(newso.data.allowThirdPartyLSOAccess) == 'boolean' [SharedObject.as:126]
+PASSED: newso.data.allowThirdPartyLSOAccess == true [SharedObject.as:127]
+PASSED: typeof(newso.data.localSecPath) == 'string' [SharedObject.as:128]
+PASSED: newso.data.localSecPath == '' [SharedObject.as:129]
+PASSED: typeof(newso.data.localSecPathTime) == 'number' [SharedObject.as:130]
+PASSED: newso.data.localSecPathTime == 1.19751160683e+12 [SharedObject.as:131]
+XPASSED: so4 != so3 [SharedObject.as:137]
+XPASSED: typeof(so4.data) == 'undefined' [SharedObject.as:138]
+XPASSED: typeof(ret) == 'undefined' [SharedObject.as:140]
+check_totals: 38
diff --git a/test/gnash/actionscript.all/pending/SharedObject-8.swf b/test/gnash/actionscript.all/pending/SharedObject-8.swf
new file mode 100644
index 0000000..39ac1ee
Binary files /dev/null and b/test/gnash/actionscript.all/pending/SharedObject-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/SharedObject-8.swf.trace b/test/gnash/actionscript.all/pending/SharedObject-8.swf.trace
new file mode 100644
index 0000000..91ec8d0
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/SharedObject-8.swf.trace
@@ -0,0 +1,42 @@
+PASSED: typeof(sharedobjectObj) == 'object' [SharedObject.as:43]
+PASSED: typeof(sharedobjectObj.clear) == 'function' [SharedObject.as:46]
+PASSED: typeof(sharedobjectObj.flush) == 'function' [SharedObject.as:48]
+PASSED: typeof(sharedobjectObj.getLocal) == 'undefined' [SharedObject.as:51]
+PASSED: typeof(SharedObject.getLocal) == 'function' [SharedObject.as:52]
+PASSED: typeof(sharedobjectObj.getSize) == 'function' [SharedObject.as:55]
+PASSED: so2.data.tmp == "custom value" [SharedObject.as:83]
+PASSED: so == so2 [SharedObject.as:84]
+XPASSED: so3 != so [SharedObject.as:90]
+PASSED: typeof(ret) == 'boolean' [SharedObject.as:95]
+PASSED: ret == true [SharedObject.as:96]
+PASSED: typeof(newso) == 'object' [SharedObject.as:100]
+297
+XPASSED: newso.getSize() == 297 [SharedObject.as:102]
+New Shared Object, checking data...
+number
+PASSED: typeof(newso.data.gain) == 'number' [SharedObject.as:107]
+PASSED: newso.data.gain == so.data.gain [SharedObject.as:108]
+PASSED: typeof(newso.data.echosuppression) == 'boolean' [SharedObject.as:109]
+PASSED: newso.data.echosuppression == so.data.echosuppression [SharedObject.as:110]
+PASSED: typeof(newso.data.defaultmicrophone) == 'string' [SharedObject.as:111]
+PASSED: newso.data.defaultmicrophone == so.data.defaultmicrophone [SharedObject.as:112]
+PASSED: typeof(newso.data.defaultcamera) == 'string' [SharedObject.as:113]
+PASSED: newso.data.defaultcamera == '' [SharedObject.as:114]
+PASSED: typeof(newso.data.defaultklimit) == 'number' [SharedObject.as:115]
+PASSED: newso.data.defaultklimit == so.data.defaultklimit [SharedObject.as:116]
+PASSED: typeof(newso.data.defaultalways) == 'boolean' [SharedObject.as:117]
+PASSED: newso.data.defaultalways == so.data.defaultalways [SharedObject.as:118]
+PASSED: typeof(newso.data.crossdomainAllow) == 'boolean' [SharedObject.as:122]
+PASSED: newso.data.crossdomainAllow == true [SharedObject.as:123]
+PASSED: typeof(newso.data.crossdomainAlways) == 'boolean' [SharedObject.as:124]
+PASSED: newso.data.crossdomainAlways == true [SharedObject.as:125]
+PASSED: typeof(newso.data.allowThirdPartyLSOAccess) == 'boolean' [SharedObject.as:126]
+PASSED: newso.data.allowThirdPartyLSOAccess == true [SharedObject.as:127]
+PASSED: typeof(newso.data.localSecPath) == 'string' [SharedObject.as:128]
+PASSED: newso.data.localSecPath == '' [SharedObject.as:129]
+PASSED: typeof(newso.data.localSecPathTime) == 'number' [SharedObject.as:130]
+PASSED: newso.data.localSecPathTime == 1.19751160683e+12 [SharedObject.as:131]
+XPASSED: so4 != so3 [SharedObject.as:137]
+XPASSED: typeof(so4.data) == 'undefined' [SharedObject.as:138]
+XPASSED: typeof(ret) == 'undefined' [SharedObject.as:140]
+check_totals: 38
diff --git a/test/gnash/actionscript.all/pending/SharedObject.as b/test/gnash/actionscript.all/pending/SharedObject.as
new file mode 100644
index 0000000..5720890
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/SharedObject.as
@@ -0,0 +1,144 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for SharedObject ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: SharedObject.as,v 1.23 2008/03/11 19:31:48 strk Exp $";
+#include "check.as"
+
+var sharedobjectObj = new SharedObject;
+
+#if OUTPUT_VERSION < 6
+
+// test the SharedObject constuctor
+xcheck_equals (typeof(sharedobjectObj), 'object');
+
+// test the SharedObject::getlocal method
+check_equals (typeof(sharedobjectObj.getLocal), 'undefined');
+xcheck_equals (typeof(SharedObject.getLocal), 'function');
+
+check_totals(3);
+
+#else // OUTPUT_VERSION >= 6
+
+// test the SharedObject constuctor
+check_equals (typeof(sharedobjectObj), 'object');
+
+// test the SharedObject::clear method
+check_equals (typeof(sharedobjectObj.clear), 'function');
+// test the SharedObject::flush method
+check_equals (typeof(sharedobjectObj.flush), 'function');
+
+// test the SharedObject::getlocal method
+check_equals (typeof(sharedobjectObj.getLocal), 'undefined');
+check_equals (typeof(SharedObject.getLocal), 'function');
+
+// test the SharedObject::getsize method
+check_equals (typeof(sharedobjectObj.getSize), 'function');
+
+
+// FIXME: Test code that will soon be a formal test case.
+so = SharedObject.getLocal("level1/level2/settings", "/");
+
+// Private data
+so.name = "Joe";
+so.age = 20;
+so.pet = "Dog";
+
+// public data that gets written
+so.data.gain = 50.0;
+so.data.echosuppression = false;
+so.data.defaultmicrophone = "/dev/input/mic";
+so.data.defaultcamera = "";
+so.data.defaultklimit = 100.0;
+so.data.defaultalways = false;
+so.data.crossdomainAllow = true;
+so.data.crossdomainAlways = true;
+so.data.allowThirdPartyLSOAccess = true;
+so.data.localSecPath = "";
+so.data.localSecPathTime = 1.19751160683e+12;
+
+// Verify that a new getLocal call using
+// the same "id" returns the same in-memory object.
+so.data.tmp = "custom value";
+so2 = SharedObject.getLocal("level1/level2/settings", "/");
+check_equals(so2.data.tmp, "custom value");
+check_equals(so, so2);
+delete so.data.tmp;
+
+// But a getLocal call using a *different* "id" returns
+// a different SharedObject...
+so3 = SharedObject.getLocal("level1/level2/settings3", "/");
+xcheck(so3 != so);
+
+
+// trace(so.getSize());
+ret = so.flush();
+check_equals(typeof(ret), 'boolean');
+check_equals(ret, true);
+
+
+newso = SharedObject.getLocal("level1/level2/settings", "/");
+check_equals (typeof(newso), 'object');
+trace(newso.getSize());
+xcheck_equals (newso.getSize(), 297);
+
+if (typeof(newso.data) != 'undefined') {
+    trace("New Shared Object, checking data...");
+    trace(typeof(newso.data.gain));
+    check_equals (typeof(newso.data.gain), 'number');
+    check_equals (newso.data.gain, so.data.gain);
+    check_equals (typeof(newso.data.echosuppression), 'boolean');
+    check_equals (newso.data.echosuppression, so.data.echosuppression);
+    check_equals (typeof(newso.data.defaultmicrophone), 'string');
+    check_equals (newso.data.defaultmicrophone, so.data.defaultmicrophone);
+    check_equals (typeof(newso.data.defaultcamera), 'string');
+    check_equals (newso.data.defaultcamera,  '');
+    check_equals (typeof(newso.data.defaultklimit), 'number');
+    check_equals (newso.data.defaultklimit, so.data.defaultklimit);
+    check_equals (typeof(newso.data.defaultalways), 'boolean');
+    check_equals (newso.data.defaultalways, so.data.defaultalways);
+
+    // FIXME: why did all these start failing ? Accoring to dump() they
+    // all still exist.
+    check_equals (typeof(newso.data.crossdomainAllow), 'boolean');
+    check_equals (newso.data.crossdomainAllow, true);
+    check_equals (typeof(newso.data.crossdomainAlways), 'boolean');
+    check_equals (newso.data.crossdomainAlways, true);
+    check_equals (typeof(newso.data.allowThirdPartyLSOAccess), 'boolean');
+    check_equals (newso.data.allowThirdPartyLSOAccess, true);
+    check_equals (typeof(newso.data.localSecPath), 'string');
+    check_equals (newso.data.localSecPath, '');
+    check_equals (typeof(newso.data.localSecPathTime), 'number');
+    check_equals (newso.data.localSecPathTime, 1.19751160683e+12);
+} else {
+    trace("New Shared Object doesn't exist!");
+}
+
+so4 = SharedObject.getLocal("Another one", "/subdir");
+xcheck(so4 != so3);
+xcheck_equals(typeof(so4.data), 'undefined');
+ret = so4.flush();
+xcheck_equals(typeof(ret), 'undefined');
+
+check_totals(38);
+
+#endif // OUTPUT_VERSION >= 6
diff --git a/test/gnash/actionscript.all/pending/Sound-5.swf b/test/gnash/actionscript.all/pending/Sound-5.swf
new file mode 100644
index 0000000..106bab8
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Sound-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/Sound-5.swf.trace b/test/gnash/actionscript.all/pending/Sound-5.swf.trace
new file mode 100644
index 0000000..1dad7b9
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Sound-5.swf.trace
@@ -0,0 +1,95 @@
+PASSED: typeof(Sound) == 'function' [Sound.as:29]
+PASSED: typeof(Sound.prototype) == 'object' [Sound.as:30]
+PASSED: typeof(Sound.prototype.__proto__) == 'object' [Sound.as:31]
+PASSED: Sound.prototype.__proto__ == Object.prototype [Sound.as:32]
+PASSED: typeof(Sound.prototype.attachSound) == 'function' [Sound.as:34]
+PASSED: typeof(Sound.prototype.getPan) == 'function' [Sound.as:35]
+PASSED: typeof(Sound.prototype.setPan) == 'function' [Sound.as:36]
+PASSED: typeof(Sound.prototype.start) == 'function' [Sound.as:37]
+PASSED: typeof(Sound.prototype.stop) == 'function' [Sound.as:38]
+PASSED: typeof(Sound.prototype.getTransform) == 'function' [Sound.as:39]
+PASSED: typeof(Sound.prototype.setTransform) == 'function' [Sound.as:40]
+PASSED: typeof(Sound.prototype.getVolume) == 'function' [Sound.as:41]
+PASSED: typeof(Sound.prototype.setVolume) == 'function' [Sound.as:42]
+PASSED: typeof(Sound.prototype.getDuration) == functionSinceSWF6 [Sound.as:49]
+PASSED: typeof(Sound.prototype.setDuration) == functionSinceSWF6 [Sound.as:50]
+PASSED: typeof(Sound.prototype.loadSound) == functionSinceSWF6 [Sound.as:51]
+PASSED: typeof(Sound.prototype.getPosition) == functionSinceSWF6 [Sound.as:52]
+PASSED: typeof(Sound.prototype.setPosition) == functionSinceSWF6 [Sound.as:53]
+PASSED: typeof(Sound.prototype.getBytesLoaded) == functionSinceSWF6 [Sound.as:54]
+PASSED: typeof(Sound.prototype.getBytesTotal) == functionSinceSWF6 [Sound.as:55]
+PASSED: typeof(Sound.prototype.areSoundInaccessible) == 'undefined' [Sound.as:59]
+PASSED: typeof(Sound.prototype.duration) == 'undefined' [Sound.as:60]
+PASSED: typeof(Sound.prototype.ID3) == 'undefined' [Sound.as:61]
+PASSED: typeof(Sound.prototype.checkPolicyFile) == 'undefined' [Sound.as:62]
+PASSED: typeof(Sound.prototype.position) == 'undefined' [Sound.as:63]
+PASSED: typeof(Sound.prototype.onID3) == 'undefined' [Sound.as:64]
+PASSED: typeof(Sound.prototype.onLoad) == 'undefined' [Sound.as:65]
+PASSED: typeof(Sound.prototype.onSoundComplete) == 'undefined' [Sound.as:66]
+PASSED: s1 instanceof Sound [Sound.as:83]
+PASSED: typeof(s1.getDuration()) == 'undefined' [Sound.as:84]
+XPASSED: typeof(s1.getPan()) == 'number' [Sound.as:85]
+XPASSED: s1.getPan() == 0 [Sound.as:86]
+PASSED: typeof(s1.getPosition()) == 'undefined' [Sound.as:87]
+XPASSED: typeof(s1.getTransform()) == 'object' [Sound.as:88]
+PASSED: typeof(s1.getVolume()) == 'number' [Sound.as:92]
+PASSED: s1.getVolume() == 100 [Sound.as:93]
+PASSED: s1.getVolume() == 95 [Sound.as:95]
+PASSED: s2.getVolume() == 95 [Sound.as:96]
+PASSED: typeof(s1.getBytesLoaded()) == 'undefined' [Sound.as:98]
+PASSED: typeof(s1.getBytesTotal()) == 'undefined' [Sound.as:99]
+XPASSED: typeof(s1.checkPolicyFile) == 'boolean' [Sound.as:100]
+XPASSED: typeof(s1.duration) == 'undefined' [Sound.as:104]
+PASSED: typeof(s1.ID3) == 'undefined' [Sound.as:105]
+XPASSED: typeof(s1.position) == 'undefined' [Sound.as:106]
+PASSED: s2 instanceof Sound [Sound.as:114]
+PASSED: typeof(s2.getDuration()) == 'undefined' [Sound.as:115]
+XPASSED: typeof(s2.getPan()) == 'number' [Sound.as:116]
+XPASSED: s2.getPan() == 0 [Sound.as:117]
+PASSED: typeof(s2.getPosition()) == 'undefined' [Sound.as:118]
+XPASSED: typeof(s2.getTransform()) == 'object' [Sound.as:119]
+PASSED: typeof(s2.getVolume()) == 'number' [Sound.as:120]
+PASSED: s2.getVolume() == 100 [Sound.as:121]
+PASSED: typeof(s2.getBytesLoaded()) == 'undefined' [Sound.as:122]
+PASSED: typeof(s2.getBytesTotal()) == 'undefined' [Sound.as:123]
+XPASSED: typeof(s2.checkPolicyFile) == 'boolean' [Sound.as:124]
+XPASSED: typeof(s2.duration) == 'undefined' [Sound.as:128]
+PASSED: typeof(s2.ID3) == 'undefined' [Sound.as:129]
+XPASSED: typeof(s2.position) == 'undefined' [Sound.as:130]
+PASSED: s3 instanceof Sound [Sound.as:134]
+PASSED: typeof(s3.getVolume()) == 'undefined' [Sound.as:135]
+PASSED: s1a.getVolume() == 95 [Sound.as:144]
+PASSED: s1b.getVolume() == 95 [Sound.as:145]
+PASSED: s1a.getVolume() == 76 [Sound.as:147]
+PASSED: s1b.getVolume() == 76 [Sound.as:148]
+PASSED: typeof(s1c.getVolume()) == 'undefined' [Sound.as:153]
+PASSED: typeof(s1d.getVolume()) == 'undefined' [Sound.as:154]
+PASSED: typeof(s1c.getVolume()) == 'undefined' [Sound.as:156]
+PASSED: typeof(s1d.getVolume()) == 'undefined' [Sound.as:157]
+PASSED: s1e.getVolume() == 76 [Sound.as:161]
+PASSED: s1f.getVolume() == 76 [Sound.as:162]
+PASSED: typeof(s1g.getVolume()) == 'undefined' [Sound.as:168]
+PASSED: typeof(s1h.getVolume()) == 'undefined' [Sound.as:169]
+PASSED: typeof(s1g.getVolume()) == 'undefined' [Sound.as:171]
+PASSED: typeof(s1h.getVolume()) == 'undefined' [Sound.as:172]
+PASSED: s2.getVolume() == 100 [Sound.as:177]
+PASSED: s3.getVolume() == 100 [Sound.as:178]
+PASSED: s2.getVolume() == 80 [Sound.as:180]
+PASSED: s3.getVolume() == 80 [Sound.as:181]
+PASSED: s2.getVolume() == 100 [Sound.as:189]
+PASSED: s3.getVolume() == 100 [Sound.as:190]
+PASSED: typeof(s2.getVolume()) == 'undefined' [Sound.as:192]
+PASSED: typeof(s3.getVolume()) == 'undefined' [Sound.as:193]
+PASSED: s2.getVolume() == 100 [Sound.as:195]
+PASSED: s3.getVolume() == 100 [Sound.as:196]
+PASSED: s2.getVolume() == 80 [Sound.as:198]
+PASSED: s3.getVolume() == 80 [Sound.as:199]
+PASSED: typeof(s2.getVolume()) == 'undefined' [Sound.as:201]
+PASSED: typeof(s3.getVolume()) == 'undefined' [Sound.as:202]
+PASSED: s2.getVolume() == 100 [Sound.as:204]
+PASSED: s3.getVolume() == 100 [Sound.as:205]
+PASSED: s2.getVolume() == 80 [Sound.as:207]
+PASSED: s3.getVolume() == 80 [Sound.as:208]
+XPASSED: typeof(s2.getVolume()) == 'undefined' [Sound.as:213]
+XPASSED: typeof(s3.getVolume()) == 'undefined' [Sound.as:214]
+check_totals: 94
diff --git a/test/gnash/actionscript.all/pending/Sound-6.swf b/test/gnash/actionscript.all/pending/Sound-6.swf
new file mode 100644
index 0000000..fd25897
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Sound-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/Sound-6.swf.trace b/test/gnash/actionscript.all/pending/Sound-6.swf.trace
new file mode 100644
index 0000000..d45e949
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Sound-6.swf.trace
@@ -0,0 +1,95 @@
+PASSED: typeof(Sound) == 'function' [Sound.as:29]
+PASSED: typeof(Sound.prototype) == 'object' [Sound.as:30]
+PASSED: typeof(Sound.prototype.__proto__) == 'object' [Sound.as:31]
+PASSED: Sound.prototype.__proto__ == Object.prototype [Sound.as:32]
+PASSED: typeof(Sound.prototype.attachSound) == 'function' [Sound.as:34]
+PASSED: typeof(Sound.prototype.getPan) == 'function' [Sound.as:35]
+PASSED: typeof(Sound.prototype.setPan) == 'function' [Sound.as:36]
+PASSED: typeof(Sound.prototype.start) == 'function' [Sound.as:37]
+PASSED: typeof(Sound.prototype.stop) == 'function' [Sound.as:38]
+PASSED: typeof(Sound.prototype.getTransform) == 'function' [Sound.as:39]
+PASSED: typeof(Sound.prototype.setTransform) == 'function' [Sound.as:40]
+PASSED: typeof(Sound.prototype.getVolume) == 'function' [Sound.as:41]
+PASSED: typeof(Sound.prototype.setVolume) == 'function' [Sound.as:42]
+PASSED: typeof(Sound.prototype.getDuration) == functionSinceSWF6 [Sound.as:49]
+PASSED: typeof(Sound.prototype.setDuration) == functionSinceSWF6 [Sound.as:50]
+PASSED: typeof(Sound.prototype.loadSound) == functionSinceSWF6 [Sound.as:51]
+PASSED: typeof(Sound.prototype.getPosition) == functionSinceSWF6 [Sound.as:52]
+PASSED: typeof(Sound.prototype.setPosition) == functionSinceSWF6 [Sound.as:53]
+PASSED: typeof(Sound.prototype.getBytesLoaded) == functionSinceSWF6 [Sound.as:54]
+PASSED: typeof(Sound.prototype.getBytesTotal) == functionSinceSWF6 [Sound.as:55]
+PASSED: typeof(Sound.prototype.areSoundInaccessible) == 'undefined' [Sound.as:59]
+PASSED: typeof(Sound.prototype.duration) == 'undefined' [Sound.as:60]
+PASSED: typeof(Sound.prototype.ID3) == 'undefined' [Sound.as:61]
+PASSED: typeof(Sound.prototype.checkPolicyFile) == 'undefined' [Sound.as:62]
+PASSED: typeof(Sound.prototype.position) == 'undefined' [Sound.as:63]
+PASSED: typeof(Sound.prototype.onID3) == 'undefined' [Sound.as:64]
+PASSED: typeof(Sound.prototype.onLoad) == 'undefined' [Sound.as:65]
+PASSED: typeof(Sound.prototype.onSoundComplete) == 'undefined' [Sound.as:66]
+PASSED: s1 instanceof Sound [Sound.as:83]
+PASSED: typeof(s1.getDuration()) == 'undefined' [Sound.as:84]
+XPASSED: typeof(s1.getPan()) == 'number' [Sound.as:85]
+XPASSED: s1.getPan() == 0 [Sound.as:86]
+PASSED: typeof(s1.getPosition()) == 'undefined' [Sound.as:87]
+XPASSED: typeof(s1.getTransform()) == 'object' [Sound.as:88]
+PASSED: typeof(s1.getVolume()) == 'number' [Sound.as:92]
+PASSED: s1.getVolume() == 100 [Sound.as:93]
+PASSED: s1.getVolume() == 95 [Sound.as:95]
+PASSED: s2.getVolume() == 95 [Sound.as:96]
+PASSED: typeof(s1.getBytesLoaded()) == 'undefined' [Sound.as:98]
+PASSED: typeof(s1.getBytesTotal()) == 'undefined' [Sound.as:99]
+XPASSED: typeof(s1.checkPolicyFile) == 'boolean' [Sound.as:100]
+XPASSED: typeof(s1.duration) == 'undefined' [Sound.as:104]
+PASSED: typeof(s1.ID3) == 'undefined' [Sound.as:105]
+XPASSED: typeof(s1.position) == 'undefined' [Sound.as:106]
+PASSED: s2 instanceof Sound [Sound.as:114]
+PASSED: typeof(s2.getDuration()) == 'undefined' [Sound.as:115]
+XPASSED: typeof(s2.getPan()) == 'number' [Sound.as:116]
+XPASSED: s2.getPan() == 0 [Sound.as:117]
+PASSED: typeof(s2.getPosition()) == 'undefined' [Sound.as:118]
+XPASSED: typeof(s2.getTransform()) == 'object' [Sound.as:119]
+PASSED: typeof(s2.getVolume()) == 'number' [Sound.as:120]
+PASSED: s2.getVolume() == 100 [Sound.as:121]
+PASSED: typeof(s2.getBytesLoaded()) == 'undefined' [Sound.as:122]
+PASSED: typeof(s2.getBytesTotal()) == 'undefined' [Sound.as:123]
+XPASSED: typeof(s2.checkPolicyFile) == 'boolean' [Sound.as:124]
+XPASSED: typeof(s2.duration) == 'undefined' [Sound.as:128]
+PASSED: typeof(s2.ID3) == 'undefined' [Sound.as:129]
+XPASSED: typeof(s2.position) == 'undefined' [Sound.as:130]
+PASSED: s3 instanceof Sound [Sound.as:134]
+PASSED: typeof(s3.getVolume()) == 'undefined' [Sound.as:135]
+PASSED: s1a.getVolume() == 95 [Sound.as:144]
+PASSED: s1b.getVolume() == 95 [Sound.as:145]
+PASSED: s1a.getVolume() == 76 [Sound.as:147]
+PASSED: s1b.getVolume() == 76 [Sound.as:148]
+PASSED: typeof(s1c.getVolume()) == 'undefined' [Sound.as:153]
+PASSED: typeof(s1d.getVolume()) == 'undefined' [Sound.as:154]
+PASSED: typeof(s1c.getVolume()) == 'undefined' [Sound.as:156]
+PASSED: typeof(s1d.getVolume()) == 'undefined' [Sound.as:157]
+PASSED: s1e.getVolume() == 76 [Sound.as:161]
+PASSED: s1f.getVolume() == 76 [Sound.as:162]
+PASSED: typeof(s1g.getVolume()) == 'undefined' [Sound.as:168]
+PASSED: typeof(s1h.getVolume()) == 'undefined' [Sound.as:169]
+PASSED: typeof(s1g.getVolume()) == 'undefined' [Sound.as:171]
+PASSED: typeof(s1h.getVolume()) == 'undefined' [Sound.as:172]
+PASSED: s2.getVolume() == 100 [Sound.as:177]
+PASSED: s3.getVolume() == 100 [Sound.as:178]
+PASSED: s2.getVolume() == 80 [Sound.as:180]
+PASSED: s3.getVolume() == 80 [Sound.as:181]
+PASSED: s2.getVolume() == 100 [Sound.as:189]
+PASSED: s3.getVolume() == 100 [Sound.as:190]
+PASSED: typeof(s2.getVolume()) == 'undefined' [Sound.as:192]
+PASSED: typeof(s3.getVolume()) == 'undefined' [Sound.as:193]
+PASSED: s2.getVolume() == 100 [Sound.as:195]
+PASSED: s3.getVolume() == 100 [Sound.as:196]
+PASSED: s2.getVolume() == 80 [Sound.as:198]
+PASSED: s3.getVolume() == 80 [Sound.as:199]
+PASSED: typeof(s2.getVolume()) == 'undefined' [Sound.as:201]
+PASSED: typeof(s3.getVolume()) == 'undefined' [Sound.as:202]
+PASSED: s2.getVolume() == 100 [Sound.as:204]
+PASSED: s3.getVolume() == 100 [Sound.as:205]
+PASSED: s2.getVolume() == 80 [Sound.as:207]
+PASSED: s3.getVolume() == 80 [Sound.as:208]
+PASSED: s2.getVolume() == 80 [Sound.as:218]
+PASSED: s3.getVolume() == 80 [Sound.as:219]
+check_totals: 94
diff --git a/test/gnash/actionscript.all/pending/Sound-7.swf b/test/gnash/actionscript.all/pending/Sound-7.swf
new file mode 100644
index 0000000..9dfa64f
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Sound-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/Sound-7.swf.trace b/test/gnash/actionscript.all/pending/Sound-7.swf.trace
new file mode 100644
index 0000000..d45e949
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Sound-7.swf.trace
@@ -0,0 +1,95 @@
+PASSED: typeof(Sound) == 'function' [Sound.as:29]
+PASSED: typeof(Sound.prototype) == 'object' [Sound.as:30]
+PASSED: typeof(Sound.prototype.__proto__) == 'object' [Sound.as:31]
+PASSED: Sound.prototype.__proto__ == Object.prototype [Sound.as:32]
+PASSED: typeof(Sound.prototype.attachSound) == 'function' [Sound.as:34]
+PASSED: typeof(Sound.prototype.getPan) == 'function' [Sound.as:35]
+PASSED: typeof(Sound.prototype.setPan) == 'function' [Sound.as:36]
+PASSED: typeof(Sound.prototype.start) == 'function' [Sound.as:37]
+PASSED: typeof(Sound.prototype.stop) == 'function' [Sound.as:38]
+PASSED: typeof(Sound.prototype.getTransform) == 'function' [Sound.as:39]
+PASSED: typeof(Sound.prototype.setTransform) == 'function' [Sound.as:40]
+PASSED: typeof(Sound.prototype.getVolume) == 'function' [Sound.as:41]
+PASSED: typeof(Sound.prototype.setVolume) == 'function' [Sound.as:42]
+PASSED: typeof(Sound.prototype.getDuration) == functionSinceSWF6 [Sound.as:49]
+PASSED: typeof(Sound.prototype.setDuration) == functionSinceSWF6 [Sound.as:50]
+PASSED: typeof(Sound.prototype.loadSound) == functionSinceSWF6 [Sound.as:51]
+PASSED: typeof(Sound.prototype.getPosition) == functionSinceSWF6 [Sound.as:52]
+PASSED: typeof(Sound.prototype.setPosition) == functionSinceSWF6 [Sound.as:53]
+PASSED: typeof(Sound.prototype.getBytesLoaded) == functionSinceSWF6 [Sound.as:54]
+PASSED: typeof(Sound.prototype.getBytesTotal) == functionSinceSWF6 [Sound.as:55]
+PASSED: typeof(Sound.prototype.areSoundInaccessible) == 'undefined' [Sound.as:59]
+PASSED: typeof(Sound.prototype.duration) == 'undefined' [Sound.as:60]
+PASSED: typeof(Sound.prototype.ID3) == 'undefined' [Sound.as:61]
+PASSED: typeof(Sound.prototype.checkPolicyFile) == 'undefined' [Sound.as:62]
+PASSED: typeof(Sound.prototype.position) == 'undefined' [Sound.as:63]
+PASSED: typeof(Sound.prototype.onID3) == 'undefined' [Sound.as:64]
+PASSED: typeof(Sound.prototype.onLoad) == 'undefined' [Sound.as:65]
+PASSED: typeof(Sound.prototype.onSoundComplete) == 'undefined' [Sound.as:66]
+PASSED: s1 instanceof Sound [Sound.as:83]
+PASSED: typeof(s1.getDuration()) == 'undefined' [Sound.as:84]
+XPASSED: typeof(s1.getPan()) == 'number' [Sound.as:85]
+XPASSED: s1.getPan() == 0 [Sound.as:86]
+PASSED: typeof(s1.getPosition()) == 'undefined' [Sound.as:87]
+XPASSED: typeof(s1.getTransform()) == 'object' [Sound.as:88]
+PASSED: typeof(s1.getVolume()) == 'number' [Sound.as:92]
+PASSED: s1.getVolume() == 100 [Sound.as:93]
+PASSED: s1.getVolume() == 95 [Sound.as:95]
+PASSED: s2.getVolume() == 95 [Sound.as:96]
+PASSED: typeof(s1.getBytesLoaded()) == 'undefined' [Sound.as:98]
+PASSED: typeof(s1.getBytesTotal()) == 'undefined' [Sound.as:99]
+XPASSED: typeof(s1.checkPolicyFile) == 'boolean' [Sound.as:100]
+XPASSED: typeof(s1.duration) == 'undefined' [Sound.as:104]
+PASSED: typeof(s1.ID3) == 'undefined' [Sound.as:105]
+XPASSED: typeof(s1.position) == 'undefined' [Sound.as:106]
+PASSED: s2 instanceof Sound [Sound.as:114]
+PASSED: typeof(s2.getDuration()) == 'undefined' [Sound.as:115]
+XPASSED: typeof(s2.getPan()) == 'number' [Sound.as:116]
+XPASSED: s2.getPan() == 0 [Sound.as:117]
+PASSED: typeof(s2.getPosition()) == 'undefined' [Sound.as:118]
+XPASSED: typeof(s2.getTransform()) == 'object' [Sound.as:119]
+PASSED: typeof(s2.getVolume()) == 'number' [Sound.as:120]
+PASSED: s2.getVolume() == 100 [Sound.as:121]
+PASSED: typeof(s2.getBytesLoaded()) == 'undefined' [Sound.as:122]
+PASSED: typeof(s2.getBytesTotal()) == 'undefined' [Sound.as:123]
+XPASSED: typeof(s2.checkPolicyFile) == 'boolean' [Sound.as:124]
+XPASSED: typeof(s2.duration) == 'undefined' [Sound.as:128]
+PASSED: typeof(s2.ID3) == 'undefined' [Sound.as:129]
+XPASSED: typeof(s2.position) == 'undefined' [Sound.as:130]
+PASSED: s3 instanceof Sound [Sound.as:134]
+PASSED: typeof(s3.getVolume()) == 'undefined' [Sound.as:135]
+PASSED: s1a.getVolume() == 95 [Sound.as:144]
+PASSED: s1b.getVolume() == 95 [Sound.as:145]
+PASSED: s1a.getVolume() == 76 [Sound.as:147]
+PASSED: s1b.getVolume() == 76 [Sound.as:148]
+PASSED: typeof(s1c.getVolume()) == 'undefined' [Sound.as:153]
+PASSED: typeof(s1d.getVolume()) == 'undefined' [Sound.as:154]
+PASSED: typeof(s1c.getVolume()) == 'undefined' [Sound.as:156]
+PASSED: typeof(s1d.getVolume()) == 'undefined' [Sound.as:157]
+PASSED: s1e.getVolume() == 76 [Sound.as:161]
+PASSED: s1f.getVolume() == 76 [Sound.as:162]
+PASSED: typeof(s1g.getVolume()) == 'undefined' [Sound.as:168]
+PASSED: typeof(s1h.getVolume()) == 'undefined' [Sound.as:169]
+PASSED: typeof(s1g.getVolume()) == 'undefined' [Sound.as:171]
+PASSED: typeof(s1h.getVolume()) == 'undefined' [Sound.as:172]
+PASSED: s2.getVolume() == 100 [Sound.as:177]
+PASSED: s3.getVolume() == 100 [Sound.as:178]
+PASSED: s2.getVolume() == 80 [Sound.as:180]
+PASSED: s3.getVolume() == 80 [Sound.as:181]
+PASSED: s2.getVolume() == 100 [Sound.as:189]
+PASSED: s3.getVolume() == 100 [Sound.as:190]
+PASSED: typeof(s2.getVolume()) == 'undefined' [Sound.as:192]
+PASSED: typeof(s3.getVolume()) == 'undefined' [Sound.as:193]
+PASSED: s2.getVolume() == 100 [Sound.as:195]
+PASSED: s3.getVolume() == 100 [Sound.as:196]
+PASSED: s2.getVolume() == 80 [Sound.as:198]
+PASSED: s3.getVolume() == 80 [Sound.as:199]
+PASSED: typeof(s2.getVolume()) == 'undefined' [Sound.as:201]
+PASSED: typeof(s3.getVolume()) == 'undefined' [Sound.as:202]
+PASSED: s2.getVolume() == 100 [Sound.as:204]
+PASSED: s3.getVolume() == 100 [Sound.as:205]
+PASSED: s2.getVolume() == 80 [Sound.as:207]
+PASSED: s3.getVolume() == 80 [Sound.as:208]
+PASSED: s2.getVolume() == 80 [Sound.as:218]
+PASSED: s3.getVolume() == 80 [Sound.as:219]
+check_totals: 94
diff --git a/test/gnash/actionscript.all/pending/Sound-8.swf b/test/gnash/actionscript.all/pending/Sound-8.swf
new file mode 100644
index 0000000..37580ee
Binary files /dev/null and b/test/gnash/actionscript.all/pending/Sound-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/Sound-8.swf.trace b/test/gnash/actionscript.all/pending/Sound-8.swf.trace
new file mode 100644
index 0000000..d45e949
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Sound-8.swf.trace
@@ -0,0 +1,95 @@
+PASSED: typeof(Sound) == 'function' [Sound.as:29]
+PASSED: typeof(Sound.prototype) == 'object' [Sound.as:30]
+PASSED: typeof(Sound.prototype.__proto__) == 'object' [Sound.as:31]
+PASSED: Sound.prototype.__proto__ == Object.prototype [Sound.as:32]
+PASSED: typeof(Sound.prototype.attachSound) == 'function' [Sound.as:34]
+PASSED: typeof(Sound.prototype.getPan) == 'function' [Sound.as:35]
+PASSED: typeof(Sound.prototype.setPan) == 'function' [Sound.as:36]
+PASSED: typeof(Sound.prototype.start) == 'function' [Sound.as:37]
+PASSED: typeof(Sound.prototype.stop) == 'function' [Sound.as:38]
+PASSED: typeof(Sound.prototype.getTransform) == 'function' [Sound.as:39]
+PASSED: typeof(Sound.prototype.setTransform) == 'function' [Sound.as:40]
+PASSED: typeof(Sound.prototype.getVolume) == 'function' [Sound.as:41]
+PASSED: typeof(Sound.prototype.setVolume) == 'function' [Sound.as:42]
+PASSED: typeof(Sound.prototype.getDuration) == functionSinceSWF6 [Sound.as:49]
+PASSED: typeof(Sound.prototype.setDuration) == functionSinceSWF6 [Sound.as:50]
+PASSED: typeof(Sound.prototype.loadSound) == functionSinceSWF6 [Sound.as:51]
+PASSED: typeof(Sound.prototype.getPosition) == functionSinceSWF6 [Sound.as:52]
+PASSED: typeof(Sound.prototype.setPosition) == functionSinceSWF6 [Sound.as:53]
+PASSED: typeof(Sound.prototype.getBytesLoaded) == functionSinceSWF6 [Sound.as:54]
+PASSED: typeof(Sound.prototype.getBytesTotal) == functionSinceSWF6 [Sound.as:55]
+PASSED: typeof(Sound.prototype.areSoundInaccessible) == 'undefined' [Sound.as:59]
+PASSED: typeof(Sound.prototype.duration) == 'undefined' [Sound.as:60]
+PASSED: typeof(Sound.prototype.ID3) == 'undefined' [Sound.as:61]
+PASSED: typeof(Sound.prototype.checkPolicyFile) == 'undefined' [Sound.as:62]
+PASSED: typeof(Sound.prototype.position) == 'undefined' [Sound.as:63]
+PASSED: typeof(Sound.prototype.onID3) == 'undefined' [Sound.as:64]
+PASSED: typeof(Sound.prototype.onLoad) == 'undefined' [Sound.as:65]
+PASSED: typeof(Sound.prototype.onSoundComplete) == 'undefined' [Sound.as:66]
+PASSED: s1 instanceof Sound [Sound.as:83]
+PASSED: typeof(s1.getDuration()) == 'undefined' [Sound.as:84]
+XPASSED: typeof(s1.getPan()) == 'number' [Sound.as:85]
+XPASSED: s1.getPan() == 0 [Sound.as:86]
+PASSED: typeof(s1.getPosition()) == 'undefined' [Sound.as:87]
+XPASSED: typeof(s1.getTransform()) == 'object' [Sound.as:88]
+PASSED: typeof(s1.getVolume()) == 'number' [Sound.as:92]
+PASSED: s1.getVolume() == 100 [Sound.as:93]
+PASSED: s1.getVolume() == 95 [Sound.as:95]
+PASSED: s2.getVolume() == 95 [Sound.as:96]
+PASSED: typeof(s1.getBytesLoaded()) == 'undefined' [Sound.as:98]
+PASSED: typeof(s1.getBytesTotal()) == 'undefined' [Sound.as:99]
+XPASSED: typeof(s1.checkPolicyFile) == 'boolean' [Sound.as:100]
+XPASSED: typeof(s1.duration) == 'undefined' [Sound.as:104]
+PASSED: typeof(s1.ID3) == 'undefined' [Sound.as:105]
+XPASSED: typeof(s1.position) == 'undefined' [Sound.as:106]
+PASSED: s2 instanceof Sound [Sound.as:114]
+PASSED: typeof(s2.getDuration()) == 'undefined' [Sound.as:115]
+XPASSED: typeof(s2.getPan()) == 'number' [Sound.as:116]
+XPASSED: s2.getPan() == 0 [Sound.as:117]
+PASSED: typeof(s2.getPosition()) == 'undefined' [Sound.as:118]
+XPASSED: typeof(s2.getTransform()) == 'object' [Sound.as:119]
+PASSED: typeof(s2.getVolume()) == 'number' [Sound.as:120]
+PASSED: s2.getVolume() == 100 [Sound.as:121]
+PASSED: typeof(s2.getBytesLoaded()) == 'undefined' [Sound.as:122]
+PASSED: typeof(s2.getBytesTotal()) == 'undefined' [Sound.as:123]
+XPASSED: typeof(s2.checkPolicyFile) == 'boolean' [Sound.as:124]
+XPASSED: typeof(s2.duration) == 'undefined' [Sound.as:128]
+PASSED: typeof(s2.ID3) == 'undefined' [Sound.as:129]
+XPASSED: typeof(s2.position) == 'undefined' [Sound.as:130]
+PASSED: s3 instanceof Sound [Sound.as:134]
+PASSED: typeof(s3.getVolume()) == 'undefined' [Sound.as:135]
+PASSED: s1a.getVolume() == 95 [Sound.as:144]
+PASSED: s1b.getVolume() == 95 [Sound.as:145]
+PASSED: s1a.getVolume() == 76 [Sound.as:147]
+PASSED: s1b.getVolume() == 76 [Sound.as:148]
+PASSED: typeof(s1c.getVolume()) == 'undefined' [Sound.as:153]
+PASSED: typeof(s1d.getVolume()) == 'undefined' [Sound.as:154]
+PASSED: typeof(s1c.getVolume()) == 'undefined' [Sound.as:156]
+PASSED: typeof(s1d.getVolume()) == 'undefined' [Sound.as:157]
+PASSED: s1e.getVolume() == 76 [Sound.as:161]
+PASSED: s1f.getVolume() == 76 [Sound.as:162]
+PASSED: typeof(s1g.getVolume()) == 'undefined' [Sound.as:168]
+PASSED: typeof(s1h.getVolume()) == 'undefined' [Sound.as:169]
+PASSED: typeof(s1g.getVolume()) == 'undefined' [Sound.as:171]
+PASSED: typeof(s1h.getVolume()) == 'undefined' [Sound.as:172]
+PASSED: s2.getVolume() == 100 [Sound.as:177]
+PASSED: s3.getVolume() == 100 [Sound.as:178]
+PASSED: s2.getVolume() == 80 [Sound.as:180]
+PASSED: s3.getVolume() == 80 [Sound.as:181]
+PASSED: s2.getVolume() == 100 [Sound.as:189]
+PASSED: s3.getVolume() == 100 [Sound.as:190]
+PASSED: typeof(s2.getVolume()) == 'undefined' [Sound.as:192]
+PASSED: typeof(s3.getVolume()) == 'undefined' [Sound.as:193]
+PASSED: s2.getVolume() == 100 [Sound.as:195]
+PASSED: s3.getVolume() == 100 [Sound.as:196]
+PASSED: s2.getVolume() == 80 [Sound.as:198]
+PASSED: s3.getVolume() == 80 [Sound.as:199]
+PASSED: typeof(s2.getVolume()) == 'undefined' [Sound.as:201]
+PASSED: typeof(s3.getVolume()) == 'undefined' [Sound.as:202]
+PASSED: s2.getVolume() == 100 [Sound.as:204]
+PASSED: s3.getVolume() == 100 [Sound.as:205]
+PASSED: s2.getVolume() == 80 [Sound.as:207]
+PASSED: s3.getVolume() == 80 [Sound.as:208]
+PASSED: s2.getVolume() == 80 [Sound.as:218]
+PASSED: s3.getVolume() == 80 [Sound.as:219]
+check_totals: 94
diff --git a/test/gnash/actionscript.all/pending/Sound.as b/test/gnash/actionscript.all/pending/Sound.as
new file mode 100644
index 0000000..d84a464
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/Sound.as
@@ -0,0 +1,231 @@
+// 
+//   Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Test case for Sound ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: Sound.as,v 1.1 2008/06/17 12:42:22 strk Exp $";
+#include "check.as"
+
+// test Sound class and interface availability
+
+check_equals(typeof(Sound), 'function');
+check_equals(typeof(Sound.prototype), 'object');
+check_equals(typeof(Sound.prototype.__proto__), 'object');
+check_equals(Sound.prototype.__proto__, Object.prototype);
+
+check_equals(typeof(Sound.prototype.attachSound), 'function');
+check_equals(typeof(Sound.prototype.getPan), 'function');
+check_equals(typeof(Sound.prototype.setPan), 'function');
+check_equals(typeof(Sound.prototype.start), 'function');
+check_equals(typeof(Sound.prototype.stop), 'function');
+check_equals(typeof(Sound.prototype.getTransform), 'function');
+check_equals(typeof(Sound.prototype.setTransform), 'function');
+check_equals(typeof(Sound.prototype.getVolume), 'function');
+check_equals(typeof(Sound.prototype.setVolume), 'function');
+
+#if OUTPUT_VERSION > 5
+ var functionSinceSWF6 = 'function';
+#else
+ var functionSinceSWF6 = 'undefined';
+#endif
+check_equals(typeof(Sound.prototype.getDuration), functionSinceSWF6);
+check_equals(typeof(Sound.prototype.setDuration), functionSinceSWF6);
+check_equals(typeof(Sound.prototype.loadSound), functionSinceSWF6);
+check_equals(typeof(Sound.prototype.getPosition), functionSinceSWF6);
+check_equals(typeof(Sound.prototype.setPosition), functionSinceSWF6);
+check_equals(typeof(Sound.prototype.getBytesLoaded), functionSinceSWF6);
+check_equals(typeof(Sound.prototype.getBytesTotal), functionSinceSWF6);
+
+// The ones below are undefined in SWF5..SWF8, chances are an ASSetPropFlags
+// to drop the onlyForSWF9 flag would expose them (TODO: test that)
+check_equals(typeof(Sound.prototype.areSoundInaccessible), 'undefined');
+check_equals(typeof(Sound.prototype.duration), 'undefined');
+check_equals(typeof(Sound.prototype.ID3), 'undefined');
+check_equals(typeof(Sound.prototype.checkPolicyFile), 'undefined');
+check_equals(typeof(Sound.prototype.position), 'undefined');
+check_equals(typeof(Sound.prototype.onID3), 'undefined');
+check_equals(typeof(Sound.prototype.onLoad), 'undefined');
+check_equals(typeof(Sound.prototype.onSoundComplete), 'undefined');
+
+
+//-----------------------------------------
+// Test Sound constructor
+//-----------------------------------------
+
+//
+// Use default constructor and check return of all inspectors
+//
+
+// It seems like if Sound ctor is passed nothing, undefined or null
+// it gets associated to some kind of global volume which is DIFFERENT
+// from the one associated with _root...
+//
+s1 = new Sound();
+s2 = new Sound();
+check(s1 instanceof Sound);
+check_equals(typeof(s1.getDuration()), 'undefined');
+xcheck_equals(typeof(s1.getPan()), 'number'); 
+xcheck_equals(s1.getPan(), 0); 
+check_equals(typeof(s1.getPosition()), 'undefined');
+xcheck_equals(typeof(s1.getTransform()), 'object'); // TODO: check composition
+
+// Now, it seems s1 and s2 are both attached to something, and share
+// the volume !
+check_equals(typeof(s1.getVolume()), 'number'); 
+check_equals(s1.getVolume(), 100); // why, since we didn't specify an attached char ??
+s1.setVolume(95);
+check_equals(s1.getVolume(), 95);
+check_equals(s2.getVolume(), 95);
+
+check_equals(typeof(s1.getBytesLoaded()), 'undefined');
+check_equals(typeof(s1.getBytesTotal()), 'undefined');
+xcheck_equals(typeof(s1.checkPolicyFile), 'boolean');
+
+// The following are undefined in SWF5..SWF8, chances are
+// some ASSetPropFlag to drop SWF9-only flag would expose
+xcheck_equals(typeof(s1.duration), 'undefined');
+check_equals(typeof(s1.ID3), 'undefined');
+xcheck_equals(typeof(s1.position), 'undefined');
+
+
+//
+// Use constructor taking a movieclip and check return of all inspectors
+//
+
+s2 = new Sound(_root);
+check(s2 instanceof Sound);
+check_equals(typeof(s2.getDuration()), 'undefined');
+xcheck_equals(typeof(s2.getPan()), 'number'); 
+xcheck_equals(s2.getPan(), 0); 
+check_equals(typeof(s2.getPosition()), 'undefined');
+xcheck_equals(typeof(s2.getTransform()), 'object'); // TODO: check composition
+check_equals(typeof(s2.getVolume()), 'number'); 
+check_equals(s2.getVolume(), 100); 
+check_equals(typeof(s2.getBytesLoaded()), 'undefined');
+check_equals(typeof(s2.getBytesTotal()), 'undefined');
+xcheck_equals(typeof(s2.checkPolicyFile), 'boolean');
+
+// The following are undefined in SWF5..SWF8, chances are
+// some ASSetPropFlag to drop SWF9-only flag would expose
+xcheck_equals(typeof(s2.duration), 'undefined');
+check_equals(typeof(s2.ID3), 'undefined');
+xcheck_equals(typeof(s2.position), 'undefined');
+
+// this is still valid, altought getVolume would return undefined
+s3 = new Sound(33);
+check(s3 instanceof Sound);
+check_equals(typeof(s3.getVolume()), 'undefined');
+
+//-----------------------------------------
+// Test association of Sound to characters
+//-----------------------------------------
+
+
+s1a = new Sound(); 
+s1b = new Sound();
+check_equals(s1a.getVolume(), 95);
+check_equals(s1b.getVolume(), 95);
+s1b.setVolume(76);
+check_equals(s1a.getVolume(), 76);
+check_equals(s1b.getVolume(), 76);
+
+// Numbers are invalid controllable-characters
+s1c = new Sound(54); 
+s1d = new Sound(54);
+check_equals(typeof(s1c.getVolume()), 'undefined');
+check_equals(typeof(s1d.getVolume()), 'undefined');
+s1c.setVolume(54);
+check_equals(typeof(s1c.getVolume()), 'undefined');
+check_equals(typeof(s1d.getVolume()), 'undefined');
+
+s1e = new Sound(null); 
+s1f = new Sound(undefined);
+check_equals(s1e.getVolume(), 76);
+check_equals(s1f.getVolume(), 76);
+
+// Objects are invalid controllable characters
+o = new Object;
+s1g = new Sound(o); 
+s1h = new Sound(o);
+check_equals(typeof(s1g.getVolume()), 'undefined');
+check_equals(typeof(s1h.getVolume()), 'undefined');
+s1g.setVolume(54);
+check_equals(typeof(s1g.getVolume()), 'undefined');
+check_equals(typeof(s1h.getVolume()), 'undefined');
+
+s2 = new Sound(_root);
+s3 = new Sound(_root);
+
+check_equals(s2.getVolume(), 100);
+check_equals(s3.getVolume(), 100);
+s2.setVolume(80);
+check_equals(s2.getVolume(), 80);
+check_equals(s3.getVolume(), 80);
+
+
+// Check association to unloaded characters, and rebinding
+MovieClip.prototype.createEmptyMovieClip = ASnative(901, 0);
+createEmptyMovieClip('c1', 1);
+s2 = new Sound(c1);
+s3 = new Sound(c1);
+check_equals(s2.getVolume(), 100);
+check_equals(s3.getVolume(), 100);
+c1.removeMovieClip(); // unload, no unload handler
+check_equals(typeof(s2.getVolume()), 'undefined');
+check_equals(typeof(s3.getVolume()), 'undefined');
+createEmptyMovieClip('c1', 2); // rebind ref to _level0.c1
+check_equals(s2.getVolume(), 100);
+check_equals(s3.getVolume(), 100);
+s2.setVolume(80);
+check_equals(s2.getVolume(), 80);
+check_equals(s3.getVolume(), 80);
+c1.removeMovieClip(); // unload, no unload handler
+check_equals(typeof(s2.getVolume()), 'undefined');
+check_equals(typeof(s3.getVolume()), 'undefined');
+createEmptyMovieClip('c1', 3); // rebind ref to _level0.c1
+check_equals(s2.getVolume(), 100); // old volume isn't remembered
+check_equals(s3.getVolume(), 100);
+s2.setVolume(80);
+check_equals(s2.getVolume(), 80);
+check_equals(s3.getVolume(), 80);
+c1.onUnload = function() {}; // give c1 an unload handler
+c1.removeMovieClip(); // there's an unload handler now
+#if OUTPUT_VERSION < 6
+ // No matter onUnload, SWF5 looses association
+ xcheck_equals(typeof(s2.getVolume()), 'undefined');
+ xcheck_equals(typeof(s3.getVolume()), 'undefined'); 
+#else
+ // in SWF6 up, presence of an onUnload handler
+ // prevents loosing the association
+ check_equals(s2.getVolume(), 80);
+ check_equals(s3.getVolume(), 80); 
+#endif
+
+// TODO: test association with other kind of characters:
+//       - TextField
+//       - Video
+//       - ...
+
+//-----------------------------------------
+// END OF TEST
+//-----------------------------------------
+
+check_totals(94);
diff --git a/test/gnash/actionscript.all/pending/String-5.swf b/test/gnash/actionscript.all/pending/String-5.swf
new file mode 100644
index 0000000..2d3c57b
Binary files /dev/null and b/test/gnash/actionscript.all/pending/String-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/String-5.swf.trace b/test/gnash/actionscript.all/pending/String-5.swf.trace
new file mode 100644
index 0000000..c3d4e6d
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/String-5.swf.trace
@@ -0,0 +1,259 @@
+PASSED: typeof(String) == 'function' [String.as:23]
+PASSED: typeof(String.prototype) == 'object' [String.as:24]
+PASSED: String.__proto__ == Function.prototype [String.as:25]
+PASSED: typeof(String.prototype.valueOf) == 'function' [String.as:26]
+PASSED: typeof(String.prototype.toString) == 'function' [String.as:27]
+PASSED: typeof(String.prototype.toUpperCase) == 'function' [String.as:28]
+PASSED: typeof(String.prototype.toLowerCase) == 'function' [String.as:29]
+PASSED: typeof(String.prototype.charAt) == 'function' [String.as:30]
+PASSED: typeof(String.prototype.charCodeAt) == 'function' [String.as:31]
+PASSED: typeof(String.prototype.concat) == 'function' [String.as:32]
+PASSED: typeof(String.prototype.indexOf) == 'function' [String.as:33]
+PASSED: typeof(String.prototype.lastIndexOf) == 'function' [String.as:34]
+PASSED: typeof(String.prototype.slice) == 'function' [String.as:35]
+PASSED: typeof(String.prototype.substring) == 'function' [String.as:36]
+PASSED: typeof(String.prototype.split) == 'function' [String.as:37]
+PASSED: typeof(String.prototype.substr) == 'function' [String.as:38]
+PASSED: typeof(String.prototype.length) == 'undefined' [String.as:39]
+PASSED: typeof(String.prototype.fromCharCode) == 'undefined' [String.as:40]
+PASSED: typeof(String.valueOf) == 'undefined' [String.as:45]
+PASSED: typeof(String.toString) == 'undefined' [String.as:46]
+PASSED: typeof(String.toUpperCase) == 'undefined' [String.as:48]
+PASSED: typeof(String.toLowerCase) == 'undefined' [String.as:49]
+PASSED: typeof(String.charAt) == 'undefined' [String.as:50]
+PASSED: typeof(String.charCodeAt) == 'undefined' [String.as:51]
+PASSED: typeof(String.concat) == 'undefined' [String.as:52]
+PASSED: typeof(String.indexOf) == 'undefined' [String.as:53]
+PASSED: typeof(String.lastIndexOf) == 'undefined' [String.as:54]
+PASSED: typeof(String.slice) == 'undefined' [String.as:55]
+PASSED: typeof(String.substring) == 'undefined' [String.as:56]
+PASSED: typeof(String.split) == 'undefined' [String.as:57]
+PASSED: typeof(String.substr) == 'undefined' [String.as:58]
+PASSED: typeof(String.fromCharCode) == 'function' [String.as:59]
+PASSED: typeof(String()) == 'string' [String.as:86]
+PASSED: a.length == 20 [String.as:90]
+PASSED: typeof(a) == 'object' [String.as:94]
+PASSED: a instanceof String [String.as:95]
+PASSED: a instanceof Object [String.as:96]
+PASSED: a.charCodeAt(0) == 119 [String.as:97]
+PASSED: a.charCodeAt(1) == 97 [String.as:98]
+PASSED: a.charCodeAt(2) == 108 [String.as:99]
+PASSED: a.charCodeAt(3) == 108 [String.as:100]
+PASSED: a.charCodeAt(4) == 97 [String.as:101]
+PASSED: a.charAt(0) == "w" [String.as:102]
+PASSED: a.charAt(1) == "a" [String.as:103]
+PASSED: a.charAt(2) == "l" [String.as:104]
+PASSED: a.charAt(3) == "l" [String.as:105]
+PASSED: a.charAt(4) == "a" [String.as:106]
+PASSED: a.lastIndexOf("lawa") == 8 [String.as:109]
+PASSED: a.indexOf("lawa") == 3 [String.as:118]
+PASSED: a.indexOf("lawas") == 8 [String.as:119]
+PASSED: a.indexOf("hinG") == 13 [String.as:120]
+PASSED: a.indexOf("hing") == -1 [String.as:121]
+PASSED: a.indexOf("lawas", -1) == 8 [String.as:122]
+PASSED: a.indexOf("a", 2) == 4 [String.as:123]
+PASSED: a.indexOf("a", -1) == 1 [String.as:124]
+PASSED: a.indexOf("a", -2) == 1 [String.as:125]
+PASSED: a.indexOf("l") == 2 [String.as:126]
+PASSED: a.indexOf("l", 2.1) == 2 [String.as:127]
+PASSED: a.indexOf("l", 2.8) == 2 [String.as:128]
+PASSED: a.indexOf("l", 3) == 3 [String.as:129]
+PASSED: a.indexOf("l", 3.5) == 3 [String.as:130]
+PASSED: a.indexOf("l", 3.8) == 3 [String.as:131]
+PASSED: a.indexOf("l", -3.8) == 2 [String.as:132]
+PASSED: a.indexOf("l", -4.8) == 2 [String.as:133]
+PASSED: a.indexOf("l", -4) == 2 [String.as:134]
+PASSED: a.indexOf("a", o) == 4 [String.as:136]
+PASSED: a.indexOf(o2, o) == 4 [String.as:138]
+PASSED: typeof(a.split) == 'function' [String.as:145]
+PASSED: ! a.hasOwnProperty('split') [String.as:146]
+PASSED: a.split()[0] == "wallawallawashinGTON" [String.as:152]
+PASSED: a.split().length == 1 [String.as:153]
+PASSED: a.split() instanceof Array [String.as:154]
+PASSED: a.split("w").length == 4 [String.as:155]
+PASSED: a.split("  w").length == 1 [String.as:156]
+PASSED: a.split("")[0] == "wallawallawashinGTON" [String.as:176]
+PASSED: a.split("")[19] == undefined [String.as:177]
+PASSED: a.split("la")[0] == "wallawallawashinGTON" [String.as:179]
+PASSED: a.split("la")[1] == undefined [String.as:180]
+PASSED: a.split("la")[2] == undefined [String.as:181]
+PASSED: a.split("la").length == 1 [String.as:182]
+PASSED: typeof(ret) == 'object' [String.as:189]
+PASSED: ret.length == 1 [String.as:190]
+PASSED: typeof(ret[0]) == 'string' [String.as:191]
+PASSED: ret[0] == '' [String.as:192]
+PASSED: ret.length == 0 [String.as:196]
+PASSED: ret.length == 0 [String.as:202]
+PASSED: ret.length == 1 [String.as:207]
+PASSED: ret.length == 1 [String.as:209]
+PASSED: typeof(ret) == 'object' [String.as:213]
+PASSED: ret.length == 1 [String.as:214]
+PASSED: typeof(ret[0]) == 'string' [String.as:215]
+PASSED: ret[0] == 'abcde' [String.as:216]
+PASSED: g.length == 1 [String.as:225]
+PASSED: typeof(g[0]) == "string" [String.as:226]
+PASSED: g[0] == "" [String.as:227]
+PASSED: g.length == 0 [String.as:237]
+PASSED: typeof(g[0]) == "undefined" [String.as:238]
+PASSED: g[0] == undefined [String.as:239]
+PASSED: g.length == 1 [String.as:244]
+PASSED: typeof(g[0]) == "string" [String.as:245]
+PASSED: g[0] == "" [String.as:246]
+PASSED: g.length == 1 [String.as:255]
+PASSED: typeof(g[0]) == "string" [String.as:256]
+PASSED: g[0] == "f" [String.as:257]
+PASSED: g.length == 0 [String.as:263]
+PASSED: typeof(g[0]) == "undefined" [String.as:264]
+PASSED: g[0] == undefined [String.as:265]
+PASSED: g.length == 1 [String.as:269]
+PASSED: typeof(g[0]) == "string" [String.as:270]
+PASSED: g[0] == "f" [String.as:271]
+PASSED: b == "abcd" [String.as:282]
+PASSED: a.toUpperCase() == "WALLAWALLAWASHINGTON" [String.as:289]
+PASSED: a.toLowerCase() == "wallawallawashington" [String.as:290]
+PASSED: a.substr(5,2) == "fg" [String.as:298]
+PASSED: a.substr(5,7) == "fghijkl" [String.as:299]
+PASSED: a.substr(-1,1) == "z" [String.as:300]
+PASSED: a.substr(-2,3) == "yz" [String.as:301]
+PASSED: a.substr(-3,2) == "xy" [String.as:302]
+PASSED: b.substr(3, 6) == "4" [String.as:304]
+PASSED: a.slice(-5,-3) == "vw" [String.as:312]
+PASSED: typeof(a.slice()) == "undefined" [String.as:313]
+PASSED: typeof(a.slice(-5,3)) == "string" [String.as:314]
+PASSED: a.slice(-5,3) == "" [String.as:315]
+PASSED: typeof(a.slice(-10,22)) == "string" [String.as:316]
+PASSED: a.slice(-10,22) == "qrstuv" [String.as:317]
+PASSED: a.slice(0,0) == "" [String.as:318]
+PASSED: a.slice(0,1) == "a" [String.as:319]
+PASSED: a.slice(1,1) == "" [String.as:320]
+PASSED: a.slice(1,2) == "b" [String.as:321]
+PASSED: a.slice.call(a, -5, -3) == undefined [String.as:328]
+PASSED: String.prototype.slice.call(a, -5, -3) == undefined [String.as:329]
+PASSED: a.slice(-4) == "wxyz" [String.as:331]
+PASSED: a.substring(5,2) == "cde" [String.as:339]
+PASSED: a.substring(5,7) == "fg" [String.as:340]
+PASSED: a.substring(3,3) == "" [String.as:341]
+PASSED: a.length == 26 [String.as:343]
+PASSED: a.concat("sir ","william",15) == "abcdefghijklmnopqrstuvwxyzsir william15" [String.as:344]
+PASSED: b.substring(3, 6) == "4" [String.as:347]
+PASSED: chr(0) == "" [String.as:354]
+PASSED: chr(65) == "A" [String.as:355]
+PASSED: ord("A") == 65 [String.as:356]
+PASSED: ord("") == 0 [String.as:357]
+PASSED: typeof(chr(486)) == 'string' [String.as:367]
+PASSED: chr(865) == "a" [String.as:368]
+PASSED: ord("ö") == 195 [String.as:369]
+PASSED: ord("Ö") == 195 [String.as:370]
+PASSED: ord("ǵ") == 199 [String.as:371]
+PASSED: ord("Ϧ") == 207 [String.as:372]
+XPASSED: c == 199 [String.as:395]
+XPASSED: c == 207 [String.as:411]
+PASSED: typeof(c) == "string" [String.as:429]
+PASSED: typeof(c) == "string" [String.as:448]
+PASSED: a.length == 16 [String.as:469]
+PASSED: a.slice(3,5) == "ng" [String.as:470]
+PASSED: a.charCodeAt(10) == 195 [String.as:471]
+PASSED: b == "iao" [String.as:494]
+PASSED: b == "oowa" [String.as:504]
+PASSED: b == "c" [String.as:513]
+PASSED: b == "ciao" [String.as:522]
+PASSED: b == "c" [String.as:531]
+PASSED: b == "" [String.as:540]
+PASSED: b == "l" [String.as:549]
+PASSED: b == "f" [String.as:559]
+PASSED: b == "" [String.as:569]
+PASSED: count1 == 225 [String.as:605]
+PASSED: count2 == 225 [String.as:606]
+PASSED: b == "iao" [String.as:626]
+PASSED: b == "oowa" [String.as:636]
+PASSED: b == "c" [String.as:645]
+PASSED: b == "ciao" [String.as:654]
+PASSED: b == "c" [String.as:663]
+PASSED: b == "" [String.as:672]
+PASSED: b == "l" [String.as:681]
+PASSED: b == "f" [String.as:691]
+PASSED: stringInstance.__proto__ != undefined [String.as:700]
+PASSED: stringInstance.__proto__ == String.prototype [String.as:701]
+PASSED: typeOf(String.prototype.constructor) == 'function' [String.as:702]
+PASSED: String.prototype.constructor == String [String.as:703]
+PASSED: stringInstance.__proto__.constructor == String [String.as:704]
+PASSED: stringInstance instanceof String [String.as:707]
+PASSED: ! "literal string" instanceof String [String.as:708]
+PASSED: typeof(a_string) == "string" [String.as:714]
+PASSED: a_string.substring(0, 4) == "a_st" [String.as:715]
+PASSED: a_string.substring(-3, 4) == "a_st" [String.as:716]
+PASSED: a_string.substring(0, -1) == "" [String.as:717]
+PASSED: a_string.substring(0, 1) == "a" [String.as:718]
+PASSED: a_string.substring(4) == "ring" [String.as:719]
+PASSED: a_string.substring(16) == "" [String.as:720]
+PASSED: a_string.substring(-16) == "a_string" [String.as:721]
+PASSED: a_string.toUpperCase() == "A_STRING" [String.as:722]
+PASSED: a_string.indexOf("hing") == -1 [String.as:723]
+PASSED: a_string.indexOf("string") == 2 [String.as:724]
+PASSED: a_string.charCodeAt(0) == 97 [String.as:725]
+PASSED: a_string.substring(0, 1) == "" [String.as:727]
+PASSED: a_string.length == 10 [String.as:731]
+PASSED: a_string.length == 10 [String.as:733]
+PASSED: a_string == "1234567890" [String.as:734]
+PASSED: a+b == "onetwo" [String.as:742]
+PASSED: b+c == "two[object Object]" [String.as:745]
+PASSED: b+c == "twoone" [String.as:750]
+PASSED: b+c == "two[type Object]" [String.as:757]
+PASSED: typeof(c.toString) == 'function' [String.as:761]
+PASSED: b+c == "two[type Object]" [String.as:762]
+PASSED: typeof(c.toString) == 'undefined' [String.as:766]
+PASSED: b+c == "two[type Object]" [String.as:767]
+PASSED: typeof(stringObject.valueOf) == 'function' [String.as:770]
+PASSED: stringObject.valueOf == String.prototype.valueOf [String.as:771]
+PASSED: typeof(stringObject.valueOf()) == 'string' [String.as:778]
+PASSED: stringObject == "1234" [String.as:779]
+PASSED: stringObject == 1234 [String.as:780]
+PASSED: 1234 == stringObject [String.as:781]
+PASSED: stringObject == numberObject [String.as:786]
+PASSED: numberObject.toString() == stringObject [String.as:788]
+PASSED: numberObject.toString() == stringObject.toString() [String.as:789]
+PASSED: typeof(Object.prototype.toString) == 'function' [String.as:796]
+PASSED: typeof(s.toString) == 'function' [String.as:797]
+PASSED: ! delete String.prototype.toString [String.as:798]
+PASSED: delete String.prototype.toString [String.as:801]
+PASSED: typeof(s.toString) == 'function' [String.as:802]
+PASSED: !delete Object.prototype.toString [String.as:803]
+PASSED: delete Object.prototype.toString [String.as:806]
+PASSED: typeof(s.toString) == 'undefined' [String.as:807]
+PASSED: r == "s:hello" [String.as:817]
+PASSED: r == "s:" [String.as:821]
+PASSED: a.length == 3 [String.as:828]
+PASSED: a.length == 3 [String.as:830]
+PASSED: a.length == 3 [String.as:832]
+PASSED: a.length == 2 [String.as:834]
+PASSED: a == "123" [String.as:835]
+PASSED: a.length == "another string" [String.as:837]
+PASSED: a.length == "another string" [String.as:839]
+PASSED: a.length == 0 [String.as:852]
+PASSED: a.toString() == "toString" [String.as:858]
+PASSED: typeof(String.__proto__) == 'object' [String.as:860]
+PASSED: typeof(Object.prototype) == 'object' [String.as:861]
+PASSED: String.gotcha == 1 [String.as:863]
+PASSED: !String.__proto__.hasOwnProperty("gotcha") [String.as:865]
+PASSED: String.__proto__.__proto__.hasOwnProperty("gotcha") [String.as:866]
+PASSED: String.__proto__.__proto__ == Object.prototype [String.as:867]
+PASSED: a.toString() == "gotcha,toString" [String.as:870]
+PASSED: !String.hasOwnProperty('toString') [String.as:879]
+PASSED: !String.hasOwnProperty('valueOf') [String.as:880]
+PASSED: String.hasOwnProperty('__proto__') [String.as:881]
+PASSED: String.hasOwnProperty('fromCharCode') [String.as:882]
+PASSED: String.prototype.hasOwnProperty('valueOf') [String.as:884]
+PASSED: String.prototype.hasOwnProperty('toString') [String.as:885]
+PASSED: String.prototype.hasOwnProperty('toUpperCase') [String.as:886]
+PASSED: String.prototype.hasOwnProperty('toLowerCase') [String.as:887]
+PASSED: String.prototype.hasOwnProperty('charAt') [String.as:888]
+PASSED: String.prototype.hasOwnProperty('charCodeAt') [String.as:889]
+PASSED: String.prototype.hasOwnProperty('concat') [String.as:890]
+PASSED: String.prototype.hasOwnProperty('indexOf') [String.as:891]
+PASSED: String.prototype.hasOwnProperty('lastIndexOf') [String.as:892]
+PASSED: String.prototype.hasOwnProperty('slice') [String.as:893]
+PASSED: String.prototype.hasOwnProperty('substring') [String.as:894]
+PASSED: String.prototype.hasOwnProperty('split') [String.as:895]
+PASSED: String.prototype.hasOwnProperty('substr') [String.as:896]
+PASSED: !String.prototype.hasOwnProperty('length') [String.as:897]
+check_totals: 258
diff --git a/test/gnash/actionscript.all/pending/String-6.swf b/test/gnash/actionscript.all/pending/String-6.swf
new file mode 100644
index 0000000..487b92f
Binary files /dev/null and b/test/gnash/actionscript.all/pending/String-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/String-6.swf.trace b/test/gnash/actionscript.all/pending/String-6.swf.trace
new file mode 100644
index 0000000..2e45190
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/String-6.swf.trace
@@ -0,0 +1,275 @@
+PASSED: typeof(String) == 'function' [String.as:23]
+PASSED: typeof(String.prototype) == 'object' [String.as:24]
+PASSED: String.__proto__ == Function.prototype [String.as:25]
+PASSED: typeof(String.prototype.valueOf) == 'function' [String.as:26]
+PASSED: typeof(String.prototype.toString) == 'function' [String.as:27]
+PASSED: typeof(String.prototype.toUpperCase) == 'function' [String.as:28]
+PASSED: typeof(String.prototype.toLowerCase) == 'function' [String.as:29]
+PASSED: typeof(String.prototype.charAt) == 'function' [String.as:30]
+PASSED: typeof(String.prototype.charCodeAt) == 'function' [String.as:31]
+PASSED: typeof(String.prototype.concat) == 'function' [String.as:32]
+PASSED: typeof(String.prototype.indexOf) == 'function' [String.as:33]
+PASSED: typeof(String.prototype.lastIndexOf) == 'function' [String.as:34]
+PASSED: typeof(String.prototype.slice) == 'function' [String.as:35]
+PASSED: typeof(String.prototype.substring) == 'function' [String.as:36]
+PASSED: typeof(String.prototype.split) == 'function' [String.as:37]
+PASSED: typeof(String.prototype.substr) == 'function' [String.as:38]
+PASSED: typeof(String.prototype.length) == 'undefined' [String.as:39]
+PASSED: typeof(String.prototype.fromCharCode) == 'undefined' [String.as:40]
+PASSED: typeof(String.valueOf) == 'function' [String.as:42]
+PASSED: typeof(String.toString) == 'function' [String.as:43]
+PASSED: typeof(String.toUpperCase) == 'undefined' [String.as:48]
+PASSED: typeof(String.toLowerCase) == 'undefined' [String.as:49]
+PASSED: typeof(String.charAt) == 'undefined' [String.as:50]
+PASSED: typeof(String.charCodeAt) == 'undefined' [String.as:51]
+PASSED: typeof(String.concat) == 'undefined' [String.as:52]
+PASSED: typeof(String.indexOf) == 'undefined' [String.as:53]
+PASSED: typeof(String.lastIndexOf) == 'undefined' [String.as:54]
+PASSED: typeof(String.slice) == 'undefined' [String.as:55]
+PASSED: typeof(String.substring) == 'undefined' [String.as:56]
+PASSED: typeof(String.split) == 'undefined' [String.as:57]
+PASSED: typeof(String.substr) == 'undefined' [String.as:58]
+PASSED: typeof(String.fromCharCode) == 'function' [String.as:59]
+PASSED: String.hasOwnProperty('fromCharCode') [String.as:65]
+PASSED: !String.hasOwnProperty('toString') [String.as:66]
+PASSED: !String.hasOwnProperty('valueOf') [String.as:67]
+PASSED: String.hasOwnProperty('__proto__') [String.as:68]
+PASSED: String.prototype.hasOwnProperty('valueOf') [String.as:69]
+PASSED: String.prototype.hasOwnProperty('toString') [String.as:70]
+PASSED: String.prototype.hasOwnProperty('toUpperCase') [String.as:71]
+PASSED: String.prototype.hasOwnProperty('toLowerCase') [String.as:72]
+PASSED: String.prototype.hasOwnProperty('charAt') [String.as:73]
+PASSED: String.prototype.hasOwnProperty('charCodeAt') [String.as:74]
+PASSED: String.prototype.hasOwnProperty('concat') [String.as:75]
+PASSED: String.prototype.hasOwnProperty('indexOf') [String.as:76]
+PASSED: String.prototype.hasOwnProperty('lastIndexOf') [String.as:77]
+PASSED: String.prototype.hasOwnProperty('slice') [String.as:78]
+PASSED: String.prototype.hasOwnProperty('substring') [String.as:79]
+PASSED: String.prototype.hasOwnProperty('split') [String.as:80]
+PASSED: String.prototype.hasOwnProperty('substr') [String.as:81]
+PASSED: !String.prototype.hasOwnProperty('length') [String.as:82]
+PASSED: typeof(String()) == 'string' [String.as:86]
+PASSED: a.length == 20 [String.as:90]
+PASSED: a.hasOwnProperty('length') [String.as:92]
+PASSED: typeof(a) == 'object' [String.as:94]
+PASSED: a instanceof String [String.as:95]
+PASSED: a instanceof Object [String.as:96]
+PASSED: a.charCodeAt(0) == 119 [String.as:97]
+PASSED: a.charCodeAt(1) == 97 [String.as:98]
+PASSED: a.charCodeAt(2) == 108 [String.as:99]
+PASSED: a.charCodeAt(3) == 108 [String.as:100]
+PASSED: a.charCodeAt(4) == 97 [String.as:101]
+PASSED: a.charAt(0) == "w" [String.as:102]
+PASSED: a.charAt(1) == "a" [String.as:103]
+PASSED: a.charAt(2) == "l" [String.as:104]
+PASSED: a.charAt(3) == "l" [String.as:105]
+PASSED: a.charAt(4) == "a" [String.as:106]
+PASSED: a.lastIndexOf("lawa") == 8 [String.as:109]
+PASSED: a.indexOf("lawa") == 3 [String.as:118]
+PASSED: a.indexOf("lawas") == 8 [String.as:119]
+PASSED: a.indexOf("hinG") == 13 [String.as:120]
+PASSED: a.indexOf("hing") == -1 [String.as:121]
+PASSED: a.indexOf("lawas", -1) == 8 [String.as:122]
+PASSED: a.indexOf("a", 2) == 4 [String.as:123]
+PASSED: a.indexOf("a", -1) == 1 [String.as:124]
+PASSED: a.indexOf("a", -2) == 1 [String.as:125]
+PASSED: a.indexOf("l") == 2 [String.as:126]
+PASSED: a.indexOf("l", 2.1) == 2 [String.as:127]
+PASSED: a.indexOf("l", 2.8) == 2 [String.as:128]
+PASSED: a.indexOf("l", 3) == 3 [String.as:129]
+PASSED: a.indexOf("l", 3.5) == 3 [String.as:130]
+PASSED: a.indexOf("l", 3.8) == 3 [String.as:131]
+PASSED: a.indexOf("l", -3.8) == 2 [String.as:132]
+PASSED: a.indexOf("l", -4.8) == 2 [String.as:133]
+PASSED: a.indexOf("l", -4) == 2 [String.as:134]
+PASSED: a.indexOf("a", o) == 4 [String.as:136]
+PASSED: a.indexOf(o2, o) == 4 [String.as:138]
+PASSED: typeof(a.split) == 'function' [String.as:145]
+PASSED: ! a.hasOwnProperty('split') [String.as:146]
+PASSED: a.__proto__.hasOwnProperty('split') [String.as:148]
+PASSED: a.__proto__ == String.prototype [String.as:149]
+PASSED: a.split()[0] == "wallawallawashinGTON" [String.as:152]
+PASSED: a.split().length == 1 [String.as:153]
+PASSED: a.split() instanceof Array [String.as:154]
+PASSED: a.split("w").length == 4 [String.as:155]
+PASSED: a.split("  w").length == 1 [String.as:156]
+PASSED: typeof(ret) == 'object' [String.as:161]
+PASSED: ret instanceof Array [String.as:162]
+PASSED: ret.length == 20 [String.as:163]
+PASSED: ret[0] == "w" [String.as:164]
+PASSED: ret[1] == "a" [String.as:165]
+PASSED: ret[2] == "l" [String.as:166]
+PASSED: ret[3] == "l" [String.as:167]
+PASSED: ret[18] == "O" [String.as:168]
+PASSED: ret[19] == "N" [String.as:169]
+PASSED: a.split("la")[0] == "wal" [String.as:170]
+PASSED: a.split("la")[1] == "wal" [String.as:171]
+PASSED: a.split("la")[2] == "washinGTON" [String.as:172]
+PASSED: a.split("la").length == 3 [String.as:173]
+PASSED: typeof(ret) == 'object' [String.as:189]
+PASSED: ret.length == 1 [String.as:190]
+PASSED: typeof(ret[0]) == 'string' [String.as:191]
+PASSED: ret[0] == '' [String.as:192]
+PASSED: ret.length == 1 [String.as:198]
+PASSED: ret.length == 1 [String.as:204]
+PASSED: ret.length == 1 [String.as:207]
+PASSED: ret.length == 1 [String.as:209]
+PASSED: typeof(ret) == 'object' [String.as:213]
+PASSED: ret.length == 1 [String.as:214]
+PASSED: typeof(ret[0]) == 'string' [String.as:215]
+PASSED: ret[0] == 'abcde' [String.as:216]
+XPASSED: g.length == 0 [String.as:221]
+XPASSED: typeof(g[0]) == "undefined" [String.as:222]
+XPASSED: g[0] == undefined [String.as:223]
+PASSED: g.length == 1 [String.as:233]
+PASSED: typeof(g[0]) == "string" [String.as:234]
+PASSED: g[0] == "" [String.as:235]
+PASSED: g.length == 1 [String.as:244]
+PASSED: typeof(g[0]) == "string" [String.as:245]
+PASSED: g[0] == "" [String.as:246]
+PASSED: g.length == 0 [String.as:251]
+PASSED: typeof(g[0]) == "undefined" [String.as:252]
+PASSED: g[0] == undefined [String.as:253]
+PASSED: g.length == 0 [String.as:263]
+PASSED: typeof(g[0]) == "undefined" [String.as:264]
+PASSED: g[0] == undefined [String.as:265]
+PASSED: g.length == 1 [String.as:269]
+PASSED: typeof(g[0]) == "string" [String.as:270]
+PASSED: g[0] == "f" [String.as:271]
+PASSED: b == "abcd" [String.as:282]
+PASSED: a.toUpperCase() == "WALLAWALLAWASHINGTON" [String.as:289]
+PASSED: a.toLowerCase() == "wallawallawashington" [String.as:290]
+PASSED: a.substr(5,2) == "fg" [String.as:298]
+PASSED: a.substr(5,7) == "fghijkl" [String.as:299]
+PASSED: a.substr(-1,1) == "z" [String.as:300]
+PASSED: a.substr(-2,3) == "yz" [String.as:301]
+PASSED: a.substr(-3,2) == "xy" [String.as:302]
+PASSED: b.substr(3, 6) == "4" [String.as:304]
+PASSED: a.slice(-5,-3) == "vw" [String.as:312]
+PASSED: typeof(a.slice()) == "undefined" [String.as:313]
+PASSED: typeof(a.slice(-5,3)) == "string" [String.as:314]
+PASSED: a.slice(-5,3) == "" [String.as:315]
+PASSED: typeof(a.slice(-10,22)) == "string" [String.as:316]
+PASSED: a.slice(-10,22) == "qrstuv" [String.as:317]
+PASSED: a.slice(0,0) == "" [String.as:318]
+PASSED: a.slice(0,1) == "a" [String.as:319]
+PASSED: a.slice(1,1) == "" [String.as:320]
+PASSED: a.slice(1,2) == "b" [String.as:321]
+PASSED: a.slice.call(a, -5, -3) == "vw" [String.as:323]
+PASSED: String.prototype.slice.call(a, -5, -3) == "vw" [String.as:324]
+PASSED: a.slice(-4) == "wxyz" [String.as:331]
+PASSED: a.substring(5,2) == "cde" [String.as:339]
+PASSED: a.substring(5,7) == "fg" [String.as:340]
+PASSED: a.substring(3,3) == "" [String.as:341]
+PASSED: a.length == 26 [String.as:343]
+PASSED: a.concat("sir ","william",15) == "abcdefghijklmnopqrstuvwxyzsir william15" [String.as:344]
+PASSED: b.substring(3, 6) == "4" [String.as:347]
+PASSED: chr(0) == "" [String.as:354]
+PASSED: chr(65) == "A" [String.as:355]
+PASSED: ord("A") == 65 [String.as:356]
+PASSED: ord("") == 0 [String.as:357]
+PASSED: chr(246) == "ö" [String.as:361]
+PASSED: chr(486) == "Ǧ" [String.as:362]
+PASSED: chr(998) == "Ϧ" [String.as:363]
+PASSED: ord("ö") == 246 [String.as:364]
+PASSED: ord("Ϧ") == 998 [String.as:365]
+PASSED: c == 486 [String.as:393]
+PASSED: c == 998 [String.as:409]
+PASSED: c == "Ϧ" [String.as:427]
+PASSED: c == "徐" [String.as:446]
+PASSED: a.length == 14 [String.as:462]
+PASSED: a.substring(2,4) == "ng" [String.as:463]
+PASSED: a.charAt(1) == "ä" [String.as:464]
+PASSED: a.charAt(2) == "n" [String.as:465]
+PASSED: a.slice(3,5) == "ge" [String.as:466]
+PASSED: a.charCodeAt(9) == 246 [String.as:467]
+PASSED: b == "iao" [String.as:494]
+PASSED: b == "oowa" [String.as:504]
+PASSED: b == "c" [String.as:513]
+PASSED: b == "ciao" [String.as:522]
+PASSED: b == "c" [String.as:531]
+PASSED: b == "" [String.as:540]
+PASSED: b == "l" [String.as:549]
+PASSED: b == "f" [String.as:559]
+PASSED: b == "" [String.as:569]
+PASSED: count1 == 225 [String.as:605]
+PASSED: count2 == 225 [String.as:606]
+PASSED: b == "iao" [String.as:626]
+PASSED: b == "oowa" [String.as:636]
+PASSED: b == "c" [String.as:645]
+PASSED: b == "ciao" [String.as:654]
+PASSED: b == "c" [String.as:663]
+PASSED: b == "" [String.as:672]
+PASSED: b == "l" [String.as:681]
+PASSED: b == "f" [String.as:691]
+PASSED: stringInstance.__proto__ != undefined [String.as:700]
+PASSED: stringInstance.__proto__ == String.prototype [String.as:701]
+PASSED: typeOf(String.prototype.constructor) == 'function' [String.as:702]
+PASSED: String.prototype.constructor == String [String.as:703]
+PASSED: stringInstance.__proto__.constructor == String [String.as:704]
+PASSED: stringInstance instanceof String [String.as:707]
+PASSED: ! "literal string" instanceof String [String.as:708]
+PASSED: typeof(a_string) == "string" [String.as:714]
+PASSED: a_string.substring(0, 4) == "a_st" [String.as:715]
+PASSED: a_string.substring(-3, 4) == "a_st" [String.as:716]
+PASSED: a_string.substring(0, -1) == "" [String.as:717]
+PASSED: a_string.substring(0, 1) == "a" [String.as:718]
+PASSED: a_string.substring(4) == "ring" [String.as:719]
+PASSED: a_string.substring(16) == "" [String.as:720]
+PASSED: a_string.substring(-16) == "a_string" [String.as:721]
+PASSED: a_string.toUpperCase() == "A_STRING" [String.as:722]
+PASSED: a_string.indexOf("hing") == -1 [String.as:723]
+PASSED: a_string.indexOf("string") == 2 [String.as:724]
+PASSED: a_string.charCodeAt(0) == 97 [String.as:725]
+PASSED: a_string.substring(0, 1) == "" [String.as:727]
+PASSED: a_string.length == 10 [String.as:731]
+PASSED: a_string.length == 10 [String.as:733]
+PASSED: a_string == "1234567890" [String.as:734]
+PASSED: a+b == "onetwo" [String.as:742]
+PASSED: b+c == "two[object Object]" [String.as:745]
+PASSED: b+c == "twoone" [String.as:750]
+PASSED: c.toString != prevToStringFunc [String.as:755]
+PASSED: b+c == "two[type Object]" [String.as:757]
+PASSED: typeof(c.toString) == 'function' [String.as:761]
+PASSED: b+c == "two[type Object]" [String.as:762]
+PASSED: typeof(c.toString) == 'undefined' [String.as:766]
+PASSED: b+c == "two[type Object]" [String.as:767]
+PASSED: typeof(stringObject.valueOf) == 'function' [String.as:770]
+PASSED: stringObject.valueOf == String.prototype.valueOf [String.as:771]
+PASSED: stringObject.valueOf != Object.prototype.valueOf [String.as:774]
+PASSED: String.prototype.hasOwnProperty('valueOf') [String.as:775]
+PASSED: typeof(stringObject.valueOf()) == 'string' [String.as:778]
+PASSED: stringObject == "1234" [String.as:779]
+PASSED: stringObject == 1234 [String.as:780]
+PASSED: 1234 == stringObject [String.as:781]
+PASSED: stringObject != numberObject [String.as:784]
+PASSED: numberObject.toString() == stringObject [String.as:788]
+PASSED: numberObject.toString() == stringObject.toString() [String.as:789]
+PASSED: typeof(Object.prototype.toString) == 'function' [String.as:796]
+PASSED: typeof(s.toString) == 'function' [String.as:797]
+PASSED: ! delete String.prototype.toString [String.as:798]
+PASSED: delete String.prototype.toString [String.as:801]
+PASSED: typeof(s.toString) == 'function' [String.as:802]
+PASSED: !delete Object.prototype.toString [String.as:803]
+PASSED: delete Object.prototype.toString [String.as:806]
+PASSED: typeof(s.toString) == 'undefined' [String.as:807]
+PASSED: r == "s:hello" [String.as:817]
+PASSED: r == "s:" [String.as:821]
+PASSED: a.length == 3 [String.as:828]
+PASSED: a.length == 3 [String.as:830]
+PASSED: a.length == 3 [String.as:832]
+PASSED: a.length == 2 [String.as:834]
+PASSED: a == "123" [String.as:835]
+PASSED: a.length == "another string" [String.as:837]
+PASSED: a.length == "another string" [String.as:839]
+PASSED: a.hasOwnProperty('length') [String.as:841]
+PASSED: a.toString() == "toString" [String.as:850]
+PASSED: a.toString() == "toString" [String.as:858]
+PASSED: typeof(String.__proto__) == 'object' [String.as:860]
+PASSED: typeof(Object.prototype) == 'object' [String.as:861]
+PASSED: String.gotcha == 1 [String.as:863]
+PASSED: !String.__proto__.hasOwnProperty("gotcha") [String.as:865]
+PASSED: String.__proto__.__proto__.hasOwnProperty("gotcha") [String.as:866]
+PASSED: String.__proto__.__proto__ == Object.prototype [String.as:867]
+PASSED: a.toString() == "gotcha,toString" [String.as:870]
+check_totals: 274
diff --git a/test/gnash/actionscript.all/pending/String-7.swf b/test/gnash/actionscript.all/pending/String-7.swf
new file mode 100644
index 0000000..f7ab72e
Binary files /dev/null and b/test/gnash/actionscript.all/pending/String-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/String-7.swf.trace b/test/gnash/actionscript.all/pending/String-7.swf.trace
new file mode 100644
index 0000000..2e45190
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/String-7.swf.trace
@@ -0,0 +1,275 @@
+PASSED: typeof(String) == 'function' [String.as:23]
+PASSED: typeof(String.prototype) == 'object' [String.as:24]
+PASSED: String.__proto__ == Function.prototype [String.as:25]
+PASSED: typeof(String.prototype.valueOf) == 'function' [String.as:26]
+PASSED: typeof(String.prototype.toString) == 'function' [String.as:27]
+PASSED: typeof(String.prototype.toUpperCase) == 'function' [String.as:28]
+PASSED: typeof(String.prototype.toLowerCase) == 'function' [String.as:29]
+PASSED: typeof(String.prototype.charAt) == 'function' [String.as:30]
+PASSED: typeof(String.prototype.charCodeAt) == 'function' [String.as:31]
+PASSED: typeof(String.prototype.concat) == 'function' [String.as:32]
+PASSED: typeof(String.prototype.indexOf) == 'function' [String.as:33]
+PASSED: typeof(String.prototype.lastIndexOf) == 'function' [String.as:34]
+PASSED: typeof(String.prototype.slice) == 'function' [String.as:35]
+PASSED: typeof(String.prototype.substring) == 'function' [String.as:36]
+PASSED: typeof(String.prototype.split) == 'function' [String.as:37]
+PASSED: typeof(String.prototype.substr) == 'function' [String.as:38]
+PASSED: typeof(String.prototype.length) == 'undefined' [String.as:39]
+PASSED: typeof(String.prototype.fromCharCode) == 'undefined' [String.as:40]
+PASSED: typeof(String.valueOf) == 'function' [String.as:42]
+PASSED: typeof(String.toString) == 'function' [String.as:43]
+PASSED: typeof(String.toUpperCase) == 'undefined' [String.as:48]
+PASSED: typeof(String.toLowerCase) == 'undefined' [String.as:49]
+PASSED: typeof(String.charAt) == 'undefined' [String.as:50]
+PASSED: typeof(String.charCodeAt) == 'undefined' [String.as:51]
+PASSED: typeof(String.concat) == 'undefined' [String.as:52]
+PASSED: typeof(String.indexOf) == 'undefined' [String.as:53]
+PASSED: typeof(String.lastIndexOf) == 'undefined' [String.as:54]
+PASSED: typeof(String.slice) == 'undefined' [String.as:55]
+PASSED: typeof(String.substring) == 'undefined' [String.as:56]
+PASSED: typeof(String.split) == 'undefined' [String.as:57]
+PASSED: typeof(String.substr) == 'undefined' [String.as:58]
+PASSED: typeof(String.fromCharCode) == 'function' [String.as:59]
+PASSED: String.hasOwnProperty('fromCharCode') [String.as:65]
+PASSED: !String.hasOwnProperty('toString') [String.as:66]
+PASSED: !String.hasOwnProperty('valueOf') [String.as:67]
+PASSED: String.hasOwnProperty('__proto__') [String.as:68]
+PASSED: String.prototype.hasOwnProperty('valueOf') [String.as:69]
+PASSED: String.prototype.hasOwnProperty('toString') [String.as:70]
+PASSED: String.prototype.hasOwnProperty('toUpperCase') [String.as:71]
+PASSED: String.prototype.hasOwnProperty('toLowerCase') [String.as:72]
+PASSED: String.prototype.hasOwnProperty('charAt') [String.as:73]
+PASSED: String.prototype.hasOwnProperty('charCodeAt') [String.as:74]
+PASSED: String.prototype.hasOwnProperty('concat') [String.as:75]
+PASSED: String.prototype.hasOwnProperty('indexOf') [String.as:76]
+PASSED: String.prototype.hasOwnProperty('lastIndexOf') [String.as:77]
+PASSED: String.prototype.hasOwnProperty('slice') [String.as:78]
+PASSED: String.prototype.hasOwnProperty('substring') [String.as:79]
+PASSED: String.prototype.hasOwnProperty('split') [String.as:80]
+PASSED: String.prototype.hasOwnProperty('substr') [String.as:81]
+PASSED: !String.prototype.hasOwnProperty('length') [String.as:82]
+PASSED: typeof(String()) == 'string' [String.as:86]
+PASSED: a.length == 20 [String.as:90]
+PASSED: a.hasOwnProperty('length') [String.as:92]
+PASSED: typeof(a) == 'object' [String.as:94]
+PASSED: a instanceof String [String.as:95]
+PASSED: a instanceof Object [String.as:96]
+PASSED: a.charCodeAt(0) == 119 [String.as:97]
+PASSED: a.charCodeAt(1) == 97 [String.as:98]
+PASSED: a.charCodeAt(2) == 108 [String.as:99]
+PASSED: a.charCodeAt(3) == 108 [String.as:100]
+PASSED: a.charCodeAt(4) == 97 [String.as:101]
+PASSED: a.charAt(0) == "w" [String.as:102]
+PASSED: a.charAt(1) == "a" [String.as:103]
+PASSED: a.charAt(2) == "l" [String.as:104]
+PASSED: a.charAt(3) == "l" [String.as:105]
+PASSED: a.charAt(4) == "a" [String.as:106]
+PASSED: a.lastIndexOf("lawa") == 8 [String.as:109]
+PASSED: a.indexOf("lawa") == 3 [String.as:118]
+PASSED: a.indexOf("lawas") == 8 [String.as:119]
+PASSED: a.indexOf("hinG") == 13 [String.as:120]
+PASSED: a.indexOf("hing") == -1 [String.as:121]
+PASSED: a.indexOf("lawas", -1) == 8 [String.as:122]
+PASSED: a.indexOf("a", 2) == 4 [String.as:123]
+PASSED: a.indexOf("a", -1) == 1 [String.as:124]
+PASSED: a.indexOf("a", -2) == 1 [String.as:125]
+PASSED: a.indexOf("l") == 2 [String.as:126]
+PASSED: a.indexOf("l", 2.1) == 2 [String.as:127]
+PASSED: a.indexOf("l", 2.8) == 2 [String.as:128]
+PASSED: a.indexOf("l", 3) == 3 [String.as:129]
+PASSED: a.indexOf("l", 3.5) == 3 [String.as:130]
+PASSED: a.indexOf("l", 3.8) == 3 [String.as:131]
+PASSED: a.indexOf("l", -3.8) == 2 [String.as:132]
+PASSED: a.indexOf("l", -4.8) == 2 [String.as:133]
+PASSED: a.indexOf("l", -4) == 2 [String.as:134]
+PASSED: a.indexOf("a", o) == 4 [String.as:136]
+PASSED: a.indexOf(o2, o) == 4 [String.as:138]
+PASSED: typeof(a.split) == 'function' [String.as:145]
+PASSED: ! a.hasOwnProperty('split') [String.as:146]
+PASSED: a.__proto__.hasOwnProperty('split') [String.as:148]
+PASSED: a.__proto__ == String.prototype [String.as:149]
+PASSED: a.split()[0] == "wallawallawashinGTON" [String.as:152]
+PASSED: a.split().length == 1 [String.as:153]
+PASSED: a.split() instanceof Array [String.as:154]
+PASSED: a.split("w").length == 4 [String.as:155]
+PASSED: a.split("  w").length == 1 [String.as:156]
+PASSED: typeof(ret) == 'object' [String.as:161]
+PASSED: ret instanceof Array [String.as:162]
+PASSED: ret.length == 20 [String.as:163]
+PASSED: ret[0] == "w" [String.as:164]
+PASSED: ret[1] == "a" [String.as:165]
+PASSED: ret[2] == "l" [String.as:166]
+PASSED: ret[3] == "l" [String.as:167]
+PASSED: ret[18] == "O" [String.as:168]
+PASSED: ret[19] == "N" [String.as:169]
+PASSED: a.split("la")[0] == "wal" [String.as:170]
+PASSED: a.split("la")[1] == "wal" [String.as:171]
+PASSED: a.split("la")[2] == "washinGTON" [String.as:172]
+PASSED: a.split("la").length == 3 [String.as:173]
+PASSED: typeof(ret) == 'object' [String.as:189]
+PASSED: ret.length == 1 [String.as:190]
+PASSED: typeof(ret[0]) == 'string' [String.as:191]
+PASSED: ret[0] == '' [String.as:192]
+PASSED: ret.length == 1 [String.as:198]
+PASSED: ret.length == 1 [String.as:204]
+PASSED: ret.length == 1 [String.as:207]
+PASSED: ret.length == 1 [String.as:209]
+PASSED: typeof(ret) == 'object' [String.as:213]
+PASSED: ret.length == 1 [String.as:214]
+PASSED: typeof(ret[0]) == 'string' [String.as:215]
+PASSED: ret[0] == 'abcde' [String.as:216]
+XPASSED: g.length == 0 [String.as:221]
+XPASSED: typeof(g[0]) == "undefined" [String.as:222]
+XPASSED: g[0] == undefined [String.as:223]
+PASSED: g.length == 1 [String.as:233]
+PASSED: typeof(g[0]) == "string" [String.as:234]
+PASSED: g[0] == "" [String.as:235]
+PASSED: g.length == 1 [String.as:244]
+PASSED: typeof(g[0]) == "string" [String.as:245]
+PASSED: g[0] == "" [String.as:246]
+PASSED: g.length == 0 [String.as:251]
+PASSED: typeof(g[0]) == "undefined" [String.as:252]
+PASSED: g[0] == undefined [String.as:253]
+PASSED: g.length == 0 [String.as:263]
+PASSED: typeof(g[0]) == "undefined" [String.as:264]
+PASSED: g[0] == undefined [String.as:265]
+PASSED: g.length == 1 [String.as:269]
+PASSED: typeof(g[0]) == "string" [String.as:270]
+PASSED: g[0] == "f" [String.as:271]
+PASSED: b == "abcd" [String.as:282]
+PASSED: a.toUpperCase() == "WALLAWALLAWASHINGTON" [String.as:289]
+PASSED: a.toLowerCase() == "wallawallawashington" [String.as:290]
+PASSED: a.substr(5,2) == "fg" [String.as:298]
+PASSED: a.substr(5,7) == "fghijkl" [String.as:299]
+PASSED: a.substr(-1,1) == "z" [String.as:300]
+PASSED: a.substr(-2,3) == "yz" [String.as:301]
+PASSED: a.substr(-3,2) == "xy" [String.as:302]
+PASSED: b.substr(3, 6) == "4" [String.as:304]
+PASSED: a.slice(-5,-3) == "vw" [String.as:312]
+PASSED: typeof(a.slice()) == "undefined" [String.as:313]
+PASSED: typeof(a.slice(-5,3)) == "string" [String.as:314]
+PASSED: a.slice(-5,3) == "" [String.as:315]
+PASSED: typeof(a.slice(-10,22)) == "string" [String.as:316]
+PASSED: a.slice(-10,22) == "qrstuv" [String.as:317]
+PASSED: a.slice(0,0) == "" [String.as:318]
+PASSED: a.slice(0,1) == "a" [String.as:319]
+PASSED: a.slice(1,1) == "" [String.as:320]
+PASSED: a.slice(1,2) == "b" [String.as:321]
+PASSED: a.slice.call(a, -5, -3) == "vw" [String.as:323]
+PASSED: String.prototype.slice.call(a, -5, -3) == "vw" [String.as:324]
+PASSED: a.slice(-4) == "wxyz" [String.as:331]
+PASSED: a.substring(5,2) == "cde" [String.as:339]
+PASSED: a.substring(5,7) == "fg" [String.as:340]
+PASSED: a.substring(3,3) == "" [String.as:341]
+PASSED: a.length == 26 [String.as:343]
+PASSED: a.concat("sir ","william",15) == "abcdefghijklmnopqrstuvwxyzsir william15" [String.as:344]
+PASSED: b.substring(3, 6) == "4" [String.as:347]
+PASSED: chr(0) == "" [String.as:354]
+PASSED: chr(65) == "A" [String.as:355]
+PASSED: ord("A") == 65 [String.as:356]
+PASSED: ord("") == 0 [String.as:357]
+PASSED: chr(246) == "ö" [String.as:361]
+PASSED: chr(486) == "Ǧ" [String.as:362]
+PASSED: chr(998) == "Ϧ" [String.as:363]
+PASSED: ord("ö") == 246 [String.as:364]
+PASSED: ord("Ϧ") == 998 [String.as:365]
+PASSED: c == 486 [String.as:393]
+PASSED: c == 998 [String.as:409]
+PASSED: c == "Ϧ" [String.as:427]
+PASSED: c == "徐" [String.as:446]
+PASSED: a.length == 14 [String.as:462]
+PASSED: a.substring(2,4) == "ng" [String.as:463]
+PASSED: a.charAt(1) == "ä" [String.as:464]
+PASSED: a.charAt(2) == "n" [String.as:465]
+PASSED: a.slice(3,5) == "ge" [String.as:466]
+PASSED: a.charCodeAt(9) == 246 [String.as:467]
+PASSED: b == "iao" [String.as:494]
+PASSED: b == "oowa" [String.as:504]
+PASSED: b == "c" [String.as:513]
+PASSED: b == "ciao" [String.as:522]
+PASSED: b == "c" [String.as:531]
+PASSED: b == "" [String.as:540]
+PASSED: b == "l" [String.as:549]
+PASSED: b == "f" [String.as:559]
+PASSED: b == "" [String.as:569]
+PASSED: count1 == 225 [String.as:605]
+PASSED: count2 == 225 [String.as:606]
+PASSED: b == "iao" [String.as:626]
+PASSED: b == "oowa" [String.as:636]
+PASSED: b == "c" [String.as:645]
+PASSED: b == "ciao" [String.as:654]
+PASSED: b == "c" [String.as:663]
+PASSED: b == "" [String.as:672]
+PASSED: b == "l" [String.as:681]
+PASSED: b == "f" [String.as:691]
+PASSED: stringInstance.__proto__ != undefined [String.as:700]
+PASSED: stringInstance.__proto__ == String.prototype [String.as:701]
+PASSED: typeOf(String.prototype.constructor) == 'function' [String.as:702]
+PASSED: String.prototype.constructor == String [String.as:703]
+PASSED: stringInstance.__proto__.constructor == String [String.as:704]
+PASSED: stringInstance instanceof String [String.as:707]
+PASSED: ! "literal string" instanceof String [String.as:708]
+PASSED: typeof(a_string) == "string" [String.as:714]
+PASSED: a_string.substring(0, 4) == "a_st" [String.as:715]
+PASSED: a_string.substring(-3, 4) == "a_st" [String.as:716]
+PASSED: a_string.substring(0, -1) == "" [String.as:717]
+PASSED: a_string.substring(0, 1) == "a" [String.as:718]
+PASSED: a_string.substring(4) == "ring" [String.as:719]
+PASSED: a_string.substring(16) == "" [String.as:720]
+PASSED: a_string.substring(-16) == "a_string" [String.as:721]
+PASSED: a_string.toUpperCase() == "A_STRING" [String.as:722]
+PASSED: a_string.indexOf("hing") == -1 [String.as:723]
+PASSED: a_string.indexOf("string") == 2 [String.as:724]
+PASSED: a_string.charCodeAt(0) == 97 [String.as:725]
+PASSED: a_string.substring(0, 1) == "" [String.as:727]
+PASSED: a_string.length == 10 [String.as:731]
+PASSED: a_string.length == 10 [String.as:733]
+PASSED: a_string == "1234567890" [String.as:734]
+PASSED: a+b == "onetwo" [String.as:742]
+PASSED: b+c == "two[object Object]" [String.as:745]
+PASSED: b+c == "twoone" [String.as:750]
+PASSED: c.toString != prevToStringFunc [String.as:755]
+PASSED: b+c == "two[type Object]" [String.as:757]
+PASSED: typeof(c.toString) == 'function' [String.as:761]
+PASSED: b+c == "two[type Object]" [String.as:762]
+PASSED: typeof(c.toString) == 'undefined' [String.as:766]
+PASSED: b+c == "two[type Object]" [String.as:767]
+PASSED: typeof(stringObject.valueOf) == 'function' [String.as:770]
+PASSED: stringObject.valueOf == String.prototype.valueOf [String.as:771]
+PASSED: stringObject.valueOf != Object.prototype.valueOf [String.as:774]
+PASSED: String.prototype.hasOwnProperty('valueOf') [String.as:775]
+PASSED: typeof(stringObject.valueOf()) == 'string' [String.as:778]
+PASSED: stringObject == "1234" [String.as:779]
+PASSED: stringObject == 1234 [String.as:780]
+PASSED: 1234 == stringObject [String.as:781]
+PASSED: stringObject != numberObject [String.as:784]
+PASSED: numberObject.toString() == stringObject [String.as:788]
+PASSED: numberObject.toString() == stringObject.toString() [String.as:789]
+PASSED: typeof(Object.prototype.toString) == 'function' [String.as:796]
+PASSED: typeof(s.toString) == 'function' [String.as:797]
+PASSED: ! delete String.prototype.toString [String.as:798]
+PASSED: delete String.prototype.toString [String.as:801]
+PASSED: typeof(s.toString) == 'function' [String.as:802]
+PASSED: !delete Object.prototype.toString [String.as:803]
+PASSED: delete Object.prototype.toString [String.as:806]
+PASSED: typeof(s.toString) == 'undefined' [String.as:807]
+PASSED: r == "s:hello" [String.as:817]
+PASSED: r == "s:" [String.as:821]
+PASSED: a.length == 3 [String.as:828]
+PASSED: a.length == 3 [String.as:830]
+PASSED: a.length == 3 [String.as:832]
+PASSED: a.length == 2 [String.as:834]
+PASSED: a == "123" [String.as:835]
+PASSED: a.length == "another string" [String.as:837]
+PASSED: a.length == "another string" [String.as:839]
+PASSED: a.hasOwnProperty('length') [String.as:841]
+PASSED: a.toString() == "toString" [String.as:850]
+PASSED: a.toString() == "toString" [String.as:858]
+PASSED: typeof(String.__proto__) == 'object' [String.as:860]
+PASSED: typeof(Object.prototype) == 'object' [String.as:861]
+PASSED: String.gotcha == 1 [String.as:863]
+PASSED: !String.__proto__.hasOwnProperty("gotcha") [String.as:865]
+PASSED: String.__proto__.__proto__.hasOwnProperty("gotcha") [String.as:866]
+PASSED: String.__proto__.__proto__ == Object.prototype [String.as:867]
+PASSED: a.toString() == "gotcha,toString" [String.as:870]
+check_totals: 274
diff --git a/test/gnash/actionscript.all/pending/String-8.swf b/test/gnash/actionscript.all/pending/String-8.swf
new file mode 100644
index 0000000..204ede4
Binary files /dev/null and b/test/gnash/actionscript.all/pending/String-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/String-8.swf.trace b/test/gnash/actionscript.all/pending/String-8.swf.trace
new file mode 100644
index 0000000..2e45190
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/String-8.swf.trace
@@ -0,0 +1,275 @@
+PASSED: typeof(String) == 'function' [String.as:23]
+PASSED: typeof(String.prototype) == 'object' [String.as:24]
+PASSED: String.__proto__ == Function.prototype [String.as:25]
+PASSED: typeof(String.prototype.valueOf) == 'function' [String.as:26]
+PASSED: typeof(String.prototype.toString) == 'function' [String.as:27]
+PASSED: typeof(String.prototype.toUpperCase) == 'function' [String.as:28]
+PASSED: typeof(String.prototype.toLowerCase) == 'function' [String.as:29]
+PASSED: typeof(String.prototype.charAt) == 'function' [String.as:30]
+PASSED: typeof(String.prototype.charCodeAt) == 'function' [String.as:31]
+PASSED: typeof(String.prototype.concat) == 'function' [String.as:32]
+PASSED: typeof(String.prototype.indexOf) == 'function' [String.as:33]
+PASSED: typeof(String.prototype.lastIndexOf) == 'function' [String.as:34]
+PASSED: typeof(String.prototype.slice) == 'function' [String.as:35]
+PASSED: typeof(String.prototype.substring) == 'function' [String.as:36]
+PASSED: typeof(String.prototype.split) == 'function' [String.as:37]
+PASSED: typeof(String.prototype.substr) == 'function' [String.as:38]
+PASSED: typeof(String.prototype.length) == 'undefined' [String.as:39]
+PASSED: typeof(String.prototype.fromCharCode) == 'undefined' [String.as:40]
+PASSED: typeof(String.valueOf) == 'function' [String.as:42]
+PASSED: typeof(String.toString) == 'function' [String.as:43]
+PASSED: typeof(String.toUpperCase) == 'undefined' [String.as:48]
+PASSED: typeof(String.toLowerCase) == 'undefined' [String.as:49]
+PASSED: typeof(String.charAt) == 'undefined' [String.as:50]
+PASSED: typeof(String.charCodeAt) == 'undefined' [String.as:51]
+PASSED: typeof(String.concat) == 'undefined' [String.as:52]
+PASSED: typeof(String.indexOf) == 'undefined' [String.as:53]
+PASSED: typeof(String.lastIndexOf) == 'undefined' [String.as:54]
+PASSED: typeof(String.slice) == 'undefined' [String.as:55]
+PASSED: typeof(String.substring) == 'undefined' [String.as:56]
+PASSED: typeof(String.split) == 'undefined' [String.as:57]
+PASSED: typeof(String.substr) == 'undefined' [String.as:58]
+PASSED: typeof(String.fromCharCode) == 'function' [String.as:59]
+PASSED: String.hasOwnProperty('fromCharCode') [String.as:65]
+PASSED: !String.hasOwnProperty('toString') [String.as:66]
+PASSED: !String.hasOwnProperty('valueOf') [String.as:67]
+PASSED: String.hasOwnProperty('__proto__') [String.as:68]
+PASSED: String.prototype.hasOwnProperty('valueOf') [String.as:69]
+PASSED: String.prototype.hasOwnProperty('toString') [String.as:70]
+PASSED: String.prototype.hasOwnProperty('toUpperCase') [String.as:71]
+PASSED: String.prototype.hasOwnProperty('toLowerCase') [String.as:72]
+PASSED: String.prototype.hasOwnProperty('charAt') [String.as:73]
+PASSED: String.prototype.hasOwnProperty('charCodeAt') [String.as:74]
+PASSED: String.prototype.hasOwnProperty('concat') [String.as:75]
+PASSED: String.prototype.hasOwnProperty('indexOf') [String.as:76]
+PASSED: String.prototype.hasOwnProperty('lastIndexOf') [String.as:77]
+PASSED: String.prototype.hasOwnProperty('slice') [String.as:78]
+PASSED: String.prototype.hasOwnProperty('substring') [String.as:79]
+PASSED: String.prototype.hasOwnProperty('split') [String.as:80]
+PASSED: String.prototype.hasOwnProperty('substr') [String.as:81]
+PASSED: !String.prototype.hasOwnProperty('length') [String.as:82]
+PASSED: typeof(String()) == 'string' [String.as:86]
+PASSED: a.length == 20 [String.as:90]
+PASSED: a.hasOwnProperty('length') [String.as:92]
+PASSED: typeof(a) == 'object' [String.as:94]
+PASSED: a instanceof String [String.as:95]
+PASSED: a instanceof Object [String.as:96]
+PASSED: a.charCodeAt(0) == 119 [String.as:97]
+PASSED: a.charCodeAt(1) == 97 [String.as:98]
+PASSED: a.charCodeAt(2) == 108 [String.as:99]
+PASSED: a.charCodeAt(3) == 108 [String.as:100]
+PASSED: a.charCodeAt(4) == 97 [String.as:101]
+PASSED: a.charAt(0) == "w" [String.as:102]
+PASSED: a.charAt(1) == "a" [String.as:103]
+PASSED: a.charAt(2) == "l" [String.as:104]
+PASSED: a.charAt(3) == "l" [String.as:105]
+PASSED: a.charAt(4) == "a" [String.as:106]
+PASSED: a.lastIndexOf("lawa") == 8 [String.as:109]
+PASSED: a.indexOf("lawa") == 3 [String.as:118]
+PASSED: a.indexOf("lawas") == 8 [String.as:119]
+PASSED: a.indexOf("hinG") == 13 [String.as:120]
+PASSED: a.indexOf("hing") == -1 [String.as:121]
+PASSED: a.indexOf("lawas", -1) == 8 [String.as:122]
+PASSED: a.indexOf("a", 2) == 4 [String.as:123]
+PASSED: a.indexOf("a", -1) == 1 [String.as:124]
+PASSED: a.indexOf("a", -2) == 1 [String.as:125]
+PASSED: a.indexOf("l") == 2 [String.as:126]
+PASSED: a.indexOf("l", 2.1) == 2 [String.as:127]
+PASSED: a.indexOf("l", 2.8) == 2 [String.as:128]
+PASSED: a.indexOf("l", 3) == 3 [String.as:129]
+PASSED: a.indexOf("l", 3.5) == 3 [String.as:130]
+PASSED: a.indexOf("l", 3.8) == 3 [String.as:131]
+PASSED: a.indexOf("l", -3.8) == 2 [String.as:132]
+PASSED: a.indexOf("l", -4.8) == 2 [String.as:133]
+PASSED: a.indexOf("l", -4) == 2 [String.as:134]
+PASSED: a.indexOf("a", o) == 4 [String.as:136]
+PASSED: a.indexOf(o2, o) == 4 [String.as:138]
+PASSED: typeof(a.split) == 'function' [String.as:145]
+PASSED: ! a.hasOwnProperty('split') [String.as:146]
+PASSED: a.__proto__.hasOwnProperty('split') [String.as:148]
+PASSED: a.__proto__ == String.prototype [String.as:149]
+PASSED: a.split()[0] == "wallawallawashinGTON" [String.as:152]
+PASSED: a.split().length == 1 [String.as:153]
+PASSED: a.split() instanceof Array [String.as:154]
+PASSED: a.split("w").length == 4 [String.as:155]
+PASSED: a.split("  w").length == 1 [String.as:156]
+PASSED: typeof(ret) == 'object' [String.as:161]
+PASSED: ret instanceof Array [String.as:162]
+PASSED: ret.length == 20 [String.as:163]
+PASSED: ret[0] == "w" [String.as:164]
+PASSED: ret[1] == "a" [String.as:165]
+PASSED: ret[2] == "l" [String.as:166]
+PASSED: ret[3] == "l" [String.as:167]
+PASSED: ret[18] == "O" [String.as:168]
+PASSED: ret[19] == "N" [String.as:169]
+PASSED: a.split("la")[0] == "wal" [String.as:170]
+PASSED: a.split("la")[1] == "wal" [String.as:171]
+PASSED: a.split("la")[2] == "washinGTON" [String.as:172]
+PASSED: a.split("la").length == 3 [String.as:173]
+PASSED: typeof(ret) == 'object' [String.as:189]
+PASSED: ret.length == 1 [String.as:190]
+PASSED: typeof(ret[0]) == 'string' [String.as:191]
+PASSED: ret[0] == '' [String.as:192]
+PASSED: ret.length == 1 [String.as:198]
+PASSED: ret.length == 1 [String.as:204]
+PASSED: ret.length == 1 [String.as:207]
+PASSED: ret.length == 1 [String.as:209]
+PASSED: typeof(ret) == 'object' [String.as:213]
+PASSED: ret.length == 1 [String.as:214]
+PASSED: typeof(ret[0]) == 'string' [String.as:215]
+PASSED: ret[0] == 'abcde' [String.as:216]
+XPASSED: g.length == 0 [String.as:221]
+XPASSED: typeof(g[0]) == "undefined" [String.as:222]
+XPASSED: g[0] == undefined [String.as:223]
+PASSED: g.length == 1 [String.as:233]
+PASSED: typeof(g[0]) == "string" [String.as:234]
+PASSED: g[0] == "" [String.as:235]
+PASSED: g.length == 1 [String.as:244]
+PASSED: typeof(g[0]) == "string" [String.as:245]
+PASSED: g[0] == "" [String.as:246]
+PASSED: g.length == 0 [String.as:251]
+PASSED: typeof(g[0]) == "undefined" [String.as:252]
+PASSED: g[0] == undefined [String.as:253]
+PASSED: g.length == 0 [String.as:263]
+PASSED: typeof(g[0]) == "undefined" [String.as:264]
+PASSED: g[0] == undefined [String.as:265]
+PASSED: g.length == 1 [String.as:269]
+PASSED: typeof(g[0]) == "string" [String.as:270]
+PASSED: g[0] == "f" [String.as:271]
+PASSED: b == "abcd" [String.as:282]
+PASSED: a.toUpperCase() == "WALLAWALLAWASHINGTON" [String.as:289]
+PASSED: a.toLowerCase() == "wallawallawashington" [String.as:290]
+PASSED: a.substr(5,2) == "fg" [String.as:298]
+PASSED: a.substr(5,7) == "fghijkl" [String.as:299]
+PASSED: a.substr(-1,1) == "z" [String.as:300]
+PASSED: a.substr(-2,3) == "yz" [String.as:301]
+PASSED: a.substr(-3,2) == "xy" [String.as:302]
+PASSED: b.substr(3, 6) == "4" [String.as:304]
+PASSED: a.slice(-5,-3) == "vw" [String.as:312]
+PASSED: typeof(a.slice()) == "undefined" [String.as:313]
+PASSED: typeof(a.slice(-5,3)) == "string" [String.as:314]
+PASSED: a.slice(-5,3) == "" [String.as:315]
+PASSED: typeof(a.slice(-10,22)) == "string" [String.as:316]
+PASSED: a.slice(-10,22) == "qrstuv" [String.as:317]
+PASSED: a.slice(0,0) == "" [String.as:318]
+PASSED: a.slice(0,1) == "a" [String.as:319]
+PASSED: a.slice(1,1) == "" [String.as:320]
+PASSED: a.slice(1,2) == "b" [String.as:321]
+PASSED: a.slice.call(a, -5, -3) == "vw" [String.as:323]
+PASSED: String.prototype.slice.call(a, -5, -3) == "vw" [String.as:324]
+PASSED: a.slice(-4) == "wxyz" [String.as:331]
+PASSED: a.substring(5,2) == "cde" [String.as:339]
+PASSED: a.substring(5,7) == "fg" [String.as:340]
+PASSED: a.substring(3,3) == "" [String.as:341]
+PASSED: a.length == 26 [String.as:343]
+PASSED: a.concat("sir ","william",15) == "abcdefghijklmnopqrstuvwxyzsir william15" [String.as:344]
+PASSED: b.substring(3, 6) == "4" [String.as:347]
+PASSED: chr(0) == "" [String.as:354]
+PASSED: chr(65) == "A" [String.as:355]
+PASSED: ord("A") == 65 [String.as:356]
+PASSED: ord("") == 0 [String.as:357]
+PASSED: chr(246) == "ö" [String.as:361]
+PASSED: chr(486) == "Ǧ" [String.as:362]
+PASSED: chr(998) == "Ϧ" [String.as:363]
+PASSED: ord("ö") == 246 [String.as:364]
+PASSED: ord("Ϧ") == 998 [String.as:365]
+PASSED: c == 486 [String.as:393]
+PASSED: c == 998 [String.as:409]
+PASSED: c == "Ϧ" [String.as:427]
+PASSED: c == "徐" [String.as:446]
+PASSED: a.length == 14 [String.as:462]
+PASSED: a.substring(2,4) == "ng" [String.as:463]
+PASSED: a.charAt(1) == "ä" [String.as:464]
+PASSED: a.charAt(2) == "n" [String.as:465]
+PASSED: a.slice(3,5) == "ge" [String.as:466]
+PASSED: a.charCodeAt(9) == 246 [String.as:467]
+PASSED: b == "iao" [String.as:494]
+PASSED: b == "oowa" [String.as:504]
+PASSED: b == "c" [String.as:513]
+PASSED: b == "ciao" [String.as:522]
+PASSED: b == "c" [String.as:531]
+PASSED: b == "" [String.as:540]
+PASSED: b == "l" [String.as:549]
+PASSED: b == "f" [String.as:559]
+PASSED: b == "" [String.as:569]
+PASSED: count1 == 225 [String.as:605]
+PASSED: count2 == 225 [String.as:606]
+PASSED: b == "iao" [String.as:626]
+PASSED: b == "oowa" [String.as:636]
+PASSED: b == "c" [String.as:645]
+PASSED: b == "ciao" [String.as:654]
+PASSED: b == "c" [String.as:663]
+PASSED: b == "" [String.as:672]
+PASSED: b == "l" [String.as:681]
+PASSED: b == "f" [String.as:691]
+PASSED: stringInstance.__proto__ != undefined [String.as:700]
+PASSED: stringInstance.__proto__ == String.prototype [String.as:701]
+PASSED: typeOf(String.prototype.constructor) == 'function' [String.as:702]
+PASSED: String.prototype.constructor == String [String.as:703]
+PASSED: stringInstance.__proto__.constructor == String [String.as:704]
+PASSED: stringInstance instanceof String [String.as:707]
+PASSED: ! "literal string" instanceof String [String.as:708]
+PASSED: typeof(a_string) == "string" [String.as:714]
+PASSED: a_string.substring(0, 4) == "a_st" [String.as:715]
+PASSED: a_string.substring(-3, 4) == "a_st" [String.as:716]
+PASSED: a_string.substring(0, -1) == "" [String.as:717]
+PASSED: a_string.substring(0, 1) == "a" [String.as:718]
+PASSED: a_string.substring(4) == "ring" [String.as:719]
+PASSED: a_string.substring(16) == "" [String.as:720]
+PASSED: a_string.substring(-16) == "a_string" [String.as:721]
+PASSED: a_string.toUpperCase() == "A_STRING" [String.as:722]
+PASSED: a_string.indexOf("hing") == -1 [String.as:723]
+PASSED: a_string.indexOf("string") == 2 [String.as:724]
+PASSED: a_string.charCodeAt(0) == 97 [String.as:725]
+PASSED: a_string.substring(0, 1) == "" [String.as:727]
+PASSED: a_string.length == 10 [String.as:731]
+PASSED: a_string.length == 10 [String.as:733]
+PASSED: a_string == "1234567890" [String.as:734]
+PASSED: a+b == "onetwo" [String.as:742]
+PASSED: b+c == "two[object Object]" [String.as:745]
+PASSED: b+c == "twoone" [String.as:750]
+PASSED: c.toString != prevToStringFunc [String.as:755]
+PASSED: b+c == "two[type Object]" [String.as:757]
+PASSED: typeof(c.toString) == 'function' [String.as:761]
+PASSED: b+c == "two[type Object]" [String.as:762]
+PASSED: typeof(c.toString) == 'undefined' [String.as:766]
+PASSED: b+c == "two[type Object]" [String.as:767]
+PASSED: typeof(stringObject.valueOf) == 'function' [String.as:770]
+PASSED: stringObject.valueOf == String.prototype.valueOf [String.as:771]
+PASSED: stringObject.valueOf != Object.prototype.valueOf [String.as:774]
+PASSED: String.prototype.hasOwnProperty('valueOf') [String.as:775]
+PASSED: typeof(stringObject.valueOf()) == 'string' [String.as:778]
+PASSED: stringObject == "1234" [String.as:779]
+PASSED: stringObject == 1234 [String.as:780]
+PASSED: 1234 == stringObject [String.as:781]
+PASSED: stringObject != numberObject [String.as:784]
+PASSED: numberObject.toString() == stringObject [String.as:788]
+PASSED: numberObject.toString() == stringObject.toString() [String.as:789]
+PASSED: typeof(Object.prototype.toString) == 'function' [String.as:796]
+PASSED: typeof(s.toString) == 'function' [String.as:797]
+PASSED: ! delete String.prototype.toString [String.as:798]
+PASSED: delete String.prototype.toString [String.as:801]
+PASSED: typeof(s.toString) == 'function' [String.as:802]
+PASSED: !delete Object.prototype.toString [String.as:803]
+PASSED: delete Object.prototype.toString [String.as:806]
+PASSED: typeof(s.toString) == 'undefined' [String.as:807]
+PASSED: r == "s:hello" [String.as:817]
+PASSED: r == "s:" [String.as:821]
+PASSED: a.length == 3 [String.as:828]
+PASSED: a.length == 3 [String.as:830]
+PASSED: a.length == 3 [String.as:832]
+PASSED: a.length == 2 [String.as:834]
+PASSED: a == "123" [String.as:835]
+PASSED: a.length == "another string" [String.as:837]
+PASSED: a.length == "another string" [String.as:839]
+PASSED: a.hasOwnProperty('length') [String.as:841]
+PASSED: a.toString() == "toString" [String.as:850]
+PASSED: a.toString() == "toString" [String.as:858]
+PASSED: typeof(String.__proto__) == 'object' [String.as:860]
+PASSED: typeof(Object.prototype) == 'object' [String.as:861]
+PASSED: String.gotcha == 1 [String.as:863]
+PASSED: !String.__proto__.hasOwnProperty("gotcha") [String.as:865]
+PASSED: String.__proto__.__proto__.hasOwnProperty("gotcha") [String.as:866]
+PASSED: String.__proto__.__proto__ == Object.prototype [String.as:867]
+PASSED: a.toString() == "gotcha,toString" [String.as:870]
+check_totals: 274
diff --git a/test/gnash/actionscript.all/pending/String.as b/test/gnash/actionscript.all/pending/String.as
new file mode 100644
index 0000000..d1fd0af
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/String.as
@@ -0,0 +1,905 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+// 
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Original author: Mike Carlson - June 19th, 2006
+
+
+rcsid="$Id: String.as,v 1.56 2008/04/25 11:11:08 bwy Exp $";
+#include "check.as"
+
+check_equals(typeof(String), 'function');
+check_equals(typeof(String.prototype), 'object');
+check_equals(String.__proto__, Function.prototype); // both undefined in swf5
+check_equals(typeof(String.prototype.valueOf), 'function');
+check_equals(typeof(String.prototype.toString), 'function');
+check_equals(typeof(String.prototype.toUpperCase), 'function');
+check_equals(typeof(String.prototype.toLowerCase), 'function');
+check_equals(typeof(String.prototype.charAt), 'function');
+check_equals(typeof(String.prototype.charCodeAt), 'function');
+check_equals(typeof(String.prototype.concat), 'function');
+check_equals(typeof(String.prototype.indexOf), 'function');
+check_equals(typeof(String.prototype.lastIndexOf), 'function');
+check_equals(typeof(String.prototype.slice), 'function');
+check_equals(typeof(String.prototype.substring), 'function');
+check_equals(typeof(String.prototype.split), 'function');
+check_equals(typeof(String.prototype.substr), 'function');
+check_equals(typeof(String.prototype.length), 'undefined');
+check_equals(typeof(String.prototype.fromCharCode), 'undefined');
+#if OUTPUT_VERSION > 5
+ check_equals(typeof(String.valueOf), 'function');
+ check_equals(typeof(String.toString), 'function');
+#else
+ check_equals(typeof(String.valueOf), 'undefined');
+ check_equals(typeof(String.toString), 'undefined');
+#endif
+check_equals(typeof(String.toUpperCase), 'undefined');
+check_equals(typeof(String.toLowerCase), 'undefined');
+check_equals(typeof(String.charAt), 'undefined');
+check_equals(typeof(String.charCodeAt), 'undefined');
+check_equals(typeof(String.concat), 'undefined');
+check_equals(typeof(String.indexOf), 'undefined');
+check_equals(typeof(String.lastIndexOf), 'undefined');
+check_equals(typeof(String.slice), 'undefined');
+check_equals(typeof(String.substring), 'undefined');
+check_equals(typeof(String.split), 'undefined');
+check_equals(typeof(String.substr), 'undefined');
+check_equals(typeof(String.fromCharCode), 'function');
+
+#if OUTPUT_VERSION > 5
+
+// Tests for SWF5 at the end of the file.
+
+check(String.hasOwnProperty('fromCharCode'));
+check(!String.hasOwnProperty('toString'));
+check(!String.hasOwnProperty('valueOf'));
+check(String.hasOwnProperty('__proto__'));
+check(String.prototype.hasOwnProperty('valueOf'));
+check(String.prototype.hasOwnProperty('toString'));
+check(String.prototype.hasOwnProperty('toUpperCase'));
+check(String.prototype.hasOwnProperty('toLowerCase'));
+check(String.prototype.hasOwnProperty('charAt'));
+check(String.prototype.hasOwnProperty('charCodeAt'));
+check(String.prototype.hasOwnProperty('concat'));
+check(String.prototype.hasOwnProperty('indexOf'));
+check(String.prototype.hasOwnProperty('lastIndexOf'));
+check(String.prototype.hasOwnProperty('slice'));
+check(String.prototype.hasOwnProperty('substring'));
+check(String.prototype.hasOwnProperty('split'));
+check(String.prototype.hasOwnProperty('substr'));
+check(!String.prototype.hasOwnProperty('length'));
+
+#endif
+
+check_equals(typeof(String()), 'string');
+
+var a;
+a = new String("wallawallawashinGTON");
+check_equals(a.length, 20);
+#if OUTPUT_VERSION > 5
+check(a.hasOwnProperty('length'));
+#endif
+check_equals(typeof(a), 'object');
+check(a instanceof String);
+check(a instanceof Object);
+check_equals ( a.charCodeAt(0), 119 );
+check_equals ( a.charCodeAt(1), 97 );
+check_equals ( a.charCodeAt(2), 108 );
+check_equals ( a.charCodeAt(3), 108 );
+check_equals ( a.charCodeAt(4), 97 );
+check_equals ( a.charAt(0), "w" );
+check_equals ( a.charAt(1), "a" );
+check_equals ( a.charAt(2), "l" );
+check_equals ( a.charAt(3), "l" );
+check_equals ( a.charAt(4), "a" );
+isNaN ( a.charAt(-1) );
+isNaN (a.charAt(21) );
+check_equals ( a.lastIndexOf("lawa"), 8);
+
+//----------------------------------------
+// Check String.indexOf
+// TODO: test with ASnative(251,8)
+//-----------------------------------------
+
+
+// wallawallawashinGTON
+check_equals ( a.indexOf("lawa"), 3 );
+check_equals ( a.indexOf("lawas"), 8 );
+check_equals ( a.indexOf("hinG"), 13 );
+check_equals ( a.indexOf("hing"), -1 );
+check_equals ( a.indexOf("lawas", -1), 8 );
+check_equals ( a.indexOf("a", 2), 4 );
+check_equals ( a.indexOf("a", -1), 1 ); 
+check_equals ( a.indexOf("a", -2), 1 ); 
+check_equals ( a.indexOf("l"), 2 ); 
+check_equals ( a.indexOf("l", 2.1), 2 ); 
+check_equals ( a.indexOf("l", 2.8), 2 ); 
+check_equals ( a.indexOf("l", 3), 3 ); 
+check_equals ( a.indexOf("l", 3.5), 3 ); 
+check_equals ( a.indexOf("l", 3.8), 3 ); 
+check_equals ( a.indexOf("l", -3.8), 2 ); 
+check_equals ( a.indexOf("l", -4.8), 2 ); 
+check_equals ( a.indexOf("l", -4), 2 ); 
+o = {}; o.valueOf = function() { return 2; };
+check_equals ( a.indexOf("a", o), 4 ); 
+o2 = {}; o2.toString = function() { return "a"; };
+check_equals ( a.indexOf(o2, o), 4 ); 
+
+//----------------------------------------
+// Check String.split
+// TODO: test with ASnative(251,12)
+//-----------------------------------------
+
+check_equals ( typeof(a.split), 'function' );
+check ( ! a.hasOwnProperty('split') );
+#if OUTPUT_VERSION > 5
+check ( a.__proto__.hasOwnProperty('split') );
+check ( a.__proto__ == String.prototype );
+#endif
+
+check_equals ( a.split()[0], "wallawallawashinGTON" );
+check_equals ( a.split().length, 1 );
+check ( a.split() instanceof Array );
+check_equals ( a.split("w").length, 4);
+check_equals ( a.split("  w").length, 1);
+
+#if OUTPUT_VERSION > 5
+// TODO: check more of split(''), it seems to be bogus !
+ret = a.split('');
+check_equals(typeof(ret), 'object');
+check(ret instanceof Array);
+check_equals( ret.length, 20 );
+check_equals ( ret[0], "w" );
+check_equals ( ret[1], "a" );
+check_equals ( ret[2], "l" );
+check_equals ( ret[3], "l" );
+check_equals ( ret[18], "O" );
+check_equals ( ret[19], "N" );
+check_equals ( a.split("la")[0], "wal" );
+check_equals ( a.split("la")[1], "wal" );
+check_equals ( a.split("la")[2], "washinGTON" );
+check_equals ( a.split("la").length, 3 );
+#else
+// empty delimiter doesn't have a special meaning in SWF5
+check_equals ( a.split("")[0], "wallawallawashinGTON" );
+check_equals ( a.split("")[19], undefined );
+// mulit-char delimiter doesn't work in SWF5
+check_equals ( a.split("la")[0], "wallawallawashinGTON" );
+check_equals ( a.split("la")[1], undefined );
+check_equals ( a.split("la")[2], undefined );
+check_equals ( a.split("la").length, 1 );
+#endif
+
+// TODO: test String.split(delim, limit)  [ second arg ]
+
+primitiveString = '';
+ret = primitiveString.split('x');
+check_equals(typeof(ret), 'object');
+check_equals(ret.length, 1);
+check_equals(typeof(ret[0]), 'string');
+check_equals(ret[0], '');
+
+ret = primitiveString.split('x', -1);
+#if OUTPUT_VERSION < 6
+	check_equals(ret.length, 0); 
+#else // OUTPUT_VERSION >= 6
+	check_equals(ret.length, 1); 
+#endif // OUTPUT_VERSION >= 6
+ret = primitiveString.split('x', 0);
+#if OUTPUT_VERSION < 6
+	check_equals(ret.length, 0); 
+#else // OUTPUT_VERSION >= 6
+	check_equals(ret.length, 1); 
+#endif // OUTPUT_VERSION >= 6
+ret = primitiveString.split('x', 1);
+check_equals(ret.length, 1);
+ret = primitiveString.split('x', 2);
+check_equals(ret.length, 1);
+
+primitiveString = 'abcde';
+ret = primitiveString.split('x');
+check_equals(typeof(ret), 'object');
+check_equals(ret.length, 1);
+check_equals(typeof(ret[0]), 'string');
+check_equals(ret[0], 'abcde');
+
+st = "";
+g = st.split("", 0);
+#if OUTPUT_VERSION > 5
+xcheck_equals(g.length, 0);
+xcheck_equals(typeof(g[0]), "undefined");
+xcheck_equals(g[0], undefined);
+#else
+check_equals(g.length, 1);
+check_equals(typeof(g[0]), "string");
+check_equals(g[0], "");
+#endif
+
+st = "";
+g = st.split("x", 0);
+#if OUTPUT_VERSION > 5
+check_equals(g.length, 1);
+check_equals(typeof(g[0]), "string");
+check_equals(g[0], "");
+#else
+check_equals(g.length, 0);
+check_equals(typeof(g[0]), "undefined");
+check_equals(g[0], undefined);
+#endif
+
+st = "";
+g = st.split("x", 1);
+check_equals(g.length, 1);
+check_equals(typeof(g[0]), "string");
+check_equals(g[0], "");
+
+st = "f";
+g = st.split("", 0);
+#if OUTPUT_VERSION > 5
+check_equals(g.length, 0);
+check_equals(typeof(g[0]), "undefined");
+check_equals(g[0], undefined);
+#else
+check_equals(g.length, 1);
+check_equals(typeof(g[0]), "string");
+check_equals(g[0], "f");
+#endif
+
+
+st = "f";
+g = st.split("x", 0);
+check_equals(g.length, 0);
+check_equals(typeof(g[0]), "undefined");
+check_equals(g[0], undefined);
+
+st = "f";
+g = st.split("x", 1);
+check_equals(g.length, 1);
+check_equals(typeof(g[0]), "string");
+check_equals(g[0], "f");
+
+
+//----------------------------------------
+// Check String.fromCharCode
+// TODO: test with ASnative(251,14)
+//-----------------------------------------
+
+
+// This is the correct usage pattern
+var b = String.fromCharCode(97,98,99,100);
+check_equals ( b, "abcd" );
+
+//-------------------------------------------
+// Check String.toUpperCase and toLowerCase
+// TODO: test with ASnative(251,3)
+//-------------------------------------------
+
+check_equals ( a.toUpperCase(), "WALLAWALLAWASHINGTON" );
+check_equals ( a.toLowerCase(), "wallawallawashington" );
+
+//-------------------------------------------
+// Check substr 
+// TODO: test with ASnative(251,13)
+//-------------------------------------------
+
+a = new String("abcdefghijklmnopqrstuvwxyz");
+check_equals ( a.substr(5,2), "fg" );
+check_equals ( a.substr(5,7), "fghijkl" );
+check_equals ( a.substr(-1,1), "z" );
+check_equals ( a.substr(-2,3), "yz" );
+check_equals ( a.substr(-3,2), "xy" );
+var b = new String("1234");
+check_equals ( b.substr(3, 6), "4");
+
+//-------------------------------------------
+// Check slice 
+// TODO: test with ASnative(251,10)
+//-------------------------------------------
+
+a = new String("abcdefghijklmnopqrstuvwxyz");
+check_equals ( a.slice(-5,-3), "vw" );
+check_equals ( typeof(a.slice()), "undefined" );
+check_equals ( typeof(a.slice(-5,3)), "string" );
+check_equals ( a.slice(-5,3), "" );
+check_equals ( typeof(a.slice(-10,22)), "string" );
+check_equals ( a.slice(-10,22), "qrstuv" );
+check_equals ( a.slice(0,0), "" );
+check_equals ( a.slice(0,1), "a" );
+check_equals ( a.slice(1,1), "" );
+check_equals ( a.slice(1,2), "b" );
+#if OUTPUT_VERSION > 5
+check_equals ( a.slice.call(a, -5, -3), "vw" );
+check_equals ( String.prototype.slice.call(a, -5, -3), "vw" );
+#else
+// There was no 'call' or 'apply' thing up to SWF5
+// Actually, there was no Function interface at all!
+check_equals ( a.slice.call(a, -5, -3), undefined );
+check_equals ( String.prototype.slice.call(a, -5, -3), undefined );
+#endif
+check_equals ( a.slice(-4), "wxyz" );
+
+//-------------------------------------------
+// Check substring
+// TODO: test with ASnative(251,11)
+//-------------------------------------------
+
+a = new String("abcdefghijklmnopqrstuvwxyz");
+check_equals ( a.substring(5,2), "cde" );
+check_equals ( a.substring(5,7), "fg" );
+check_equals ( a.substring(3,3), "" );
+
+check_equals ( a.length, 26 );
+check_equals ( a.concat("sir ","william",15), "abcdefghijklmnopqrstuvwxyzsir william15");
+
+var b = new String("1234");
+check_equals ( b.substring(3, 6), "4");
+
+
+//-------------------------------------------
+// Chr and ord
+//-------------------------------------------
+
+check_equals (chr(0), "");
+check_equals (chr(65), "A");
+check_equals (ord("A"), 65);
+check_equals (ord(""), 0);
+
+// Chars greater than 128
+#if OUTPUT_VERSION > 5
+check_equals (chr(246), "ö");
+check_equals (chr(486), "Ǧ");
+check_equals (chr(998), "Ϧ");
+check_equals (ord("ö"), 246);
+check_equals (ord("Ϧ"), 998);
+#else // version <= 5
+check_equals (typeof(chr(486)), 'string');
+check_equals (chr(865), "a");
+check_equals (ord("ö"), 195);
+check_equals (ord("Ö"), 195);
+check_equals (ord("ǵ"), 199);
+check_equals (ord("Ϧ"), 207);
+#endif
+
+//-------------------------------------------
+// Mbchr and mbord
+//-------------------------------------------
+
+// All versions, especially 5:
+var c;
+
+i = "Ǧ";
+
+asm {
+    push "c"   
+    push "i"   
+    getvariable
+    mbord  
+    setvariable
+};
+
+#if OUTPUT_VERSION > 5
+check_equals (c, 486);
+#else
+xcheck_equals (c, 199);
+#endif
+
+i = "Ϧ";
+
+asm {
+    push "c"   
+    push "i"   
+    getvariable
+    mbord  
+    setvariable
+};
+
+#if OUTPUT_VERSION > 5
+check_equals (c, 998);
+#else
+xcheck_equals (c, 207);
+#endif
+
+// And the reverse procedure:
+
+i = 998;
+
+asm {
+    push "c"   
+    push "i"   
+    getvariable
+    mbchr  
+    setvariable
+};
+
+#if OUTPUT_VERSION > 5
+check_equals (c, "Ϧ");
+#else
+check_equals (typeof(c), "string"); 
+// c == "" fails, but when displayed it evaluates to the empty string
+#endif
+
+// Should return the same as mbchr(90000 - 65536) 
+
+i = 90000;
+
+asm {
+    push "c"   
+    push "i"   
+    getvariable
+    mbchr  
+    setvariable
+};
+
+#if OUTPUT_VERSION > 5
+check_equals (c, "徐");
+#else
+check_equals (typeof(c), "string");
+// c == "" fails, but when displayed it evaluates to the empty string
+#endif
+
+//-------------------------------------------
+// Check multi-byte chars with all string
+// functions
+//-------------------------------------------
+
+// These tests are only correct with SWF6 and above.
+
+var a = new String("Längere Wörter");
+
+#if OUTPUT_VERSION > 5
+check_equals (a.length, 14);
+check_equals (a.substring(2,4), "ng");
+check_equals (a.charAt(1), "ä");
+check_equals (a.charAt(2), "n");
+check_equals (a.slice(3,5), "ge");
+check_equals (a.charCodeAt(9), 246);
+#else
+check_equals (a.length, 16);
+check_equals (a.slice(3,5), "ng");
+check_equals (a.charCodeAt(10), 195);
+#endif
+
+//-----------------------------------------------------------
+// Test SWFACTION_SUBSTRING
+//-----------------------------------------------------------
+
+// see check.as
+#ifdef MING_SUPPORTS_ASM
+
+// We need ming-0.4.0beta2 or later for this to work...
+// This is the only way to generate an SWFACTION_SUBSTRING
+// tag (the calls above generate a CALLMETHOD tag)
+//
+asm {
+	push "b"
+	push "ciao"
+	push "2"
+	push "10" // size is bigger then string length,
+	          // we expect the interpreter to adjust it
+	substring
+	setvariable
+};
+check_equals( b, "iao");
+asm {
+	push "b"
+	push "boowa"
+	push "2"
+	push "-1" // size is bigger then string length,
+	          // we expect the interpreter to adjust it
+	substring
+	setvariable
+};
+check_equals( b, "oowa");
+asm {
+	push "b"
+	push "ciao"
+	push "-2" // negative base should be interpreted as 1
+	push "1" 
+	substring
+	setvariable
+};
+check_equals( b, "c");
+asm {
+	push "b"
+	push "ciao"
+	push "-2" // negative base should be interpreted as 1
+	push "10" // long size reduced 
+	substring
+	setvariable
+};
+check_equals( b, "ciao");
+asm {
+	push "b"
+	push "ciao"
+	push "0" // zero base is invalid, but taken as 1
+	push "1" 
+	substring
+	setvariable
+};
+check_equals( b, "c");
+asm {
+	push "b"
+	push "ciao"
+	push "10" // too large base ...
+	push "1" 
+	substring
+	setvariable
+};
+check_equals( b, "");
+asm {
+	push "b"
+	push "all"
+	push "3" // base is 1-based!
+	push "1" 
+	substring
+	setvariable
+};
+check_equals( b, "l");
+
+asm {
+	push "b"
+	push "f"
+	push "1" 
+	push "1" 
+	substring
+	setvariable
+};
+check_equals( b, "f");
+
+asm {
+	push "b"
+	push ""
+	push "0" 
+	push "1" 
+	substring
+	setvariable
+};
+check_equals( b, "");
+
+teststr = "Heöllo";
+count1 = 0;
+count2 = 0;
+
+for (i = -5; i < 10; i++)
+{
+    for (j = -5; j < 10; j++)
+    {
+        asm {
+            push "a"
+            push "teststr"
+            getvariable
+            push "i"
+            getvariable
+            push "j"
+            getvariable
+            substring
+            setvariable
+        };
+        
+        b = teststr.substr( i >= 1 ? i - 1 : 0, j >= 0 ? j : teststr.length);
+
+        // Test for undefined.
+        c = teststr.substr( i >= 1 ? i - 1 : 0, j >= 0 ? j : teststr.undef());
+        
+        // There are 225 tests
+        if (a == b) count1++;
+        else note(i + " : " + j + " -- " + a + ":" + b);
+
+        if (b == c) count2++;
+
+    }
+}
+
+check_equals (count1, 225); // String.substr / substring consistency
+check_equals (count2, 225); // undefined value same as no value passed (or length of string)
+
+#endif
+
+//-----------------------------------------------------------
+// Test SWFACTION_MBSUBSTRING
+//-----------------------------------------------------------
+
+// see check.as
+#ifdef MING_SUPPORTS_ASM
+
+asm {
+	push "b"
+	push "ciao"
+	push "2"
+	push "10" // size is bigger then string length,
+	          // we expect the interpreter to adjust it
+	mbsubstring
+	setvariable
+};
+check_equals( b, "iao");
+asm {
+	push "b"
+	push "boowa"
+	push "2"
+	push "-1" // size is bigger then string length,
+	          // we expect the interpreter to adjust it
+	mbsubstring
+	setvariable
+};
+check_equals( b, "oowa");
+asm {
+	push "b"
+	push "ciao"
+	push "-2" // negative base should be interpreted as 1
+	push "1" 
+	mbsubstring
+	setvariable
+};
+check_equals( b, "c");
+asm {
+	push "b"
+	push "ciao"
+	push "-2" // negative base should be interpreted as 1
+	push "10" // long size reduced 
+	mbsubstring
+	setvariable
+};
+check_equals( b, "ciao");
+asm {
+	push "b"
+	push "ciao"
+	push "0" // zero base is invalid, but taken as 1
+	push "1" 
+	mbsubstring
+	setvariable
+};
+check_equals( b, "c");
+asm {
+	push "b"
+	push "ciao"
+	push "10" // too large base ...
+	push "1" 
+	mbsubstring
+	setvariable
+};
+check_equals( b, "");
+asm {
+	push "b"
+	push "all"
+	push "3" // base is 1-based!
+	push "1" 
+	mbsubstring
+	setvariable
+};
+check_equals( b, "l");
+
+asm {
+	push "b"
+	push "f"
+	push "1" 
+	push "1" 
+	mbsubstring
+	setvariable
+};
+check_equals( b, "f");
+
+#endif
+
+//-----------------------------------------------------------
+// Test inheritance with built-in functions
+//-----------------------------------------------------------
+
+var stringInstance = new String();
+check (stringInstance.__proto__ != undefined);
+check (stringInstance.__proto__ == String.prototype);
+check_equals (typeOf(String.prototype.constructor), 'function');
+check (String.prototype.constructor == String);
+check (stringInstance.__proto__.constructor == String);
+
+// Test the instanceof operator
+check ( stringInstance instanceof String );
+check ( ! "literal string" instanceof String );
+
+// Test automatic cast of string values to String objects
+// this should happen automatically when invoking methods
+// on a primitive string type
+var a_string = "a_string";
+check_equals(typeof(a_string), "string");
+check_equals (a_string.substring(0, 4), "a_st");
+check_equals (a_string.substring(-3, 4), "a_st");
+check_equals (a_string.substring(0, -1), "");
+check_equals (a_string.substring(0, 1), "a");
+check_equals (a_string.substring(4), "ring");
+check_equals (a_string.substring(16), "");
+check_equals (a_string.substring(-16), "a_string");
+check_equals (a_string.toUpperCase(), "A_STRING");
+check_equals (a_string.indexOf("hing"), -1 );
+check_equals (a_string.indexOf("string"), 2 );
+check_equals (a_string.charCodeAt(0), 97 );
+a_string = ""; // empty
+check_equals (a_string.substring(0, 1), "");
+
+// Test String.length not being overridable
+a_string = "1234567890";
+check_equals(a_string.length, 10);
+a_string.length = 4;
+check_equals(a_string.length, 10);
+check_equals(a_string, "1234567890");
+
+
+//----------------------------------------------------
+// Test automatic string conversion when adding stuff
+//-----------------------------------------------------
+a = "one";
+b = "two";
+check_equals(a+b, "onetwo");
+c = new Object();
+
+check_equals(b+c, "two[object Object]");
+
+// check that calls to toString() use the current environment
+c.toString = function() { return a; };
+prevToStringFunc = c.toString;
+check_equals(b+c, "twoone");
+
+// this won't be used as a valid toString method !
+c.toString = function() { return 4; };
+#if OUTPUT_VERSION >= 6
+check(c.toString != prevToStringFunc);
+#endif
+check_equals(b+c, "two[type Object]");
+
+ObjectProtoToStringBackup = Object.prototype.toString;
+Object.prototype.toString = undefined;
+check_equals(typeof(c.toString), 'function');
+check_equals(b+c, "two[type Object]");
+Object.prototype.toString = ObjectProtoToStringBackup;
+
+c.toString = undefined;
+check_equals(typeof(c.toString), 'undefined');
+check_equals(b+c, "two[type Object]");
+
+stringObject = new String("1234");
+check_equals(typeof(stringObject.valueOf), 'function');
+check_equals(stringObject.valueOf, String.prototype.valueOf);
+
+#if OUTPUT_VERSION > 5
+check(stringObject.valueOf != Object.prototype.valueOf);
+check(String.prototype.hasOwnProperty('valueOf'));
+#endif
+
+check_equals(typeof(stringObject.valueOf()), 'string');
+check_equals(stringObject, "1234");
+check_equals(stringObject, 1234);
+check_equals(1234, stringObject);
+numberObject = new Number(1234);
+#if OUTPUT_VERSION >= 6
+check(stringObject != numberObject);
+#else
+check_equals(stringObject, numberObject); // SWF5 always converts to primitive before comparison !!
+#endif
+check_equals(numberObject.toString(), stringObject);
+check_equals(numberObject.toString(), stringObject.toString());
+
+//----------------------------------------------------------------------
+// Drop the toString method of a string (also a test for ASSetPropFlags)
+//----------------------------------------------------------------------
+
+s = new String("a");
+check_equals(typeof(Object.prototype.toString), 'function');
+check_equals(typeof(s.toString), 'function');
+check(! delete String.prototype.toString);
+ASSetPropFlags(String.prototype, "toString", 0, 2); // unprotect from deletion
+StringProtoToStringBackup = String.prototype.toString;
+check(delete String.prototype.toString);
+check_equals(typeof(s.toString), 'function');
+check(!delete Object.prototype.toString);
+ASSetPropFlags(Object.prototype, "toString", 0, 2); // unprotect from deletion
+ObjectProtoToStringBackup = Object.prototype.toString;
+check(delete Object.prototype.toString);
+check_equals(typeof(s.toString), 'undefined');
+Object.prototype.toString = ObjectProtoToStringBackup;
+String.prototype.toString = StringProtoToStringBackup;
+
+//----------------------------------------------------------------------
+// Test concatenation of string objects
+//----------------------------------------------------------------------
+
+s = new String("hello");
+r = "s:"+s;
+check_equals(r, "s:hello");
+
+s = new String("");
+r = "s:"+s;
+check_equals(r, "s:");
+
+//----------------------------------------------------------------------
+// Test the 'length' property
+//----------------------------------------------------------------------
+
+a = "123";
+check_equals(a.length, 3);
+a.length = 2;
+check_equals(a.length, 3); // well, it's a string after all, not an object
+a = new String("123");
+check_equals(a.length, 3);
+a.length = 2;
+check_equals(a.length, 2); // can override
+check_equals(a, "123"); // not changing the actual string
+a.length = "another string";
+check_equals(a.length, "another string"); // can also be of a different type
+delete a["length"];
+check_equals(a.length, "another string"); // can't be deleted
+#if OUTPUT_VERSION > 5
+ check(a.hasOwnProperty('length'));
+#endif
+
+//----------------------------------------------------------------------
+// Test that __proto__ is only hidden, but still existing , in SWF5
+//----------------------------------------------------------------------
+
+a=new Array(); for (v in String) a.push(v); a.sort();
+#if OUTPUT_VERSION > 5
+ check_equals(a.toString(), "toString");
+#else
+ check_equals(a.length, 0);
+#endif
+
+ASSetPropFlags(String, "__proto__", 0, 128); // unhide String.__proto__
+
+a=new Array(); for (v in String) a.push(v); a.sort();
+check_equals(a.toString(), "toString"); 
+
+check_equals(typeof(String.__proto__), 'object'); 
+check_equals(typeof(Object.prototype), 'object');
+Object.prototype.gotcha = 1;
+check_equals(String.gotcha, 1);
+ASSetPropFlags(Object.prototype, "hasOwnProperty", 0, 128); // unhide Object.prototype.hasOwnProperty
+check(!String.__proto__.hasOwnProperty("gotcha"));
+check(String.__proto__.__proto__.hasOwnProperty("gotcha")); // function
+check_equals(String.__proto__.__proto__, Object.prototype);  // hasOwnProperty doesn't exist in gnash !
+
+a=new Array(); for (v in String) a.push(v); a.sort();
+check_equals(a.toString(), "gotcha,toString"); 
+
+#if OUTPUT_VERSION == 5
+// This here to avoid changing SWF5 String properties
+// before testing them.
+
+String.prototype.hasOwnProperty = ASnative(101, 5);
+String.hasOwnProperty = ASnative(101, 5);
+
+check(!String.hasOwnProperty('toString'));
+check(!String.hasOwnProperty('valueOf'));
+check(String.hasOwnProperty('__proto__'));
+check(String.hasOwnProperty('fromCharCode'));
+
+check(String.prototype.hasOwnProperty('valueOf'));
+check(String.prototype.hasOwnProperty('toString'));
+check(String.prototype.hasOwnProperty('toUpperCase'));
+check(String.prototype.hasOwnProperty('toLowerCase'));
+check(String.prototype.hasOwnProperty('charAt'));
+check(String.prototype.hasOwnProperty('charCodeAt'));
+check(String.prototype.hasOwnProperty('concat'));
+check(String.prototype.hasOwnProperty('indexOf'));
+check(String.prototype.hasOwnProperty('lastIndexOf'));
+check(String.prototype.hasOwnProperty('slice'));
+check(String.prototype.hasOwnProperty('substring'));
+check(String.prototype.hasOwnProperty('split'));
+check(String.prototype.hasOwnProperty('substr'));
+check(!String.prototype.hasOwnProperty('length'));
+
+#endif
+
+#if OUTPUT_VERSION < 6
+ check_totals(258);
+#else
+ check_totals(274);
+#endif
diff --git a/test/gnash/actionscript.all/pending/TextField-5.swf b/test/gnash/actionscript.all/pending/TextField-5.swf
new file mode 100644
index 0000000..8fc128d
Binary files /dev/null and b/test/gnash/actionscript.all/pending/TextField-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/TextField-5.swf.trace b/test/gnash/actionscript.all/pending/TextField-5.swf.trace
new file mode 100644
index 0000000..abd55c7
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/TextField-5.swf.trace
@@ -0,0 +1 @@
+totals
diff --git a/test/gnash/actionscript.all/pending/TextField-6.swf b/test/gnash/actionscript.all/pending/TextField-6.swf
new file mode 100644
index 0000000..98152e2
Binary files /dev/null and b/test/gnash/actionscript.all/pending/TextField-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/TextField-6.swf.trace b/test/gnash/actionscript.all/pending/TextField-6.swf.trace
new file mode 100644
index 0000000..b5e33a4
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/TextField-6.swf.trace
@@ -0,0 +1,420 @@
+PASSED: typeof(TextField) == 'function' [TextField.as:28]
+PASSED: typeof(TextField.prototype) == 'object' [TextField.as:29]
+PASSED: typeof(TextField.prototype.__proto__) == 'object' [TextField.as:30]
+PASSED: TextField.prototype.__proto__ == Object.prototype [TextField.as:31]
+PASSED: typeof(TextField.prototype.setTextFormat) == 'function' [TextField.as:32]
+PASSED: typeof(TextField.prototype.getTextFormat) == 'function' [TextField.as:33]
+PASSED: typeof(TextField.prototype.setNewTextFormat) == 'function' [TextField.as:34]
+PASSED: typeof(TextField.prototype.getNewTextFormat) == 'function' [TextField.as:35]
+PASSED: typeof(TextField.prototype.getDepth) == 'function' [TextField.as:36]
+PASSED: typeof(TextField.prototype.removeTextField) == 'function' [TextField.as:37]
+PASSED: typeof(TextField.prototype.replaceSel) == 'function' [TextField.as:38]
+PASSED: typeof(TextField.prototype.addListener) == 'function' [TextField.as:42]
+PASSED: typeof(TextField.prototype.removeListener) == 'function' [TextField.as:43]
+PASSED: typeof(TextField.prototype.broadcastMessage) == 'function' [TextField.as:44]
+PASSED: TextField.prototype.hasOwnProperty("_listeners") [TextField.as:45]
+PASSED: typeof(TextField.prototype._listeners) == 'object' [TextField.as:46]
+PASSED: TextField.prototype._listeners instanceof Array [TextField.as:47]
+PASSED: TextField.prototype._listeners.length == 0 [TextField.as:48]
+XPASSED: !TextField.prototype.hasOwnProperty('background') [TextField.as:51]
+XPASSED: !TextField.prototype.hasOwnProperty('backgroundColor') [TextField.as:52]
+XPASSED: !TextField.prototype.hasOwnProperty('autoSize') [TextField.as:53]
+XPASSED: !TextField.prototype.hasOwnProperty('border') [TextField.as:54]
+XPASSED: !TextField.prototype.hasOwnProperty('borderColor') [TextField.as:55]
+PASSED: !TextField.prototype.hasOwnProperty('bottomScroll') [TextField.as:56]
+XPASSED: !TextField.prototype.hasOwnProperty('embedFonts') [TextField.as:57]
+PASSED: !TextField.prototype.hasOwnProperty('hscroll') [TextField.as:58]
+XPASSED: !TextField.prototype.hasOwnProperty('html') [TextField.as:59]
+PASSED: !TextField.prototype.hasOwnProperty('htmlText') [TextField.as:60]
+XPASSED: !TextField.prototype.hasOwnProperty('length') [TextField.as:61]
+PASSED: !TextField.prototype.hasOwnProperty('maxChars') [TextField.as:62]
+PASSED: !TextField.prototype.hasOwnProperty('maxhscroll') [TextField.as:63]
+PASSED: !TextField.prototype.hasOwnProperty('maxscroll') [TextField.as:64]
+PASSED: !TextField.prototype.hasOwnProperty('multiline') [TextField.as:65]
+PASSED: !TextField.prototype.hasOwnProperty('password') [TextField.as:66]
+PASSED: !TextField.prototype.hasOwnProperty('restrict') [TextField.as:67]
+PASSED: !TextField.prototype.hasOwnProperty('scroll') [TextField.as:68]
+XPASSED: !TextField.prototype.hasOwnProperty('selectable') [TextField.as:69]
+PASSED: !TextField.prototype.hasOwnProperty('text') [TextField.as:70]
+XPASSED: !TextField.prototype.hasOwnProperty('textColor') [TextField.as:71]
+XPASSED: !TextField.prototype.hasOwnProperty('textHeight') [TextField.as:72]
+XPASSED: !TextField.prototype.hasOwnProperty('textWidth') [TextField.as:73]
+XPASSED: !TextField.prototype.hasOwnProperty('type') [TextField.as:74]
+XPASSED: !TextField.prototype.hasOwnProperty('variable') [TextField.as:75]
+XPASSED: !TextField.prototype.hasOwnProperty('wordWrap') [TextField.as:76]
+PASSED: typeof(TextField.getFontList) == 'function' [TextField.as:79]
+PASSED: typeof(TextField.prototype.getFontList) == 'undefined' [TextField.as:81]
+PASSED: typeof(TextField.prototype.replaceText) == 'undefined' [TextField.as:86]
+PASSED: typeof(tfObj) == 'object' [TextField.as:90]
+PASSED: tfObj instanceof TextField [TextField.as:91]
+PASSED: typeof(tfObj.setTextFormat) == 'function' [TextField.as:93]
+PASSED: typeof(tfObj.getTextFormat) == 'function' [TextField.as:94]
+PASSED: typeof(tfObj.setNewTextFormat) == 'function' [TextField.as:95]
+PASSED: typeof(tfObj.getNewTextFormat) == 'function' [TextField.as:96]
+PASSED: typeof(tfObj.addListener) == 'function' [TextField.as:97]
+PASSED: typeof(tfObj.removeListener) == 'function' [TextField.as:98]
+PASSED: typeof(tfObj.getDepth) == 'function' [TextField.as:99]
+PASSED: typeof(tfObj.removeTextField) == 'function' [TextField.as:100]
+PASSED: typeof(tfObj.replaceSel) == 'function' [TextField.as:101]
+PASSED: typeof(tfObj.getFontList) == 'undefined' [TextField.as:103]
+PASSED: typeof(ret) == 'undefined' [TextField.as:111]
+PASSED: typeof(tf) == 'object' [TextField.as:117]
+PASSED: tf.hasOwnProperty('_listeners') [TextField.as:118]
+PASSED: tf._listeners.length == 1 [TextField.as:119]
+PASSED: tf._listeners[0] == tf [TextField.as:120]
+PASSED: !tf.hasOwnProperty('broadcastMessage') [TextField.as:121]
+PASSED: !tf.hasOwnProperty('addListener') [TextField.as:122]
+PASSED: !tf.hasOwnProperty('removeListener') [TextField.as:123]
+PASSED: TextField.prototype.hasOwnProperty('background') [TextField.as:126]
+PASSED: TextField.prototype.hasOwnProperty('backgroundColor') [TextField.as:127]
+PASSED: TextField.prototype.hasOwnProperty('autoSize') [TextField.as:128]
+PASSED: TextField.prototype.hasOwnProperty('border') [TextField.as:129]
+PASSED: TextField.prototype.hasOwnProperty('borderColor') [TextField.as:130]
+XPASSED: TextField.prototype.hasOwnProperty('bottomScroll') [TextField.as:131]
+PASSED: TextField.prototype.hasOwnProperty('embedFonts') [TextField.as:132]
+XPASSED: TextField.prototype.hasOwnProperty('hscroll') [TextField.as:133]
+PASSED: TextField.prototype.hasOwnProperty('html') [TextField.as:134]
+XPASSED: TextField.prototype.hasOwnProperty('htmlText') [TextField.as:135]
+PASSED: TextField.prototype.hasOwnProperty('length') [TextField.as:136]
+XPASSED: TextField.prototype.hasOwnProperty('maxChars') [TextField.as:137]
+XPASSED: TextField.prototype.hasOwnProperty('maxhscroll') [TextField.as:138]
+XPASSED: TextField.prototype.hasOwnProperty('maxscroll') [TextField.as:139]
+XPASSED: TextField.prototype.hasOwnProperty('multiline') [TextField.as:140]
+XPASSED: TextField.prototype.hasOwnProperty('password') [TextField.as:141]
+XPASSED: TextField.prototype.hasOwnProperty('restrict') [TextField.as:142]
+XPASSED: TextField.prototype.hasOwnProperty('scroll') [TextField.as:143]
+PASSED: TextField.prototype.hasOwnProperty('selectable') [TextField.as:144]
+XPASSED: TextField.prototype.hasOwnProperty('text') [TextField.as:145]
+PASSED: TextField.prototype.hasOwnProperty('textColor') [TextField.as:146]
+PASSED: TextField.prototype.hasOwnProperty('textHeight') [TextField.as:147]
+PASSED: TextField.prototype.hasOwnProperty('textWidth') [TextField.as:148]
+PASSED: TextField.prototype.hasOwnProperty('type') [TextField.as:149]
+PASSED: TextField.prototype.hasOwnProperty('variable') [TextField.as:150]
+PASSED: TextField.prototype.hasOwnProperty('wordWrap') [TextField.as:151]
+PASSED: TextField.prototype.hasOwnProperty('length') [TextField.as:152]
+PASSED: ! TextField.prototype.hasOwnProperty('valueOf') [TextField.as:154]
+PASSED: ! TextField.prototype.hasOwnProperty('toString') [TextField.as:155]
+PASSED: TextField.prototype.__proto__.hasOwnProperty('valueOf') [TextField.as:156]
+PASSED: TextField.prototype.__proto__.hasOwnProperty('toString') [TextField.as:157]
+PASSED: typeof(tf._alpha) == 'number' [TextField.as:161]
+PASSED: ! tf.hasOwnProperty('_alpha') [TextField.as:162]
+PASSED: ! tf.__proto__.hasOwnProperty('_alpha') [TextField.as:163]
+PASSED: typeof(tf.autoSize) == 'string' [TextField.as:167]
+PASSED: tf.autoSize == 'none' [TextField.as:168]
+PASSED: ! tf.hasOwnProperty('autoSize') [TextField.as:169]
+PASSED: tf.autoSize == 'none' [TextField.as:171]
+PASSED: tf.autoSize == 'left' [TextField.as:173]
+PASSED: tf.autoSize == 'none' [TextField.as:175]
+PASSED: tf.autoSize == 'center' [TextField.as:177]
+PASSED: tf.autoSize == 'right' [TextField.as:179]
+PASSED: tf.autoSize == 'center' [TextField.as:182]
+PASSED: tf.autoSize == 'left' [TextField.as:184]
+PASSED: tf.autoSize == 'none' [TextField.as:186]
+PASSED: typeof(tf.background) == 'boolean' [TextField.as:192]
+PASSED: !tf.hasOwnProperty('background') [TextField.as:193]
+PASSED: tf.background == false [TextField.as:194]
+PASSED: tf.background == true [TextField.as:196]
+PASSED: tf.background == false [TextField.as:198]
+PASSED: typeof(tf.background) == 'boolean' [TextField.as:199]
+PASSED: typeof(tf.background) == 'boolean' [TextField.as:201]
+PASSED: tf.background == true [TextField.as:202]
+PASSED: tf.background == true [TextField.as:205]
+PASSED: typeof(tf.background) == 'boolean' [TextField.as:208]
+PASSED: tf.background == true [TextField.as:209]
+PASSED: typeof(tf.background) == 'boolean' [TextField.as:211]
+PASSED: tf.background == true [TextField.as:212]
+PASSED: typeof(tf.backgroundColor) == 'number' [TextField.as:217]
+PASSED: !tf.hasOwnProperty('backgroundColor') [TextField.as:218]
+PASSED: tf.backgroundColor == 0x00FF00 [TextField.as:220]
+PASSED: tf.backgroundColor == 0x000000 [TextField.as:222]
+PASSED: tf.backgroundColor == 0x0000FF [TextField.as:225]
+PASSED: typeof(tf.border) == 'boolean' [TextField.as:229]
+PASSED: !tf.hasOwnProperty('border') [TextField.as:230]
+PASSED: typeof(tf.borderColor) == 'number' [TextField.as:234]
+PASSED: !tf.hasOwnProperty('borderColor') [TextField.as:235]
+XPASSED: typeof(tf.bottomScroll) == 'number' [TextField.as:239]
+PASSED: !tf.hasOwnProperty('bottomScroll') [TextField.as:240]
+XPASSED: tf.bottomScroll == 1 [TextField.as:241]
+XPASSED: tf.bottomScroll == 1 [TextField.as:243]
+PASSED: typeof(tf.embedFonts) == 'boolean' [TextField.as:247]
+PASSED: !tf.hasOwnProperty('embedFonts') [TextField.as:248]
+PASSED: tf.embedFonts == false [TextField.as:249]
+PASSED: tf.embedFonts == true [TextField.as:251]
+PASSED: typeof(tf.embedFonts) == 'boolean' [TextField.as:253]
+PASSED: tf.embedFonts == true [TextField.as:254]
+PASSED: typeof(tf.embedFonts) == 'boolean' [TextField.as:256]
+PASSED: tf.embedFonts == false [TextField.as:257]
+XPASSED: typeof(tf._highquality) == 'number' [TextField.as:262]
+PASSED: !tf.hasOwnProperty('_highquality') [TextField.as:263]
+PASSED: !tf.__proto__.hasOwnProperty('_highquality') [TextField.as:264]
+XPASSED: tf._highquality == 1 [TextField.as:265]
+PASSED: tf._highquality == 0 [TextField.as:267]
+PASSED: typeof(tf._height) == 'number' [TextField.as:272]
+PASSED: !tf.hasOwnProperty('_height') [TextField.as:273]
+PASSED: !tf.__proto__.hasOwnProperty('_height') [TextField.as:274]
+PASSED: tf._height == 500 [TextField.as:275]
+PASSED: tf._height == 99999 [TextField.as:277]
+XPASSED: typeof(tf.hscroll) == 'number' [TextField.as:282]
+PASSED: !tf.hasOwnProperty('hscroll') [TextField.as:283]
+XPASSED: tf.hscroll == 0 [TextField.as:284]
+XPASSED: tf.hscroll == 0 [TextField.as:286]
+PASSED: typeof(tf.html) == 'boolean' [TextField.as:291]
+PASSED: !tf.hasOwnProperty('html') [TextField.as:292]
+PASSED: tf.html == false [TextField.as:293]
+PASSED: tf.html == true [TextField.as:295]
+PASSED: typeof(tf.htmlText) == 'string' [TextField.as:300]
+PASSED: !tf.hasOwnProperty('htmlText') [TextField.as:301]
+PASSED: tf.htmlText == '' [TextField.as:302]
+PASSED: typeof(tf.htmlText) == 'string' [TextField.as:304]
+PASSED: tf.htmlText == '' [TextField.as:305]
+PASSED: tf.html == false [TextField.as:306]
+PASSED: tf.html == false [TextField.as:308]
+PASSED: tf.htmlText == 'Hello <b>html</b> world' [TextField.as:309]
+PASSED: tf.text == 'Hello <b>html</b> world' [TextField.as:311]
+PASSED: tf.htmlText == 'Hello world' [TextField.as:313]
+PASSED: typeof(tf.length) == 'number' [TextField.as:319]
+PASSED: !tf.hasOwnProperty('length') [TextField.as:320]
+PASSED: tf.length == 0 [TextField.as:322]
+PASSED: tf.length == 0 [TextField.as:324]
+PASSED: tf.length == 11 [TextField.as:326]
+PASSED: tf.length == 18 [TextField.as:328]
+XPASSED: typeof(tf.maxChars) == 'null' [TextField.as:332]
+PASSED: !tf.hasOwnProperty('maxChars') [TextField.as:333]
+PASSED: tf.maxChars == 5 [TextField.as:335]
+PASSED: tf.text == "0123456789" [TextField.as:338]
+XPASSED: typeof(tf.maxhscroll) == 'number' [TextField.as:343]
+PASSED: !tf.hasOwnProperty('maxhscroll') [TextField.as:344]
+XPASSED: tf.maxhscroll == 0 [TextField.as:345]
+XPASSED: tf.maxhscroll == 0 [TextField.as:347]
+XPASSED: typeof(tf.maxscroll) == 'number' [TextField.as:351]
+PASSED: !tf.hasOwnProperty('maxscroll') [TextField.as:352]
+XPASSED: tf.maxscroll == 1 [TextField.as:353]
+XPASSED: tf.maxscroll == 1 [TextField.as:355]
+XPASSED: typeof(tf.multiline) == 'boolean' [TextField.as:359]
+PASSED: !tf.hasOwnProperty('multiline') [TextField.as:360]
+XPASSED: tf.multiline == false [TextField.as:361]
+PASSED: tf.multiline == true [TextField.as:363]
+PASSED: typeof(tf._name) == 'string' [TextField.as:370]
+PASSED: !tf.hasOwnProperty('_name') [TextField.as:371]
+XPASSED: !tf.__proto__.hasOwnProperty('_name') [TextField.as:372]
+PASSED: tf._name == 'tf' [TextField.as:373]
+PASSED: typeof(tf) == 'undefined' [TextField.as:376]
+PASSED: typeof(tfref) == 'object' [TextField.as:377]
+PASSED: tfref._name == 'changed' [TextField.as:378]
+PASSED: tfref._target == '/changed' [TextField.as:379]
+PASSED: typeof(tf) == 'object' [TextField.as:381]
+PASSED: typeof(tfref) == 'object' [TextField.as:382]
+PASSED: typeof(tf._parent) == 'movieclip' [TextField.as:389]
+PASSED: !tf.hasOwnProperty('_parent') [TextField.as:390]
+XPASSED: !tf.__proto__.hasOwnProperty('_parent') [TextField.as:391]
+PASSED: tf._parent == _root [TextField.as:392]
+XPASSED: tf._parent == 23 [TextField.as:395]
+PASSED: tf._target == "/tf" [TextField.as:396]
+XPASSED: r [TextField.as:398]
+PASSED: !r [TextField.as:400]
+PASSED: tf._parent == _root [TextField.as:402]
+XPASSED: typeof(tf.password) == 'boolean' [TextField.as:410]
+PASSED: !tf.hasOwnProperty('password') [TextField.as:411]
+XPASSED: tf.password == false [TextField.as:412]
+PASSED: tf.password == true [TextField.as:414]
+XPASSED: typeof(tf._quality) == 'string' [TextField.as:421]
+PASSED: !tf.hasOwnProperty('quality') [TextField.as:422]
+PASSED: !tf.__proto__.hasOwnProperty('quality') [TextField.as:423]
+PASSED: !tf.__proto__.__proto__.hasOwnProperty('quality') [TextField.as:424]
+PASSED: !tf.__proto__.__proto__.__proto__.hasOwnProperty('quality') [TextField.as:425]
+XPASSED: tf._quality == "HIGH" [TextField.as:426]
+XPASSED: tf._quality == "HIGH" [TextField.as:428]
+PASSED: tf._quality == "LOW" [TextField.as:430]
+XPASSED: typeof(tf.restrict) == 'null' [TextField.as:435]
+PASSED: !tf.hasOwnProperty('restrict') [TextField.as:436]
+PASSED: tf.text == "Hello World" [TextField.as:439]
+PASSED: tf.text == "Hello World" [TextField.as:443]
+XPASSED: typeof(tf._rotation) == 'number' [TextField.as:448]
+PASSED: !tf.hasOwnProperty('_rotation') [TextField.as:449]
+PASSED: !tf.__proto__.hasOwnProperty('_rotation') [TextField.as:450]
+XPASSED: tf._rotation == 0 [TextField.as:451]
+PASSED: tf._rotation == 10 [TextField.as:453]
+XPASSED: typeof(tf.scroll) == 'number' [TextField.as:459]
+PASSED: ! tf.hasOwnProperty('scroll') [TextField.as:460]
+XPASSED: tf.scroll == 1 [TextField.as:461]
+XPASSED: tf.scroll == 1 [TextField.as:463]
+PASSED: typeof(tf.selectable) == 'boolean' [TextField.as:467]
+PASSED: ! tf.hasOwnProperty('selectable') [TextField.as:468]
+PASSED: tf.selectable == true [TextField.as:469]
+PASSED: tf.selectable == false [TextField.as:471]
+PASSED: typeof(tf.selectable) == 'boolean' [TextField.as:473]
+XPASSED: typeof(tf._soundbuftime) == 'number' [TextField.as:478]
+PASSED: ! tf.hasOwnProperty('_soundbuftime') [TextField.as:479]
+PASSED: ! tf.__proto__.hasOwnProperty('_soundbuftime') [TextField.as:480]
+XPASSED: tf._soundbuftime == 5 [TextField.as:481]
+PASSED: typeof(tf.tabEnabled) == 'undefined' [TextField.as:485]
+PASSED: ! tf.hasOwnProperty('tabEnabled') [TextField.as:486]
+PASSED: ! tf.__proto__.hasOwnProperty('tabEnabled') [TextField.as:487]
+PASSED: tf.tabEnabled == false [TextField.as:489]
+PASSED: typeof(tf.tabIndex) == 'undefined' [TextField.as:494]
+PASSED: ! tf.hasOwnProperty('tabIndex') [TextField.as:495]
+PASSED: ! tf.__proto__hasOwnProperty('tabIndex') [TextField.as:496]
+PASSED: tf.tabIndex == 9 [TextField.as:498]
+PASSED: typeof(tf._target) == 'string' [TextField.as:505]
+PASSED: ! tf.hasOwnProperty('_target') [TextField.as:506]
+XPASSED: ! tf.__proto__.hasOwnProperty('_target') [TextField.as:507]
+PASSED: tf._target == '/tf' [TextField.as:508]
+PASSED: tf._target == '/tf' [TextField.as:511]
+PASSED: typeof(tf.text) == 'string' [TextField.as:515]
+PASSED: ! tf.hasOwnProperty('text') [TextField.as:516]
+PASSED: tf.text == 'Hello World' [TextField.as:517]
+PASSED: tf.text == 'hello world' [TextField.as:519]
+PASSED: tf.length == 11 [TextField.as:520]
+PASSED: typeof(tf.textColor) == 'number' [TextField.as:525]
+PASSED: ! tf.hasOwnProperty('textColor') [TextField.as:526]
+PASSED: tf.textColor == 0 [TextField.as:527]
+PASSED: tf.textColor == 0xFF0000 [TextField.as:529]
+PASSED: typeof(tf.textHeight) == 'number' [TextField.as:534]
+PASSED: ! tf.hasOwnProperty('textHeight') [TextField.as:535]
+PASSED: tf.textHeight == currentHeight [TextField.as:538]
+PASSED: typeof(tf.textWidth) == 'number' [TextField.as:542]
+PASSED: ! tf.hasOwnProperty('textWidth') [TextField.as:543]
+PASSED: tf.textWidth == currentWidth [TextField.as:546]
+PASSED: typeof(tf.type) == 'string' [TextField.as:550]
+PASSED: ! tf.hasOwnProperty('type') [TextField.as:551]
+PASSED: tf.type == 'dynamic' [TextField.as:552]
+PASSED: tf.type == 'input' [TextField.as:554]
+PASSED: typeof(tf.type) == 'string' [TextField.as:556]
+PASSED: tf.type == 'input' [TextField.as:557]
+PASSED: tf.type == 'dynamic' [TextField.as:559]
+PASSED: tf.type == 'dynamic' [TextField.as:561]
+PASSED: tf.type == 'input' [TextField.as:564]
+XPASSED: typeof(tf._url) == 'string' [TextField.as:568]
+PASSED: ! tf.hasOwnProperty('_url') [TextField.as:569]
+PASSED: ! tf.__proto__.hasOwnProperty('_url') [TextField.as:570]
+XPASSED: tf._url == _root._url [TextField.as:571]
+XPASSED: tf._url == _root._url [TextField.as:573]
+XPASSED: typeof(tf.variable) == 'null' [TextField.as:583]
+PASSED: ! tf.hasOwnProperty('variable') [TextField.as:584]
+XPASSED: typeof(tf.variable) == 'null' [TextField.as:586]
+PASSED: typeof(tf.variable) == 'string' [TextField.as:588]
+PASSED: tf.variable == '2' [TextField.as:589]
+XPASSED: typeof(tf.variable) == 'null' [TextField.as:591]
+XPASSED: typeof(tf.variable) == 'null' [TextField.as:594]
+PASSED: tf.variable == '_level0.inputVar' [TextField.as:596]
+XPASSED: typeof(_level0.inputVar) == 'undefined' [TextField.as:597]
+XPASSED: tf.text == "hello world" [TextField.as:598]
+XPASSED: !_level0.hasOwnProperty('inputVar') [TextField.as:599]
+PASSED: tf.text == "dynamic variable" [TextField.as:601]
+PASSED: _level0.inputVar == "back-propagated" [TextField.as:603]
+XPASSED: tf.text == "back-propagated" [TextField.as:606]
+XPASSED: tf.text == "back-propagated" [TextField.as:608]
+PASSED: o.t == "back-to-object" [TextField.as:610]
+PASSED: tf.text == "back-to-object" [TextField.as:612]
+XPASSED: tf.text == "from object again" [TextField.as:614]
+PASSED: o.t == "from object again" [TextField.as:615]
+XPASSED: tf.text == "from object again" [TextField.as:617]
+PASSED: o.t == "and forever back" [TextField.as:619]
+PASSED: typeof(hardref) == 'object' [TextField.as:640]
+PASSED: typeof(softref) == 'object' [TextField.as:641]
+PASSED: softref.prop == 5 [TextField.as:642]
+PASSED: softref.getDepth() == 23 [TextField.as:643]
+PASSED: typeof(hardref) == 'undefined' [TextField.as:645]
+PASSED: typeof(softref) == 'movieclip' [TextField.as:646]
+PASSED: typeof(softref.prop) == 'undefined' [TextField.as:647]
+PASSED: typeof(hardref) == 'movieclip' [TextField.as:649]
+PASSED: typeof(softref) == 'movieclip' [TextField.as:651]
+PASSED: softref.prop == 7 [TextField.as:652]
+PASSED: typeof(softref) == 'object' [TextField.as:656]
+PASSED: softref.prop == 9 [TextField.as:657]
+PASSED: typeof(tf._visible) == 'boolean' [TextField.as:664]
+PASSED: ! tf.hasOwnProperty('_visible') [TextField.as:665]
+PASSED: ! tf.__proto__.hasOwnProperty('_visible') [TextField.as:666]
+PASSED: tf._visible == true [TextField.as:667]
+PASSED: tf._visible == false [TextField.as:669]
+PASSED: typeof(tf._width) == 'number' [TextField.as:676]
+PASSED: ! tf.hasOwnProperty('_width') [TextField.as:677]
+PASSED: ! tf.__proto__.hasOwnProperty('_width') [TextField.as:678]
+PASSED: tf._width == 500 [TextField.as:679]
+PASSED: tf._width == 99999 [TextField.as:681]
+PASSED: typeof(tf.wordWrap) == 'boolean' [TextField.as:688]
+PASSED: ! tf.hasOwnProperty('wordWrap') [TextField.as:689]
+PASSED: tf.wordWrap == false [TextField.as:690]
+PASSED: typeof(tf._x) == 'number' [TextField.as:697]
+PASSED: ! tf.hasOwnProperty('_x') [TextField.as:698]
+PASSED: ! tf.__proto__.hasOwnProperty('_x') [TextField.as:699]
+PASSED: tf._x == 10 [TextField.as:700]
+PASSED: tf._x == 20 [TextField.as:702]
+PASSED: typeof(tf._xmouse) == 'number' [TextField.as:708]
+PASSED: ! tf.hasOwnProperty('_xmouse') [TextField.as:709]
+XPASSED: ! tf.__proto__.hasOwnProperty('_xmouse') [TextField.as:710]
+PASSED: typeof(tf._xmouse) == 'number' [TextField.as:713]
+PASSED: tf._xmouse == currXmouse [TextField.as:714]
+PASSED: typeof(tf._xscale) == 'number' [TextField.as:720]
+PASSED: ! tf.hasOwnProperty('_xscale') [TextField.as:721]
+XPASSED: ! tf.__proto__.hasOwnProperty('_xscale') [TextField.as:722]
+PASSED: tf._xscale == 100 [TextField.as:723]
+NOTE: textWidth: _xscale=100: 79; _xscale=200: 39
+XPASSED: tf._width == currWidth*2 [TextField.as:730]
+PASSED: typeof(tf._y) == 'number' [TextField.as:737]
+PASSED: ! tf.hasOwnProperty('_y') [TextField.as:738]
+PASSED: ! tf.__proto__.hasOwnProperty('_y') [TextField.as:739]
+PASSED: tf._y == 10 [TextField.as:740]
+PASSED: tf._y == 5 [TextField.as:742]
+PASSED: typeof(tf._ymouse) == 'number' [TextField.as:748]
+PASSED: ! tf.hasOwnProperty('_ymouse') [TextField.as:749]
+XPASSED: ! tf.__proto__.hasOwnProperty('_ymouse') [TextField.as:750]
+PASSED: typeof(tf._ymouse) == 'number' [TextField.as:753]
+PASSED: tf._ymouse == currYmouse [TextField.as:754]
+PASSED: typeof(tf._yscale) == 'number' [TextField.as:760]
+PASSED: ! tf.hasOwnProperty('_yscale') [TextField.as:761]
+XPASSED: ! tf.__proto__.hasOwnProperty('_yscale') [TextField.as:762]
+PASSED: tf._yscale == 100 [TextField.as:763]
+NOTE: textHeight: _yscale=100: 15; _yscale=200: 13
+XPASSED: tf._height == currHeight*2 [TextField.as:770]
+PASSED: tf._width == 10 [TextField.as:781]
+PASSED: tf._width > 10 [TextField.as:784]
+PASSED: tf.textWidth == origTextWidth [TextField.as:785]
+NOTE: After setting wordWrap flat: textWidth: 57 origTextWidth:57
+PASSED: tf.textWidth == origTextWidth [TextField.as:789]
+NOTE: After reducing _width: textWidth: 57 origTextWidth:57
+PASSED: tf._width == 10 [TextField.as:792]
+PASSED: origTextWidth == tf.textWidth [TextField.as:795]
+PASSED: tf._width == linewidth [TextField.as:806]
+PASSED: typeof(tf2) == 'object' [TextField.as:814]
+PASSED: tf2._width == 1 [TextField.as:815]
+PASSED: tf2._height == 2 [TextField.as:816]
+PASSED: tf2._x == 5 [TextField.as:817]
+PASSED: tf2._y == 6 [TextField.as:818]
+PASSED: tf3._x == 10 [TextField.as:821]
+PASSED: tf3._y == 10 [TextField.as:822]
+PASSED: tf3._width == 0 [TextField.as:823]
+PASSED: tf3._height == 50 [TextField.as:824]
+PASSED: tf4._width == 0 [TextField.as:827]
+PASSED: tf4._height == 20 [TextField.as:828]
+PASSED: _root[3].getDepth() == 101 [TextField.as:831]
+PASSED: _root[3]._x == 10 [TextField.as:832]
+PASSED: _root[3]._y == 100 [TextField.as:833]
+PASSED: _root[3]._width == 32 [TextField.as:834]
+PASSED: _root[3]._height == 15 [TextField.as:835]
+PASSED: tf5._name == "tf5" [TextField.as:839]
+PASSED: tf5._target == "/tf5" [TextField.as:840]
+PASSED: tf5.getDepth() == 102 [TextField.as:841]
+PASSED: tf5._x == 10 [TextField.as:842]
+PASSED: tf5._y == 130 [TextField.as:843]
+PASSED: tf5._width == 3 [TextField.as:844]
+PASSED: tf5._height == 2 [TextField.as:845]
+PASSED: typeof(tf6) == 'undefined' [TextField.as:849]
+PASSED: typeof(htf) == 'object' [TextField.as:858]
+PASSED: _root._x == 0 [TextField.as:871]
+PASSED: _root._y == 0 [TextField.as:872]
+PASSED: _root._visible == true [TextField.as:873]
+PASSED: _root._xscale == 100 [TextField.as:874]
+PASSED: _root._yscale == 100 [TextField.as:875]
+PASSED: _root._target == '/' [TextField.as:876]
+XPASSED: _root._parent == 'fake_parent' [TextField.as:877]
+PASSED: _root._name == '' [TextField.as:878]
+PASSED: tf._x == 10 [TextField.as:880]
+PASSED: tf._y == 11 [TextField.as:881]
+PASSED: tf._visible == false [TextField.as:882]
+PASSED: tf._xscale == 200 [TextField.as:883]
+XPASSED: tf._yscale == 201 [TextField.as:884]
+PASSED: tf._target == '/fake_name' [TextField.as:885]
+PASSED: tf._parent == _level0 [TextField.as:886]
+PASSED: tf._name == 'fake_name' [TextField.as:887]
+check_totals: 415
diff --git a/test/gnash/actionscript.all/pending/TextField-7.swf b/test/gnash/actionscript.all/pending/TextField-7.swf
new file mode 100644
index 0000000..87b5b9e
Binary files /dev/null and b/test/gnash/actionscript.all/pending/TextField-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/TextField-7.swf.trace b/test/gnash/actionscript.all/pending/TextField-7.swf.trace
new file mode 100644
index 0000000..04a9477
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/TextField-7.swf.trace
@@ -0,0 +1,420 @@
+PASSED: typeof(TextField) == 'function' [TextField.as:28]
+PASSED: typeof(TextField.prototype) == 'object' [TextField.as:29]
+PASSED: typeof(TextField.prototype.__proto__) == 'object' [TextField.as:30]
+PASSED: TextField.prototype.__proto__ == Object.prototype [TextField.as:31]
+PASSED: typeof(TextField.prototype.setTextFormat) == 'function' [TextField.as:32]
+PASSED: typeof(TextField.prototype.getTextFormat) == 'function' [TextField.as:33]
+PASSED: typeof(TextField.prototype.setNewTextFormat) == 'function' [TextField.as:34]
+PASSED: typeof(TextField.prototype.getNewTextFormat) == 'function' [TextField.as:35]
+PASSED: typeof(TextField.prototype.getDepth) == 'function' [TextField.as:36]
+PASSED: typeof(TextField.prototype.removeTextField) == 'function' [TextField.as:37]
+PASSED: typeof(TextField.prototype.replaceSel) == 'function' [TextField.as:38]
+PASSED: typeof(TextField.prototype.addListener) == 'function' [TextField.as:42]
+PASSED: typeof(TextField.prototype.removeListener) == 'function' [TextField.as:43]
+PASSED: typeof(TextField.prototype.broadcastMessage) == 'function' [TextField.as:44]
+PASSED: TextField.prototype.hasOwnProperty("_listeners") [TextField.as:45]
+PASSED: typeof(TextField.prototype._listeners) == 'object' [TextField.as:46]
+PASSED: TextField.prototype._listeners instanceof Array [TextField.as:47]
+PASSED: TextField.prototype._listeners.length == 0 [TextField.as:48]
+XPASSED: !TextField.prototype.hasOwnProperty('background') [TextField.as:51]
+XPASSED: !TextField.prototype.hasOwnProperty('backgroundColor') [TextField.as:52]
+XPASSED: !TextField.prototype.hasOwnProperty('autoSize') [TextField.as:53]
+XPASSED: !TextField.prototype.hasOwnProperty('border') [TextField.as:54]
+XPASSED: !TextField.prototype.hasOwnProperty('borderColor') [TextField.as:55]
+PASSED: !TextField.prototype.hasOwnProperty('bottomScroll') [TextField.as:56]
+XPASSED: !TextField.prototype.hasOwnProperty('embedFonts') [TextField.as:57]
+PASSED: !TextField.prototype.hasOwnProperty('hscroll') [TextField.as:58]
+XPASSED: !TextField.prototype.hasOwnProperty('html') [TextField.as:59]
+PASSED: !TextField.prototype.hasOwnProperty('htmlText') [TextField.as:60]
+XPASSED: !TextField.prototype.hasOwnProperty('length') [TextField.as:61]
+PASSED: !TextField.prototype.hasOwnProperty('maxChars') [TextField.as:62]
+PASSED: !TextField.prototype.hasOwnProperty('maxhscroll') [TextField.as:63]
+PASSED: !TextField.prototype.hasOwnProperty('maxscroll') [TextField.as:64]
+PASSED: !TextField.prototype.hasOwnProperty('multiline') [TextField.as:65]
+PASSED: !TextField.prototype.hasOwnProperty('password') [TextField.as:66]
+PASSED: !TextField.prototype.hasOwnProperty('restrict') [TextField.as:67]
+PASSED: !TextField.prototype.hasOwnProperty('scroll') [TextField.as:68]
+XPASSED: !TextField.prototype.hasOwnProperty('selectable') [TextField.as:69]
+PASSED: !TextField.prototype.hasOwnProperty('text') [TextField.as:70]
+XPASSED: !TextField.prototype.hasOwnProperty('textColor') [TextField.as:71]
+XPASSED: !TextField.prototype.hasOwnProperty('textHeight') [TextField.as:72]
+XPASSED: !TextField.prototype.hasOwnProperty('textWidth') [TextField.as:73]
+XPASSED: !TextField.prototype.hasOwnProperty('type') [TextField.as:74]
+XPASSED: !TextField.prototype.hasOwnProperty('variable') [TextField.as:75]
+XPASSED: !TextField.prototype.hasOwnProperty('wordWrap') [TextField.as:76]
+PASSED: typeof(TextField.getFontList) == 'function' [TextField.as:79]
+PASSED: typeof(TextField.prototype.getFontList) == 'undefined' [TextField.as:81]
+PASSED: typeof(TextField.prototype.replaceText) == 'function' [TextField.as:84]
+PASSED: typeof(tfObj) == 'object' [TextField.as:90]
+PASSED: tfObj instanceof TextField [TextField.as:91]
+PASSED: typeof(tfObj.setTextFormat) == 'function' [TextField.as:93]
+PASSED: typeof(tfObj.getTextFormat) == 'function' [TextField.as:94]
+PASSED: typeof(tfObj.setNewTextFormat) == 'function' [TextField.as:95]
+PASSED: typeof(tfObj.getNewTextFormat) == 'function' [TextField.as:96]
+PASSED: typeof(tfObj.addListener) == 'function' [TextField.as:97]
+PASSED: typeof(tfObj.removeListener) == 'function' [TextField.as:98]
+PASSED: typeof(tfObj.getDepth) == 'function' [TextField.as:99]
+PASSED: typeof(tfObj.removeTextField) == 'function' [TextField.as:100]
+PASSED: typeof(tfObj.replaceSel) == 'function' [TextField.as:101]
+PASSED: typeof(tfObj.getFontList) == 'undefined' [TextField.as:103]
+PASSED: typeof(ret) == 'undefined' [TextField.as:111]
+PASSED: typeof(tf) == 'object' [TextField.as:117]
+PASSED: tf.hasOwnProperty('_listeners') [TextField.as:118]
+PASSED: tf._listeners.length == 1 [TextField.as:119]
+PASSED: tf._listeners[0] == tf [TextField.as:120]
+PASSED: !tf.hasOwnProperty('broadcastMessage') [TextField.as:121]
+PASSED: !tf.hasOwnProperty('addListener') [TextField.as:122]
+PASSED: !tf.hasOwnProperty('removeListener') [TextField.as:123]
+PASSED: TextField.prototype.hasOwnProperty('background') [TextField.as:126]
+PASSED: TextField.prototype.hasOwnProperty('backgroundColor') [TextField.as:127]
+PASSED: TextField.prototype.hasOwnProperty('autoSize') [TextField.as:128]
+PASSED: TextField.prototype.hasOwnProperty('border') [TextField.as:129]
+PASSED: TextField.prototype.hasOwnProperty('borderColor') [TextField.as:130]
+XPASSED: TextField.prototype.hasOwnProperty('bottomScroll') [TextField.as:131]
+PASSED: TextField.prototype.hasOwnProperty('embedFonts') [TextField.as:132]
+XPASSED: TextField.prototype.hasOwnProperty('hscroll') [TextField.as:133]
+PASSED: TextField.prototype.hasOwnProperty('html') [TextField.as:134]
+XPASSED: TextField.prototype.hasOwnProperty('htmlText') [TextField.as:135]
+PASSED: TextField.prototype.hasOwnProperty('length') [TextField.as:136]
+XPASSED: TextField.prototype.hasOwnProperty('maxChars') [TextField.as:137]
+XPASSED: TextField.prototype.hasOwnProperty('maxhscroll') [TextField.as:138]
+XPASSED: TextField.prototype.hasOwnProperty('maxscroll') [TextField.as:139]
+XPASSED: TextField.prototype.hasOwnProperty('multiline') [TextField.as:140]
+XPASSED: TextField.prototype.hasOwnProperty('password') [TextField.as:141]
+XPASSED: TextField.prototype.hasOwnProperty('restrict') [TextField.as:142]
+XPASSED: TextField.prototype.hasOwnProperty('scroll') [TextField.as:143]
+PASSED: TextField.prototype.hasOwnProperty('selectable') [TextField.as:144]
+XPASSED: TextField.prototype.hasOwnProperty('text') [TextField.as:145]
+PASSED: TextField.prototype.hasOwnProperty('textColor') [TextField.as:146]
+PASSED: TextField.prototype.hasOwnProperty('textHeight') [TextField.as:147]
+PASSED: TextField.prototype.hasOwnProperty('textWidth') [TextField.as:148]
+PASSED: TextField.prototype.hasOwnProperty('type') [TextField.as:149]
+PASSED: TextField.prototype.hasOwnProperty('variable') [TextField.as:150]
+PASSED: TextField.prototype.hasOwnProperty('wordWrap') [TextField.as:151]
+PASSED: TextField.prototype.hasOwnProperty('length') [TextField.as:152]
+PASSED: ! TextField.prototype.hasOwnProperty('valueOf') [TextField.as:154]
+PASSED: ! TextField.prototype.hasOwnProperty('toString') [TextField.as:155]
+PASSED: TextField.prototype.__proto__.hasOwnProperty('valueOf') [TextField.as:156]
+PASSED: TextField.prototype.__proto__.hasOwnProperty('toString') [TextField.as:157]
+PASSED: typeof(tf._alpha) == 'number' [TextField.as:161]
+PASSED: ! tf.hasOwnProperty('_alpha') [TextField.as:162]
+PASSED: ! tf.__proto__.hasOwnProperty('_alpha') [TextField.as:163]
+PASSED: typeof(tf.autoSize) == 'string' [TextField.as:167]
+PASSED: tf.autoSize == 'none' [TextField.as:168]
+PASSED: ! tf.hasOwnProperty('autoSize') [TextField.as:169]
+PASSED: tf.autoSize == 'none' [TextField.as:171]
+PASSED: tf.autoSize == 'left' [TextField.as:173]
+PASSED: tf.autoSize == 'none' [TextField.as:175]
+PASSED: tf.autoSize == 'center' [TextField.as:177]
+PASSED: tf.autoSize == 'right' [TextField.as:179]
+PASSED: tf.autoSize == 'center' [TextField.as:182]
+PASSED: tf.autoSize == 'left' [TextField.as:184]
+PASSED: tf.autoSize == 'none' [TextField.as:186]
+PASSED: typeof(tf.background) == 'boolean' [TextField.as:192]
+PASSED: !tf.hasOwnProperty('background') [TextField.as:193]
+PASSED: tf.background == false [TextField.as:194]
+PASSED: tf.background == true [TextField.as:196]
+PASSED: tf.background == false [TextField.as:198]
+PASSED: typeof(tf.background) == 'boolean' [TextField.as:199]
+PASSED: typeof(tf.background) == 'boolean' [TextField.as:201]
+PASSED: tf.background == true [TextField.as:202]
+PASSED: tf.background == true [TextField.as:205]
+PASSED: typeof(tf.background) == 'boolean' [TextField.as:208]
+PASSED: tf.background == true [TextField.as:209]
+PASSED: typeof(tf.background) == 'boolean' [TextField.as:211]
+PASSED: tf.background == true [TextField.as:212]
+PASSED: typeof(tf.backgroundColor) == 'number' [TextField.as:217]
+PASSED: !tf.hasOwnProperty('backgroundColor') [TextField.as:218]
+PASSED: tf.backgroundColor == 0x00FF00 [TextField.as:220]
+PASSED: tf.backgroundColor == 0x000000 [TextField.as:222]
+PASSED: tf.backgroundColor == 0x0000FF [TextField.as:225]
+PASSED: typeof(tf.border) == 'boolean' [TextField.as:229]
+PASSED: !tf.hasOwnProperty('border') [TextField.as:230]
+PASSED: typeof(tf.borderColor) == 'number' [TextField.as:234]
+PASSED: !tf.hasOwnProperty('borderColor') [TextField.as:235]
+XPASSED: typeof(tf.bottomScroll) == 'number' [TextField.as:239]
+PASSED: !tf.hasOwnProperty('bottomScroll') [TextField.as:240]
+XPASSED: tf.bottomScroll == 1 [TextField.as:241]
+XPASSED: tf.bottomScroll == 1 [TextField.as:243]
+PASSED: typeof(tf.embedFonts) == 'boolean' [TextField.as:247]
+PASSED: !tf.hasOwnProperty('embedFonts') [TextField.as:248]
+PASSED: tf.embedFonts == false [TextField.as:249]
+PASSED: tf.embedFonts == true [TextField.as:251]
+PASSED: typeof(tf.embedFonts) == 'boolean' [TextField.as:253]
+PASSED: tf.embedFonts == true [TextField.as:254]
+PASSED: typeof(tf.embedFonts) == 'boolean' [TextField.as:256]
+PASSED: tf.embedFonts == false [TextField.as:257]
+XPASSED: typeof(tf._highquality) == 'number' [TextField.as:262]
+PASSED: !tf.hasOwnProperty('_highquality') [TextField.as:263]
+PASSED: !tf.__proto__.hasOwnProperty('_highquality') [TextField.as:264]
+XPASSED: tf._highquality == 1 [TextField.as:265]
+PASSED: tf._highquality == 0 [TextField.as:267]
+PASSED: typeof(tf._height) == 'number' [TextField.as:272]
+PASSED: !tf.hasOwnProperty('_height') [TextField.as:273]
+PASSED: !tf.__proto__.hasOwnProperty('_height') [TextField.as:274]
+PASSED: tf._height == 500 [TextField.as:275]
+PASSED: tf._height == 99999 [TextField.as:277]
+XPASSED: typeof(tf.hscroll) == 'number' [TextField.as:282]
+PASSED: !tf.hasOwnProperty('hscroll') [TextField.as:283]
+XPASSED: tf.hscroll == 0 [TextField.as:284]
+XPASSED: tf.hscroll == 0 [TextField.as:286]
+PASSED: typeof(tf.html) == 'boolean' [TextField.as:291]
+PASSED: !tf.hasOwnProperty('html') [TextField.as:292]
+PASSED: tf.html == false [TextField.as:293]
+PASSED: tf.html == true [TextField.as:295]
+PASSED: typeof(tf.htmlText) == 'string' [TextField.as:300]
+PASSED: !tf.hasOwnProperty('htmlText') [TextField.as:301]
+PASSED: tf.htmlText == '' [TextField.as:302]
+PASSED: typeof(tf.htmlText) == 'string' [TextField.as:304]
+PASSED: tf.htmlText == '' [TextField.as:305]
+PASSED: tf.html == false [TextField.as:306]
+PASSED: tf.html == false [TextField.as:308]
+PASSED: tf.htmlText == 'Hello <b>html</b> world' [TextField.as:309]
+PASSED: tf.text == 'Hello <b>html</b> world' [TextField.as:311]
+PASSED: tf.htmlText == 'Hello world' [TextField.as:313]
+PASSED: typeof(tf.length) == 'number' [TextField.as:319]
+PASSED: !tf.hasOwnProperty('length') [TextField.as:320]
+PASSED: tf.length == 0 [TextField.as:322]
+PASSED: tf.length == 0 [TextField.as:324]
+PASSED: tf.length == 11 [TextField.as:326]
+PASSED: tf.length == 18 [TextField.as:328]
+XPASSED: typeof(tf.maxChars) == 'null' [TextField.as:332]
+PASSED: !tf.hasOwnProperty('maxChars') [TextField.as:333]
+PASSED: tf.maxChars == 5 [TextField.as:335]
+PASSED: tf.text == "0123456789" [TextField.as:338]
+XPASSED: typeof(tf.maxhscroll) == 'number' [TextField.as:343]
+PASSED: !tf.hasOwnProperty('maxhscroll') [TextField.as:344]
+XPASSED: tf.maxhscroll == 0 [TextField.as:345]
+XPASSED: tf.maxhscroll == 0 [TextField.as:347]
+XPASSED: typeof(tf.maxscroll) == 'number' [TextField.as:351]
+PASSED: !tf.hasOwnProperty('maxscroll') [TextField.as:352]
+XPASSED: tf.maxscroll == 1 [TextField.as:353]
+XPASSED: tf.maxscroll == 1 [TextField.as:355]
+XPASSED: typeof(tf.multiline) == 'boolean' [TextField.as:359]
+PASSED: !tf.hasOwnProperty('multiline') [TextField.as:360]
+XPASSED: tf.multiline == false [TextField.as:361]
+PASSED: tf.multiline == true [TextField.as:363]
+PASSED: typeof(tf._name) == 'string' [TextField.as:370]
+PASSED: !tf.hasOwnProperty('_name') [TextField.as:371]
+XPASSED: !tf.__proto__.hasOwnProperty('_name') [TextField.as:372]
+PASSED: tf._name == 'tf' [TextField.as:373]
+PASSED: typeof(tf) == 'undefined' [TextField.as:376]
+PASSED: typeof(tfref) == 'object' [TextField.as:377]
+PASSED: tfref._name == 'changed' [TextField.as:378]
+PASSED: tfref._target == '/changed' [TextField.as:379]
+PASSED: typeof(tf) == 'object' [TextField.as:381]
+PASSED: typeof(tfref) == 'object' [TextField.as:382]
+PASSED: typeof(tf._parent) == 'movieclip' [TextField.as:389]
+PASSED: !tf.hasOwnProperty('_parent') [TextField.as:390]
+XPASSED: !tf.__proto__.hasOwnProperty('_parent') [TextField.as:391]
+PASSED: tf._parent == _root [TextField.as:392]
+XPASSED: tf._parent == 23 [TextField.as:395]
+PASSED: tf._target == "/tf" [TextField.as:396]
+XPASSED: r [TextField.as:398]
+PASSED: !r [TextField.as:400]
+PASSED: tf._parent == _root [TextField.as:402]
+XPASSED: typeof(tf.password) == 'boolean' [TextField.as:410]
+PASSED: !tf.hasOwnProperty('password') [TextField.as:411]
+XPASSED: tf.password == false [TextField.as:412]
+PASSED: tf.password == true [TextField.as:414]
+XPASSED: typeof(tf._quality) == 'string' [TextField.as:421]
+PASSED: !tf.hasOwnProperty('quality') [TextField.as:422]
+PASSED: !tf.__proto__.hasOwnProperty('quality') [TextField.as:423]
+PASSED: !tf.__proto__.__proto__.hasOwnProperty('quality') [TextField.as:424]
+PASSED: !tf.__proto__.__proto__.__proto__.hasOwnProperty('quality') [TextField.as:425]
+XPASSED: tf._quality == "HIGH" [TextField.as:426]
+XPASSED: tf._quality == "HIGH" [TextField.as:428]
+PASSED: tf._quality == "LOW" [TextField.as:430]
+XPASSED: typeof(tf.restrict) == 'null' [TextField.as:435]
+PASSED: !tf.hasOwnProperty('restrict') [TextField.as:436]
+PASSED: tf.text == "Hello World" [TextField.as:439]
+PASSED: tf.text == "Hello World" [TextField.as:443]
+XPASSED: typeof(tf._rotation) == 'number' [TextField.as:448]
+PASSED: !tf.hasOwnProperty('_rotation') [TextField.as:449]
+PASSED: !tf.__proto__.hasOwnProperty('_rotation') [TextField.as:450]
+XPASSED: tf._rotation == 0 [TextField.as:451]
+PASSED: tf._rotation == 10 [TextField.as:453]
+XPASSED: typeof(tf.scroll) == 'number' [TextField.as:459]
+PASSED: ! tf.hasOwnProperty('scroll') [TextField.as:460]
+XPASSED: tf.scroll == 1 [TextField.as:461]
+XPASSED: tf.scroll == 1 [TextField.as:463]
+PASSED: typeof(tf.selectable) == 'boolean' [TextField.as:467]
+PASSED: ! tf.hasOwnProperty('selectable') [TextField.as:468]
+PASSED: tf.selectable == true [TextField.as:469]
+PASSED: tf.selectable == false [TextField.as:471]
+PASSED: typeof(tf.selectable) == 'boolean' [TextField.as:473]
+XPASSED: typeof(tf._soundbuftime) == 'number' [TextField.as:478]
+PASSED: ! tf.hasOwnProperty('_soundbuftime') [TextField.as:479]
+PASSED: ! tf.__proto__.hasOwnProperty('_soundbuftime') [TextField.as:480]
+XPASSED: tf._soundbuftime == 5 [TextField.as:481]
+PASSED: typeof(tf.tabEnabled) == 'undefined' [TextField.as:485]
+PASSED: ! tf.hasOwnProperty('tabEnabled') [TextField.as:486]
+PASSED: ! tf.__proto__.hasOwnProperty('tabEnabled') [TextField.as:487]
+PASSED: tf.tabEnabled == false [TextField.as:489]
+PASSED: typeof(tf.tabIndex) == 'undefined' [TextField.as:494]
+PASSED: ! tf.hasOwnProperty('tabIndex') [TextField.as:495]
+PASSED: ! tf.__proto__hasOwnProperty('tabIndex') [TextField.as:496]
+PASSED: tf.tabIndex == 9 [TextField.as:498]
+PASSED: typeof(tf._target) == 'string' [TextField.as:505]
+PASSED: ! tf.hasOwnProperty('_target') [TextField.as:506]
+XPASSED: ! tf.__proto__.hasOwnProperty('_target') [TextField.as:507]
+PASSED: tf._target == '/tf' [TextField.as:508]
+PASSED: tf._target == '/tf' [TextField.as:511]
+PASSED: typeof(tf.text) == 'string' [TextField.as:515]
+PASSED: ! tf.hasOwnProperty('text') [TextField.as:516]
+PASSED: tf.text == 'Hello World' [TextField.as:517]
+PASSED: tf.text == 'hello world' [TextField.as:519]
+PASSED: tf.length == 11 [TextField.as:520]
+PASSED: typeof(tf.textColor) == 'number' [TextField.as:525]
+PASSED: ! tf.hasOwnProperty('textColor') [TextField.as:526]
+PASSED: tf.textColor == 0 [TextField.as:527]
+PASSED: tf.textColor == 0xFF0000 [TextField.as:529]
+PASSED: typeof(tf.textHeight) == 'number' [TextField.as:534]
+PASSED: ! tf.hasOwnProperty('textHeight') [TextField.as:535]
+PASSED: tf.textHeight == currentHeight [TextField.as:538]
+PASSED: typeof(tf.textWidth) == 'number' [TextField.as:542]
+PASSED: ! tf.hasOwnProperty('textWidth') [TextField.as:543]
+PASSED: tf.textWidth == currentWidth [TextField.as:546]
+PASSED: typeof(tf.type) == 'string' [TextField.as:550]
+PASSED: ! tf.hasOwnProperty('type') [TextField.as:551]
+PASSED: tf.type == 'dynamic' [TextField.as:552]
+PASSED: tf.type == 'input' [TextField.as:554]
+PASSED: typeof(tf.type) == 'string' [TextField.as:556]
+PASSED: tf.type == 'input' [TextField.as:557]
+PASSED: tf.type == 'dynamic' [TextField.as:559]
+PASSED: tf.type == 'dynamic' [TextField.as:561]
+PASSED: tf.type == 'input' [TextField.as:564]
+XPASSED: typeof(tf._url) == 'string' [TextField.as:568]
+PASSED: ! tf.hasOwnProperty('_url') [TextField.as:569]
+PASSED: ! tf.__proto__.hasOwnProperty('_url') [TextField.as:570]
+XPASSED: tf._url == _root._url [TextField.as:571]
+XPASSED: tf._url == _root._url [TextField.as:573]
+XPASSED: typeof(tf.variable) == 'null' [TextField.as:583]
+PASSED: ! tf.hasOwnProperty('variable') [TextField.as:584]
+XPASSED: typeof(tf.variable) == 'null' [TextField.as:586]
+PASSED: typeof(tf.variable) == 'string' [TextField.as:588]
+PASSED: tf.variable == '2' [TextField.as:589]
+XPASSED: typeof(tf.variable) == 'null' [TextField.as:591]
+XPASSED: typeof(tf.variable) == 'null' [TextField.as:594]
+PASSED: tf.variable == '_level0.inputVar' [TextField.as:596]
+XPASSED: typeof(_level0.inputVar) == 'undefined' [TextField.as:597]
+XPASSED: tf.text == "hello world" [TextField.as:598]
+XPASSED: !_level0.hasOwnProperty('inputVar') [TextField.as:599]
+PASSED: tf.text == "dynamic variable" [TextField.as:601]
+PASSED: _level0.inputVar == "back-propagated" [TextField.as:603]
+XPASSED: tf.text == "back-propagated" [TextField.as:606]
+XPASSED: tf.text == "back-propagated" [TextField.as:608]
+PASSED: o.t == "back-to-object" [TextField.as:610]
+PASSED: tf.text == "back-to-object" [TextField.as:612]
+XPASSED: tf.text == "from object again" [TextField.as:614]
+PASSED: o.t == "from object again" [TextField.as:615]
+XPASSED: tf.text == "from object again" [TextField.as:617]
+PASSED: o.t == "and forever back" [TextField.as:619]
+PASSED: typeof(hardref) == 'object' [TextField.as:640]
+PASSED: typeof(softref) == 'object' [TextField.as:641]
+PASSED: softref.prop == 5 [TextField.as:642]
+PASSED: softref.getDepth() == 23 [TextField.as:643]
+PASSED: typeof(hardref) == 'undefined' [TextField.as:645]
+PASSED: typeof(softref) == 'movieclip' [TextField.as:646]
+PASSED: typeof(softref.prop) == 'undefined' [TextField.as:647]
+PASSED: typeof(hardref) == 'movieclip' [TextField.as:649]
+PASSED: typeof(softref) == 'movieclip' [TextField.as:651]
+PASSED: softref.prop == 7 [TextField.as:652]
+PASSED: typeof(softref) == 'object' [TextField.as:656]
+PASSED: softref.prop == 9 [TextField.as:657]
+PASSED: typeof(tf._visible) == 'boolean' [TextField.as:664]
+PASSED: ! tf.hasOwnProperty('_visible') [TextField.as:665]
+PASSED: ! tf.__proto__.hasOwnProperty('_visible') [TextField.as:666]
+PASSED: tf._visible == true [TextField.as:667]
+PASSED: tf._visible == false [TextField.as:669]
+PASSED: typeof(tf._width) == 'number' [TextField.as:676]
+PASSED: ! tf.hasOwnProperty('_width') [TextField.as:677]
+PASSED: ! tf.__proto__.hasOwnProperty('_width') [TextField.as:678]
+PASSED: tf._width == 500 [TextField.as:679]
+PASSED: tf._width == 99999 [TextField.as:681]
+PASSED: typeof(tf.wordWrap) == 'boolean' [TextField.as:688]
+PASSED: ! tf.hasOwnProperty('wordWrap') [TextField.as:689]
+PASSED: tf.wordWrap == false [TextField.as:690]
+PASSED: typeof(tf._x) == 'number' [TextField.as:697]
+PASSED: ! tf.hasOwnProperty('_x') [TextField.as:698]
+PASSED: ! tf.__proto__.hasOwnProperty('_x') [TextField.as:699]
+PASSED: tf._x == 10 [TextField.as:700]
+PASSED: tf._x == 20 [TextField.as:702]
+PASSED: typeof(tf._xmouse) == 'number' [TextField.as:708]
+PASSED: ! tf.hasOwnProperty('_xmouse') [TextField.as:709]
+XPASSED: ! tf.__proto__.hasOwnProperty('_xmouse') [TextField.as:710]
+PASSED: typeof(tf._xmouse) == 'number' [TextField.as:713]
+PASSED: tf._xmouse == currXmouse [TextField.as:714]
+PASSED: typeof(tf._xscale) == 'number' [TextField.as:720]
+PASSED: ! tf.hasOwnProperty('_xscale') [TextField.as:721]
+XPASSED: ! tf.__proto__.hasOwnProperty('_xscale') [TextField.as:722]
+PASSED: tf._xscale == 100 [TextField.as:723]
+NOTE: textWidth: _xscale=100: 79; _xscale=200: 39
+XPASSED: tf._width == currWidth*2 [TextField.as:730]
+PASSED: typeof(tf._y) == 'number' [TextField.as:737]
+PASSED: ! tf.hasOwnProperty('_y') [TextField.as:738]
+PASSED: ! tf.__proto__.hasOwnProperty('_y') [TextField.as:739]
+PASSED: tf._y == 10 [TextField.as:740]
+PASSED: tf._y == 5 [TextField.as:742]
+PASSED: typeof(tf._ymouse) == 'number' [TextField.as:748]
+PASSED: ! tf.hasOwnProperty('_ymouse') [TextField.as:749]
+XPASSED: ! tf.__proto__.hasOwnProperty('_ymouse') [TextField.as:750]
+PASSED: typeof(tf._ymouse) == 'number' [TextField.as:753]
+PASSED: tf._ymouse == currYmouse [TextField.as:754]
+PASSED: typeof(tf._yscale) == 'number' [TextField.as:760]
+PASSED: ! tf.hasOwnProperty('_yscale') [TextField.as:761]
+XPASSED: ! tf.__proto__.hasOwnProperty('_yscale') [TextField.as:762]
+PASSED: tf._yscale == 100 [TextField.as:763]
+NOTE: textHeight: _yscale=100: 15; _yscale=200: 13
+XPASSED: tf._height == currHeight*2 [TextField.as:770]
+PASSED: tf._width == 10 [TextField.as:781]
+PASSED: tf._width > 10 [TextField.as:784]
+PASSED: tf.textWidth == origTextWidth [TextField.as:785]
+NOTE: After setting wordWrap flat: textWidth: 57 origTextWidth:57
+PASSED: tf.textWidth == origTextWidth [TextField.as:789]
+NOTE: After reducing _width: textWidth: 57 origTextWidth:57
+PASSED: tf._width == 10 [TextField.as:792]
+PASSED: origTextWidth == tf.textWidth [TextField.as:795]
+PASSED: tf._width == linewidth [TextField.as:806]
+PASSED: typeof(tf2) == 'object' [TextField.as:814]
+PASSED: tf2._width == 1 [TextField.as:815]
+PASSED: tf2._height == 2 [TextField.as:816]
+PASSED: tf2._x == 5 [TextField.as:817]
+PASSED: tf2._y == 6 [TextField.as:818]
+PASSED: tf3._x == 10 [TextField.as:821]
+PASSED: tf3._y == 10 [TextField.as:822]
+PASSED: tf3._width == 0 [TextField.as:823]
+PASSED: tf3._height == 50 [TextField.as:824]
+PASSED: tf4._width == 0 [TextField.as:827]
+PASSED: tf4._height == 20 [TextField.as:828]
+PASSED: _root[3].getDepth() == 101 [TextField.as:831]
+PASSED: _root[3]._x == 10 [TextField.as:832]
+PASSED: _root[3]._y == 100 [TextField.as:833]
+PASSED: _root[3]._width == 32 [TextField.as:834]
+PASSED: _root[3]._height == 15 [TextField.as:835]
+PASSED: tf5._name == "tf5" [TextField.as:839]
+PASSED: tf5._target == "/tf5" [TextField.as:840]
+PASSED: tf5.getDepth() == 102 [TextField.as:841]
+PASSED: tf5._x == 10 [TextField.as:842]
+PASSED: tf5._y == 130 [TextField.as:843]
+PASSED: tf5._width == 3 [TextField.as:844]
+PASSED: tf5._height == 2 [TextField.as:845]
+PASSED: typeof(tf6) == 'undefined' [TextField.as:849]
+PASSED: typeof(htf) == 'object' [TextField.as:858]
+PASSED: _root._x == 0 [TextField.as:871]
+PASSED: _root._y == 0 [TextField.as:872]
+PASSED: _root._visible == true [TextField.as:873]
+PASSED: _root._xscale == 100 [TextField.as:874]
+PASSED: _root._yscale == 100 [TextField.as:875]
+PASSED: _root._target == '/' [TextField.as:876]
+XPASSED: _root._parent == 'fake_parent' [TextField.as:877]
+PASSED: _root._name == '' [TextField.as:878]
+PASSED: tf._x == 10 [TextField.as:880]
+PASSED: tf._y == 11 [TextField.as:881]
+PASSED: tf._visible == false [TextField.as:882]
+PASSED: tf._xscale == 200 [TextField.as:883]
+XPASSED: tf._yscale == 201 [TextField.as:884]
+PASSED: tf._target == '/fake_name' [TextField.as:885]
+PASSED: tf._parent == _level0 [TextField.as:886]
+PASSED: tf._name == 'fake_name' [TextField.as:887]
+check_totals: 415
diff --git a/test/gnash/actionscript.all/pending/TextField-8.swf b/test/gnash/actionscript.all/pending/TextField-8.swf
new file mode 100644
index 0000000..e1109b1
Binary files /dev/null and b/test/gnash/actionscript.all/pending/TextField-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/TextField-8.swf.trace b/test/gnash/actionscript.all/pending/TextField-8.swf.trace
new file mode 100644
index 0000000..153dd0b
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/TextField-8.swf.trace
@@ -0,0 +1,421 @@
+PASSED: typeof(TextField) == 'function' [TextField.as:28]
+PASSED: typeof(TextField.prototype) == 'object' [TextField.as:29]
+PASSED: typeof(TextField.prototype.__proto__) == 'object' [TextField.as:30]
+PASSED: TextField.prototype.__proto__ == Object.prototype [TextField.as:31]
+PASSED: typeof(TextField.prototype.setTextFormat) == 'function' [TextField.as:32]
+PASSED: typeof(TextField.prototype.getTextFormat) == 'function' [TextField.as:33]
+PASSED: typeof(TextField.prototype.setNewTextFormat) == 'function' [TextField.as:34]
+PASSED: typeof(TextField.prototype.getNewTextFormat) == 'function' [TextField.as:35]
+PASSED: typeof(TextField.prototype.getDepth) == 'function' [TextField.as:36]
+PASSED: typeof(TextField.prototype.removeTextField) == 'function' [TextField.as:37]
+PASSED: typeof(TextField.prototype.replaceSel) == 'function' [TextField.as:38]
+PASSED: typeof(TextField.prototype.addListener) == 'function' [TextField.as:42]
+PASSED: typeof(TextField.prototype.removeListener) == 'function' [TextField.as:43]
+PASSED: typeof(TextField.prototype.broadcastMessage) == 'function' [TextField.as:44]
+PASSED: TextField.prototype.hasOwnProperty("_listeners") [TextField.as:45]
+PASSED: typeof(TextField.prototype._listeners) == 'object' [TextField.as:46]
+PASSED: TextField.prototype._listeners instanceof Array [TextField.as:47]
+PASSED: TextField.prototype._listeners.length == 0 [TextField.as:48]
+XPASSED: !TextField.prototype.hasOwnProperty('background') [TextField.as:51]
+XPASSED: !TextField.prototype.hasOwnProperty('backgroundColor') [TextField.as:52]
+XPASSED: !TextField.prototype.hasOwnProperty('autoSize') [TextField.as:53]
+XPASSED: !TextField.prototype.hasOwnProperty('border') [TextField.as:54]
+XPASSED: !TextField.prototype.hasOwnProperty('borderColor') [TextField.as:55]
+PASSED: !TextField.prototype.hasOwnProperty('bottomScroll') [TextField.as:56]
+XPASSED: !TextField.prototype.hasOwnProperty('embedFonts') [TextField.as:57]
+PASSED: !TextField.prototype.hasOwnProperty('hscroll') [TextField.as:58]
+XPASSED: !TextField.prototype.hasOwnProperty('html') [TextField.as:59]
+PASSED: !TextField.prototype.hasOwnProperty('htmlText') [TextField.as:60]
+XPASSED: !TextField.prototype.hasOwnProperty('length') [TextField.as:61]
+PASSED: !TextField.prototype.hasOwnProperty('maxChars') [TextField.as:62]
+PASSED: !TextField.prototype.hasOwnProperty('maxhscroll') [TextField.as:63]
+PASSED: !TextField.prototype.hasOwnProperty('maxscroll') [TextField.as:64]
+PASSED: !TextField.prototype.hasOwnProperty('multiline') [TextField.as:65]
+PASSED: !TextField.prototype.hasOwnProperty('password') [TextField.as:66]
+PASSED: !TextField.prototype.hasOwnProperty('restrict') [TextField.as:67]
+PASSED: !TextField.prototype.hasOwnProperty('scroll') [TextField.as:68]
+XPASSED: !TextField.prototype.hasOwnProperty('selectable') [TextField.as:69]
+PASSED: !TextField.prototype.hasOwnProperty('text') [TextField.as:70]
+XPASSED: !TextField.prototype.hasOwnProperty('textColor') [TextField.as:71]
+XPASSED: !TextField.prototype.hasOwnProperty('textHeight') [TextField.as:72]
+XPASSED: !TextField.prototype.hasOwnProperty('textWidth') [TextField.as:73]
+XPASSED: !TextField.prototype.hasOwnProperty('type') [TextField.as:74]
+XPASSED: !TextField.prototype.hasOwnProperty('variable') [TextField.as:75]
+XPASSED: !TextField.prototype.hasOwnProperty('wordWrap') [TextField.as:76]
+PASSED: typeof(TextField.getFontList) == 'function' [TextField.as:79]
+PASSED: typeof(TextField.prototype.getFontList) == 'undefined' [TextField.as:81]
+PASSED: typeof(TextField.prototype.replaceText) == 'function' [TextField.as:84]
+PASSED: typeof(tfObj) == 'object' [TextField.as:90]
+PASSED: tfObj instanceof TextField [TextField.as:91]
+PASSED: typeof(tfObj.setTextFormat) == 'function' [TextField.as:93]
+PASSED: typeof(tfObj.getTextFormat) == 'function' [TextField.as:94]
+PASSED: typeof(tfObj.setNewTextFormat) == 'function' [TextField.as:95]
+PASSED: typeof(tfObj.getNewTextFormat) == 'function' [TextField.as:96]
+PASSED: typeof(tfObj.addListener) == 'function' [TextField.as:97]
+PASSED: typeof(tfObj.removeListener) == 'function' [TextField.as:98]
+PASSED: typeof(tfObj.getDepth) == 'function' [TextField.as:99]
+PASSED: typeof(tfObj.removeTextField) == 'function' [TextField.as:100]
+PASSED: typeof(tfObj.replaceSel) == 'function' [TextField.as:101]
+PASSED: typeof(tfObj.getFontList) == 'undefined' [TextField.as:103]
+PASSED: typeof(ret) == 'object' [TextField.as:113]
+PASSED: ret == _root.tf [TextField.as:114]
+PASSED: typeof(tf) == 'object' [TextField.as:117]
+PASSED: tf.hasOwnProperty('_listeners') [TextField.as:118]
+PASSED: tf._listeners.length == 1 [TextField.as:119]
+PASSED: tf._listeners[0] == tf [TextField.as:120]
+PASSED: !tf.hasOwnProperty('broadcastMessage') [TextField.as:121]
+PASSED: !tf.hasOwnProperty('addListener') [TextField.as:122]
+PASSED: !tf.hasOwnProperty('removeListener') [TextField.as:123]
+PASSED: TextField.prototype.hasOwnProperty('background') [TextField.as:126]
+PASSED: TextField.prototype.hasOwnProperty('backgroundColor') [TextField.as:127]
+PASSED: TextField.prototype.hasOwnProperty('autoSize') [TextField.as:128]
+PASSED: TextField.prototype.hasOwnProperty('border') [TextField.as:129]
+PASSED: TextField.prototype.hasOwnProperty('borderColor') [TextField.as:130]
+XPASSED: TextField.prototype.hasOwnProperty('bottomScroll') [TextField.as:131]
+PASSED: TextField.prototype.hasOwnProperty('embedFonts') [TextField.as:132]
+XPASSED: TextField.prototype.hasOwnProperty('hscroll') [TextField.as:133]
+PASSED: TextField.prototype.hasOwnProperty('html') [TextField.as:134]
+XPASSED: TextField.prototype.hasOwnProperty('htmlText') [TextField.as:135]
+PASSED: TextField.prototype.hasOwnProperty('length') [TextField.as:136]
+XPASSED: TextField.prototype.hasOwnProperty('maxChars') [TextField.as:137]
+XPASSED: TextField.prototype.hasOwnProperty('maxhscroll') [TextField.as:138]
+XPASSED: TextField.prototype.hasOwnProperty('maxscroll') [TextField.as:139]
+XPASSED: TextField.prototype.hasOwnProperty('multiline') [TextField.as:140]
+XPASSED: TextField.prototype.hasOwnProperty('password') [TextField.as:141]
+XPASSED: TextField.prototype.hasOwnProperty('restrict') [TextField.as:142]
+XPASSED: TextField.prototype.hasOwnProperty('scroll') [TextField.as:143]
+PASSED: TextField.prototype.hasOwnProperty('selectable') [TextField.as:144]
+XPASSED: TextField.prototype.hasOwnProperty('text') [TextField.as:145]
+PASSED: TextField.prototype.hasOwnProperty('textColor') [TextField.as:146]
+PASSED: TextField.prototype.hasOwnProperty('textHeight') [TextField.as:147]
+PASSED: TextField.prototype.hasOwnProperty('textWidth') [TextField.as:148]
+PASSED: TextField.prototype.hasOwnProperty('type') [TextField.as:149]
+PASSED: TextField.prototype.hasOwnProperty('variable') [TextField.as:150]
+PASSED: TextField.prototype.hasOwnProperty('wordWrap') [TextField.as:151]
+PASSED: TextField.prototype.hasOwnProperty('length') [TextField.as:152]
+PASSED: ! TextField.prototype.hasOwnProperty('valueOf') [TextField.as:154]
+PASSED: ! TextField.prototype.hasOwnProperty('toString') [TextField.as:155]
+PASSED: TextField.prototype.__proto__.hasOwnProperty('valueOf') [TextField.as:156]
+PASSED: TextField.prototype.__proto__.hasOwnProperty('toString') [TextField.as:157]
+PASSED: typeof(tf._alpha) == 'number' [TextField.as:161]
+PASSED: ! tf.hasOwnProperty('_alpha') [TextField.as:162]
+PASSED: ! tf.__proto__.hasOwnProperty('_alpha') [TextField.as:163]
+PASSED: typeof(tf.autoSize) == 'string' [TextField.as:167]
+PASSED: tf.autoSize == 'none' [TextField.as:168]
+PASSED: ! tf.hasOwnProperty('autoSize') [TextField.as:169]
+PASSED: tf.autoSize == 'none' [TextField.as:171]
+PASSED: tf.autoSize == 'left' [TextField.as:173]
+PASSED: tf.autoSize == 'none' [TextField.as:175]
+PASSED: tf.autoSize == 'center' [TextField.as:177]
+PASSED: tf.autoSize == 'right' [TextField.as:179]
+PASSED: tf.autoSize == 'center' [TextField.as:182]
+PASSED: tf.autoSize == 'left' [TextField.as:184]
+PASSED: tf.autoSize == 'none' [TextField.as:186]
+PASSED: typeof(tf.background) == 'boolean' [TextField.as:192]
+PASSED: !tf.hasOwnProperty('background') [TextField.as:193]
+PASSED: tf.background == false [TextField.as:194]
+PASSED: tf.background == true [TextField.as:196]
+PASSED: tf.background == false [TextField.as:198]
+PASSED: typeof(tf.background) == 'boolean' [TextField.as:199]
+PASSED: typeof(tf.background) == 'boolean' [TextField.as:201]
+PASSED: tf.background == true [TextField.as:202]
+PASSED: tf.background == true [TextField.as:205]
+PASSED: typeof(tf.background) == 'boolean' [TextField.as:208]
+PASSED: tf.background == true [TextField.as:209]
+PASSED: typeof(tf.background) == 'boolean' [TextField.as:211]
+PASSED: tf.background == true [TextField.as:212]
+PASSED: typeof(tf.backgroundColor) == 'number' [TextField.as:217]
+PASSED: !tf.hasOwnProperty('backgroundColor') [TextField.as:218]
+PASSED: tf.backgroundColor == 0x00FF00 [TextField.as:220]
+PASSED: tf.backgroundColor == 0x000000 [TextField.as:222]
+PASSED: tf.backgroundColor == 0x0000FF [TextField.as:225]
+PASSED: typeof(tf.border) == 'boolean' [TextField.as:229]
+PASSED: !tf.hasOwnProperty('border') [TextField.as:230]
+PASSED: typeof(tf.borderColor) == 'number' [TextField.as:234]
+PASSED: !tf.hasOwnProperty('borderColor') [TextField.as:235]
+XPASSED: typeof(tf.bottomScroll) == 'number' [TextField.as:239]
+PASSED: !tf.hasOwnProperty('bottomScroll') [TextField.as:240]
+XPASSED: tf.bottomScroll == 1 [TextField.as:241]
+XPASSED: tf.bottomScroll == 1 [TextField.as:243]
+PASSED: typeof(tf.embedFonts) == 'boolean' [TextField.as:247]
+PASSED: !tf.hasOwnProperty('embedFonts') [TextField.as:248]
+PASSED: tf.embedFonts == false [TextField.as:249]
+PASSED: tf.embedFonts == true [TextField.as:251]
+PASSED: typeof(tf.embedFonts) == 'boolean' [TextField.as:253]
+PASSED: tf.embedFonts == true [TextField.as:254]
+PASSED: typeof(tf.embedFonts) == 'boolean' [TextField.as:256]
+PASSED: tf.embedFonts == false [TextField.as:257]
+XPASSED: typeof(tf._highquality) == 'number' [TextField.as:262]
+PASSED: !tf.hasOwnProperty('_highquality') [TextField.as:263]
+PASSED: !tf.__proto__.hasOwnProperty('_highquality') [TextField.as:264]
+XPASSED: tf._highquality == 1 [TextField.as:265]
+PASSED: tf._highquality == 0 [TextField.as:267]
+PASSED: typeof(tf._height) == 'number' [TextField.as:272]
+PASSED: !tf.hasOwnProperty('_height') [TextField.as:273]
+PASSED: !tf.__proto__.hasOwnProperty('_height') [TextField.as:274]
+PASSED: tf._height == 500 [TextField.as:275]
+PASSED: tf._height == 99999 [TextField.as:277]
+XPASSED: typeof(tf.hscroll) == 'number' [TextField.as:282]
+PASSED: !tf.hasOwnProperty('hscroll') [TextField.as:283]
+XPASSED: tf.hscroll == 0 [TextField.as:284]
+XPASSED: tf.hscroll == 0 [TextField.as:286]
+PASSED: typeof(tf.html) == 'boolean' [TextField.as:291]
+PASSED: !tf.hasOwnProperty('html') [TextField.as:292]
+PASSED: tf.html == false [TextField.as:293]
+PASSED: tf.html == true [TextField.as:295]
+PASSED: typeof(tf.htmlText) == 'string' [TextField.as:300]
+PASSED: !tf.hasOwnProperty('htmlText') [TextField.as:301]
+PASSED: tf.htmlText == '' [TextField.as:302]
+PASSED: typeof(tf.htmlText) == 'string' [TextField.as:304]
+PASSED: tf.htmlText == '' [TextField.as:305]
+PASSED: tf.html == false [TextField.as:306]
+PASSED: tf.html == false [TextField.as:308]
+PASSED: tf.htmlText == 'Hello <b>html</b> world' [TextField.as:309]
+PASSED: tf.text == 'Hello <b>html</b> world' [TextField.as:311]
+PASSED: tf.htmlText == 'Hello world' [TextField.as:313]
+PASSED: typeof(tf.length) == 'number' [TextField.as:319]
+PASSED: !tf.hasOwnProperty('length') [TextField.as:320]
+PASSED: tf.length == 0 [TextField.as:322]
+PASSED: tf.length == 0 [TextField.as:324]
+PASSED: tf.length == 11 [TextField.as:326]
+PASSED: tf.length == 18 [TextField.as:328]
+XPASSED: typeof(tf.maxChars) == 'null' [TextField.as:332]
+PASSED: !tf.hasOwnProperty('maxChars') [TextField.as:333]
+PASSED: tf.maxChars == 5 [TextField.as:335]
+PASSED: tf.text == "0123456789" [TextField.as:338]
+XPASSED: typeof(tf.maxhscroll) == 'number' [TextField.as:343]
+PASSED: !tf.hasOwnProperty('maxhscroll') [TextField.as:344]
+XPASSED: tf.maxhscroll == 0 [TextField.as:345]
+XPASSED: tf.maxhscroll == 0 [TextField.as:347]
+XPASSED: typeof(tf.maxscroll) == 'number' [TextField.as:351]
+PASSED: !tf.hasOwnProperty('maxscroll') [TextField.as:352]
+XPASSED: tf.maxscroll == 1 [TextField.as:353]
+XPASSED: tf.maxscroll == 1 [TextField.as:355]
+XPASSED: typeof(tf.multiline) == 'boolean' [TextField.as:359]
+PASSED: !tf.hasOwnProperty('multiline') [TextField.as:360]
+XPASSED: tf.multiline == false [TextField.as:361]
+PASSED: tf.multiline == true [TextField.as:363]
+PASSED: typeof(tf._name) == 'string' [TextField.as:370]
+PASSED: !tf.hasOwnProperty('_name') [TextField.as:371]
+XPASSED: !tf.__proto__.hasOwnProperty('_name') [TextField.as:372]
+PASSED: tf._name == 'tf' [TextField.as:373]
+PASSED: typeof(tf) == 'undefined' [TextField.as:376]
+PASSED: typeof(tfref) == 'object' [TextField.as:377]
+PASSED: tfref._name == 'changed' [TextField.as:378]
+PASSED: tfref._target == '/changed' [TextField.as:379]
+PASSED: typeof(tf) == 'object' [TextField.as:381]
+PASSED: typeof(tfref) == 'object' [TextField.as:382]
+PASSED: typeof(tf._parent) == 'movieclip' [TextField.as:389]
+PASSED: !tf.hasOwnProperty('_parent') [TextField.as:390]
+XPASSED: !tf.__proto__.hasOwnProperty('_parent') [TextField.as:391]
+PASSED: tf._parent == _root [TextField.as:392]
+XPASSED: tf._parent == 23 [TextField.as:395]
+PASSED: tf._target == "/tf" [TextField.as:396]
+XPASSED: r [TextField.as:398]
+PASSED: !r [TextField.as:400]
+PASSED: tf._parent == _root [TextField.as:402]
+XPASSED: typeof(tf.password) == 'boolean' [TextField.as:410]
+PASSED: !tf.hasOwnProperty('password') [TextField.as:411]
+XPASSED: tf.password == false [TextField.as:412]
+PASSED: tf.password == true [TextField.as:414]
+XPASSED: typeof(tf._quality) == 'string' [TextField.as:421]
+PASSED: !tf.hasOwnProperty('quality') [TextField.as:422]
+PASSED: !tf.__proto__.hasOwnProperty('quality') [TextField.as:423]
+PASSED: !tf.__proto__.__proto__.hasOwnProperty('quality') [TextField.as:424]
+PASSED: !tf.__proto__.__proto__.__proto__.hasOwnProperty('quality') [TextField.as:425]
+XPASSED: tf._quality == "HIGH" [TextField.as:426]
+XPASSED: tf._quality == "HIGH" [TextField.as:428]
+PASSED: tf._quality == "LOW" [TextField.as:430]
+XPASSED: typeof(tf.restrict) == 'null' [TextField.as:435]
+PASSED: !tf.hasOwnProperty('restrict') [TextField.as:436]
+PASSED: tf.text == "Hello World" [TextField.as:439]
+PASSED: tf.text == "Hello World" [TextField.as:443]
+XPASSED: typeof(tf._rotation) == 'number' [TextField.as:448]
+PASSED: !tf.hasOwnProperty('_rotation') [TextField.as:449]
+PASSED: !tf.__proto__.hasOwnProperty('_rotation') [TextField.as:450]
+XPASSED: tf._rotation == 0 [TextField.as:451]
+PASSED: tf._rotation == 10 [TextField.as:453]
+XPASSED: typeof(tf.scroll) == 'number' [TextField.as:459]
+PASSED: ! tf.hasOwnProperty('scroll') [TextField.as:460]
+XPASSED: tf.scroll == 1 [TextField.as:461]
+XPASSED: tf.scroll == 1 [TextField.as:463]
+PASSED: typeof(tf.selectable) == 'boolean' [TextField.as:467]
+PASSED: ! tf.hasOwnProperty('selectable') [TextField.as:468]
+PASSED: tf.selectable == true [TextField.as:469]
+PASSED: tf.selectable == false [TextField.as:471]
+PASSED: typeof(tf.selectable) == 'boolean' [TextField.as:473]
+XPASSED: typeof(tf._soundbuftime) == 'number' [TextField.as:478]
+PASSED: ! tf.hasOwnProperty('_soundbuftime') [TextField.as:479]
+PASSED: ! tf.__proto__.hasOwnProperty('_soundbuftime') [TextField.as:480]
+XPASSED: tf._soundbuftime == 5 [TextField.as:481]
+PASSED: typeof(tf.tabEnabled) == 'undefined' [TextField.as:485]
+PASSED: ! tf.hasOwnProperty('tabEnabled') [TextField.as:486]
+PASSED: ! tf.__proto__.hasOwnProperty('tabEnabled') [TextField.as:487]
+PASSED: tf.tabEnabled == false [TextField.as:489]
+PASSED: typeof(tf.tabIndex) == 'undefined' [TextField.as:494]
+PASSED: ! tf.hasOwnProperty('tabIndex') [TextField.as:495]
+PASSED: ! tf.__proto__hasOwnProperty('tabIndex') [TextField.as:496]
+PASSED: tf.tabIndex == 9 [TextField.as:498]
+PASSED: typeof(tf._target) == 'string' [TextField.as:505]
+PASSED: ! tf.hasOwnProperty('_target') [TextField.as:506]
+XPASSED: ! tf.__proto__.hasOwnProperty('_target') [TextField.as:507]
+PASSED: tf._target == '/tf' [TextField.as:508]
+PASSED: tf._target == '/tf' [TextField.as:511]
+PASSED: typeof(tf.text) == 'string' [TextField.as:515]
+PASSED: ! tf.hasOwnProperty('text') [TextField.as:516]
+PASSED: tf.text == 'Hello World' [TextField.as:517]
+PASSED: tf.text == 'hello world' [TextField.as:519]
+PASSED: tf.length == 11 [TextField.as:520]
+PASSED: typeof(tf.textColor) == 'number' [TextField.as:525]
+PASSED: ! tf.hasOwnProperty('textColor') [TextField.as:526]
+PASSED: tf.textColor == 0 [TextField.as:527]
+PASSED: tf.textColor == 0xFF0000 [TextField.as:529]
+PASSED: typeof(tf.textHeight) == 'number' [TextField.as:534]
+PASSED: ! tf.hasOwnProperty('textHeight') [TextField.as:535]
+PASSED: tf.textHeight == currentHeight [TextField.as:538]
+PASSED: typeof(tf.textWidth) == 'number' [TextField.as:542]
+PASSED: ! tf.hasOwnProperty('textWidth') [TextField.as:543]
+PASSED: tf.textWidth == currentWidth [TextField.as:546]
+PASSED: typeof(tf.type) == 'string' [TextField.as:550]
+PASSED: ! tf.hasOwnProperty('type') [TextField.as:551]
+PASSED: tf.type == 'dynamic' [TextField.as:552]
+PASSED: tf.type == 'input' [TextField.as:554]
+PASSED: typeof(tf.type) == 'string' [TextField.as:556]
+PASSED: tf.type == 'input' [TextField.as:557]
+PASSED: tf.type == 'dynamic' [TextField.as:559]
+PASSED: tf.type == 'dynamic' [TextField.as:561]
+PASSED: tf.type == 'input' [TextField.as:564]
+XPASSED: typeof(tf._url) == 'string' [TextField.as:568]
+PASSED: ! tf.hasOwnProperty('_url') [TextField.as:569]
+PASSED: ! tf.__proto__.hasOwnProperty('_url') [TextField.as:570]
+XPASSED: tf._url == _root._url [TextField.as:571]
+XPASSED: tf._url == _root._url [TextField.as:573]
+XPASSED: typeof(tf.variable) == 'null' [TextField.as:583]
+PASSED: ! tf.hasOwnProperty('variable') [TextField.as:584]
+XPASSED: typeof(tf.variable) == 'null' [TextField.as:586]
+PASSED: typeof(tf.variable) == 'string' [TextField.as:588]
+PASSED: tf.variable == '2' [TextField.as:589]
+XPASSED: typeof(tf.variable) == 'null' [TextField.as:591]
+XPASSED: typeof(tf.variable) == 'null' [TextField.as:594]
+PASSED: tf.variable == '_level0.inputVar' [TextField.as:596]
+XPASSED: typeof(_level0.inputVar) == 'undefined' [TextField.as:597]
+XPASSED: tf.text == "hello world" [TextField.as:598]
+XPASSED: !_level0.hasOwnProperty('inputVar') [TextField.as:599]
+PASSED: tf.text == "dynamic variable" [TextField.as:601]
+PASSED: _level0.inputVar == "back-propagated" [TextField.as:603]
+XPASSED: tf.text == "back-propagated" [TextField.as:606]
+XPASSED: tf.text == "back-propagated" [TextField.as:608]
+PASSED: o.t == "back-to-object" [TextField.as:610]
+PASSED: tf.text == "back-to-object" [TextField.as:612]
+XPASSED: tf.text == "from object again" [TextField.as:614]
+PASSED: o.t == "from object again" [TextField.as:615]
+XPASSED: tf.text == "from object again" [TextField.as:617]
+PASSED: o.t == "and forever back" [TextField.as:619]
+PASSED: typeof(hardref) == 'object' [TextField.as:640]
+PASSED: typeof(softref) == 'object' [TextField.as:641]
+PASSED: softref.prop == 5 [TextField.as:642]
+PASSED: softref.getDepth() == 23 [TextField.as:643]
+PASSED: typeof(hardref) == 'undefined' [TextField.as:645]
+PASSED: typeof(softref) == 'movieclip' [TextField.as:646]
+PASSED: typeof(softref.prop) == 'undefined' [TextField.as:647]
+PASSED: typeof(hardref) == 'movieclip' [TextField.as:649]
+PASSED: typeof(softref) == 'movieclip' [TextField.as:651]
+PASSED: softref.prop == 7 [TextField.as:652]
+PASSED: typeof(softref) == 'object' [TextField.as:656]
+PASSED: softref.prop == 9 [TextField.as:657]
+PASSED: typeof(tf._visible) == 'boolean' [TextField.as:664]
+PASSED: ! tf.hasOwnProperty('_visible') [TextField.as:665]
+PASSED: ! tf.__proto__.hasOwnProperty('_visible') [TextField.as:666]
+PASSED: tf._visible == true [TextField.as:667]
+PASSED: tf._visible == false [TextField.as:669]
+PASSED: typeof(tf._width) == 'number' [TextField.as:676]
+PASSED: ! tf.hasOwnProperty('_width') [TextField.as:677]
+PASSED: ! tf.__proto__.hasOwnProperty('_width') [TextField.as:678]
+PASSED: tf._width == 500 [TextField.as:679]
+PASSED: tf._width == 99999 [TextField.as:681]
+PASSED: typeof(tf.wordWrap) == 'boolean' [TextField.as:688]
+PASSED: ! tf.hasOwnProperty('wordWrap') [TextField.as:689]
+PASSED: tf.wordWrap == false [TextField.as:690]
+PASSED: typeof(tf._x) == 'number' [TextField.as:697]
+PASSED: ! tf.hasOwnProperty('_x') [TextField.as:698]
+PASSED: ! tf.__proto__.hasOwnProperty('_x') [TextField.as:699]
+PASSED: tf._x == 10 [TextField.as:700]
+PASSED: tf._x == 20 [TextField.as:702]
+PASSED: typeof(tf._xmouse) == 'number' [TextField.as:708]
+PASSED: ! tf.hasOwnProperty('_xmouse') [TextField.as:709]
+XPASSED: ! tf.__proto__.hasOwnProperty('_xmouse') [TextField.as:710]
+PASSED: typeof(tf._xmouse) == 'number' [TextField.as:713]
+PASSED: tf._xmouse == currXmouse [TextField.as:714]
+PASSED: typeof(tf._xscale) == 'number' [TextField.as:720]
+PASSED: ! tf.hasOwnProperty('_xscale') [TextField.as:721]
+XPASSED: ! tf.__proto__.hasOwnProperty('_xscale') [TextField.as:722]
+PASSED: tf._xscale == 100 [TextField.as:723]
+NOTE: textWidth: _xscale=100: 79; _xscale=200: 39
+XPASSED: tf._width == currWidth*2 [TextField.as:730]
+PASSED: typeof(tf._y) == 'number' [TextField.as:737]
+PASSED: ! tf.hasOwnProperty('_y') [TextField.as:738]
+PASSED: ! tf.__proto__.hasOwnProperty('_y') [TextField.as:739]
+PASSED: tf._y == 10 [TextField.as:740]
+PASSED: tf._y == 5 [TextField.as:742]
+PASSED: typeof(tf._ymouse) == 'number' [TextField.as:748]
+PASSED: ! tf.hasOwnProperty('_ymouse') [TextField.as:749]
+XPASSED: ! tf.__proto__.hasOwnProperty('_ymouse') [TextField.as:750]
+PASSED: typeof(tf._ymouse) == 'number' [TextField.as:753]
+PASSED: tf._ymouse == currYmouse [TextField.as:754]
+PASSED: typeof(tf._yscale) == 'number' [TextField.as:760]
+PASSED: ! tf.hasOwnProperty('_yscale') [TextField.as:761]
+XPASSED: ! tf.__proto__.hasOwnProperty('_yscale') [TextField.as:762]
+PASSED: tf._yscale == 100 [TextField.as:763]
+NOTE: textHeight: _yscale=100: 15; _yscale=200: 13
+XPASSED: tf._height == currHeight*2 [TextField.as:770]
+PASSED: tf._width == 10 [TextField.as:781]
+PASSED: tf._width > 10 [TextField.as:784]
+PASSED: tf.textWidth == origTextWidth [TextField.as:785]
+NOTE: After setting wordWrap flat: textWidth: 57 origTextWidth:57
+PASSED: tf.textWidth == origTextWidth [TextField.as:789]
+NOTE: After reducing _width: textWidth: 9 origTextWidth:57
+PASSED: tf._width == 10 [TextField.as:792]
+XPASSED: origTextWidth > tf.textWidth [TextField.as:797]
+PASSED: tf._width == linewidth [TextField.as:806]
+PASSED: typeof(tf2) == 'object' [TextField.as:814]
+PASSED: tf2._width == 1 [TextField.as:815]
+PASSED: tf2._height == 2 [TextField.as:816]
+PASSED: tf2._x == 5 [TextField.as:817]
+PASSED: tf2._y == 6 [TextField.as:818]
+PASSED: tf3._x == 10 [TextField.as:821]
+PASSED: tf3._y == 10 [TextField.as:822]
+PASSED: tf3._width == 0 [TextField.as:823]
+PASSED: tf3._height == 50 [TextField.as:824]
+PASSED: tf4._width == 0 [TextField.as:827]
+PASSED: tf4._height == 20 [TextField.as:828]
+PASSED: _root[3].getDepth() == 101 [TextField.as:831]
+PASSED: _root[3]._x == 10 [TextField.as:832]
+PASSED: _root[3]._y == 100 [TextField.as:833]
+PASSED: _root[3]._width == 32 [TextField.as:834]
+PASSED: _root[3]._height == 15 [TextField.as:835]
+PASSED: tf5._name == "tf5" [TextField.as:839]
+PASSED: tf5._target == "/tf5" [TextField.as:840]
+PASSED: tf5.getDepth() == 102 [TextField.as:841]
+PASSED: tf5._x == 10 [TextField.as:842]
+PASSED: tf5._y == 130 [TextField.as:843]
+PASSED: tf5._width == 3 [TextField.as:844]
+PASSED: tf5._height == 2 [TextField.as:845]
+PASSED: typeof(tf6) == 'undefined' [TextField.as:849]
+PASSED: typeof(htf) == 'object' [TextField.as:858]
+PASSED: _root._x == 0 [TextField.as:871]
+PASSED: _root._y == 0 [TextField.as:872]
+PASSED: _root._visible == true [TextField.as:873]
+PASSED: _root._xscale == 100 [TextField.as:874]
+PASSED: _root._yscale == 100 [TextField.as:875]
+PASSED: _root._target == '/' [TextField.as:876]
+XPASSED: _root._parent == 'fake_parent' [TextField.as:877]
+PASSED: _root._name == '' [TextField.as:878]
+PASSED: tf._x == 10 [TextField.as:880]
+PASSED: tf._y == 11 [TextField.as:881]
+PASSED: tf._visible == false [TextField.as:882]
+PASSED: tf._xscale == 200 [TextField.as:883]
+XPASSED: tf._yscale == 201 [TextField.as:884]
+PASSED: tf._target == '/fake_name' [TextField.as:885]
+PASSED: tf._parent == _level0 [TextField.as:886]
+PASSED: tf._name == 'fake_name' [TextField.as:887]
+check_totals: 416
diff --git a/test/gnash/actionscript.all/pending/TextField.as b/test/gnash/actionscript.all/pending/TextField.as
new file mode 100644
index 0000000..a4291f0
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/TextField.as
@@ -0,0 +1,908 @@
+// 
+//   Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+// Test case for TextField ActionScript class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: TextField.as,v 1.56 2008/06/05 03:26:32 zoulunkai Exp $";
+#include "check.as"
+
+#if OUTPUT_VERSION > 5
+
+check_equals(typeof(TextField), 'function');
+check_equals(typeof(TextField.prototype), 'object');
+check_equals(typeof(TextField.prototype.__proto__), 'object');
+check_equals(TextField.prototype.__proto__, Object.prototype);
+check_equals(typeof(TextField.prototype.setTextFormat), 'function');
+check_equals(typeof(TextField.prototype.getTextFormat), 'function');
+check_equals(typeof(TextField.prototype.setNewTextFormat), 'function');
+check_equals(typeof(TextField.prototype.getNewTextFormat), 'function');
+check_equals(typeof(TextField.prototype.getDepth), 'function');
+check_equals(typeof(TextField.prototype.removeTextField), 'function');
+check_equals(typeof(TextField.prototype.replaceSel), 'function');
+
+ // TextField.prototype was implicitly initialized by ASBroadcaster.initialize !
+ // See http://www.senocular.com/flash/tutorials/listenersasbroadcaster/?page=2
+ check_equals(typeof(TextField.prototype.addListener), 'function');
+ check_equals(typeof(TextField.prototype.removeListener), 'function');
+ check_equals(typeof(TextField.prototype.broadcastMessage), 'function');
+ check(TextField.prototype.hasOwnProperty("_listeners"));
+ check_equals(typeof(TextField.prototype._listeners), 'object');
+ check(TextField.prototype._listeners instanceof Array);
+ check_equals(TextField.prototype._listeners.length, 0);
+
+// NOTE: the following will be true after a call to createTextField ! Seek forward to see..
+xcheck( !TextField.prototype.hasOwnProperty('background'));
+xcheck( !TextField.prototype.hasOwnProperty('backgroundColor'));
+xcheck( !TextField.prototype.hasOwnProperty('autoSize') );
+xcheck( !TextField.prototype.hasOwnProperty('border') );
+xcheck( !TextField.prototype.hasOwnProperty('borderColor') );
+check( !TextField.prototype.hasOwnProperty('bottomScroll') );
+xcheck( !TextField.prototype.hasOwnProperty('embedFonts') );
+check( !TextField.prototype.hasOwnProperty('hscroll') );
+xcheck( !TextField.prototype.hasOwnProperty('html') );
+check( !TextField.prototype.hasOwnProperty('htmlText') );
+xcheck( !TextField.prototype.hasOwnProperty('length') );
+check( !TextField.prototype.hasOwnProperty('maxChars') );
+check( !TextField.prototype.hasOwnProperty('maxhscroll') );
+check( !TextField.prototype.hasOwnProperty('maxscroll') );
+check( !TextField.prototype.hasOwnProperty('multiline') );
+check( !TextField.prototype.hasOwnProperty('password') );
+check( !TextField.prototype.hasOwnProperty('restrict') );
+check( !TextField.prototype.hasOwnProperty('scroll') );
+xcheck( !TextField.prototype.hasOwnProperty('selectable') );
+check( !TextField.prototype.hasOwnProperty('text') );
+xcheck( !TextField.prototype.hasOwnProperty('textColor') );
+xcheck( !TextField.prototype.hasOwnProperty('textHeight') ); // should be available on first instantiation
+xcheck( !TextField.prototype.hasOwnProperty('textWidth') ); // should be available on first instantiation
+xcheck( !TextField.prototype.hasOwnProperty('type') ); // should be available on first instantiation
+xcheck( !TextField.prototype.hasOwnProperty('variable') );
+xcheck( !TextField.prototype.hasOwnProperty('wordWrap') );
+
+// this is a static method
+check_equals(typeof(TextField.getFontList), 'function');
+
+check_equals(typeof(TextField.prototype.getFontList), 'undefined');
+
+#if OUTPUT_VERSION > 6
+check_equals(typeof(TextField.prototype.replaceText), 'function');
+#else
+check_equals(typeof(TextField.prototype.replaceText), 'undefined');
+#endif
+
+tfObj = new TextField();
+check_equals(typeof(tfObj), 'object');
+check(tfObj instanceof TextField);
+
+check_equals(typeof(tfObj.setTextFormat), 'function');
+check_equals(typeof(tfObj.getTextFormat), 'function');
+check_equals(typeof(tfObj.setNewTextFormat), 'function');
+check_equals(typeof(tfObj.getNewTextFormat), 'function');
+check_equals(typeof(tfObj.addListener), 'function');
+check_equals(typeof(tfObj.removeListener), 'function');
+check_equals(typeof(tfObj.getDepth), 'function');
+check_equals(typeof(tfObj.removeTextField), 'function');
+check_equals(typeof(tfObj.replaceSel), 'function');
+// this is a static method, it's available as TextField.getFontList
+check_equals(typeof(tfObj.getFontList), 'undefined');
+
+//--------------------------------------------------
+// Check textfield creation trough createTextField
+//--------------------------------------------------
+
+ret = createTextField("tf", 99, 10, 10, 500, 500);
+#if OUTPUT_VERSION < 8
+check_equals(typeof(ret), 'undefined');
+#else
+check_equals(typeof(ret), 'object');
+check_equals(ret, _root.tf);
+#endif
+
+check_equals(typeof(tf), 'object');
+check(tf.hasOwnProperty('_listeners'));
+check_equals(tf._listeners.length, 1); // adds self to the listeners
+check_equals(tf._listeners[0], tf); // adds self to the listeners set
+check(!tf.hasOwnProperty('broadcastMessage'));
+check(!tf.hasOwnProperty('addListener'));
+check(!tf.hasOwnProperty('removeListener'));
+
+// NOTE: the following were false before the call to createTextField ! Seek backward to see..
+check( TextField.prototype.hasOwnProperty('background'));
+check( TextField.prototype.hasOwnProperty('backgroundColor'));
+check( TextField.prototype.hasOwnProperty('autoSize') );
+check( TextField.prototype.hasOwnProperty('border') );
+check( TextField.prototype.hasOwnProperty('borderColor') );
+xcheck( TextField.prototype.hasOwnProperty('bottomScroll') );
+check( TextField.prototype.hasOwnProperty('embedFonts') );
+xcheck( TextField.prototype.hasOwnProperty('hscroll') );
+check( TextField.prototype.hasOwnProperty('html') );
+xcheck( TextField.prototype.hasOwnProperty('htmlText') );
+check( TextField.prototype.hasOwnProperty('length') );
+xcheck( TextField.prototype.hasOwnProperty('maxChars') );
+xcheck( TextField.prototype.hasOwnProperty('maxhscroll') );
+xcheck( TextField.prototype.hasOwnProperty('maxscroll') );
+xcheck( TextField.prototype.hasOwnProperty('multiline') );
+xcheck( TextField.prototype.hasOwnProperty('password') );
+xcheck( TextField.prototype.hasOwnProperty('restrict') );
+xcheck( TextField.prototype.hasOwnProperty('scroll') );
+check( TextField.prototype.hasOwnProperty('selectable') );
+xcheck( TextField.prototype.hasOwnProperty('text') );
+check( TextField.prototype.hasOwnProperty('textColor') );
+check( TextField.prototype.hasOwnProperty('textHeight') );
+check( TextField.prototype.hasOwnProperty('textWidth') );
+check( TextField.prototype.hasOwnProperty('type') );
+check( TextField.prototype.hasOwnProperty('variable') );
+check( TextField.prototype.hasOwnProperty('wordWrap') );
+check( TextField.prototype.hasOwnProperty('length') );
+
+check( ! TextField.prototype.hasOwnProperty('valueOf') );
+check( ! TextField.prototype.hasOwnProperty('toString') );
+check( TextField.prototype.__proto__.hasOwnProperty('valueOf') );
+check( TextField.prototype.__proto__.hasOwnProperty('toString') );
+
+// Check TextField._alpha
+
+check_equals(typeof(tf._alpha), 'number');
+check( ! tf.hasOwnProperty('_alpha') ); // why ??
+check( ! tf.__proto__.hasOwnProperty('_alpha') ); // why ??
+
+// Check TextField.autoSize
+
+check_equals(typeof(tf.autoSize), 'string');
+check_equals(tf.autoSize, 'none'); // TODO: research which valid values we have
+check(! tf.hasOwnProperty('autoSize'));
+tf.autoSize = false;
+check_equals(tf.autoSize, 'none'); // false is a synonim for 'none'
+tf.autoSize = true;
+check_equals(tf.autoSize, 'left'); // true is a synonim for 'left'
+tf.autoSize = 'true';
+check_equals(tf.autoSize, 'none'); // 'true' (as a string) is invalid, thus equivalent to 'none'
+tf.autoSize = 'center';
+check_equals(tf.autoSize, 'center'); // 'center' is a valid value
+tf.autoSize = 'right';
+check_equals(tf.autoSize, 'right'); // 'right' is a valid value
+o = new Object(); o.toString = function() { return 'center'; };
+tf.autoSize = o;
+check_equals(tf.autoSize, 'center'); // toString is called for object args
+tf.autoSize = 'lEft';
+check_equals(tf.autoSize, 'left'); // arg is not case sensitive 
+tf.autoSize = new Boolean(true);
+check_equals(tf.autoSize, 'none'); // a Boolean is the same as any other object
+
+tf.autoSize = 'none';
+
+// Check TextField.background
+
+check_equals(typeof(tf.background), 'boolean');
+check(!tf.hasOwnProperty('background'));
+check_equals(tf.background, false);
+tf.background = true;
+check_equals(tf.background, true);
+tf.background = 0;
+check_equals(tf.background, false);
+check_equals(typeof(tf.background), 'boolean');
+tf.background = 54.3;
+check_equals(typeof(tf.background), 'boolean');
+check_equals(tf.background, true);
+o = new Object; o.valueOf = function() { return 0x0000FF; };
+tf.background = o;
+check_equals(tf.background, true);
+o = new Object; o.valueOf = function() { return 'string'; };
+tf.background = o;
+check_equals(typeof(tf.background), 'boolean');
+check_equals(tf.background, true); // 'string' evaluates to true
+tf.background = new Boolean(false);
+check_equals(typeof(tf.background), 'boolean');
+check_equals(tf.background, true);  // dunno why, but Boolean evaluates to false 
+tf.background = false;
+
+// Check TextField.backgroundColor
+
+check_equals(typeof(tf.backgroundColor), 'number');
+check(!tf.hasOwnProperty('backgroundColor'));
+tf.backgroundColor = 0x00FF00;
+check_equals(tf.backgroundColor, 0x00FF00);
+tf.backgroundColor = 'red';
+check_equals(tf.backgroundColor, 0x000000); // string value evaluates to NaN thus 0
+o = new Object; o.valueOf = function() { return 0x0000FF; };
+tf.backgroundColor = o;
+check_equals(tf.backgroundColor, 0x0000FF); // valueOf is invoked
+
+// Check TextField.border
+
+check_equals(typeof(tf.border), 'boolean');
+check(!tf.hasOwnProperty('border'));
+
+// Check TextField.borderColor
+
+check_equals(typeof(tf.borderColor), 'number');
+check(!tf.hasOwnProperty('borderColor'));
+
+// Check TextField.bottomScroll
+
+xcheck_equals(typeof(tf.bottomScroll), 'number');
+check(!tf.hasOwnProperty('bottomScroll'));
+xcheck_equals(tf.bottomScroll, 1);
+tf.bottomScroll = 100; // bottomScroll is read-only
+xcheck_equals(tf.bottomScroll, 1);
+
+// Check TextField.embedFonts
+
+check_equals(typeof(tf.embedFonts), 'boolean');
+check(!tf.hasOwnProperty('embedFonts'));
+check_equals(tf.embedFonts, false);
+tf.embedFonts = true;
+check_equals(tf.embedFonts, true);
+tf.embedFonts = new Number(0); // will be converted to bool (true)
+check_equals(typeof(tf.embedFonts), 'boolean');
+check_equals(tf.embedFonts, true);
+tf.embedFonts = ""; // will be converted to bool (false);
+check_equals(typeof(tf.embedFonts), 'boolean');
+check_equals(tf.embedFonts, false);
+// TODO: do this test with really embedded fonts, in misc-ming.all/DefineEditTextTest.c
+
+// Check TextField._highquality
+
+xcheck_equals(typeof(tf._highquality), 'number');
+check(!tf.hasOwnProperty('_highquality'));
+check(!tf.__proto__.hasOwnProperty('_highquality'));
+xcheck_equals(tf._highquality, 1);
+tf._highquality = 0;
+check_equals(tf._highquality, 0);
+tf._highquality = 1;
+
+// Check TextField._height (how is this different from textHeight?)
+
+check_equals(typeof(tf._height), 'number');
+check(!tf.hasOwnProperty('_height'));
+check(!tf.__proto__.hasOwnProperty('_height'));
+check_equals(tf._height, 500); // as we created it, see createTextField call
+tf._height = 99999;
+check_equals(tf._height, 99999); 
+tf._height = 500;
+
+// Check TextField.hscroll
+
+xcheck_equals(typeof(tf.hscroll), 'number');
+check(!tf.hasOwnProperty('hscroll'));
+xcheck_equals(tf.hscroll, 0);
+tf.hscroll = 1;
+xcheck_equals(tf.hscroll, 0);
+tf.hscroll = 0;
+
+// Check TextField.html
+
+check_equals(typeof(tf.html), 'boolean');
+check(!tf.hasOwnProperty('html'));
+check_equals(tf.html, false);
+tf.html = true;
+check_equals(tf.html, true);
+tf.html = false;
+
+// Check TextField.htmlText (the displayed text in explicit HTML)
+
+check_equals(typeof(tf.htmlText), 'string');
+check(!tf.hasOwnProperty('htmlText'));
+check_equals(tf.htmlText, '');
+tf.htmlText = new Array;
+check_equals(typeof(tf.htmlText), 'string'); // forced cast to string
+check_equals(tf.htmlText, ''); 
+check_equals(tf.html, false);
+tf.htmlText = "Hello <b>html</b> world";
+check_equals(tf.html, false); // assigning to htmlText doesn't change the 'html' flag
+check_equals(tf.htmlText, 'Hello <b>html</b> world');
+// Changing htmlText also changes text
+check_equals(tf.text, 'Hello <b>html</b> world');
+tf.text = "Hello world";
+check_equals(tf.htmlText, 'Hello world');
+
+//-------------------------------------------------------------------------
+// Check TextField.length  (number of characters in text)
+//-------------------------------------------------------------------------
+
+check_equals(typeof(tf.length), 'number');
+check(!tf.hasOwnProperty('length'));
+tf.text = "";
+check_equals(tf.length, 0);
+tf.length = 10; // you don't change lenght like this, you assign to text instead
+check_equals(tf.length, 0);
+tf.text = "Hello world";
+check_equals(tf.length, 11);
+tf.htmlText = "Hello <b>world</b>";
+check_equals(tf.length, 18); // the tags are also counted
+
+// Check TextField.maxChars
+
+xcheck_equals(typeof(tf.maxChars), 'null');
+check(!tf.hasOwnProperty('maxChars'));
+tf.maxChars = 5;
+check_equals(tf.maxChars, 5);
+tf.text = "0123456789";
+// no effect (maybe only limits user input)
+check_equals(tf.text, "0123456789");
+tf.maxChars = null;
+
+// Check TextField.maxhscroll
+
+xcheck_equals(typeof(tf.maxhscroll), 'number');
+check(!tf.hasOwnProperty('maxhscroll'));
+xcheck_equals(tf.maxhscroll, 0);
+tf.maxhscroll = 10;
+xcheck_equals(tf.maxhscroll, 0); // read-only
+
+// Check TextField.maxscroll
+
+xcheck_equals(typeof(tf.maxscroll), 'number');
+check(!tf.hasOwnProperty('maxscroll'));
+xcheck_equals(tf.maxscroll, 1);
+tf.maxscroll = 10;
+xcheck_equals(tf.maxscroll, 1); // read-only
+
+// Check TextField.multiline
+
+xcheck_equals(typeof(tf.multiline), 'boolean');
+check(!tf.hasOwnProperty('multiline'));
+xcheck_equals(tf.multiline, false);
+tf.multiline = true;
+check_equals(tf.multiline, true);
+tf.multiline = false;
+
+//-------------------------------------------------------------------------
+// Check TextField._name
+//-------------------------------------------------------------------------
+
+check_equals(typeof(tf._name), 'string');
+check(!tf.hasOwnProperty('_name'));
+xcheck(!tf.__proto__.hasOwnProperty('_name'));
+check_equals(tf._name, 'tf');
+tfref = tf;
+tf._name = 'changed';
+check_equals(typeof(tf), 'undefined');
+check_equals(typeof(tfref), 'object');
+check_equals(tfref._name, 'changed');
+check_equals(tfref._target, '/changed');
+tfref._name = 'tf';
+check_equals(typeof(tf), 'object');
+check_equals(typeof(tfref), 'object');
+// TODO: see effects of unloading the textfield ?
+
+//-------------------------------------------------------------------------
+// Check TextField._parent
+//-------------------------------------------------------------------------
+
+check_equals(typeof(tf._parent), 'movieclip');
+check(!tf.hasOwnProperty('_parent'));
+xcheck(!tf.__proto__.hasOwnProperty('_parent'));
+check_equals(tf._parent, _root);
+bk = tf._parent;
+tf._parent = 23;
+xcheck_equals(tf._parent, 23); // can be overridden !
+check_equals(tf._target, "/tf"); // but won't change _target
+r = delete tf._parent;
+xcheck(r);
+r = delete tf._parent;
+check(!r);
+TextField.prototype._parent = "from proto";
+check_equals(tf._parent, _root); // still unchanged
+delete TextField.prototype._parent;
+tf._parent = bk;
+
+//-------------------------------------------------------------------------
+// Check TextField.password
+//-------------------------------------------------------------------------
+
+xcheck_equals(typeof(tf.password), 'boolean');
+check(!tf.hasOwnProperty('password'));
+xcheck_equals(tf.password, false);
+tf.password = true;
+check_equals(tf.password, true);
+// TODO: check effects of setting to 'password' (should hide characters)
+tf.password = false;
+
+// Check TextField.quality
+
+// TODO: check this, might be a string
+xcheck_equals(typeof(tf._quality), 'string');
+check(!tf.hasOwnProperty('quality'));
+check(!tf.__proto__.hasOwnProperty('quality'));
+check(!tf.__proto__.__proto__.hasOwnProperty('quality'));
+check(!tf.__proto__.__proto__.__proto__.hasOwnProperty('quality'));
+xcheck_equals(tf._quality, "HIGH");
+tf._quality = "FAKE VALUE";
+xcheck_equals(tf._quality, "HIGH");
+tf._quality = "LOW";
+check_equals(tf._quality, "LOW");
+tf._quality = "HIGH";
+
+// Check TextField.restrict (the set of characters a user can input)
+
+xcheck_equals(typeof(tf.restrict), 'null');
+check(!tf.hasOwnProperty('restrict'));
+tf.text = "Hello World";
+tf.restrict = "olH";
+check_equals(tf.text, "Hello World");
+tf.text = "Hello World"; // override
+// doesn't influence explicit setting, only GUI modification
+// of the textfield (TODO: test with a MovieTester)
+check_equals(tf.text, "Hello World");
+
+
+// Check TextField._rotation
+
+xcheck_equals(typeof(tf._rotation), 'number');
+check(!tf.hasOwnProperty('_rotation'));
+check(!tf.__proto__.hasOwnProperty('_rotation'));
+xcheck_equals(tf._rotation, 0);
+tf._rotation = 10;
+check_equals(tf._rotation, 10);
+tf._rotation = 0;
+
+// Check TextField.scroll
+
+// TODO: better test for this, might do nothing if there's no scrollin
+xcheck_equals(typeof(tf.scroll), 'number');
+check( ! tf.hasOwnProperty('scroll') ); 
+xcheck_equals(tf.scroll, 1);
+tf.scroll = 10;
+xcheck_equals(tf.scroll, 1); // read-only
+
+// Check TextField.selectable
+
+check_equals(typeof(tf.selectable), 'boolean');
+check( ! tf.hasOwnProperty('selectable') ); 
+check_equals(tf.selectable, true);
+tf.selectable = false;
+check_equals(tf.selectable, false);
+tf.selectable = "Hello";
+check_equals(typeof(tf.selectable), 'boolean');
+tf.selectable = true;
+
+// Check TextField._soundbuftime
+
+xcheck_equals(typeof(tf._soundbuftime), 'number');
+check( ! tf.hasOwnProperty('_soundbuftime') ); 
+check( ! tf.__proto__.hasOwnProperty('_soundbuftime') ); 
+xcheck_equals(tf._soundbuftime, 5); // the default is 5, it seems
+
+// Check TextField.tabEnabled
+
+check_equals(typeof(tf.tabEnabled), 'undefined');
+check( ! tf.hasOwnProperty('tabEnabled') ); 
+check( ! tf.__proto__.hasOwnProperty('tabEnabled') ); 
+tf.tabEnabled = false;
+check_equals(tf.tabEnabled, false);
+delete(tf.tabEnabled);
+
+// Check TextField.tabIndex
+
+check_equals(typeof(tf.tabIndex), 'undefined');
+check( ! tf.hasOwnProperty('tabIndex') ); 
+check( ! tf.__proto__hasOwnProperty('tabIndex') ); 
+tf.tabIndex = 9;
+check_equals(tf.tabIndex, 9);
+delete(tf.tabIndex);
+
+//-------------------------------------------------------------------------
+// Check TextField._target
+//-------------------------------------------------------------------------
+
+check_equals(typeof(tf._target), 'string');
+check( ! tf.hasOwnProperty('_target') ); 
+xcheck( ! tf.__proto__.hasOwnProperty('_target') ); 
+check_equals(tf._target, '/tf');
+// TODO: check the effect of changing _name on the _target value
+tf._target = "fake_target"; // read-only
+check_equals(tf._target, '/tf');
+
+// Check TextField.text
+
+check_equals(typeof(tf.text), 'string');
+check( ! tf.hasOwnProperty('text') ); 
+check_equals(tf.text, 'Hello World');
+tf.text = "hello world";
+check_equals(tf.text, 'hello world');
+check_equals(tf.length, 11); // number of characters in "hello world"
+
+
+// Check TextField.textColor
+
+check_equals(typeof(tf.textColor), 'number');
+check( ! tf.hasOwnProperty('textColor') ); 
+check_equals(tf.textColor, 0);
+tf.textColor = 0xFF0000;
+check_equals(tf.textColor, 0xFF0000);
+// TODO: check color (use misc-ming.all/DefineEditTextTest.swf and a test runner with check_pixel)
+
+// Check TextField.textHeight (height of the bounding box)
+
+check_equals(typeof(tf.textHeight), 'number');
+check( ! tf.hasOwnProperty('textHeight') ); 
+currentHeight = tf.textHeight; // WARNING: this might depend on the default font height
+tf.textHeight = 1000;
+check_equals(tf.textHeight, currentHeight); // was read-only (I think)
+
+// Check TextField.textWidth (width of the bounding box)
+
+check_equals(typeof(tf.textWidth), 'number');
+check( ! tf.hasOwnProperty('textWidth') ); 
+currentWidth = tf.textWidth; // WARNING: this might depend on the default font height
+tf.textWidth = 1000;
+check_equals(tf.textWidth, currentWidth); // was read-only (I think)
+
+// Check TextField.type (input or dynamic)
+
+check_equals(typeof(tf.type), 'string');
+check( ! tf.hasOwnProperty('type') ); 
+check_equals(tf.type, 'dynamic'); 
+tf.type = "input";
+check_equals(tf.type, 'input'); 
+tf.type = new Array();
+check_equals(typeof(tf.type), 'string');  // invalid assignment
+check_equals(tf.type, 'input');  // keeps previous value
+tf.type = "dynamic";
+check_equals(tf.type, 'dynamic');  
+tf.type = new Array();
+check_equals(tf.type, 'dynamic'); // keeps previous value 
+o = {}; o.toString = function() { return 'Input'; };
+tf.type = o;
+check_equals(tf.type, 'input');
+
+// Check TextField._url (url of the SWF that created the textfield)
+
+xcheck_equals(typeof(tf._url), 'string');
+check( ! tf.hasOwnProperty('_url') ); 
+check( ! tf.__proto__.hasOwnProperty('_url') ); 
+xcheck_equals(tf._url, _root._url);
+tf._url = "fake url";
+xcheck_equals(tf._url, _root._url); // read-only
+
+//-------------------------------------------------------------------------
+// Check TextField.variable (variable name associated with the textfield)
+//-------------------------------------------------------------------------
+//
+// SUMMARY: write summary here
+//
+//-------------------------------------------------------------------------
+
+xcheck_equals(typeof(tf.variable), 'null');
+check( ! tf.hasOwnProperty('variable') ); 
+tf.variable = _level0.inputVar;
+xcheck_equals(typeof(tf.variable), 'null'); // _level0.inputVar doesn't exist !
+tf.variable = 2;
+check_equals(typeof(tf.variable), 'string'); 
+check_equals(tf.variable, '2'); 
+tf.variable = undefined;
+xcheck_equals(typeof(tf.variable), 'null'); 
+tf.variable = 2;
+tf.variable = null;
+xcheck_equals(typeof(tf.variable), 'null'); 
+tf.variable = "_level0.inputVar";
+check_equals(tf.variable, '_level0.inputVar'); 
+xcheck_equals(typeof(_level0.inputVar), 'undefined');
+xcheck_equals(tf.text, "hello world");  // as _level0.inputVar is unexistent
+xcheck(!_level0.hasOwnProperty('inputVar'));
+_level0.inputVar = "dynamic variable";
+check_equals(tf.text, "dynamic variable");
+tf.text = "back-propagated";
+check_equals(_level0.inputVar, "back-propagated");
+o = new Object();
+tf.variable = "_level0.o.t"; // non-existent member (yet)
+xcheck_equals(tf.text, "back-propagated");  // _level0.o.t doesn't exist yet
+o.t = "from object"; // here we create _level0.o.t
+xcheck_equals(tf.text, "back-propagated"); // but creating _level0.o.t doesn't trigger textfield text update
+tf.text = "back-to-object"; // instead, assigning to TextField.text updates the object
+check_equals(o.t, "back-to-object");  
+o.t = "from object again"; // but updates to the object still don't update the TextField
+check_equals(tf.text, "back-to-object");  // assigning to the object doesn't trigger update of text ?
+tf.variable = "_level0.o.t"; // We re-assign TextField.variable, now the variable exists
+xcheck_equals(tf.text, "from object again");  // this time the TextField.text is updated
+check_equals(o.t, "from object again");
+o.t = "and forever";
+xcheck_equals(tf.text, "from object again"); // but updating o.t still doesn't trigger update of the text ?
+tf.text = "and forever back";
+check_equals(o.t, "and forever back"); // while updating textfield's text updates o.t
+
+//-------------------------------------------------------------------------
+// TODO: check TextField.getDepth() 
+//-------------------------------------------------------------------------
+
+//-------------------------------------------------------------------------
+// Check TextField.removeTextField and soft references
+//-------------------------------------------------------------------------
+//
+// TextField as_value references are soft references like MovieClip ones.
+// Till the ref is not danglign, typeof(ref) will return 'object', once
+// the ref is dangling it will return 'movieclip' and will successfully 
+// rebind to a real MovieClip ! When rebound, typeof(ref) will return 'object'
+// or 'movieclip' depending on the bound thing.
+//
+//-------------------------------------------------------------------------
+
+createTextField("hardref", 23, 10, 10, 160, 200);
+hardref.prop = 5;
+softref = hardref;
+check_equals(typeof(hardref), 'object');
+check_equals(typeof(softref), 'object');
+check_equals(softref.prop, 5);
+check_equals(softref.getDepth(), 23);
+hardref.removeTextField();
+check_equals(typeof(hardref), 'undefined');
+check_equals(typeof(softref), 'movieclip'); // a dangling character ref is always reported to be a 'movieclip' (historical reasons probably)
+check_equals(typeof(softref.prop), 'undefined');
+createEmptyMovieClip("hardref", 24);
+check_equals(typeof(hardref), 'movieclip');
+hardref.prop = 7;
+check_equals(typeof(softref), 'movieclip');
+check_equals(softref.prop, 7); // and it's actually also rebound to one if available
+hardref.removeMovieClip();
+createTextField("hardref", 25, 10, 10, 160, 200);
+hardref.prop = 9;
+check_equals(typeof(softref), 'object'); // changes type on rebind
+check_equals(softref.prop, 9);
+
+
+//-------------------------------------------------------------------------
+// Check TextField._visible 
+//-------------------------------------------------------------------------
+
+check_equals(typeof(tf._visible), 'boolean');
+check( ! tf.hasOwnProperty('_visible') ); 
+check( ! tf.__proto__.hasOwnProperty('_visible') ); 
+check_equals(tf._visible, true);
+tf._visible = false;
+check_equals(tf._visible, false);
+tf._visible = true;
+
+//-------------------------------------------------------------------------
+// Check TextField._width (how is this different from textWidth ?)
+//-------------------------------------------------------------------------
+
+check_equals(typeof(tf._width), 'number');
+check( ! tf.hasOwnProperty('_width') ); 
+check( ! tf.__proto__.hasOwnProperty('_width') ); 
+check_equals(tf._width, 500); // as it was set by createTextField, see above
+tf._width = 99999;
+check_equals(tf._width, 99999); 
+tf._width = 500;
+
+//-------------------------------------------------------------------------
+// Check TextField.wordWrap (should text wrap when bbox limit is hit?)
+//-------------------------------------------------------------------------
+
+check_equals(typeof(tf.wordWrap), 'boolean');
+check( ! tf.hasOwnProperty('wordWrap') ); 
+check_equals(tf.wordWrap, false);
+// TODO: check what can be assigned to wordWrap and what not...
+
+//-------------------------------------------------------------------------
+// Check TextField._x 
+//-------------------------------------------------------------------------
+
+check_equals(typeof(tf._x), 'number');
+check( ! tf.hasOwnProperty('_x') );
+check( ! tf.__proto__.hasOwnProperty('_x') );
+check_equals(tf._x, 10); // as set by createTextField
+tf._x = 20;
+check_equals(tf._x, 20);
+
+//-------------------------------------------------------------------------
+// Check TextField._xmouse
+//-------------------------------------------------------------------------
+
+check_equals(typeof(tf._xmouse), 'number');
+check( ! tf.hasOwnProperty('_xmouse') );
+xcheck( ! tf.__proto__.hasOwnProperty('_xmouse') );
+currXmouse = tf._xmouse; // unsafe, if user moves the mouse while running the test
+tf._xmouse = "a string";
+check_equals(typeof(tf._xmouse), 'number');
+check_equals(tf._xmouse, currXmouse); // possibly unsafe, if user moves the mouse while running the test
+
+//-------------------------------------------------------------------------
+// Check TextField._xscale
+//-------------------------------------------------------------------------
+
+check_equals(typeof(tf._xscale), 'number');
+check( ! tf.hasOwnProperty('_xscale') );
+xcheck( ! tf.__proto__.hasOwnProperty('_xscale') );
+check_equals(tf._xscale, 100); 
+// check how .textWidth and ._width change when changing _xscale
+currTextWidth = tf.textWidth;
+currWidth = tf._width;
+tf._xscale = 200;
+note("textWidth: _xscale=100: "+currTextWidth+"; _xscale=200: "+tf.textWidth);
+// check_equals(tf.textWidth, currTextWidth*2); // not clear what does textWidth depend on
+xcheck_equals(tf._width, currWidth*2);
+tf._xscale = 100;
+
+//-------------------------------------------------------------------------
+// Check TextField._y 
+//-------------------------------------------------------------------------
+
+check_equals(typeof(tf._y), 'number');
+check( ! tf.hasOwnProperty('_y') );
+check( ! tf.__proto__.hasOwnProperty('_y') );
+check_equals(tf._y, 10); // as set by createTextField
+tf._y = 5;
+check_equals(tf._y, 5);
+
+//-------------------------------------------------------------------------
+// Check TextField._ymouse
+//-------------------------------------------------------------------------
+
+check_equals(typeof(tf._ymouse), 'number');
+check( ! tf.hasOwnProperty('_ymouse') );
+xcheck( ! tf.__proto__.hasOwnProperty('_ymouse') );
+currYmouse = tf._ymouse;
+tf._ymouse = "a string";
+check_equals(typeof(tf._ymouse), 'number');
+check_equals(tf._ymouse, currYmouse); // possibly unsafe, if user moves the mouse while running the test
+
+//-------------------------------------------------------------------------
+// Check TextField._yscale
+//-------------------------------------------------------------------------
+
+check_equals(typeof(tf._yscale), 'number');
+check( ! tf.hasOwnProperty('_yscale') );
+xcheck( ! tf.__proto__.hasOwnProperty('_yscale') );
+check_equals(tf._yscale, 100); 
+// check how .textHeight and ._height change based on _yscale
+currTextHeight = tf.textHeight;
+currHeight = tf._height;
+tf._yscale = 200;
+note("textHeight: _yscale=100: "+currTextHeight+"; _yscale=200: "+tf.textHeight);
+// check_equals(tf.textHeight, currTextHeight*2); // not clear what does textHeight depend on
+xcheck_equals(tf._height, currHeight*2);
+tf._yscale = 100;
+
+//-------------------------------------------------------------------------
+// Check interaction between autoSize and _width
+//-------------------------------------------------------------------------
+
+tf._width = 10; // "hello world" text should overflow this
+tf.text = "Hello world";
+tf.autoSize = 'none';
+tf.wordWrap = false;
+check_equals(tf._width, 10);
+origTextWidth = tf.textWidth;
+tf.autoSize = 'center';
+check(tf._width > 10);
+check_equals(tf.textWidth, origTextWidth); // textWidth isn't influenced by autoSize 
+tf.autoSize = 'none';
+tf.wordWrap = true;
+note("After setting wordWrap flat: textWidth: "+tf.textWidth+" origTextWidth:"+origTextWidth);
+check_equals(tf.textWidth, origTextWidth);  
+tf._width = 10;
+note("After reducing _width: textWidth: "+tf.textWidth+" origTextWidth:"+origTextWidth);
+check_equals(tf._width, 10);
+
+#if OUTPUT_VERSION < 8
+ check_equals(origTextWidth, tf.textWidth); 
+#else
+ xcheck(origTextWidth > tf.textWidth); 
+#endif
+
+// test that adding a newline doesn't change the bounds width
+// see bug #22216
+tf.autoSize = 'center';
+tf.text = "single line";
+linewidth = tf._width;
+tf.text = "single line\n";
+check_equals(tf._width, linewidth); 
+
+
+//------------------------------------------------------------
+// Test insane calls
+//------------------------------------------------------------
+
+ret = createTextField("tf2", 99, 5, 6, -1, -2);
+check_equals(typeof(tf2), 'object');
+check_equals(tf2._width, 1);
+check_equals(tf2._height, 2);
+check_equals(tf2._x, 5);
+check_equals(tf2._y, 6);
+
+createTextField("tf3", 99, 10.87, 10.12, NAN, 50.74);
+check_equals(tf3._x, 10);
+check_equals(tf3._y, 10);
+check_equals(tf3._width, 0);
+check_equals(tf3._height, 50);
+
+createTextField("tf4", 99, 10, 50, NAN, "20");
+check_equals(tf4._width, 0);
+check_equals(tf4._height, 20);
+
+createTextField(3, "101", "10", '100', '32', '15');
+check_equals(_root[3].getDepth(), 101);
+check_equals(_root[3]._x, 10);
+check_equals(_root[3]._y, 100);
+check_equals(_root[3]._width, 32);
+check_equals(_root[3]._height, 15);
+
+// One argument more
+createTextField("tf5", 102, 10, 130, 3, 2, 12);
+check_equals(tf5._name, "tf5");
+check_equals(tf5._target, "/tf5");
+check_equals(tf5.getDepth(), 102);
+check_equals(tf5._x, 10);
+check_equals(tf5._y, 130);
+check_equals(tf5._width, 3);
+check_equals(tf5._height, 2);
+
+// One argument missing
+createTextField("tf6", 103, 10, 10, 160);
+check_equals(typeof(tf6), 'undefined');
+
+//------------------------------------------------------------
+// Test properties
+//------------------------------------------------------------
+
+_root._visible = true; // just to be sure
+_root._xscale = _root._yscale = 100;
+_root.createTextField('htf',0,0,0,0,0);
+check_equals(typeof(htf), 'object');
+tf = htf;
+with(tf) {
+    _x=10;
+    _y=11;
+    _visible=false;
+    _xscale=200;
+    _yscale=201;
+    _parent='fake_parent';
+    _name='fake_name';
+    _target='fake';
+}
+
+check_equals(_root._x, 0);
+check_equals(_root._y, 0);
+check_equals(_root._visible, true);
+check_equals(_root._xscale, 100);
+check_equals(_root._yscale, 100);
+check_equals(_root._target, '/');
+xcheck_equals(_root._parent, 'fake_parent');
+check_equals(_root._name, '');
+
+check_equals(tf._x, 10);
+check_equals(tf._y, 11);
+check_equals(tf._visible, false);
+check_equals(tf._xscale, 200);
+xcheck_equals(tf._yscale, 201);
+check_equals(tf._target, '/fake_name');
+check_equals(tf._parent, _level0); 
+check_equals(tf._name, 'fake_name');
+
+_root._visible = true;
+_root._x = _root._y = 0;
+_root._xscale = _root._yscale = 100;
+
+
+//------------------------------------------------------------
+// END OF TESTS
+//------------------------------------------------------------
+
+#if OUTPUT_VERSION < 8
+ check_totals(415);
+#else
+ check_totals(416);
+#endif
+
+#else // OUTPUT_VERSION <= 5
+
+ totals();
+
+#endif
diff --git a/test/gnash/actionscript.all/pending/array-5.swf b/test/gnash/actionscript.all/pending/array-5.swf
new file mode 100644
index 0000000..9b53938
Binary files /dev/null and b/test/gnash/actionscript.all/pending/array-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/array-5.swf.trace b/test/gnash/actionscript.all/pending/array-5.swf.trace
new file mode 100644
index 0000000..e36dcd2
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/array-5.swf.trace
@@ -0,0 +1,485 @@
+PASSED: typeof(Array) == 'function' [array.as:25]
+PASSED: Array.CASEINSENSITIVE == 1 [array.as:26]
+PASSED: Array.DESCENDING == 2 [array.as:27]
+PASSED: Array.UNIQUESORT == 4 [array.as:28]
+PASSED: Array.RETURNINDEXEDARRAY == 8 [array.as:29]
+PASSED: Array.NUMERIC == 16 [array.as:30]
+PASSED: typeof(Array.prototype) == 'object' [array.as:31]
+PASSED: typeof(Array.prototype.__proto__) == 'object' [array.as:32]
+PASSED: Array.prototype.__proto__ == Object.prototype [array.as:33]
+PASSED: typeof(Array.prototype.concat) == 'function' [array.as:34]
+PASSED: typeof(Array.prototype.join) == 'function' [array.as:35]
+PASSED: typeof(Array.prototype.pop) == 'function' [array.as:36]
+PASSED: typeof(Array.prototype.push) == 'function' [array.as:37]
+PASSED: typeof(Array.prototype.reverse) == 'function' [array.as:38]
+PASSED: typeof(Array.prototype.shift) == 'function' [array.as:39]
+PASSED: typeof(Array.prototype.slice) == 'function' [array.as:40]
+PASSED: typeof(Array.prototype.sort) == 'function' [array.as:41]
+PASSED: typeof(Array.prototype.sortOn) == 'function' [array.as:42]
+PASSED: typeof(Array.prototype.splice) == 'function' [array.as:43]
+PASSED: typeof(Array.prototype.unshift) == 'function' [array.as:44]
+PASSED: typeof(Array.prototype.toString) == 'function' [array.as:45]
+PASSED: typeof(Array.prototype.length) == 'undefined' [array.as:46]
+PASSED: typeof(Array.prototype.size) == 'undefined' [array.as:47]
+PASSED: typeof(Array.prototype.CASEINSENSITIVE) == 'undefined' [array.as:48]
+PASSED: typeof(Array.prototype.DESCENDING) == 'undefined' [array.as:49]
+PASSED: typeof(Array.prototype.UNIQUESORT) == 'undefined' [array.as:50]
+PASSED: typeof(Array.prototype.RETURNINDEXEDARRAY) == 'undefined' [array.as:51]
+PASSED: typeof(Array.prototype.NUMERIC) == 'undefined' [array.as:52]
+PASSED: typeof(Array()) == 'object' [array.as:76]
+PASSED: typeof(new Array()) == 'object' [array.as:77]
+PASSED: typeof(f) == 'function' [array.as:79]
+PASSED: typeof(a) == 'object' [array.as:81]
+PASSED: typeof(a.pop) == 'function' [array.as:82]
+PASSED: typeof(a.size) == 'undefined' [array.as:100]
+PASSED: a instanceOf Array [array.as:102]
+PASSED: a.length == 3 [array.as:103]
+PASSED: typeof(primitiveArrayValue) == 'object' [array.as:109]
+PASSED: primitiveArrayValue == a [array.as:110]
+PASSED: a != undefined [array.as:118]
+PASSED: typeof(a) == "object" [array.as:119]
+PASSED: a != b [array.as:122]
+PASSED: tmp.toString() == "," [array.as:129]
+PASSED: tmp.length == 1 [array.as:133]
+PASSED: a.length == 3 [array.as:135]
+PASSED: a[2] == 12 [array.as:136]
+PASSED: popped == 12 [array.as:138]
+PASSED: a[2] == undefined [array.as:139]
+PASSED: a[1] == "asdf" [array.as:140]
+PASSED: a[1] == 551 [array.as:142]
+PASSED: a[0] == 200 [array.as:144]
+PASSED: a.toString() == "200,551" [array.as:145]
+PASSED: a.length == 5 [array.as:147]
+PASSED: a[100] == undefined [array.as:148]
+PASSED: a[5] == undefined [array.as:149]
+PASSED: a[4] == 9 [array.as:150]
+PASSED: a.join() == "200,551,7,8,9" [array.as:151]
+PASSED: a.join() == "9,8,7,551,200" [array.as:153]
+PASSED: Array.prototype.join.apply(a) == undefined [array.as:159]
+PASSED: a.join.apply(a) == undefined [array.as:160]
+PASSED: a.join("test") == "9test8test7test551test200" [array.as:162]
+PASSED: typeof(Array.UNIQUE) == 'undefined' [array.as:165]
+PASSED: (undefined|1) == 1 [array.as:171]
+PASSED: (1|undefined) == 1 [array.as:172]
+PASSED: (undefined&1) == 0 [array.as:173]
+PASSED: (1&undefined) == 0 [array.as:174]
+PASSED: (undefined^1) == 1 [array.as:175]
+PASSED: (1^undefined) == 1 [array.as:176]
+PASSED: Array.UNIQUE | Array.CASEINSENSITIVE | Array.RETURNINDEXEDARRAY == 9 [array.as:179]
+PASSED: a.toString() == "200,551,7,8,9" [array.as:183]
+PASSED: a.toString() == "7,7,7,7,7,8,8,8,9,200,200,200,200,551,551" [array.as:187]
+PASSED: a.toString() == "7,7,7,7,7,8,8,8,9,200,200,200,200,551,551" [array.as:190]
+PASSED: trysortarray.toString() == "alphabet,But,capitalization,Different" [array.as:195]
+PASSED: trysortarray.toString() == "But,Different,alphabet,capitalization" [array.as:197]
+PASSED: gaparray.length == 17 [array.as:202]
+PASSED: gaparray[4] == '4' [array.as:203]
+PASSED: gaparray[16] == '16' [array.as:204]
+PASSED: gaparray.length == 17 [array.as:212]
+XPASSED: gaparray[0] == undefined [array.as:214]
+XPASSED: gaparray[1] == undefined [array.as:215]
+PASSED: gaparray[2] == undefined [array.as:220]
+PASSED: gaparray[3] == undefined [array.as:221]
+PASSED: gaparray[4] == undefined [array.as:222]
+PASSED: gaparray[5] == undefined [array.as:223]
+PASSED: gaparray[6] == undefined [array.as:224]
+PASSED: gaparray[7] == undefined [array.as:225]
+PASSED: gaparray[8] == undefined [array.as:226]
+PASSED: gaparray[9] == undefined [array.as:227]
+PASSED: gaparray[10] == undefined [array.as:228]
+PASSED: gaparray[11] == undefined [array.as:229]
+PASSED: gaparray[12] == undefined [array.as:230]
+PASSED: gaparray[13] == undefined [array.as:231]
+PASSED: gaparray[14] == undefined [array.as:232]
+XPASSED: gaparray[15] == '16' [array.as:234]
+XPASSED: gaparray[16] == '4' [array.as:235]
+XPASSED: tmp.length == '3' [array.as:259]
+XPASSED: tmp[0] == '15' [array.as:260]
+XPASSED: tmp[1] == '16' [array.as:261]
+XPASSED: tmp[2] == '4' [array.as:262]
+PASSED: trysortarray.toString() == "But,Different,alphabet,capitalization" [array.as:292]
+PASSED: trysortarray.toString() == "But,alphabet,Different,capitalization" [array.as:294]
+XPASSED: typeof(testCmpThis) == 'undefined' [array.as:295]
+XPASSED: testCmpCalls == 7 [array.as:296]
+PASSED: trysortarray.toString() == "But,alphabet,Different,capitalization" [array.as:300]
+XPASSED: trysortarray.toString() == "alphabet,Different,capitalization,But" [array.as:304]
+XPASSED: trysortarray.toString() == "alphabet,Different,capitalization,But" [array.as:308]
+XPASSED: trysortarray.toString() == "alphabet,Different,capitalization,But" [array.as:312]
+XPASSED: trysortarray.length == 0 [array.as:316]
+PASSED: trysortarray.toString() == "1,2,3,4" [array.as:320]
+PASSED: trysortarray.length == 4 [array.as:321]
+PASSED: trysortarray.length == 4 [array.as:323]
+XPASSED: trysortarray.toString() == "2,3,4,1" [array.as:324]
+PASSED: typeof(c) == "object" [array.as:332]
+PASSED: c[0] == "zero" [array.as:337]
+XPASSED: c[1] == "one" [array.as:338]
+PASSED: c[1.1] == "one point one" [array.as:339]
+XPASSED: c[1.9] == undefined [array.as:340]
+PASSED: c[-3] == "minus three" [array.as:341]
+PASSED: c[-3.7] == undefined [array.as:342]
+PASSED: c[0] == "zero" [array.as:345]
+XPASSED: c[1] == "one" [array.as:346]
+XPASSED: c[0] == undefined [array.as:351]
+XPASSED: c[1] == undefined [array.as:352]
+XPASSED: c[2] == undefined [array.as:353]
+XPASSED: c[3] == undefined [array.as:354]
+PASSED: c[1.1] == "one point one" [array.as:355]
+PASSED: c[-2147483649] == "too low" [array.as:356]
+PASSED: c[int(-2147483649)] == undefined [array.as:358]
+PASSED: c[-2147483649] == "too low" [array.as:361]
+PASSED: c[2147483649] == "too high" [array.as:362]
+XPASSED: c[1] == undefined [array.as:363]
+XPASSED: c[2] == undefined [array.as:364]
+XPASSED: c[3] == undefined [array.as:365]
+XPASSED: c.length == -2147483646 [array.as:367]
+XPASSED: str == "2147483649: too high; -2147483649: too low; -2147483648: lowest int; -3: minus three; 1.1: one point one; " [array.as:375]
+PASSED: c[0] == "zero" [array.as:381]
+XPASSED: c[1] == "one" [array.as:382]
+PASSED: c[0] == "zero" [array.as:386]
+XPASSED: c[1] == "one" [array.as:387]
+PASSED: c[0xffffffff] == undefined [array.as:388]
+PASSED: c[0xffffffff + 1] == "too high" [array.as:389]
+PASSED: c[0xfffffffffffffffff] == "much too high" [array.as:392]
+PASSED: c[0] == "zero" [array.as:396]
+XPASSED: c[1] == "one" [array.as:397]
+XPASSED: c.length == 2147483647 [array.as:399]
+XPASSED: str == "-2147483650: still lower; 2.95147905179353e+20: much too high; 4294967296: too high; -3: minus three; 1.1: one point one; 3: three; 2: two; 1: one; 0: zero; " [array.as:408]
+PASSED: sparse[3] == 3 [array.as:414]
+PASSED: sparse[3] == 3 [array.as:416]
+PASSED: popped == 12 [array.as:424]
+PASSED: popped == "asdf" [array.as:426]
+PASSED: popped == 551 [array.as:428]
+PASSED: popped == undefined [array.as:431]
+PASSED: b.length == 0 [array.as:433]
+PASSED: b.toString() == "2,4" [array.as:438]
+PASSED: b.toString() == "" [array.as:441]
+PASSED: b.toString() == "" [array.as:449]
+PASSED: count == 1 [array.as:455]
+PASSED: sparse.toString() == ",,,,,5" [array.as:461]
+PASSED: count == 6 [array.as:467]
+PASSED: sparse.toString() == "5,,,,," [array.as:473]
+PASSED: s == "^1^^3" [array.as:488]
+PASSED: bclone.length == 0 [array.as:499]
+PASSED: b.length == 0 [array.as:500]
+PASSED: concatted.join() == "0,1,2,3,4,5,6" [array.as:503]
+PASSED: concatted[4] == 4 [array.as:504]
+PASSED: basic.toString() == "0,1,2" [array.as:505]
+PASSED: portion.toString() == "2,3,4" [array.as:507]
+PASSED: portion.toString() == "3,4" [array.as:509]
+PASSED: portion.toString() == "4" [array.as:511]
+PASSED: portion.length == 1 [array.as:512]
+PASSED: portion.toString() == "5" [array.as:514]
+PASSED: portion.toString() == "5,6" [array.as:516]
+PASSED: mixed.toString() == "5,6,7,8,9" [array.as:518]
+PASSED: mixed.toString() == "5,6,7,8,9,10,11,12,13" [array.as:520]
+PASSED: portion.toString() == "" [array.as:524]
+PASSED: portion.toString() == "0,1,2,3,4,5,6" [array.as:526]
+PASSED: portion.toString() == "0,1,2" [array.as:528]
+PASSED: portion.toString() == "" [array.as:530]
+PASSED: portion.toString() == "0,1" [array.as:534]
+PASSED: count == 1 [array.as:549]
+PASSED: count == 1 [array.as:552]
+PASSED: count == 7 [array.as:555]
+PASSED: count == 5 [array.as:559]
+PASSED: ary.toString() == "0,1,2,3,4,5" [array.as:566]
+PASSED: ary.toString() == "0,1,2,3,4,5" [array.as:570]
+PASSED: typeof(spliced) == "undefined" [array.as:571]
+PASSED: ary.toString() == "1,2,3,4,5" [array.as:575]
+PASSED: spliced.toString() == "0" [array.as:576]
+PASSED: ary.toString() == "1,3,4,5" [array.as:578]
+PASSED: spliced.toString() == "2" [array.as:579]
+PASSED: ary.toString() == "1,3,4" [array.as:583]
+PASSED: spliced.toString() == "5" [array.as:584]
+PASSED: ary.toString() == "1,4" [array.as:586]
+PASSED: spliced.toString() == "3" [array.as:587]
+PASSED: ary.toString() == "1,4" [array.as:591]
+PASSED: spliced.toString() == "" [array.as:592]
+PASSED: ary.toString() == "1,4" [array.as:594]
+PASSED: spliced.toString() == "" [array.as:595]
+PASSED: ary.toString() == "4" [array.as:599]
+PASSED: spliced.toString() == "1" [array.as:600]
+PASSED: ary.toString() == "0,1,2,3,4,5,6,7,8" [array.as:607]
+PASSED: spliced.toString() == "" [array.as:608]
+PASSED: ary.toString() == "0,1" [array.as:612]
+PASSED: spliced.toString() == "2,3,4,5,6,7,8" [array.as:613]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:616]
+PASSED: spliced.toString() == "7,8" [array.as:617]
+PASSED: typeof(spliced) == 'undefined' [array.as:621]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:622]
+PASSED: typeof(spliced) == 'undefined' [array.as:624]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:625]
+PASSED: typeof(spliced) == 'undefined' [array.as:627]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:628]
+PASSED: typeof(spliced) == 'undefined' [array.as:630]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:631]
+PASSED: ary.toString() == "2,a,b,c,4,5,6" [array.as:635]
+PASSED: spliced.toString() == '3' [array.as:636]
+PASSED: ary.toString() == "2,a,b,8,5,6" [array.as:638]
+PASSED: spliced.toString() == 'c,4' [array.as:639]
+PASSED: ary.toString() == "2,a,b,10,11,12,8,5,6" [array.as:643]
+PASSED: spliced.toString() == '' [array.as:644]
+PASSED: ary.toString() == "1,2,3,4,5,6" [array.as:648]
+PASSED: ary.length == 4 [array.as:649]
+PASSED: spliced.toString() == '2,a,b,10,11,12,8' [array.as:650]
+PASSED: spliced.toString() == "3,4,5,6" [array.as:654]
+PASSED: spliced.toString() == "1,2" [array.as:656]
+PASSED: ary.length == 8 [array.as:661]
+PASSED: count == 2 [array.as:663]
+PASSED: ary.length == 8 [array.as:666]
+PASSED: count == 8 [array.as:668]
+PASSED: ary.length == 9 [array.as:672]
+PASSED: count == 9 [array.as:674]
+PASSED: ary[3] == 3 [array.as:675]
+PASSED: ary[2] == 2 [array.as:676]
+PASSED: count == 8 [array.as:681]
+PASSED: count == 1 [array.as:683]
+PASSED: a instanceOf Array [array.as:690]
+PASSED: typeof(c) == "object" [array.as:691]
+PASSED: c.length == 10 [array.as:692]
+PASSED: c[5] == undefined [array.as:693]
+PASSED: c[1000] == 283 [array.as:695]
+PASSED: c[1001] == undefined [array.as:696]
+PASSED: c[999] == undefined [array.as:697]
+PASSED: c.length == 1001 [array.as:698]
+PASSED: c[8] == 'eight' [array.as:703]
+PASSED: c.length == 2 [array.as:705]
+PASSED: c[8] == undefined [array.as:706]
+PASSED: c[0] == 'zero' [array.as:707]
+XPASSED: c.length == -1 [array.as:710]
+PASSED: c[0] == undefined [array.as:711]
+PASSED: c.length == 3 [array.as:718]
+PASSED: c[0] == 10 [array.as:719]
+PASSED: c[1] == 20 [array.as:720]
+PASSED: c[2] == 30 [array.as:721]
+PASSED: delete c[1] [array.as:727]
+PASSED: c.length == 3 [array.as:728]
+PASSED: c[0] == 10 [array.as:729]
+PASSED: typeof(c[1]) == 'undefined' [array.as:730]
+PASSED: c[2] == 30 [array.as:731]
+PASSED: c.length == 11 [array.as:739]
+XPASSED: ! delete c[2] [array.as:741]
+XPASSED: c[2] == 30 [array.as:742]
+XPASSED: c[2] == 30 [array.as:744]
+PASSED: typeof(c[10]) == 'undefined' [array.as:745]
+PASSED: typeof(c[10]) == 'undefined' [array.as:747]
+PASSED: r.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:795]
+PASSED: a.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:796]
+PASSED: a.toString() == ",ed,emacs,Jedit,nano,vi" [array.as:798]
+PASSED: a.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:800]
+PASSED: a.toString() == ",ed,emacs,Jedit,nano,vi" [array.as:802]
+PASSED: a.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:804]
+PASSED: r.toString() == "vi,nano,emacs,ed,Jedit," [array.as:806]
+PASSED: a.toString() == "vi,nano,emacs,ed,Jedit," [array.as:807]
+PASSED: r.toString() == "-2,-7,-9,0,1,3,5,8" [array.as:810]
+PASSED: b.toString() == "-2,-7,-9,0,1,3,5,8" [array.as:811]
+PASSED: b.toString() == "-9,-7,-2,0,1,3,5,8" [array.as:813]
+PASSED: b.toString() == "-2,-7,-9,0,1,3,5,8" [array.as:815]
+PASSED: b.toString() == "8,5,3,1,0,-9,-7,-2" [array.as:817]
+PASSED: r.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:819]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:820]
+PASSED: r.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:822]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:823]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:825]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:827]
+PASSED: r.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:830]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:831]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:833]
+PASSED: c.toString() == "-3.7,-0.5,0,0.001,2,7.2,8.35,Infinity" [array.as:835]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:837]
+PASSED: c.toString() == "Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:839]
+PASSED: r.toString() == "" [array.as:842]
+PASSED: d.toString() == "" [array.as:843]
+PASSED: d.toString() == "" [array.as:845]
+PASSED: d.toString() == "" [array.as:847]
+PASSED: r.toString() == "singleton" [array.as:850]
+PASSED: e.toString() == "singleton" [array.as:851]
+PASSED: e.toString() == "singleton" [array.as:853]
+PASSED: e.toString() == "singleton" [array.as:855]
+PASSED: r.toString() == "Name,Name,Year" [array.as:858]
+PASSED: f.toString() == "Name,Name,Year" [array.as:859]
+PASSED: r.toString() == "0" [array.as:861]
+PASSED: f.toString() == "Year,Name,Name" [array.as:863]
+PASSED: r.toString() == "5,4,3,2,1,0" [array.as:868]
+PASSED: a.toString() == "vi,nano,emacs,ed,Jedit," [array.as:869]
+PASSED: r.toString() == "0,1,4,2,3,5" [array.as:871]
+PASSED: a.toString() == "vi,nano,emacs,ed,Jedit," [array.as:872]
+PASSED: r.toString() == "5,6,7,4,3,2,1,0" [array.as:874]
+PASSED: r.toString() == "7,6,5,4,3,2,1,0" [array.as:876]
+PASSED: r.toString() == "0,1,2,3,4,7,6,5" [array.as:878]
+PASSED: r.toString() == "6,7,5,4,3,2,1,0" [array.as:880]
+PASSED: r.toString() == "7,6,5,4,3,2,1,0" [array.as:882]
+PASSED: r.toString() == "0,1,2,3,4,5,7,6" [array.as:884]
+PASSED: r.toString() == "" [array.as:886]
+PASSED: d.toString() == "" [array.as:887]
+PASSED: r.toString() == "" [array.as:889]
+PASSED: d.toString() == "" [array.as:890]
+PASSED: r.toString() == "0" [array.as:892]
+PASSED: e.toString() == "singleton" [array.as:893]
+PASSED: r.toString() == "0" [array.as:895]
+PASSED: r.toString() == ",vi,ed,nano,emacs,Jedit" [array.as:899]
+PASSED: a.toString() == ",vi,ed,nano,emacs,Jedit" [array.as:900]
+PASSED: typeof(r) == 'undefined' [array.as:902]
+PASSED: tolen(r) == "[5, 5, 4, 2, 2, 0]" [array.as:904]
+PASSED: tolen(a) == "[5, 5, 4, 2, 2, 0]" [array.as:905]
+PASSED: tolen(a) == "[0, 2, 2, 4, 5, 5]" [array.as:907]
+PASSED: r.toString() == "0,1,2,3,4,5" [array.as:909]
+PASSED: r.toString() == "5,4,3,2,1,0" [array.as:911]
+PASSED: r.toString() == "" [array.as:913]
+PASSED: d.toString() == "" [array.as:914]
+PASSED: r.toString() == "" [array.as:916]
+PASSED: d.toString() == "" [array.as:917]
+PASSED: r.toString() == "singleton" [array.as:919]
+PASSED: e.toString() == "singleton" [array.as:920]
+PASSED: tolen(r) == "[5, 5, 4, 2, 2, 0]" [array.as:924]
+PASSED: tolen(a) == "[5, 5, 4, 2, 2, 0]" [array.as:925]
+PASSED: tolen(a) == "[0, 2, 2, 4, 5, 5]" [array.as:927]
+PASSED: r.toString() == "0,1,2,3,4,5" [array.as:929]
+PASSED: r.toString() == "5,4,3,2,1,0" [array.as:931]
+PASSED: e.toString() == "singleton" [array.as:933]
+PASSED: r.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:942]
+PASSED: a.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:943]
+PASSED: r.toString() == "0" [array.as:945]
+PASSED: a.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:946]
+PASSED: r.toString() == "0" [array.as:948]
+PASSED: a.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:949]
+PASSED: r.toString() == "0,1,2,3,4,5,6" [array.as:951]
+PASSED: r.toString() == "0" [array.as:953]
+PASSED: r.toString() == "0" [array.as:956]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9,3" [array.as:957]
+PASSED: r.toString() == "0" [array.as:959]
+PASSED: r.toString() == "0" [array.as:961]
+PASSED: r.toString() == "0" [array.as:963]
+PASSED: r.toString() == "0" [array.as:965]
+PASSED: r.toString() == "0" [array.as:968]
+PASSED: c.toString() == "Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7,Infinity" [array.as:969]
+PASSED: r.toString() == "0" [array.as:971]
+PASSED: r.toString() == "0" [array.as:973]
+PASSED: r.toString() == "0" [array.as:975]
+PASSED: r.toString() == "0" [array.as:977]
+PASSED: tolen(r) == "[0, 2, 2, 2, 4, 5, 5]" [array.as:979]
+PASSED: tolen(a) == "[0, 2, 2, 2, 4, 5, 5]" [array.as:980]
+PASSED: r.toString() == "0,1,2,3,4,5,6" [array.as:982]
+PASSED: r.toString() == "6,5,4,3,2,1,0" [array.as:984]
+PASSED: r.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity,Infinity,null" [array.as:990]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity,Infinity,null" [array.as:991]
+PASSED: c.toString() == "-3.7,-0.5,0,0.001,2,7.2,8.35,Infinity,Infinity,null" [array.as:993]
+PASSED: c.toString() == "null,Infinity,Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:995]
+PASSED: r.toString() == "9,8,7,6,5,4,3,1,2,0" [array.as:997]
+PASSED: r.toString() == "0,1,2,3,4,5,6,7,9,8" [array.as:999]
+PASSED: r.toString() == "0" [array.as:1001]
+PASSED: r.toString() == "0" [array.as:1003]
+PASSED: r.toString() == "0" [array.as:1005]
+PASSED: r.toString() == "0" [array.as:1007]
+PASSED: c.toString() == "-3.7,-0.5,0,0.001,2,7.2,8.35,Infinity,null,null" [array.as:1012]
+PASSED: c.toString() == "null,null,Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:1014]
+PASSED: r.toString() == "9,8,7,6,5,4,3,2,0,1" [array.as:1016]
+PASSED: c.toString() == "null,null,Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:1017]
+PASSED: r.toString() == "0" [array.as:1019]
+PASSED: r.toString() == "0" [array.as:1021]
+PASSED: r.toString() == "0" [array.as:1026]
+PASSED: r.toString() == "0" [array.as:1028]
+PASSED: r.toString() == "0" [array.as:1033]
+PASSED: r.toString() == "0" [array.as:1035]
+PASSED: tostr(r) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1065]
+PASSED: tostr(a) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1066]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1069]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1070]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1073]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1076]
+PASSED: tostr(a) == "ENIAC,1944,true | Colossus,1943,true | Zuse Z3,1941,false" [array.as:1079]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1082]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1083]
+PASSED: r.toString() == "0,1,2" [array.as:1086]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1087]
+PASSED: tostr(r) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1090]
+PASSED: tostr(a) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1091]
+PASSED: tostr(r) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true" [array.as:1094]
+PASSED: r.toString() == "2,1,0" [array.as:1097]
+PASSED: r.toString() == "0" [array.as:1100]
+PASSED: tostr(a) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true" [array.as:1101]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1107]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1108]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1111]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1114]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1117]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1120]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1125]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1126]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1129]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1132]
+PASSED: tostr(a) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true" [array.as:1135]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1138]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1141]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1142]
+PASSED: r.toString() == "0" [array.as:1145]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1149]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1150]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1153]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1154]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1157]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1160]
+PASSED: tostr(r) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true" [array.as:1164]
+PASSED: tostr(a) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true" [array.as:1165]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1168]
+PASSED: tostr(a) == "ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true | Zuse Z3,1941,false" [array.as:1171]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1174]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1175]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1178]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1179]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1184]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1187]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1190]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1193]
+PASSED: tostr(r) == "Name,Year,Year | Year,Name,Year" [array.as:1198]
+PASSED: tostr(b) == "Name,Year,Year | Year,Name,Year" [array.as:1199]
+PASSED: tostr(b) == "Year,Name,Year | Name,Year,Year" [array.as:1201]
+PASSED: tostr(b) == "Name,Year,Year | Year,Name,Year" [array.as:1203]
+PASSED: r == undefined [array.as:1207]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1208]
+PASSED: typeof(r) == 'object' [array.as:1211]
+PASSED: r instanceof Array [array.as:1212]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1213]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1217]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1222]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1224]
+PASSED: out['len'] == 3 [array.as:1264]
+PASSED: out[0] == 1 [array.as:1265]
+PASSED: out[1] == 1 [array.as:1266]
+PASSED: out[2] == 1 [array.as:1267]
+PASSED: out['len'] == 0 [array.as:1271]
+PASSED: out['len'] == 0 [array.as:1276]
+PASSED: out['len'] == 1 [array.as:1280]
+PASSED: out[1] == 1 [array.as:1281]
+PASSED: out['len'] == 2 [array.as:1285]
+PASSED: out[1] == 1 [array.as:1286]
+PASSED: out[0] == 1 [array.as:1287]
+PASSED: a.length == 0 [array.as:1294]
+PASSED: a.length == 0 [array.as:1296]
+PASSED: a[-1] == 'minusone' [array.as:1297]
+PASSED: a.length == 0 [array.as:1299]
+PASSED: a["Infinite"] == 'inf' [array.as:1300]
+PASSED: a.length == 2 [array.as:1354]
+PASSED: a.length == 1 [array.as:1356]
+PASSED: f == 'zero' [array.as:1357]
+XPASSED: a[0] == 'zero' [array.as:1358]
+PASSED: typeof(a[1]) == 'undefined' [array.as:1359]
+PASSED: a.length == 2 [array.as:1368]
+PASSED: a.length == 1 [array.as:1370]
+PASSED: f == 'zero' [array.as:1371]
+PASSED: a[0] == 'one' [array.as:1372]
+XPASSED: a[1] == 'one' [array.as:1373]
+PASSED: a.length == 2 [array.as:1387]
+XPASSED: a[0] == 'zero' [array.as:1389]
+PASSED: a.length == 1 [array.as:1391]
+XPASSED: f == 'zero' [array.as:1392]
+PASSED: a[0] == 'one' [array.as:1393]
+PASSED: typeof(a[1]) == 'undefined' [array.as:1394]
+PASSED: a[0] == 'overridden' [array.as:1396]
+XPASSED: a[1] == 'one' [array.as:1407]
+PASSED: a.length == 3 [array.as:1408]
+PASSED: a.length == 2 [array.as:1410]
+PASSED: f == 'zero' [array.as:1411]
+XPASSED: a[0] == 'one' [array.as:1412]
+PASSED: a[1] == 'two' [array.as:1413]
+PASSED: typeof(a[2]) == 'undefined' [array.as:1414]
+PASSED: a[1] == 'overridden' [array.as:1416]
+check_totals: 484
diff --git a/test/gnash/actionscript.all/pending/array-6.swf b/test/gnash/actionscript.all/pending/array-6.swf
new file mode 100644
index 0000000..8722175
Binary files /dev/null and b/test/gnash/actionscript.all/pending/array-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/array-6.swf.trace b/test/gnash/actionscript.all/pending/array-6.swf.trace
new file mode 100644
index 0000000..1e84f77
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/array-6.swf.trace
@@ -0,0 +1,546 @@
+PASSED: typeof(Array) == 'function' [array.as:25]
+PASSED: Array.CASEINSENSITIVE == 1 [array.as:26]
+PASSED: Array.DESCENDING == 2 [array.as:27]
+PASSED: Array.UNIQUESORT == 4 [array.as:28]
+PASSED: Array.RETURNINDEXEDARRAY == 8 [array.as:29]
+PASSED: Array.NUMERIC == 16 [array.as:30]
+PASSED: typeof(Array.prototype) == 'object' [array.as:31]
+PASSED: typeof(Array.prototype.__proto__) == 'object' [array.as:32]
+PASSED: Array.prototype.__proto__ == Object.prototype [array.as:33]
+PASSED: typeof(Array.prototype.concat) == 'function' [array.as:34]
+PASSED: typeof(Array.prototype.join) == 'function' [array.as:35]
+PASSED: typeof(Array.prototype.pop) == 'function' [array.as:36]
+PASSED: typeof(Array.prototype.push) == 'function' [array.as:37]
+PASSED: typeof(Array.prototype.reverse) == 'function' [array.as:38]
+PASSED: typeof(Array.prototype.shift) == 'function' [array.as:39]
+PASSED: typeof(Array.prototype.slice) == 'function' [array.as:40]
+PASSED: typeof(Array.prototype.sort) == 'function' [array.as:41]
+PASSED: typeof(Array.prototype.sortOn) == 'function' [array.as:42]
+PASSED: typeof(Array.prototype.splice) == 'function' [array.as:43]
+PASSED: typeof(Array.prototype.unshift) == 'function' [array.as:44]
+PASSED: typeof(Array.prototype.toString) == 'function' [array.as:45]
+PASSED: typeof(Array.prototype.length) == 'undefined' [array.as:46]
+PASSED: typeof(Array.prototype.size) == 'undefined' [array.as:47]
+PASSED: typeof(Array.prototype.CASEINSENSITIVE) == 'undefined' [array.as:48]
+PASSED: typeof(Array.prototype.DESCENDING) == 'undefined' [array.as:49]
+PASSED: typeof(Array.prototype.UNIQUESORT) == 'undefined' [array.as:50]
+PASSED: typeof(Array.prototype.RETURNINDEXEDARRAY) == 'undefined' [array.as:51]
+PASSED: typeof(Array.prototype.NUMERIC) == 'undefined' [array.as:52]
+PASSED: Array.hasOwnProperty('CASEINSENSITIVE') [array.as:54]
+PASSED: Array.hasOwnProperty('DESCENDING') [array.as:55]
+PASSED: Array.hasOwnProperty('UNIQUESORT') [array.as:56]
+PASSED: Array.hasOwnProperty('RETURNINDEXEDARRAY') [array.as:57]
+PASSED: Array.hasOwnProperty('NUMERIC') [array.as:58]
+PASSED: Array.prototype.hasOwnProperty('concat') [array.as:59]
+PASSED: Array.prototype.hasOwnProperty('join') [array.as:60]
+PASSED: Array.prototype.hasOwnProperty('pop') [array.as:61]
+PASSED: Array.prototype.hasOwnProperty('push') [array.as:62]
+PASSED: Array.prototype.hasOwnProperty('reverse') [array.as:63]
+PASSED: Array.prototype.hasOwnProperty('shift') [array.as:64]
+PASSED: Array.prototype.hasOwnProperty('slice') [array.as:65]
+PASSED: Array.prototype.hasOwnProperty('sort') [array.as:66]
+PASSED: Array.prototype.hasOwnProperty('sortOn') [array.as:67]
+PASSED: Array.prototype.hasOwnProperty('splice') [array.as:68]
+PASSED: Array.prototype.hasOwnProperty('unshift') [array.as:69]
+PASSED: Array.prototype.hasOwnProperty('toString') [array.as:70]
+PASSED: !Array.prototype.hasOwnProperty('length') [array.as:71]
+PASSED: !Array.prototype.hasOwnProperty('valueOf') [array.as:72]
+PASSED: !Array.prototype.hasOwnProperty('size') [array.as:73]
+PASSED: typeof(Array()) == 'object' [array.as:76]
+PASSED: typeof(new Array()) == 'object' [array.as:77]
+PASSED: typeof(f) == 'function' [array.as:79]
+PASSED: typeof(a) == 'object' [array.as:81]
+PASSED: typeof(a.pop) == 'function' [array.as:82]
+PASSED: typeof(a.size) == 'undefined' [array.as:100]
+PASSED: a instanceOf Array [array.as:102]
+PASSED: a.length == 3 [array.as:103]
+PASSED: a.hasOwnProperty('length') [array.as:105]
+PASSED: typeof(primitiveArrayValue) == 'object' [array.as:109]
+PASSED: primitiveArrayValue == a [array.as:110]
+PASSED: primitiveArrayValue === a [array.as:112]
+PASSED: a != undefined [array.as:118]
+PASSED: typeof(a) == "object" [array.as:119]
+PASSED: a != b [array.as:122]
+PASSED: tmp.toString() == "," [array.as:129]
+PASSED: tmp.length == 1 [array.as:133]
+PASSED: a.length == 3 [array.as:135]
+PASSED: a[2] == 12 [array.as:136]
+PASSED: popped == 12 [array.as:138]
+PASSED: a[2] == undefined [array.as:139]
+PASSED: a[1] == "asdf" [array.as:140]
+PASSED: a[1] == 551 [array.as:142]
+PASSED: a[0] == 200 [array.as:144]
+PASSED: a.toString() == "200,551" [array.as:145]
+PASSED: a.length == 5 [array.as:147]
+PASSED: a[100] == undefined [array.as:148]
+PASSED: a[5] == undefined [array.as:149]
+PASSED: a[4] == 9 [array.as:150]
+PASSED: a.join() == "200,551,7,8,9" [array.as:151]
+PASSED: a.join() == "9,8,7,551,200" [array.as:153]
+PASSED: Array.prototype.join.apply(a) == "9,8,7,551,200" [array.as:155]
+PASSED: a.join.apply(a) == "9,8,7,551,200" [array.as:156]
+PASSED: a.join("test") == "9test8test7test551test200" [array.as:162]
+PASSED: typeof(Array.UNIQUE) == 'undefined' [array.as:165]
+PASSED: (undefined|1) == 1 [array.as:171]
+PASSED: (1|undefined) == 1 [array.as:172]
+PASSED: (undefined&1) == 0 [array.as:173]
+PASSED: (1&undefined) == 0 [array.as:174]
+PASSED: (undefined^1) == 1 [array.as:175]
+PASSED: (1^undefined) == 1 [array.as:176]
+PASSED: Array.UNIQUE | Array.CASEINSENSITIVE | Array.RETURNINDEXEDARRAY == 9 [array.as:179]
+PASSED: a.toString() == "200,551,7,8,9" [array.as:183]
+PASSED: a.toString() == "7,7,7,7,7,8,8,8,9,200,200,200,200,551,551" [array.as:187]
+PASSED: a.toString() == "7,7,7,7,7,8,8,8,9,200,200,200,200,551,551" [array.as:190]
+PASSED: trysortarray.toString() == "alphabet,But,capitalization,Different" [array.as:195]
+PASSED: trysortarray.toString() == "But,Different,alphabet,capitalization" [array.as:197]
+PASSED: gaparray.length == 17 [array.as:202]
+PASSED: gaparray[4] == '4' [array.as:203]
+PASSED: gaparray[16] == '16' [array.as:204]
+PASSED: gaparray.hasOwnProperty('4') [array.as:206]
+PASSED: gaparray.hasOwnProperty('16') [array.as:207]
+PASSED: !gaparray.hasOwnProperty('0') [array.as:208]
+PASSED: !gaparray.hasOwnProperty('1') [array.as:209]
+PASSED: gaparray.length == 17 [array.as:212]
+XPASSED: gaparray[0] == undefined [array.as:214]
+XPASSED: gaparray[1] == undefined [array.as:215]
+PASSED: gaparray[2] == undefined [array.as:220]
+PASSED: gaparray[3] == undefined [array.as:221]
+PASSED: gaparray[4] == undefined [array.as:222]
+PASSED: gaparray[5] == undefined [array.as:223]
+PASSED: gaparray[6] == undefined [array.as:224]
+PASSED: gaparray[7] == undefined [array.as:225]
+PASSED: gaparray[8] == undefined [array.as:226]
+PASSED: gaparray[9] == undefined [array.as:227]
+PASSED: gaparray[10] == undefined [array.as:228]
+PASSED: gaparray[11] == undefined [array.as:229]
+PASSED: gaparray[12] == undefined [array.as:230]
+PASSED: gaparray[13] == undefined [array.as:231]
+PASSED: gaparray[14] == undefined [array.as:232]
+XPASSED: gaparray[15] == '16' [array.as:234]
+XPASSED: gaparray[16] == '4' [array.as:235]
+XPASSED: gaparray.hasOwnProperty('15') [array.as:243]
+XPASSED: gaparray.hasOwnProperty('16') [array.as:244]
+XPASSED: gaparray.hasOwnProperty('4') [array.as:245]
+XPASSED: !gaparray.hasOwnProperty('0') [array.as:246]
+XPASSED: tmp.length == '3' [array.as:259]
+XPASSED: tmp[0] == '15' [array.as:260]
+XPASSED: tmp[1] == '16' [array.as:261]
+XPASSED: tmp[2] == '4' [array.as:262]
+PASSED: trysortarray.toString() == "But,Different,alphabet,capitalization" [array.as:292]
+PASSED: trysortarray.toString() == "But,alphabet,Different,capitalization" [array.as:294]
+XPASSED: typeof(testCmpThis) == 'undefined' [array.as:295]
+XPASSED: testCmpCalls == 7 [array.as:296]
+PASSED: trysortarray.toString() == "But,alphabet,Different,capitalization" [array.as:300]
+XPASSED: trysortarray.toString() == "alphabet,Different,capitalization,But" [array.as:304]
+XPASSED: trysortarray.toString() == "alphabet,Different,capitalization,But" [array.as:308]
+XPASSED: trysortarray.toString() == "alphabet,Different,capitalization,But" [array.as:312]
+XPASSED: trysortarray.length == 0 [array.as:316]
+PASSED: trysortarray.toString() == "1,2,3,4" [array.as:320]
+PASSED: trysortarray.length == 4 [array.as:321]
+PASSED: trysortarray.length == 4 [array.as:323]
+XPASSED: trysortarray.toString() == "2,3,4,1" [array.as:324]
+PASSED: typeof(c) == "object" [array.as:332]
+PASSED: c[0] == "zero" [array.as:337]
+XPASSED: c[1] == "one" [array.as:338]
+PASSED: c[1.1] == "one point one" [array.as:339]
+XPASSED: c[1.9] == undefined [array.as:340]
+PASSED: c[-3] == "minus three" [array.as:341]
+PASSED: c[-3.7] == undefined [array.as:342]
+PASSED: c[0] == "zero" [array.as:345]
+XPASSED: c[1] == "one" [array.as:346]
+XPASSED: c[0] == undefined [array.as:351]
+XPASSED: c[1] == undefined [array.as:352]
+XPASSED: c[2] == undefined [array.as:353]
+XPASSED: c[3] == undefined [array.as:354]
+PASSED: c[1.1] == "one point one" [array.as:355]
+PASSED: c[-2147483649] == "too low" [array.as:356]
+PASSED: c[int(-2147483649)] == undefined [array.as:358]
+PASSED: c[-2147483649] == "too low" [array.as:361]
+PASSED: c[2147483649] == "too high" [array.as:362]
+XPASSED: c[1] == undefined [array.as:363]
+XPASSED: c[2] == undefined [array.as:364]
+XPASSED: c[3] == undefined [array.as:365]
+XPASSED: c.length == -2147483646 [array.as:367]
+XPASSED: str == "2147483649: too high; -2147483649: too low; -2147483648: lowest int; -3: minus three; 1.1: one point one; " [array.as:375]
+PASSED: c[0] == "zero" [array.as:381]
+XPASSED: c[1] == "one" [array.as:382]
+PASSED: c[0] == "zero" [array.as:386]
+XPASSED: c[1] == "one" [array.as:387]
+PASSED: c[0xffffffff] == undefined [array.as:388]
+PASSED: c[0xffffffff + 1] == "too high" [array.as:389]
+PASSED: c[0xfffffffffffffffff] == "much too high" [array.as:392]
+PASSED: c[0] == "zero" [array.as:396]
+XPASSED: c[1] == "one" [array.as:397]
+XPASSED: c.length == 2147483647 [array.as:399]
+XPASSED: str == "-2147483650: still lower; 2.95147905179353e+20: much too high; 4294967296: too high; -3: minus three; 1.1: one point one; 3: three; 2: two; 1: one; 0: zero; " [array.as:408]
+PASSED: sparse[3] == 3 [array.as:414]
+PASSED: sparse[3] == 3 [array.as:416]
+PASSED: popped == 12 [array.as:424]
+PASSED: popped == "asdf" [array.as:426]
+PASSED: popped == 551 [array.as:428]
+PASSED: popped == undefined [array.as:431]
+PASSED: b.length == 0 [array.as:433]
+PASSED: b.toString() == "2,4" [array.as:438]
+PASSED: b.toString() == "" [array.as:441]
+PASSED: b.toString() == "" [array.as:449]
+PASSED: count == 1 [array.as:455]
+PASSED: !sparse.hasOwnProperty(0) [array.as:457]
+PASSED: sparse.hasOwnProperty(5) [array.as:458]
+PASSED: sparse.toString() == ",,,,,5" [array.as:461]
+PASSED: count == 6 [array.as:467]
+PASSED: sparse.hasOwnProperty(0) [array.as:469]
+PASSED: sparse.hasOwnProperty(5) [array.as:470]
+PASSED: sparse.toString() == "5,,,,," [array.as:473]
+PASSED: s == "^1^^3" [array.as:488]
+PASSED: bclone.length == 0 [array.as:499]
+PASSED: b.length == 0 [array.as:500]
+PASSED: concatted.join() == "0,1,2,3,4,5,6" [array.as:503]
+PASSED: concatted[4] == 4 [array.as:504]
+PASSED: basic.toString() == "0,1,2" [array.as:505]
+PASSED: portion.toString() == "2,3,4" [array.as:507]
+PASSED: portion.toString() == "3,4" [array.as:509]
+PASSED: portion.toString() == "4" [array.as:511]
+PASSED: portion.length == 1 [array.as:512]
+PASSED: portion.toString() == "5" [array.as:514]
+PASSED: portion.toString() == "5,6" [array.as:516]
+PASSED: mixed.toString() == "5,6,7,8,9" [array.as:518]
+PASSED: mixed.toString() == "5,6,7,8,9,10,11,12,13" [array.as:520]
+PASSED: portion.toString() == "" [array.as:524]
+PASSED: portion.toString() == "0,1,2,3,4,5,6" [array.as:526]
+PASSED: portion.toString() == "0,1,2" [array.as:528]
+PASSED: portion.toString() == "" [array.as:530]
+PASSED: portion.toString() == "0,1" [array.as:534]
+PASSED: count == 1 [array.as:549]
+PASSED: count == 1 [array.as:552]
+PASSED: count == 7 [array.as:555]
+PASSED: count == 5 [array.as:559]
+PASSED: ary.toString() == "0,1,2,3,4,5" [array.as:566]
+PASSED: ary.toString() == "0,1,2,3,4,5" [array.as:570]
+PASSED: typeof(spliced) == "undefined" [array.as:571]
+PASSED: ary.toString() == "1,2,3,4,5" [array.as:575]
+PASSED: spliced.toString() == "0" [array.as:576]
+PASSED: ary.toString() == "1,3,4,5" [array.as:578]
+PASSED: spliced.toString() == "2" [array.as:579]
+PASSED: ary.toString() == "1,3,4" [array.as:583]
+PASSED: spliced.toString() == "5" [array.as:584]
+PASSED: ary.toString() == "1,4" [array.as:586]
+PASSED: spliced.toString() == "3" [array.as:587]
+PASSED: ary.toString() == "1,4" [array.as:591]
+PASSED: spliced.toString() == "" [array.as:592]
+PASSED: ary.toString() == "1,4" [array.as:594]
+PASSED: spliced.toString() == "" [array.as:595]
+PASSED: ary.toString() == "4" [array.as:599]
+PASSED: spliced.toString() == "1" [array.as:600]
+PASSED: ary.toString() == "0,1,2,3,4,5,6,7,8" [array.as:607]
+PASSED: spliced.toString() == "" [array.as:608]
+PASSED: ary.toString() == "0,1" [array.as:612]
+PASSED: spliced.toString() == "2,3,4,5,6,7,8" [array.as:613]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:616]
+PASSED: spliced.toString() == "7,8" [array.as:617]
+PASSED: typeof(spliced) == 'undefined' [array.as:621]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:622]
+PASSED: typeof(spliced) == 'undefined' [array.as:624]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:625]
+PASSED: typeof(spliced) == 'undefined' [array.as:627]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:628]
+PASSED: typeof(spliced) == 'undefined' [array.as:630]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:631]
+PASSED: ary.toString() == "2,a,b,c,4,5,6" [array.as:635]
+PASSED: spliced.toString() == '3' [array.as:636]
+PASSED: ary.toString() == "2,a,b,8,5,6" [array.as:638]
+PASSED: spliced.toString() == 'c,4' [array.as:639]
+PASSED: ary.toString() == "2,a,b,10,11,12,8,5,6" [array.as:643]
+PASSED: spliced.toString() == '' [array.as:644]
+PASSED: ary.toString() == "1,2,3,4,5,6" [array.as:648]
+PASSED: ary.length == 4 [array.as:649]
+PASSED: spliced.toString() == '2,a,b,10,11,12,8' [array.as:650]
+PASSED: spliced.toString() == "3,4,5,6" [array.as:654]
+PASSED: spliced.toString() == "1,2" [array.as:656]
+PASSED: ary.length == 8 [array.as:661]
+PASSED: count == 2 [array.as:663]
+PASSED: ary.length == 8 [array.as:666]
+PASSED: count == 8 [array.as:668]
+PASSED: ary.length == 9 [array.as:672]
+PASSED: count == 9 [array.as:674]
+PASSED: ary[3] == 3 [array.as:675]
+PASSED: ary[2] == 2 [array.as:676]
+PASSED: count == 8 [array.as:681]
+PASSED: count == 1 [array.as:683]
+PASSED: a instanceOf Array [array.as:690]
+PASSED: typeof(c) == "object" [array.as:691]
+PASSED: c.length == 10 [array.as:692]
+PASSED: c[5] == undefined [array.as:693]
+PASSED: c[1000] == 283 [array.as:695]
+PASSED: c[1001] == undefined [array.as:696]
+PASSED: c[999] == undefined [array.as:697]
+PASSED: c.length == 1001 [array.as:698]
+PASSED: c[8] == 'eight' [array.as:703]
+PASSED: c.length == 2 [array.as:705]
+PASSED: c[8] == undefined [array.as:706]
+PASSED: c[0] == 'zero' [array.as:707]
+XPASSED: c.length == -1 [array.as:710]
+PASSED: c[0] == undefined [array.as:711]
+PASSED: c.length == 3 [array.as:718]
+PASSED: c[0] == 10 [array.as:719]
+PASSED: c[1] == 20 [array.as:720]
+PASSED: c[2] == 30 [array.as:721]
+PASSED: c.hasOwnProperty('0') [array.as:723]
+PASSED: c.hasOwnProperty('1') [array.as:724]
+PASSED: c.hasOwnProperty('2') [array.as:725]
+PASSED: delete c[1] [array.as:727]
+PASSED: c.length == 3 [array.as:728]
+PASSED: c[0] == 10 [array.as:729]
+PASSED: typeof(c[1]) == 'undefined' [array.as:730]
+PASSED: c[2] == 30 [array.as:731]
+PASSED: c.hasOwnProperty('0') [array.as:733]
+PASSED: !c.hasOwnProperty('1') [array.as:734]
+PASSED: c.hasOwnProperty('2') [array.as:735]
+PASSED: c.length == 11 [array.as:739]
+XPASSED: ! delete c[2] [array.as:741]
+XPASSED: c[2] == 30 [array.as:742]
+XPASSED: c[2] == 30 [array.as:744]
+PASSED: typeof(c[10]) == 'undefined' [array.as:745]
+PASSED: typeof(c[10]) == 'undefined' [array.as:747]
+PASSED: r.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:795]
+PASSED: a.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:796]
+PASSED: a.toString() == ",ed,emacs,Jedit,nano,vi" [array.as:798]
+PASSED: a.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:800]
+PASSED: a.toString() == ",ed,emacs,Jedit,nano,vi" [array.as:802]
+PASSED: a.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:804]
+PASSED: r.toString() == "vi,nano,emacs,ed,Jedit," [array.as:806]
+PASSED: a.toString() == "vi,nano,emacs,ed,Jedit," [array.as:807]
+PASSED: r.toString() == "-2,-7,-9,0,1,3,5,8" [array.as:810]
+PASSED: b.toString() == "-2,-7,-9,0,1,3,5,8" [array.as:811]
+PASSED: b.toString() == "-9,-7,-2,0,1,3,5,8" [array.as:813]
+PASSED: b.toString() == "-2,-7,-9,0,1,3,5,8" [array.as:815]
+PASSED: b.toString() == "8,5,3,1,0,-9,-7,-2" [array.as:817]
+PASSED: r.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:819]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:820]
+PASSED: r.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:822]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:823]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:825]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:827]
+PASSED: r.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:830]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:831]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:833]
+PASSED: c.toString() == "-3.7,-0.5,0,0.001,2,7.2,8.35,Infinity" [array.as:835]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:837]
+PASSED: c.toString() == "Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:839]
+PASSED: r.toString() == "" [array.as:842]
+PASSED: d.toString() == "" [array.as:843]
+PASSED: d.toString() == "" [array.as:845]
+PASSED: d.toString() == "" [array.as:847]
+PASSED: r.toString() == "singleton" [array.as:850]
+PASSED: e.toString() == "singleton" [array.as:851]
+PASSED: e.toString() == "singleton" [array.as:853]
+PASSED: e.toString() == "singleton" [array.as:855]
+PASSED: r.toString() == "Name,Name,Year" [array.as:858]
+PASSED: f.toString() == "Name,Name,Year" [array.as:859]
+PASSED: r.toString() == "0" [array.as:861]
+PASSED: f.toString() == "Year,Name,Name" [array.as:863]
+PASSED: r.toString() == "5,4,3,2,1,0" [array.as:868]
+PASSED: a.toString() == "vi,nano,emacs,ed,Jedit," [array.as:869]
+PASSED: r.toString() == "0,1,4,2,3,5" [array.as:871]
+PASSED: a.toString() == "vi,nano,emacs,ed,Jedit," [array.as:872]
+PASSED: r.toString() == "5,6,7,4,3,2,1,0" [array.as:874]
+PASSED: r.toString() == "7,6,5,4,3,2,1,0" [array.as:876]
+PASSED: r.toString() == "0,1,2,3,4,7,6,5" [array.as:878]
+PASSED: r.toString() == "6,7,5,4,3,2,1,0" [array.as:880]
+PASSED: r.toString() == "7,6,5,4,3,2,1,0" [array.as:882]
+PASSED: r.toString() == "0,1,2,3,4,5,7,6" [array.as:884]
+PASSED: r.toString() == "" [array.as:886]
+PASSED: d.toString() == "" [array.as:887]
+PASSED: r.toString() == "" [array.as:889]
+PASSED: d.toString() == "" [array.as:890]
+PASSED: r.toString() == "0" [array.as:892]
+PASSED: e.toString() == "singleton" [array.as:893]
+PASSED: r.toString() == "0" [array.as:895]
+PASSED: r.toString() == ",vi,ed,nano,emacs,Jedit" [array.as:899]
+PASSED: a.toString() == ",vi,ed,nano,emacs,Jedit" [array.as:900]
+PASSED: typeof(r) == 'undefined' [array.as:902]
+PASSED: tolen(r) == "[5, 5, 4, 2, 2, 0]" [array.as:904]
+PASSED: tolen(a) == "[5, 5, 4, 2, 2, 0]" [array.as:905]
+PASSED: tolen(a) == "[0, 2, 2, 4, 5, 5]" [array.as:907]
+PASSED: r.toString() == "0,1,2,3,4,5" [array.as:909]
+PASSED: r.toString() == "5,4,3,2,1,0" [array.as:911]
+PASSED: r.toString() == "" [array.as:913]
+PASSED: d.toString() == "" [array.as:914]
+PASSED: r.toString() == "" [array.as:916]
+PASSED: d.toString() == "" [array.as:917]
+PASSED: r.toString() == "singleton" [array.as:919]
+PASSED: e.toString() == "singleton" [array.as:920]
+PASSED: tolen(r) == "[5, 5, 4, 2, 2, 0]" [array.as:924]
+PASSED: tolen(a) == "[5, 5, 4, 2, 2, 0]" [array.as:925]
+PASSED: tolen(a) == "[0, 2, 2, 4, 5, 5]" [array.as:927]
+PASSED: r.toString() == "0,1,2,3,4,5" [array.as:929]
+PASSED: r.toString() == "5,4,3,2,1,0" [array.as:931]
+PASSED: e.toString() == "singleton" [array.as:933]
+PASSED: r.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:942]
+PASSED: a.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:943]
+PASSED: r.toString() == "0" [array.as:945]
+PASSED: a.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:946]
+PASSED: r.toString() == "0" [array.as:948]
+PASSED: a.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:949]
+PASSED: r.toString() == "0,1,2,3,4,5,6" [array.as:951]
+PASSED: r.toString() == "0" [array.as:953]
+PASSED: r.toString() == "0" [array.as:956]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9,3" [array.as:957]
+PASSED: r.toString() == "0" [array.as:959]
+PASSED: r.toString() == "0" [array.as:961]
+PASSED: r.toString() == "0" [array.as:963]
+PASSED: r.toString() == "0" [array.as:965]
+PASSED: r.toString() == "0" [array.as:968]
+PASSED: c.toString() == "Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7,Infinity" [array.as:969]
+PASSED: r.toString() == "0" [array.as:971]
+PASSED: r.toString() == "0" [array.as:973]
+PASSED: r.toString() == "0" [array.as:975]
+PASSED: r.toString() == "0" [array.as:977]
+PASSED: tolen(r) == "[0, 2, 2, 2, 4, 5, 5]" [array.as:979]
+PASSED: tolen(a) == "[0, 2, 2, 2, 4, 5, 5]" [array.as:980]
+PASSED: r.toString() == "0,1,2,3,4,5,6" [array.as:982]
+PASSED: r.toString() == "6,5,4,3,2,1,0" [array.as:984]
+PASSED: r.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity,Infinity,null" [array.as:990]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity,Infinity,null" [array.as:991]
+PASSED: c.toString() == "-3.7,-0.5,0,0.001,2,7.2,8.35,Infinity,Infinity,null" [array.as:993]
+PASSED: c.toString() == "null,Infinity,Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:995]
+PASSED: r.toString() == "9,8,7,6,5,4,3,1,2,0" [array.as:997]
+PASSED: r.toString() == "0,1,2,3,4,5,6,7,9,8" [array.as:999]
+PASSED: r.toString() == "0" [array.as:1001]
+PASSED: r.toString() == "0" [array.as:1003]
+PASSED: r.toString() == "0" [array.as:1005]
+PASSED: r.toString() == "0" [array.as:1007]
+PASSED: c.toString() == "-3.7,-0.5,0,0.001,2,7.2,8.35,Infinity,null,null" [array.as:1012]
+PASSED: c.toString() == "null,null,Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:1014]
+PASSED: r.toString() == "9,8,7,6,5,4,3,2,0,1" [array.as:1016]
+PASSED: c.toString() == "null,null,Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:1017]
+PASSED: r.toString() == "0" [array.as:1019]
+PASSED: r.toString() == "0" [array.as:1021]
+PASSED: r.toString() == "0" [array.as:1026]
+PASSED: r.toString() == "0" [array.as:1028]
+PASSED: r.toString() == "0" [array.as:1033]
+PASSED: r.toString() == "0" [array.as:1035]
+PASSED: tostr(r) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1065]
+PASSED: tostr(a) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1066]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1069]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1070]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1073]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1076]
+PASSED: tostr(a) == "ENIAC,1944,true | Colossus,1943,true | Zuse Z3,1941,false" [array.as:1079]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1082]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1083]
+PASSED: r.toString() == "0,1,2" [array.as:1086]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1087]
+PASSED: tostr(r) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1090]
+PASSED: tostr(a) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1091]
+PASSED: tostr(r) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true" [array.as:1094]
+PASSED: r.toString() == "2,1,0" [array.as:1097]
+PASSED: r.toString() == "0" [array.as:1100]
+PASSED: tostr(a) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true" [array.as:1101]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1107]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1108]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1111]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1114]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1117]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1120]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1125]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1126]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1129]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1132]
+PASSED: tostr(a) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true" [array.as:1135]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1138]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1141]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1142]
+PASSED: r.toString() == "0" [array.as:1145]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1149]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1150]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1153]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1154]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1157]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1160]
+PASSED: tostr(r) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true" [array.as:1164]
+PASSED: tostr(a) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true" [array.as:1165]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1168]
+PASSED: tostr(a) == "ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true | Zuse Z3,1941,false" [array.as:1171]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1174]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1175]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1178]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1179]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1184]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1187]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1190]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1193]
+PASSED: tostr(r) == "Name,Year,Year | Year,Name,Year" [array.as:1198]
+PASSED: tostr(b) == "Name,Year,Year | Year,Name,Year" [array.as:1199]
+PASSED: tostr(b) == "Year,Name,Year | Name,Year,Year" [array.as:1201]
+PASSED: tostr(b) == "Name,Year,Year | Year,Name,Year" [array.as:1203]
+PASSED: r == undefined [array.as:1207]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1208]
+PASSED: typeof(r) == 'object' [array.as:1211]
+PASSED: r instanceof Array [array.as:1212]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1213]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1217]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1222]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1224]
+PASSED: out['len'] == 3 [array.as:1264]
+PASSED: out[0] == 1 [array.as:1265]
+PASSED: out[1] == 1 [array.as:1266]
+PASSED: out[2] == 1 [array.as:1267]
+PASSED: out['len'] == 0 [array.as:1271]
+PASSED: out['len'] == 0 [array.as:1276]
+PASSED: out['len'] == 1 [array.as:1280]
+PASSED: out[1] == 1 [array.as:1281]
+PASSED: out['len'] == 2 [array.as:1285]
+PASSED: out[1] == 1 [array.as:1286]
+PASSED: out[0] == 1 [array.as:1287]
+PASSED: a.length == 0 [array.as:1294]
+PASSED: a.length == 0 [array.as:1296]
+PASSED: a[-1] == 'minusone' [array.as:1297]
+PASSED: a.length == 0 [array.as:1299]
+PASSED: a["Infinite"] == 'inf' [array.as:1300]
+PASSED: ret == true [array.as:1313]
+PASSED: getCalls == 1 [array.as:1316]
+PASSED: setCalls == 0 [array.as:1317]
+PASSED: getCalls == 0 [array.as:1320]
+XPASSED: setCalls == 1 [array.as:1321]
+PASSED: ret == true [array.as:1324]
+XPASSED: getCalls == 1 [array.as:1327]
+PASSED: setCalls == 0 [array.as:1328]
+PASSED: getCalls == 0 [array.as:1331]
+XPASSED: setCalls == 1 [array.as:1332]
+PASSED: a.length == 3 [array.as:1334]
+XPASSED: a.length == 4 [array.as:1336]
+PASSED: getCalls == 0 [array.as:1341]
+PASSED: setCalls == 0 [array.as:1342]
+PASSED: a.length == 2 [array.as:1354]
+PASSED: a.length == 1 [array.as:1356]
+PASSED: f == 'zero' [array.as:1357]
+XPASSED: a[0] == 'zero' [array.as:1358]
+PASSED: typeof(a[1]) == 'undefined' [array.as:1359]
+PASSED: !a.hasOwnProperty(1) [array.as:1361]
+PASSED: a.length == 2 [array.as:1368]
+PASSED: a.length == 1 [array.as:1370]
+PASSED: f == 'zero' [array.as:1371]
+PASSED: a[0] == 'one' [array.as:1372]
+XPASSED: a[1] == 'one' [array.as:1373]
+PASSED: a.hasOwnProperty(0) [array.as:1375]
+XPASSED: a.hasOwnProperty(1) [array.as:1376]
+PASSED: a.length == 2 [array.as:1387]
+XPASSED: a[0] == 'zero' [array.as:1389]
+PASSED: a.length == 1 [array.as:1391]
+XPASSED: f == 'zero' [array.as:1392]
+PASSED: a[0] == 'one' [array.as:1393]
+PASSED: typeof(a[1]) == 'undefined' [array.as:1394]
+PASSED: a[0] == 'overridden' [array.as:1396]
+PASSED: !a.hasOwnProperty(1) [array.as:1398]
+XPASSED: a[1] == 'one' [array.as:1407]
+PASSED: a.length == 3 [array.as:1408]
+PASSED: a.length == 2 [array.as:1410]
+PASSED: f == 'zero' [array.as:1411]
+XPASSED: a[0] == 'one' [array.as:1412]
+PASSED: a[1] == 'two' [array.as:1413]
+PASSED: typeof(a[2]) == 'undefined' [array.as:1414]
+PASSED: a[1] == 'overridden' [array.as:1416]
+PASSED: a.hasOwnProperty(0) [array.as:1418]
+PASSED: a.hasOwnProperty(1) [array.as:1419]
+PASSED: !a.hasOwnProperty(2) [array.as:1420]
+check_totals: 545
diff --git a/test/gnash/actionscript.all/pending/array-7.swf b/test/gnash/actionscript.all/pending/array-7.swf
new file mode 100644
index 0000000..19368f8
Binary files /dev/null and b/test/gnash/actionscript.all/pending/array-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/array-7.swf.trace b/test/gnash/actionscript.all/pending/array-7.swf.trace
new file mode 100644
index 0000000..e1de2d8
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/array-7.swf.trace
@@ -0,0 +1,556 @@
+PASSED: typeof(Array) == 'function' [array.as:25]
+PASSED: Array.CASEINSENSITIVE == 1 [array.as:26]
+PASSED: Array.DESCENDING == 2 [array.as:27]
+PASSED: Array.UNIQUESORT == 4 [array.as:28]
+PASSED: Array.RETURNINDEXEDARRAY == 8 [array.as:29]
+PASSED: Array.NUMERIC == 16 [array.as:30]
+PASSED: typeof(Array.prototype) == 'object' [array.as:31]
+PASSED: typeof(Array.prototype.__proto__) == 'object' [array.as:32]
+PASSED: Array.prototype.__proto__ == Object.prototype [array.as:33]
+PASSED: typeof(Array.prototype.concat) == 'function' [array.as:34]
+PASSED: typeof(Array.prototype.join) == 'function' [array.as:35]
+PASSED: typeof(Array.prototype.pop) == 'function' [array.as:36]
+PASSED: typeof(Array.prototype.push) == 'function' [array.as:37]
+PASSED: typeof(Array.prototype.reverse) == 'function' [array.as:38]
+PASSED: typeof(Array.prototype.shift) == 'function' [array.as:39]
+PASSED: typeof(Array.prototype.slice) == 'function' [array.as:40]
+PASSED: typeof(Array.prototype.sort) == 'function' [array.as:41]
+PASSED: typeof(Array.prototype.sortOn) == 'function' [array.as:42]
+PASSED: typeof(Array.prototype.splice) == 'function' [array.as:43]
+PASSED: typeof(Array.prototype.unshift) == 'function' [array.as:44]
+PASSED: typeof(Array.prototype.toString) == 'function' [array.as:45]
+PASSED: typeof(Array.prototype.length) == 'undefined' [array.as:46]
+PASSED: typeof(Array.prototype.size) == 'undefined' [array.as:47]
+PASSED: typeof(Array.prototype.CASEINSENSITIVE) == 'undefined' [array.as:48]
+PASSED: typeof(Array.prototype.DESCENDING) == 'undefined' [array.as:49]
+PASSED: typeof(Array.prototype.UNIQUESORT) == 'undefined' [array.as:50]
+PASSED: typeof(Array.prototype.RETURNINDEXEDARRAY) == 'undefined' [array.as:51]
+PASSED: typeof(Array.prototype.NUMERIC) == 'undefined' [array.as:52]
+PASSED: Array.hasOwnProperty('CASEINSENSITIVE') [array.as:54]
+PASSED: Array.hasOwnProperty('DESCENDING') [array.as:55]
+PASSED: Array.hasOwnProperty('UNIQUESORT') [array.as:56]
+PASSED: Array.hasOwnProperty('RETURNINDEXEDARRAY') [array.as:57]
+PASSED: Array.hasOwnProperty('NUMERIC') [array.as:58]
+PASSED: Array.prototype.hasOwnProperty('concat') [array.as:59]
+PASSED: Array.prototype.hasOwnProperty('join') [array.as:60]
+PASSED: Array.prototype.hasOwnProperty('pop') [array.as:61]
+PASSED: Array.prototype.hasOwnProperty('push') [array.as:62]
+PASSED: Array.prototype.hasOwnProperty('reverse') [array.as:63]
+PASSED: Array.prototype.hasOwnProperty('shift') [array.as:64]
+PASSED: Array.prototype.hasOwnProperty('slice') [array.as:65]
+PASSED: Array.prototype.hasOwnProperty('sort') [array.as:66]
+PASSED: Array.prototype.hasOwnProperty('sortOn') [array.as:67]
+PASSED: Array.prototype.hasOwnProperty('splice') [array.as:68]
+PASSED: Array.prototype.hasOwnProperty('unshift') [array.as:69]
+PASSED: Array.prototype.hasOwnProperty('toString') [array.as:70]
+PASSED: !Array.prototype.hasOwnProperty('length') [array.as:71]
+PASSED: !Array.prototype.hasOwnProperty('valueOf') [array.as:72]
+PASSED: !Array.prototype.hasOwnProperty('size') [array.as:73]
+PASSED: typeof(Array()) == 'object' [array.as:76]
+PASSED: typeof(new Array()) == 'object' [array.as:77]
+PASSED: typeof(f) == 'function' [array.as:79]
+PASSED: typeof(a) == 'object' [array.as:81]
+PASSED: typeof(a.pop) == 'function' [array.as:82]
+PASSED: typeof(a.size) == 'undefined' [array.as:100]
+PASSED: a instanceOf Array [array.as:102]
+PASSED: a.length == 3 [array.as:103]
+PASSED: a.hasOwnProperty('length') [array.as:105]
+PASSED: typeof(primitiveArrayValue) == 'object' [array.as:109]
+PASSED: primitiveArrayValue == a [array.as:110]
+PASSED: primitiveArrayValue === a [array.as:112]
+PASSED: a != undefined [array.as:118]
+PASSED: typeof(a) == "object" [array.as:119]
+PASSED: a != b [array.as:122]
+PASSED: tmp.toString() == "undefined,undefined" [array.as:127]
+PASSED: tmp.length == 1 [array.as:133]
+PASSED: a.length == 3 [array.as:135]
+PASSED: a[2] == 12 [array.as:136]
+PASSED: popped == 12 [array.as:138]
+PASSED: a[2] == undefined [array.as:139]
+PASSED: a[1] == "asdf" [array.as:140]
+PASSED: a[1] == 551 [array.as:142]
+PASSED: a[0] == 200 [array.as:144]
+PASSED: a.toString() == "200,551" [array.as:145]
+PASSED: a.length == 5 [array.as:147]
+PASSED: a[100] == undefined [array.as:148]
+PASSED: a[5] == undefined [array.as:149]
+PASSED: a[4] == 9 [array.as:150]
+PASSED: a.join() == "200,551,7,8,9" [array.as:151]
+PASSED: a.join() == "9,8,7,551,200" [array.as:153]
+PASSED: Array.prototype.join.apply(a) == "9,8,7,551,200" [array.as:155]
+PASSED: a.join.apply(a) == "9,8,7,551,200" [array.as:156]
+PASSED: a.join("test") == "9test8test7test551test200" [array.as:162]
+PASSED: typeof(Array.UNIQUE) == 'undefined' [array.as:165]
+PASSED: (undefined|1) == 1 [array.as:171]
+PASSED: (1|undefined) == 1 [array.as:172]
+PASSED: (undefined&1) == 0 [array.as:173]
+PASSED: (1&undefined) == 0 [array.as:174]
+PASSED: (undefined^1) == 1 [array.as:175]
+PASSED: (1^undefined) == 1 [array.as:176]
+PASSED: Array.UNIQUE | Array.CASEINSENSITIVE | Array.RETURNINDEXEDARRAY == 9 [array.as:179]
+PASSED: a.toString() == "200,551,7,8,9" [array.as:183]
+PASSED: a.toString() == "7,7,7,7,7,8,8,8,9,200,200,200,200,551,551" [array.as:187]
+PASSED: a.toString() == "7,7,7,7,7,8,8,8,9,200,200,200,200,551,551" [array.as:190]
+PASSED: trysortarray.toString() == "alphabet,But,capitalization,Different" [array.as:195]
+PASSED: trysortarray.toString() == "But,Different,alphabet,capitalization" [array.as:197]
+PASSED: gaparray.length == 17 [array.as:202]
+PASSED: gaparray[4] == '4' [array.as:203]
+PASSED: gaparray[16] == '16' [array.as:204]
+PASSED: gaparray.hasOwnProperty('4') [array.as:206]
+PASSED: gaparray.hasOwnProperty('16') [array.as:207]
+PASSED: !gaparray.hasOwnProperty('0') [array.as:208]
+PASSED: !gaparray.hasOwnProperty('1') [array.as:209]
+PASSED: gaparray.length == 17 [array.as:212]
+PASSED: gaparray[0] == '16' [array.as:217]
+PASSED: gaparray[1] == '4' [array.as:218]
+PASSED: gaparray[2] == undefined [array.as:220]
+PASSED: gaparray[3] == undefined [array.as:221]
+PASSED: gaparray[4] == undefined [array.as:222]
+PASSED: gaparray[5] == undefined [array.as:223]
+PASSED: gaparray[6] == undefined [array.as:224]
+PASSED: gaparray[7] == undefined [array.as:225]
+PASSED: gaparray[8] == undefined [array.as:226]
+PASSED: gaparray[9] == undefined [array.as:227]
+PASSED: gaparray[10] == undefined [array.as:228]
+PASSED: gaparray[11] == undefined [array.as:229]
+PASSED: gaparray[12] == undefined [array.as:230]
+PASSED: gaparray[13] == undefined [array.as:231]
+PASSED: gaparray[14] == undefined [array.as:232]
+PASSED: gaparray[15] == undefined [array.as:237]
+PASSED: gaparray[16] == undefined [array.as:238]
+XPASSED: gaparray.hasOwnProperty('16') [array.as:248]
+XPASSED: gaparray.hasOwnProperty('4') [array.as:249]
+PASSED: gaparray.hasOwnProperty('1') [array.as:250]
+PASSED: gaparray.hasOwnProperty('0') [array.as:251]
+XPASSED: gaparray.hasOwnProperty('2') [array.as:252]
+XPASSED: tmp.length == '5' [array.as:264]
+PASSED: tmp[0] == '0' [array.as:265]
+PASSED: tmp[1] == '1' [array.as:266]
+XPASSED: tmp[2] == '16' [array.as:267]
+XPASSED: tmp[3] == '2' [array.as:268]
+XPASSED: tmp[4] == '4' [array.as:269]
+PASSED: trysortarray.toString() == "But,Different,alphabet,capitalization" [array.as:292]
+PASSED: trysortarray.toString() == "But,alphabet,Different,capitalization" [array.as:294]
+XPASSED: typeof(testCmpThis) == 'undefined' [array.as:295]
+XPASSED: testCmpCalls == 7 [array.as:296]
+PASSED: trysortarray.toString() == "But,alphabet,Different,capitalization" [array.as:300]
+XPASSED: trysortarray.toString() == "alphabet,Different,capitalization,But" [array.as:304]
+XPASSED: trysortarray.toString() == "alphabet,Different,capitalization,But" [array.as:308]
+XPASSED: trysortarray.toString() == "alphabet,Different,capitalization,But" [array.as:312]
+XPASSED: trysortarray.length == 0 [array.as:316]
+PASSED: trysortarray.toString() == "1,2,3,4" [array.as:320]
+PASSED: trysortarray.length == 4 [array.as:321]
+PASSED: trysortarray.length == 4 [array.as:323]
+XPASSED: trysortarray.toString() == "2,3,4,1" [array.as:324]
+PASSED: typeof(c) == "object" [array.as:332]
+PASSED: c[0] == "zero" [array.as:337]
+XPASSED: c[1] == "one" [array.as:338]
+PASSED: c[1.1] == "one point one" [array.as:339]
+XPASSED: c[1.9] == undefined [array.as:340]
+PASSED: c[-3] == "minus three" [array.as:341]
+PASSED: c[-3.7] == undefined [array.as:342]
+PASSED: c[0] == "zero" [array.as:345]
+XPASSED: c[1] == "one" [array.as:346]
+XPASSED: c[0] == undefined [array.as:351]
+XPASSED: c[1] == undefined [array.as:352]
+XPASSED: c[2] == undefined [array.as:353]
+XPASSED: c[3] == undefined [array.as:354]
+PASSED: c[1.1] == "one point one" [array.as:355]
+PASSED: c[-2147483649] == "too low" [array.as:356]
+PASSED: c[int(-2147483649)] == undefined [array.as:358]
+PASSED: c[-2147483649] == "too low" [array.as:361]
+PASSED: c[2147483649] == "too high" [array.as:362]
+XPASSED: c[1] == undefined [array.as:363]
+XPASSED: c[2] == undefined [array.as:364]
+XPASSED: c[3] == undefined [array.as:365]
+XPASSED: c.length == -2147483646 [array.as:367]
+XPASSED: str == "2147483649: too high; -2147483649: too low; -2147483648: lowest int; -3: minus three; 1.1: one point one; " [array.as:375]
+PASSED: c[0] == "zero" [array.as:381]
+XPASSED: c[1] == "one" [array.as:382]
+PASSED: c[0] == "zero" [array.as:386]
+XPASSED: c[1] == "one" [array.as:387]
+PASSED: c[0xffffffff] == undefined [array.as:388]
+PASSED: c[0xffffffff + 1] == "too high" [array.as:389]
+PASSED: c[0xfffffffffffffffff] == "much too high" [array.as:392]
+PASSED: c[0] == "zero" [array.as:396]
+XPASSED: c[1] == "one" [array.as:397]
+XPASSED: c.length == 2147483647 [array.as:399]
+XPASSED: str == "-2147483650: still lower; 2.95147905179353e+20: much too high; 4294967296: too high; -3: minus three; 1.1: one point one; 3: three; 2: two; 1: one; 0: zero; " [array.as:408]
+PASSED: sparse[3] == 3 [array.as:414]
+PASSED: sparse[3] == 3 [array.as:416]
+PASSED: popped == 12 [array.as:424]
+PASSED: popped == "asdf" [array.as:426]
+PASSED: popped == 551 [array.as:428]
+PASSED: popped == undefined [array.as:431]
+PASSED: b.length == 0 [array.as:433]
+PASSED: b.toString() == "2,4" [array.as:438]
+PASSED: b.toString() == "" [array.as:441]
+PASSED: b.toString() == "" [array.as:449]
+PASSED: count == 1 [array.as:455]
+PASSED: !sparse.hasOwnProperty(0) [array.as:457]
+PASSED: sparse.hasOwnProperty(5) [array.as:458]
+PASSED: sparse.toString() == "undefined,undefined,undefined,undefined,undefined,5" [array.as:463]
+PASSED: count == 6 [array.as:467]
+PASSED: sparse.hasOwnProperty(0) [array.as:469]
+PASSED: sparse.hasOwnProperty(5) [array.as:470]
+PASSED: sparse.toString() == "5,undefined,undefined,undefined,undefined,undefined" [array.as:475]
+PASSED: s == "undefined^1^undefined^3" [array.as:490]
+PASSED: bclone.length == 0 [array.as:499]
+PASSED: b.length == 0 [array.as:500]
+PASSED: concatted.join() == "0,1,2,3,4,5,6" [array.as:503]
+PASSED: concatted[4] == 4 [array.as:504]
+PASSED: basic.toString() == "0,1,2" [array.as:505]
+PASSED: portion.toString() == "2,3,4" [array.as:507]
+PASSED: portion.toString() == "3,4" [array.as:509]
+PASSED: portion.toString() == "4" [array.as:511]
+PASSED: portion.length == 1 [array.as:512]
+PASSED: portion.toString() == "5" [array.as:514]
+PASSED: portion.toString() == "5,6" [array.as:516]
+PASSED: mixed.toString() == "5,6,7,8,9" [array.as:518]
+PASSED: mixed.toString() == "5,6,7,8,9,10,11,12,13" [array.as:520]
+PASSED: portion.toString() == "" [array.as:524]
+PASSED: portion.toString() == "0,1,2,3,4,5,6" [array.as:526]
+PASSED: portion.toString() == "0,1,2" [array.as:528]
+PASSED: portion.toString() == "" [array.as:530]
+PASSED: portion.toString() == "0,1" [array.as:534]
+PASSED: count == 1 [array.as:549]
+PASSED: count == 1 [array.as:552]
+PASSED: count == 7 [array.as:555]
+PASSED: count == 5 [array.as:559]
+PASSED: ary.toString() == "0,1,2,3,4,5" [array.as:566]
+PASSED: ary.toString() == "0,1,2,3,4,5" [array.as:570]
+PASSED: typeof(spliced) == "undefined" [array.as:571]
+PASSED: ary.toString() == "1,2,3,4,5" [array.as:575]
+PASSED: spliced.toString() == "0" [array.as:576]
+PASSED: ary.toString() == "1,3,4,5" [array.as:578]
+PASSED: spliced.toString() == "2" [array.as:579]
+PASSED: ary.toString() == "1,3,4" [array.as:583]
+PASSED: spliced.toString() == "5" [array.as:584]
+PASSED: ary.toString() == "1,4" [array.as:586]
+PASSED: spliced.toString() == "3" [array.as:587]
+PASSED: ary.toString() == "1,4" [array.as:591]
+PASSED: spliced.toString() == "" [array.as:592]
+PASSED: ary.toString() == "1,4" [array.as:594]
+PASSED: spliced.toString() == "" [array.as:595]
+PASSED: ary.toString() == "4" [array.as:599]
+PASSED: spliced.toString() == "1" [array.as:600]
+PASSED: ary.toString() == "0,1,2,3,4,5,6,7,8" [array.as:607]
+PASSED: spliced.toString() == "" [array.as:608]
+PASSED: ary.toString() == "0,1" [array.as:612]
+PASSED: spliced.toString() == "2,3,4,5,6,7,8" [array.as:613]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:616]
+PASSED: spliced.toString() == "7,8" [array.as:617]
+PASSED: typeof(spliced) == 'undefined' [array.as:621]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:622]
+PASSED: typeof(spliced) == 'undefined' [array.as:624]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:625]
+PASSED: typeof(spliced) == 'undefined' [array.as:627]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:628]
+PASSED: typeof(spliced) == 'undefined' [array.as:630]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:631]
+PASSED: ary.toString() == "2,a,b,c,4,5,6" [array.as:635]
+PASSED: spliced.toString() == '3' [array.as:636]
+PASSED: ary.toString() == "2,a,b,8,5,6" [array.as:638]
+PASSED: spliced.toString() == 'c,4' [array.as:639]
+PASSED: ary.toString() == "2,a,b,10,11,12,8,5,6" [array.as:643]
+PASSED: spliced.toString() == '' [array.as:644]
+PASSED: ary.toString() == "1,2,3,4,5,6" [array.as:648]
+PASSED: ary.length == 4 [array.as:649]
+PASSED: spliced.toString() == '2,a,b,10,11,12,8' [array.as:650]
+PASSED: spliced.toString() == "3,4,5,6" [array.as:654]
+PASSED: spliced.toString() == "1,2" [array.as:656]
+PASSED: ary.length == 8 [array.as:661]
+PASSED: count == 2 [array.as:663]
+PASSED: ary.length == 8 [array.as:666]
+PASSED: count == 8 [array.as:668]
+PASSED: ary.length == 9 [array.as:672]
+PASSED: count == 9 [array.as:674]
+PASSED: ary[3] == 3 [array.as:675]
+PASSED: ary[2] == 2 [array.as:676]
+PASSED: count == 8 [array.as:681]
+PASSED: count == 1 [array.as:683]
+PASSED: a instanceOf Array [array.as:690]
+PASSED: typeof(c) == "object" [array.as:691]
+PASSED: c.length == 10 [array.as:692]
+PASSED: c[5] == undefined [array.as:693]
+PASSED: c[1000] == 283 [array.as:695]
+PASSED: c[1001] == undefined [array.as:696]
+PASSED: c[999] == undefined [array.as:697]
+PASSED: c.length == 1001 [array.as:698]
+PASSED: c[8] == 'eight' [array.as:703]
+PASSED: c.length == 2 [array.as:705]
+PASSED: c[8] == undefined [array.as:706]
+PASSED: c[0] == 'zero' [array.as:707]
+XPASSED: c.length == -1 [array.as:710]
+PASSED: c[0] == undefined [array.as:711]
+PASSED: c.length == 3 [array.as:718]
+PASSED: c[0] == 10 [array.as:719]
+PASSED: c[1] == 20 [array.as:720]
+PASSED: c[2] == 30 [array.as:721]
+PASSED: c.hasOwnProperty('0') [array.as:723]
+PASSED: c.hasOwnProperty('1') [array.as:724]
+PASSED: c.hasOwnProperty('2') [array.as:725]
+PASSED: delete c[1] [array.as:727]
+PASSED: c.length == 3 [array.as:728]
+PASSED: c[0] == 10 [array.as:729]
+PASSED: typeof(c[1]) == 'undefined' [array.as:730]
+PASSED: c[2] == 30 [array.as:731]
+PASSED: c.hasOwnProperty('0') [array.as:733]
+PASSED: !c.hasOwnProperty('1') [array.as:734]
+PASSED: c.hasOwnProperty('2') [array.as:735]
+PASSED: c.length == 11 [array.as:739]
+XPASSED: ! delete c[2] [array.as:741]
+XPASSED: c[2] == 30 [array.as:742]
+XPASSED: c[2] == 30 [array.as:744]
+PASSED: typeof(c[10]) == 'undefined' [array.as:745]
+PASSED: typeof(c[10]) == 'undefined' [array.as:747]
+PASSED: r.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:795]
+PASSED: a.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:796]
+PASSED: a.toString() == ",ed,emacs,Jedit,nano,vi" [array.as:798]
+PASSED: a.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:800]
+PASSED: a.toString() == ",ed,emacs,Jedit,nano,vi" [array.as:802]
+PASSED: a.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:804]
+PASSED: r.toString() == "vi,nano,emacs,ed,Jedit," [array.as:806]
+PASSED: a.toString() == "vi,nano,emacs,ed,Jedit," [array.as:807]
+PASSED: r.toString() == "-2,-7,-9,0,1,3,5,8" [array.as:810]
+PASSED: b.toString() == "-2,-7,-9,0,1,3,5,8" [array.as:811]
+PASSED: b.toString() == "-9,-7,-2,0,1,3,5,8" [array.as:813]
+PASSED: b.toString() == "-2,-7,-9,0,1,3,5,8" [array.as:815]
+PASSED: b.toString() == "8,5,3,1,0,-9,-7,-2" [array.as:817]
+PASSED: r.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:819]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:820]
+PASSED: r.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:822]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:823]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:825]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:827]
+PASSED: r.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:830]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:831]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:833]
+PASSED: c.toString() == "-3.7,-0.5,0,0.001,2,7.2,8.35,Infinity" [array.as:835]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:837]
+PASSED: c.toString() == "Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:839]
+PASSED: r.toString() == "" [array.as:842]
+PASSED: d.toString() == "" [array.as:843]
+PASSED: d.toString() == "" [array.as:845]
+PASSED: d.toString() == "" [array.as:847]
+PASSED: r.toString() == "singleton" [array.as:850]
+PASSED: e.toString() == "singleton" [array.as:851]
+PASSED: e.toString() == "singleton" [array.as:853]
+PASSED: e.toString() == "singleton" [array.as:855]
+PASSED: r.toString() == "Name,Name,Year" [array.as:858]
+PASSED: f.toString() == "Name,Name,Year" [array.as:859]
+PASSED: r.toString() == "0" [array.as:861]
+PASSED: f.toString() == "Year,Name,Name" [array.as:863]
+PASSED: r.toString() == "5,4,3,2,1,0" [array.as:868]
+PASSED: a.toString() == "vi,nano,emacs,ed,Jedit," [array.as:869]
+PASSED: r.toString() == "0,1,4,2,3,5" [array.as:871]
+PASSED: a.toString() == "vi,nano,emacs,ed,Jedit," [array.as:872]
+PASSED: r.toString() == "5,6,7,4,3,2,1,0" [array.as:874]
+PASSED: r.toString() == "7,6,5,4,3,2,1,0" [array.as:876]
+PASSED: r.toString() == "0,1,2,3,4,7,6,5" [array.as:878]
+PASSED: r.toString() == "6,7,5,4,3,2,1,0" [array.as:880]
+PASSED: r.toString() == "7,6,5,4,3,2,1,0" [array.as:882]
+PASSED: r.toString() == "0,1,2,3,4,5,7,6" [array.as:884]
+PASSED: r.toString() == "" [array.as:886]
+PASSED: d.toString() == "" [array.as:887]
+PASSED: r.toString() == "" [array.as:889]
+PASSED: d.toString() == "" [array.as:890]
+PASSED: r.toString() == "0" [array.as:892]
+PASSED: e.toString() == "singleton" [array.as:893]
+PASSED: r.toString() == "0" [array.as:895]
+PASSED: r.toString() == ",vi,ed,nano,emacs,Jedit" [array.as:899]
+PASSED: a.toString() == ",vi,ed,nano,emacs,Jedit" [array.as:900]
+PASSED: typeof(r) == 'undefined' [array.as:902]
+PASSED: tolen(r) == "[5, 5, 4, 2, 2, 0]" [array.as:904]
+PASSED: tolen(a) == "[5, 5, 4, 2, 2, 0]" [array.as:905]
+PASSED: tolen(a) == "[0, 2, 2, 4, 5, 5]" [array.as:907]
+PASSED: r.toString() == "0,1,2,3,4,5" [array.as:909]
+PASSED: r.toString() == "5,4,3,2,1,0" [array.as:911]
+PASSED: r.toString() == "" [array.as:913]
+PASSED: d.toString() == "" [array.as:914]
+PASSED: r.toString() == "" [array.as:916]
+PASSED: d.toString() == "" [array.as:917]
+PASSED: r.toString() == "singleton" [array.as:919]
+PASSED: e.toString() == "singleton" [array.as:920]
+PASSED: tolen(r) == "[5, 5, 4, 2, 2, 0]" [array.as:924]
+PASSED: tolen(a) == "[5, 5, 4, 2, 2, 0]" [array.as:925]
+PASSED: tolen(a) == "[0, 2, 2, 4, 5, 5]" [array.as:927]
+PASSED: r.toString() == "0,1,2,3,4,5" [array.as:929]
+PASSED: r.toString() == "5,4,3,2,1,0" [array.as:931]
+PASSED: e.toString() == "singleton" [array.as:933]
+PASSED: r.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:942]
+PASSED: a.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:943]
+PASSED: r.toString() == "0" [array.as:945]
+PASSED: a.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:946]
+PASSED: r.toString() == "0" [array.as:948]
+PASSED: a.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:949]
+PASSED: r.toString() == "0,1,2,3,4,5,6" [array.as:951]
+PASSED: r.toString() == "0" [array.as:953]
+PASSED: r.toString() == "0" [array.as:956]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9,3" [array.as:957]
+PASSED: r.toString() == "0" [array.as:959]
+PASSED: r.toString() == "0" [array.as:961]
+PASSED: r.toString() == "0" [array.as:963]
+PASSED: r.toString() == "0" [array.as:965]
+PASSED: r.toString() == "0" [array.as:968]
+PASSED: c.toString() == "Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7,Infinity" [array.as:969]
+PASSED: r.toString() == "0" [array.as:971]
+PASSED: r.toString() == "0" [array.as:973]
+PASSED: r.toString() == "0" [array.as:975]
+PASSED: r.toString() == "0" [array.as:977]
+PASSED: tolen(r) == "[0, 2, 2, 2, 4, 5, 5]" [array.as:979]
+PASSED: tolen(a) == "[0, 2, 2, 2, 4, 5, 5]" [array.as:980]
+PASSED: r.toString() == "0,1,2,3,4,5,6" [array.as:982]
+PASSED: r.toString() == "6,5,4,3,2,1,0" [array.as:984]
+PASSED: r.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity,Infinity,null" [array.as:990]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity,Infinity,null" [array.as:991]
+PASSED: c.toString() == "-3.7,-0.5,0,0.001,2,7.2,8.35,Infinity,Infinity,null" [array.as:993]
+PASSED: c.toString() == "null,Infinity,Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:995]
+PASSED: r.toString() == "9,8,7,6,5,4,3,1,2,0" [array.as:997]
+PASSED: r.toString() == "0,1,2,3,4,5,6,7,9,8" [array.as:999]
+PASSED: r.toString() == "0" [array.as:1001]
+PASSED: r.toString() == "0" [array.as:1003]
+PASSED: r.toString() == "0" [array.as:1005]
+PASSED: r.toString() == "0" [array.as:1007]
+PASSED: c.toString() == "-3.7,-0.5,0,0.001,2,7.2,8.35,Infinity,null,null" [array.as:1012]
+PASSED: c.toString() == "null,null,Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:1014]
+PASSED: r.toString() == "9,8,7,6,5,4,3,2,0,1" [array.as:1016]
+PASSED: c.toString() == "null,null,Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:1017]
+PASSED: r.toString() == "0" [array.as:1019]
+PASSED: r.toString() == "0" [array.as:1021]
+PASSED: r.toString() == "0" [array.as:1026]
+PASSED: r.toString() == "0" [array.as:1028]
+PASSED: r.toString() == "0" [array.as:1033]
+PASSED: r.toString() == "0" [array.as:1035]
+PASSED: tostr(r) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1065]
+PASSED: tostr(a) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1066]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1069]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1070]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1073]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1076]
+PASSED: tostr(a) == "ENIAC,1944,true | Colossus,1943,true | Zuse Z3,1941,false" [array.as:1079]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1082]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1083]
+PASSED: r.toString() == "0,1,2" [array.as:1086]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1087]
+PASSED: tostr(r) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1090]
+PASSED: tostr(a) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1091]
+PASSED: tostr(r) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true" [array.as:1094]
+PASSED: r.toString() == "2,1,0" [array.as:1097]
+PASSED: r.toString() == "0" [array.as:1100]
+PASSED: tostr(a) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true" [array.as:1101]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1107]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1108]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1111]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1114]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1117]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1120]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1125]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1126]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1129]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1132]
+PASSED: tostr(a) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true" [array.as:1135]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1138]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1141]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1142]
+PASSED: r.toString() == "0" [array.as:1145]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1149]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1150]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1153]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1154]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1157]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1160]
+PASSED: tostr(r) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true" [array.as:1164]
+PASSED: tostr(a) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true" [array.as:1165]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1168]
+PASSED: tostr(a) == "ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true | Zuse Z3,1941,false" [array.as:1171]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1174]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1175]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1178]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1179]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1184]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1187]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1190]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1193]
+PASSED: tostr(r) == "Name,Year,Year | Year,Name,Year" [array.as:1198]
+PASSED: tostr(b) == "Name,Year,Year | Year,Name,Year" [array.as:1199]
+PASSED: tostr(b) == "Year,Name,Year | Name,Year,Year" [array.as:1201]
+PASSED: tostr(b) == "Name,Year,Year | Year,Name,Year" [array.as:1203]
+PASSED: r == undefined [array.as:1207]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1208]
+PASSED: typeof(r) == 'object' [array.as:1211]
+PASSED: r instanceof Array [array.as:1212]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1213]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1217]
+PASSED: tostr(a) == "Harvard Mark I,1944,undefined | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true | Zuse Z3,1941,false" [array.as:1232]
+PASSED: tostr(a) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true | Harvard Mark I,1944,undefined" [array.as:1235]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Harvard Mark I,1944,undefined" [array.as:1238]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Harvard Mark I,1944,undefined" [array.as:1239]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Harvard Mark I,1944,undefined | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1242]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Harvard Mark I,1944,undefined | Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1245]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Harvard Mark I,1944,undefined | Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true" [array.as:1248]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true | Atanasoff-Berry,1941,true | Harvard Mark I,1944,undefined" [array.as:1251]
+PASSED: r.toString() == "0,3,1,2,4" [array.as:1254]
+PASSED: out['len'] == 3 [array.as:1264]
+PASSED: out[0] == 1 [array.as:1265]
+PASSED: out[1] == 1 [array.as:1266]
+PASSED: out[2] == 1 [array.as:1267]
+PASSED: out['len'] == 0 [array.as:1271]
+PASSED: out['len'] == 0 [array.as:1276]
+PASSED: out['len'] == 1 [array.as:1280]
+PASSED: out[1] == 1 [array.as:1281]
+PASSED: out['len'] == 2 [array.as:1285]
+PASSED: out[1] == 1 [array.as:1286]
+PASSED: out[0] == 1 [array.as:1287]
+PASSED: a.length == 0 [array.as:1294]
+PASSED: a.length == 0 [array.as:1296]
+PASSED: a[-1] == 'minusone' [array.as:1297]
+PASSED: a.length == 0 [array.as:1299]
+PASSED: a["Infinite"] == 'inf' [array.as:1300]
+PASSED: ret == true [array.as:1313]
+PASSED: getCalls == 1 [array.as:1316]
+PASSED: setCalls == 0 [array.as:1317]
+PASSED: getCalls == 0 [array.as:1320]
+XPASSED: setCalls == 1 [array.as:1321]
+PASSED: ret == true [array.as:1324]
+XPASSED: getCalls == 1 [array.as:1327]
+PASSED: setCalls == 0 [array.as:1328]
+PASSED: getCalls == 0 [array.as:1331]
+XPASSED: setCalls == 1 [array.as:1332]
+PASSED: a.length == 3 [array.as:1334]
+XPASSED: a.length == 4 [array.as:1336]
+PASSED: getCalls == 0 [array.as:1341]
+PASSED: setCalls == 0 [array.as:1342]
+PASSED: a.length == 2 [array.as:1354]
+PASSED: a.length == 1 [array.as:1356]
+PASSED: f == 'zero' [array.as:1357]
+XPASSED: a[0] == 'zero' [array.as:1358]
+PASSED: typeof(a[1]) == 'undefined' [array.as:1359]
+PASSED: !a.hasOwnProperty(1) [array.as:1361]
+PASSED: a.length == 2 [array.as:1368]
+PASSED: a.length == 1 [array.as:1370]
+PASSED: f == 'zero' [array.as:1371]
+PASSED: a[0] == 'one' [array.as:1372]
+XPASSED: a[1] == 'one' [array.as:1373]
+PASSED: a.hasOwnProperty(0) [array.as:1375]
+XPASSED: a.hasOwnProperty(1) [array.as:1376]
+PASSED: a.length == 2 [array.as:1387]
+XPASSED: a[0] == 'zero' [array.as:1389]
+PASSED: a.length == 1 [array.as:1391]
+XPASSED: f == 'zero' [array.as:1392]
+PASSED: a[0] == 'one' [array.as:1393]
+PASSED: typeof(a[1]) == 'undefined' [array.as:1394]
+PASSED: a[0] == 'overridden' [array.as:1396]
+PASSED: !a.hasOwnProperty(1) [array.as:1398]
+XPASSED: a[1] == 'one' [array.as:1407]
+PASSED: a.length == 3 [array.as:1408]
+PASSED: a.length == 2 [array.as:1410]
+PASSED: f == 'zero' [array.as:1411]
+XPASSED: a[0] == 'one' [array.as:1412]
+PASSED: a[1] == 'two' [array.as:1413]
+PASSED: typeof(a[2]) == 'undefined' [array.as:1414]
+PASSED: a[1] == 'overridden' [array.as:1416]
+PASSED: a.hasOwnProperty(0) [array.as:1418]
+PASSED: a.hasOwnProperty(1) [array.as:1419]
+PASSED: !a.hasOwnProperty(2) [array.as:1420]
+check_totals: 555
diff --git a/test/gnash/actionscript.all/pending/array-8.swf b/test/gnash/actionscript.all/pending/array-8.swf
new file mode 100644
index 0000000..4092254
Binary files /dev/null and b/test/gnash/actionscript.all/pending/array-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/array-8.swf.trace b/test/gnash/actionscript.all/pending/array-8.swf.trace
new file mode 100644
index 0000000..e1de2d8
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/array-8.swf.trace
@@ -0,0 +1,556 @@
+PASSED: typeof(Array) == 'function' [array.as:25]
+PASSED: Array.CASEINSENSITIVE == 1 [array.as:26]
+PASSED: Array.DESCENDING == 2 [array.as:27]
+PASSED: Array.UNIQUESORT == 4 [array.as:28]
+PASSED: Array.RETURNINDEXEDARRAY == 8 [array.as:29]
+PASSED: Array.NUMERIC == 16 [array.as:30]
+PASSED: typeof(Array.prototype) == 'object' [array.as:31]
+PASSED: typeof(Array.prototype.__proto__) == 'object' [array.as:32]
+PASSED: Array.prototype.__proto__ == Object.prototype [array.as:33]
+PASSED: typeof(Array.prototype.concat) == 'function' [array.as:34]
+PASSED: typeof(Array.prototype.join) == 'function' [array.as:35]
+PASSED: typeof(Array.prototype.pop) == 'function' [array.as:36]
+PASSED: typeof(Array.prototype.push) == 'function' [array.as:37]
+PASSED: typeof(Array.prototype.reverse) == 'function' [array.as:38]
+PASSED: typeof(Array.prototype.shift) == 'function' [array.as:39]
+PASSED: typeof(Array.prototype.slice) == 'function' [array.as:40]
+PASSED: typeof(Array.prototype.sort) == 'function' [array.as:41]
+PASSED: typeof(Array.prototype.sortOn) == 'function' [array.as:42]
+PASSED: typeof(Array.prototype.splice) == 'function' [array.as:43]
+PASSED: typeof(Array.prototype.unshift) == 'function' [array.as:44]
+PASSED: typeof(Array.prototype.toString) == 'function' [array.as:45]
+PASSED: typeof(Array.prototype.length) == 'undefined' [array.as:46]
+PASSED: typeof(Array.prototype.size) == 'undefined' [array.as:47]
+PASSED: typeof(Array.prototype.CASEINSENSITIVE) == 'undefined' [array.as:48]
+PASSED: typeof(Array.prototype.DESCENDING) == 'undefined' [array.as:49]
+PASSED: typeof(Array.prototype.UNIQUESORT) == 'undefined' [array.as:50]
+PASSED: typeof(Array.prototype.RETURNINDEXEDARRAY) == 'undefined' [array.as:51]
+PASSED: typeof(Array.prototype.NUMERIC) == 'undefined' [array.as:52]
+PASSED: Array.hasOwnProperty('CASEINSENSITIVE') [array.as:54]
+PASSED: Array.hasOwnProperty('DESCENDING') [array.as:55]
+PASSED: Array.hasOwnProperty('UNIQUESORT') [array.as:56]
+PASSED: Array.hasOwnProperty('RETURNINDEXEDARRAY') [array.as:57]
+PASSED: Array.hasOwnProperty('NUMERIC') [array.as:58]
+PASSED: Array.prototype.hasOwnProperty('concat') [array.as:59]
+PASSED: Array.prototype.hasOwnProperty('join') [array.as:60]
+PASSED: Array.prototype.hasOwnProperty('pop') [array.as:61]
+PASSED: Array.prototype.hasOwnProperty('push') [array.as:62]
+PASSED: Array.prototype.hasOwnProperty('reverse') [array.as:63]
+PASSED: Array.prototype.hasOwnProperty('shift') [array.as:64]
+PASSED: Array.prototype.hasOwnProperty('slice') [array.as:65]
+PASSED: Array.prototype.hasOwnProperty('sort') [array.as:66]
+PASSED: Array.prototype.hasOwnProperty('sortOn') [array.as:67]
+PASSED: Array.prototype.hasOwnProperty('splice') [array.as:68]
+PASSED: Array.prototype.hasOwnProperty('unshift') [array.as:69]
+PASSED: Array.prototype.hasOwnProperty('toString') [array.as:70]
+PASSED: !Array.prototype.hasOwnProperty('length') [array.as:71]
+PASSED: !Array.prototype.hasOwnProperty('valueOf') [array.as:72]
+PASSED: !Array.prototype.hasOwnProperty('size') [array.as:73]
+PASSED: typeof(Array()) == 'object' [array.as:76]
+PASSED: typeof(new Array()) == 'object' [array.as:77]
+PASSED: typeof(f) == 'function' [array.as:79]
+PASSED: typeof(a) == 'object' [array.as:81]
+PASSED: typeof(a.pop) == 'function' [array.as:82]
+PASSED: typeof(a.size) == 'undefined' [array.as:100]
+PASSED: a instanceOf Array [array.as:102]
+PASSED: a.length == 3 [array.as:103]
+PASSED: a.hasOwnProperty('length') [array.as:105]
+PASSED: typeof(primitiveArrayValue) == 'object' [array.as:109]
+PASSED: primitiveArrayValue == a [array.as:110]
+PASSED: primitiveArrayValue === a [array.as:112]
+PASSED: a != undefined [array.as:118]
+PASSED: typeof(a) == "object" [array.as:119]
+PASSED: a != b [array.as:122]
+PASSED: tmp.toString() == "undefined,undefined" [array.as:127]
+PASSED: tmp.length == 1 [array.as:133]
+PASSED: a.length == 3 [array.as:135]
+PASSED: a[2] == 12 [array.as:136]
+PASSED: popped == 12 [array.as:138]
+PASSED: a[2] == undefined [array.as:139]
+PASSED: a[1] == "asdf" [array.as:140]
+PASSED: a[1] == 551 [array.as:142]
+PASSED: a[0] == 200 [array.as:144]
+PASSED: a.toString() == "200,551" [array.as:145]
+PASSED: a.length == 5 [array.as:147]
+PASSED: a[100] == undefined [array.as:148]
+PASSED: a[5] == undefined [array.as:149]
+PASSED: a[4] == 9 [array.as:150]
+PASSED: a.join() == "200,551,7,8,9" [array.as:151]
+PASSED: a.join() == "9,8,7,551,200" [array.as:153]
+PASSED: Array.prototype.join.apply(a) == "9,8,7,551,200" [array.as:155]
+PASSED: a.join.apply(a) == "9,8,7,551,200" [array.as:156]
+PASSED: a.join("test") == "9test8test7test551test200" [array.as:162]
+PASSED: typeof(Array.UNIQUE) == 'undefined' [array.as:165]
+PASSED: (undefined|1) == 1 [array.as:171]
+PASSED: (1|undefined) == 1 [array.as:172]
+PASSED: (undefined&1) == 0 [array.as:173]
+PASSED: (1&undefined) == 0 [array.as:174]
+PASSED: (undefined^1) == 1 [array.as:175]
+PASSED: (1^undefined) == 1 [array.as:176]
+PASSED: Array.UNIQUE | Array.CASEINSENSITIVE | Array.RETURNINDEXEDARRAY == 9 [array.as:179]
+PASSED: a.toString() == "200,551,7,8,9" [array.as:183]
+PASSED: a.toString() == "7,7,7,7,7,8,8,8,9,200,200,200,200,551,551" [array.as:187]
+PASSED: a.toString() == "7,7,7,7,7,8,8,8,9,200,200,200,200,551,551" [array.as:190]
+PASSED: trysortarray.toString() == "alphabet,But,capitalization,Different" [array.as:195]
+PASSED: trysortarray.toString() == "But,Different,alphabet,capitalization" [array.as:197]
+PASSED: gaparray.length == 17 [array.as:202]
+PASSED: gaparray[4] == '4' [array.as:203]
+PASSED: gaparray[16] == '16' [array.as:204]
+PASSED: gaparray.hasOwnProperty('4') [array.as:206]
+PASSED: gaparray.hasOwnProperty('16') [array.as:207]
+PASSED: !gaparray.hasOwnProperty('0') [array.as:208]
+PASSED: !gaparray.hasOwnProperty('1') [array.as:209]
+PASSED: gaparray.length == 17 [array.as:212]
+PASSED: gaparray[0] == '16' [array.as:217]
+PASSED: gaparray[1] == '4' [array.as:218]
+PASSED: gaparray[2] == undefined [array.as:220]
+PASSED: gaparray[3] == undefined [array.as:221]
+PASSED: gaparray[4] == undefined [array.as:222]
+PASSED: gaparray[5] == undefined [array.as:223]
+PASSED: gaparray[6] == undefined [array.as:224]
+PASSED: gaparray[7] == undefined [array.as:225]
+PASSED: gaparray[8] == undefined [array.as:226]
+PASSED: gaparray[9] == undefined [array.as:227]
+PASSED: gaparray[10] == undefined [array.as:228]
+PASSED: gaparray[11] == undefined [array.as:229]
+PASSED: gaparray[12] == undefined [array.as:230]
+PASSED: gaparray[13] == undefined [array.as:231]
+PASSED: gaparray[14] == undefined [array.as:232]
+PASSED: gaparray[15] == undefined [array.as:237]
+PASSED: gaparray[16] == undefined [array.as:238]
+XPASSED: gaparray.hasOwnProperty('16') [array.as:248]
+XPASSED: gaparray.hasOwnProperty('4') [array.as:249]
+PASSED: gaparray.hasOwnProperty('1') [array.as:250]
+PASSED: gaparray.hasOwnProperty('0') [array.as:251]
+XPASSED: gaparray.hasOwnProperty('2') [array.as:252]
+XPASSED: tmp.length == '5' [array.as:264]
+PASSED: tmp[0] == '0' [array.as:265]
+PASSED: tmp[1] == '1' [array.as:266]
+XPASSED: tmp[2] == '16' [array.as:267]
+XPASSED: tmp[3] == '2' [array.as:268]
+XPASSED: tmp[4] == '4' [array.as:269]
+PASSED: trysortarray.toString() == "But,Different,alphabet,capitalization" [array.as:292]
+PASSED: trysortarray.toString() == "But,alphabet,Different,capitalization" [array.as:294]
+XPASSED: typeof(testCmpThis) == 'undefined' [array.as:295]
+XPASSED: testCmpCalls == 7 [array.as:296]
+PASSED: trysortarray.toString() == "But,alphabet,Different,capitalization" [array.as:300]
+XPASSED: trysortarray.toString() == "alphabet,Different,capitalization,But" [array.as:304]
+XPASSED: trysortarray.toString() == "alphabet,Different,capitalization,But" [array.as:308]
+XPASSED: trysortarray.toString() == "alphabet,Different,capitalization,But" [array.as:312]
+XPASSED: trysortarray.length == 0 [array.as:316]
+PASSED: trysortarray.toString() == "1,2,3,4" [array.as:320]
+PASSED: trysortarray.length == 4 [array.as:321]
+PASSED: trysortarray.length == 4 [array.as:323]
+XPASSED: trysortarray.toString() == "2,3,4,1" [array.as:324]
+PASSED: typeof(c) == "object" [array.as:332]
+PASSED: c[0] == "zero" [array.as:337]
+XPASSED: c[1] == "one" [array.as:338]
+PASSED: c[1.1] == "one point one" [array.as:339]
+XPASSED: c[1.9] == undefined [array.as:340]
+PASSED: c[-3] == "minus three" [array.as:341]
+PASSED: c[-3.7] == undefined [array.as:342]
+PASSED: c[0] == "zero" [array.as:345]
+XPASSED: c[1] == "one" [array.as:346]
+XPASSED: c[0] == undefined [array.as:351]
+XPASSED: c[1] == undefined [array.as:352]
+XPASSED: c[2] == undefined [array.as:353]
+XPASSED: c[3] == undefined [array.as:354]
+PASSED: c[1.1] == "one point one" [array.as:355]
+PASSED: c[-2147483649] == "too low" [array.as:356]
+PASSED: c[int(-2147483649)] == undefined [array.as:358]
+PASSED: c[-2147483649] == "too low" [array.as:361]
+PASSED: c[2147483649] == "too high" [array.as:362]
+XPASSED: c[1] == undefined [array.as:363]
+XPASSED: c[2] == undefined [array.as:364]
+XPASSED: c[3] == undefined [array.as:365]
+XPASSED: c.length == -2147483646 [array.as:367]
+XPASSED: str == "2147483649: too high; -2147483649: too low; -2147483648: lowest int; -3: minus three; 1.1: one point one; " [array.as:375]
+PASSED: c[0] == "zero" [array.as:381]
+XPASSED: c[1] == "one" [array.as:382]
+PASSED: c[0] == "zero" [array.as:386]
+XPASSED: c[1] == "one" [array.as:387]
+PASSED: c[0xffffffff] == undefined [array.as:388]
+PASSED: c[0xffffffff + 1] == "too high" [array.as:389]
+PASSED: c[0xfffffffffffffffff] == "much too high" [array.as:392]
+PASSED: c[0] == "zero" [array.as:396]
+XPASSED: c[1] == "one" [array.as:397]
+XPASSED: c.length == 2147483647 [array.as:399]
+XPASSED: str == "-2147483650: still lower; 2.95147905179353e+20: much too high; 4294967296: too high; -3: minus three; 1.1: one point one; 3: three; 2: two; 1: one; 0: zero; " [array.as:408]
+PASSED: sparse[3] == 3 [array.as:414]
+PASSED: sparse[3] == 3 [array.as:416]
+PASSED: popped == 12 [array.as:424]
+PASSED: popped == "asdf" [array.as:426]
+PASSED: popped == 551 [array.as:428]
+PASSED: popped == undefined [array.as:431]
+PASSED: b.length == 0 [array.as:433]
+PASSED: b.toString() == "2,4" [array.as:438]
+PASSED: b.toString() == "" [array.as:441]
+PASSED: b.toString() == "" [array.as:449]
+PASSED: count == 1 [array.as:455]
+PASSED: !sparse.hasOwnProperty(0) [array.as:457]
+PASSED: sparse.hasOwnProperty(5) [array.as:458]
+PASSED: sparse.toString() == "undefined,undefined,undefined,undefined,undefined,5" [array.as:463]
+PASSED: count == 6 [array.as:467]
+PASSED: sparse.hasOwnProperty(0) [array.as:469]
+PASSED: sparse.hasOwnProperty(5) [array.as:470]
+PASSED: sparse.toString() == "5,undefined,undefined,undefined,undefined,undefined" [array.as:475]
+PASSED: s == "undefined^1^undefined^3" [array.as:490]
+PASSED: bclone.length == 0 [array.as:499]
+PASSED: b.length == 0 [array.as:500]
+PASSED: concatted.join() == "0,1,2,3,4,5,6" [array.as:503]
+PASSED: concatted[4] == 4 [array.as:504]
+PASSED: basic.toString() == "0,1,2" [array.as:505]
+PASSED: portion.toString() == "2,3,4" [array.as:507]
+PASSED: portion.toString() == "3,4" [array.as:509]
+PASSED: portion.toString() == "4" [array.as:511]
+PASSED: portion.length == 1 [array.as:512]
+PASSED: portion.toString() == "5" [array.as:514]
+PASSED: portion.toString() == "5,6" [array.as:516]
+PASSED: mixed.toString() == "5,6,7,8,9" [array.as:518]
+PASSED: mixed.toString() == "5,6,7,8,9,10,11,12,13" [array.as:520]
+PASSED: portion.toString() == "" [array.as:524]
+PASSED: portion.toString() == "0,1,2,3,4,5,6" [array.as:526]
+PASSED: portion.toString() == "0,1,2" [array.as:528]
+PASSED: portion.toString() == "" [array.as:530]
+PASSED: portion.toString() == "0,1" [array.as:534]
+PASSED: count == 1 [array.as:549]
+PASSED: count == 1 [array.as:552]
+PASSED: count == 7 [array.as:555]
+PASSED: count == 5 [array.as:559]
+PASSED: ary.toString() == "0,1,2,3,4,5" [array.as:566]
+PASSED: ary.toString() == "0,1,2,3,4,5" [array.as:570]
+PASSED: typeof(spliced) == "undefined" [array.as:571]
+PASSED: ary.toString() == "1,2,3,4,5" [array.as:575]
+PASSED: spliced.toString() == "0" [array.as:576]
+PASSED: ary.toString() == "1,3,4,5" [array.as:578]
+PASSED: spliced.toString() == "2" [array.as:579]
+PASSED: ary.toString() == "1,3,4" [array.as:583]
+PASSED: spliced.toString() == "5" [array.as:584]
+PASSED: ary.toString() == "1,4" [array.as:586]
+PASSED: spliced.toString() == "3" [array.as:587]
+PASSED: ary.toString() == "1,4" [array.as:591]
+PASSED: spliced.toString() == "" [array.as:592]
+PASSED: ary.toString() == "1,4" [array.as:594]
+PASSED: spliced.toString() == "" [array.as:595]
+PASSED: ary.toString() == "4" [array.as:599]
+PASSED: spliced.toString() == "1" [array.as:600]
+PASSED: ary.toString() == "0,1,2,3,4,5,6,7,8" [array.as:607]
+PASSED: spliced.toString() == "" [array.as:608]
+PASSED: ary.toString() == "0,1" [array.as:612]
+PASSED: spliced.toString() == "2,3,4,5,6,7,8" [array.as:613]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:616]
+PASSED: spliced.toString() == "7,8" [array.as:617]
+PASSED: typeof(spliced) == 'undefined' [array.as:621]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:622]
+PASSED: typeof(spliced) == 'undefined' [array.as:624]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:625]
+PASSED: typeof(spliced) == 'undefined' [array.as:627]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:628]
+PASSED: typeof(spliced) == 'undefined' [array.as:630]
+PASSED: ary.toString() == "2,3,4,5,6" [array.as:631]
+PASSED: ary.toString() == "2,a,b,c,4,5,6" [array.as:635]
+PASSED: spliced.toString() == '3' [array.as:636]
+PASSED: ary.toString() == "2,a,b,8,5,6" [array.as:638]
+PASSED: spliced.toString() == 'c,4' [array.as:639]
+PASSED: ary.toString() == "2,a,b,10,11,12,8,5,6" [array.as:643]
+PASSED: spliced.toString() == '' [array.as:644]
+PASSED: ary.toString() == "1,2,3,4,5,6" [array.as:648]
+PASSED: ary.length == 4 [array.as:649]
+PASSED: spliced.toString() == '2,a,b,10,11,12,8' [array.as:650]
+PASSED: spliced.toString() == "3,4,5,6" [array.as:654]
+PASSED: spliced.toString() == "1,2" [array.as:656]
+PASSED: ary.length == 8 [array.as:661]
+PASSED: count == 2 [array.as:663]
+PASSED: ary.length == 8 [array.as:666]
+PASSED: count == 8 [array.as:668]
+PASSED: ary.length == 9 [array.as:672]
+PASSED: count == 9 [array.as:674]
+PASSED: ary[3] == 3 [array.as:675]
+PASSED: ary[2] == 2 [array.as:676]
+PASSED: count == 8 [array.as:681]
+PASSED: count == 1 [array.as:683]
+PASSED: a instanceOf Array [array.as:690]
+PASSED: typeof(c) == "object" [array.as:691]
+PASSED: c.length == 10 [array.as:692]
+PASSED: c[5] == undefined [array.as:693]
+PASSED: c[1000] == 283 [array.as:695]
+PASSED: c[1001] == undefined [array.as:696]
+PASSED: c[999] == undefined [array.as:697]
+PASSED: c.length == 1001 [array.as:698]
+PASSED: c[8] == 'eight' [array.as:703]
+PASSED: c.length == 2 [array.as:705]
+PASSED: c[8] == undefined [array.as:706]
+PASSED: c[0] == 'zero' [array.as:707]
+XPASSED: c.length == -1 [array.as:710]
+PASSED: c[0] == undefined [array.as:711]
+PASSED: c.length == 3 [array.as:718]
+PASSED: c[0] == 10 [array.as:719]
+PASSED: c[1] == 20 [array.as:720]
+PASSED: c[2] == 30 [array.as:721]
+PASSED: c.hasOwnProperty('0') [array.as:723]
+PASSED: c.hasOwnProperty('1') [array.as:724]
+PASSED: c.hasOwnProperty('2') [array.as:725]
+PASSED: delete c[1] [array.as:727]
+PASSED: c.length == 3 [array.as:728]
+PASSED: c[0] == 10 [array.as:729]
+PASSED: typeof(c[1]) == 'undefined' [array.as:730]
+PASSED: c[2] == 30 [array.as:731]
+PASSED: c.hasOwnProperty('0') [array.as:733]
+PASSED: !c.hasOwnProperty('1') [array.as:734]
+PASSED: c.hasOwnProperty('2') [array.as:735]
+PASSED: c.length == 11 [array.as:739]
+XPASSED: ! delete c[2] [array.as:741]
+XPASSED: c[2] == 30 [array.as:742]
+XPASSED: c[2] == 30 [array.as:744]
+PASSED: typeof(c[10]) == 'undefined' [array.as:745]
+PASSED: typeof(c[10]) == 'undefined' [array.as:747]
+PASSED: r.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:795]
+PASSED: a.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:796]
+PASSED: a.toString() == ",ed,emacs,Jedit,nano,vi" [array.as:798]
+PASSED: a.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:800]
+PASSED: a.toString() == ",ed,emacs,Jedit,nano,vi" [array.as:802]
+PASSED: a.toString() == ",Jedit,ed,emacs,nano,vi" [array.as:804]
+PASSED: r.toString() == "vi,nano,emacs,ed,Jedit," [array.as:806]
+PASSED: a.toString() == "vi,nano,emacs,ed,Jedit," [array.as:807]
+PASSED: r.toString() == "-2,-7,-9,0,1,3,5,8" [array.as:810]
+PASSED: b.toString() == "-2,-7,-9,0,1,3,5,8" [array.as:811]
+PASSED: b.toString() == "-9,-7,-2,0,1,3,5,8" [array.as:813]
+PASSED: b.toString() == "-2,-7,-9,0,1,3,5,8" [array.as:815]
+PASSED: b.toString() == "8,5,3,1,0,-9,-7,-2" [array.as:817]
+PASSED: r.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:819]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:820]
+PASSED: r.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:822]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:823]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:825]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9" [array.as:827]
+PASSED: r.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:830]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:831]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:833]
+PASSED: c.toString() == "-3.7,-0.5,0,0.001,2,7.2,8.35,Infinity" [array.as:835]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" [array.as:837]
+PASSED: c.toString() == "Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:839]
+PASSED: r.toString() == "" [array.as:842]
+PASSED: d.toString() == "" [array.as:843]
+PASSED: d.toString() == "" [array.as:845]
+PASSED: d.toString() == "" [array.as:847]
+PASSED: r.toString() == "singleton" [array.as:850]
+PASSED: e.toString() == "singleton" [array.as:851]
+PASSED: e.toString() == "singleton" [array.as:853]
+PASSED: e.toString() == "singleton" [array.as:855]
+PASSED: r.toString() == "Name,Name,Year" [array.as:858]
+PASSED: f.toString() == "Name,Name,Year" [array.as:859]
+PASSED: r.toString() == "0" [array.as:861]
+PASSED: f.toString() == "Year,Name,Name" [array.as:863]
+PASSED: r.toString() == "5,4,3,2,1,0" [array.as:868]
+PASSED: a.toString() == "vi,nano,emacs,ed,Jedit," [array.as:869]
+PASSED: r.toString() == "0,1,4,2,3,5" [array.as:871]
+PASSED: a.toString() == "vi,nano,emacs,ed,Jedit," [array.as:872]
+PASSED: r.toString() == "5,6,7,4,3,2,1,0" [array.as:874]
+PASSED: r.toString() == "7,6,5,4,3,2,1,0" [array.as:876]
+PASSED: r.toString() == "0,1,2,3,4,7,6,5" [array.as:878]
+PASSED: r.toString() == "6,7,5,4,3,2,1,0" [array.as:880]
+PASSED: r.toString() == "7,6,5,4,3,2,1,0" [array.as:882]
+PASSED: r.toString() == "0,1,2,3,4,5,7,6" [array.as:884]
+PASSED: r.toString() == "" [array.as:886]
+PASSED: d.toString() == "" [array.as:887]
+PASSED: r.toString() == "" [array.as:889]
+PASSED: d.toString() == "" [array.as:890]
+PASSED: r.toString() == "0" [array.as:892]
+PASSED: e.toString() == "singleton" [array.as:893]
+PASSED: r.toString() == "0" [array.as:895]
+PASSED: r.toString() == ",vi,ed,nano,emacs,Jedit" [array.as:899]
+PASSED: a.toString() == ",vi,ed,nano,emacs,Jedit" [array.as:900]
+PASSED: typeof(r) == 'undefined' [array.as:902]
+PASSED: tolen(r) == "[5, 5, 4, 2, 2, 0]" [array.as:904]
+PASSED: tolen(a) == "[5, 5, 4, 2, 2, 0]" [array.as:905]
+PASSED: tolen(a) == "[0, 2, 2, 4, 5, 5]" [array.as:907]
+PASSED: r.toString() == "0,1,2,3,4,5" [array.as:909]
+PASSED: r.toString() == "5,4,3,2,1,0" [array.as:911]
+PASSED: r.toString() == "" [array.as:913]
+PASSED: d.toString() == "" [array.as:914]
+PASSED: r.toString() == "" [array.as:916]
+PASSED: d.toString() == "" [array.as:917]
+PASSED: r.toString() == "singleton" [array.as:919]
+PASSED: e.toString() == "singleton" [array.as:920]
+PASSED: tolen(r) == "[5, 5, 4, 2, 2, 0]" [array.as:924]
+PASSED: tolen(a) == "[5, 5, 4, 2, 2, 0]" [array.as:925]
+PASSED: tolen(a) == "[0, 2, 2, 4, 5, 5]" [array.as:927]
+PASSED: r.toString() == "0,1,2,3,4,5" [array.as:929]
+PASSED: r.toString() == "5,4,3,2,1,0" [array.as:931]
+PASSED: e.toString() == "singleton" [array.as:933]
+PASSED: r.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:942]
+PASSED: a.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:943]
+PASSED: r.toString() == "0" [array.as:945]
+PASSED: a.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:946]
+PASSED: r.toString() == "0" [array.as:948]
+PASSED: a.toString() == ",ED,Jedit,ed,emacs,nano,vi" [array.as:949]
+PASSED: r.toString() == "0,1,2,3,4,5,6" [array.as:951]
+PASSED: r.toString() == "0" [array.as:953]
+PASSED: r.toString() == "0" [array.as:956]
+PASSED: b.toString() == "8,5,3,1,0,-2,-7,-9,3" [array.as:957]
+PASSED: r.toString() == "0" [array.as:959]
+PASSED: r.toString() == "0" [array.as:961]
+PASSED: r.toString() == "0" [array.as:963]
+PASSED: r.toString() == "0" [array.as:965]
+PASSED: r.toString() == "0" [array.as:968]
+PASSED: c.toString() == "Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7,Infinity" [array.as:969]
+PASSED: r.toString() == "0" [array.as:971]
+PASSED: r.toString() == "0" [array.as:973]
+PASSED: r.toString() == "0" [array.as:975]
+PASSED: r.toString() == "0" [array.as:977]
+PASSED: tolen(r) == "[0, 2, 2, 2, 4, 5, 5]" [array.as:979]
+PASSED: tolen(a) == "[0, 2, 2, 2, 4, 5, 5]" [array.as:980]
+PASSED: r.toString() == "0,1,2,3,4,5,6" [array.as:982]
+PASSED: r.toString() == "6,5,4,3,2,1,0" [array.as:984]
+PASSED: r.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity,Infinity,null" [array.as:990]
+PASSED: c.toString() == "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity,Infinity,null" [array.as:991]
+PASSED: c.toString() == "-3.7,-0.5,0,0.001,2,7.2,8.35,Infinity,Infinity,null" [array.as:993]
+PASSED: c.toString() == "null,Infinity,Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:995]
+PASSED: r.toString() == "9,8,7,6,5,4,3,1,2,0" [array.as:997]
+PASSED: r.toString() == "0,1,2,3,4,5,6,7,9,8" [array.as:999]
+PASSED: r.toString() == "0" [array.as:1001]
+PASSED: r.toString() == "0" [array.as:1003]
+PASSED: r.toString() == "0" [array.as:1005]
+PASSED: r.toString() == "0" [array.as:1007]
+PASSED: c.toString() == "-3.7,-0.5,0,0.001,2,7.2,8.35,Infinity,null,null" [array.as:1012]
+PASSED: c.toString() == "null,null,Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:1014]
+PASSED: r.toString() == "9,8,7,6,5,4,3,2,0,1" [array.as:1016]
+PASSED: c.toString() == "null,null,Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" [array.as:1017]
+PASSED: r.toString() == "0" [array.as:1019]
+PASSED: r.toString() == "0" [array.as:1021]
+PASSED: r.toString() == "0" [array.as:1026]
+PASSED: r.toString() == "0" [array.as:1028]
+PASSED: r.toString() == "0" [array.as:1033]
+PASSED: r.toString() == "0" [array.as:1035]
+PASSED: tostr(r) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1065]
+PASSED: tostr(a) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1066]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1069]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1070]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1073]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1076]
+PASSED: tostr(a) == "ENIAC,1944,true | Colossus,1943,true | Zuse Z3,1941,false" [array.as:1079]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1082]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1083]
+PASSED: r.toString() == "0,1,2" [array.as:1086]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1087]
+PASSED: tostr(r) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1090]
+PASSED: tostr(a) == "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1091]
+PASSED: tostr(r) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true" [array.as:1094]
+PASSED: r.toString() == "2,1,0" [array.as:1097]
+PASSED: r.toString() == "0" [array.as:1100]
+PASSED: tostr(a) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true" [array.as:1101]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1107]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1108]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1111]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1114]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1117]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1120]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1125]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1126]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1129]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1132]
+PASSED: tostr(a) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true" [array.as:1135]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1138]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1141]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1142]
+PASSED: r.toString() == "0" [array.as:1145]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1149]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1150]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1153]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1154]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1157]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1160]
+PASSED: tostr(r) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true" [array.as:1164]
+PASSED: tostr(a) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true" [array.as:1165]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1168]
+PASSED: tostr(a) == "ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true | Zuse Z3,1941,false" [array.as:1171]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1174]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1175]
+PASSED: tostr(r) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1178]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1179]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1184]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1187]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1190]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1193]
+PASSED: tostr(r) == "Name,Year,Year | Year,Name,Year" [array.as:1198]
+PASSED: tostr(b) == "Name,Year,Year | Year,Name,Year" [array.as:1199]
+PASSED: tostr(b) == "Year,Name,Year | Name,Year,Year" [array.as:1201]
+PASSED: tostr(b) == "Name,Year,Year | Year,Name,Year" [array.as:1203]
+PASSED: r == undefined [array.as:1207]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1208]
+PASSED: typeof(r) == 'object' [array.as:1211]
+PASSED: r instanceof Array [array.as:1212]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1213]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" [array.as:1217]
+PASSED: tostr(a) == "Harvard Mark I,1944,undefined | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true | Zuse Z3,1941,false" [array.as:1232]
+PASSED: tostr(a) == "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true | Harvard Mark I,1944,undefined" [array.as:1235]
+PASSED: tostr(r) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Harvard Mark I,1944,undefined" [array.as:1238]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Harvard Mark I,1944,undefined" [array.as:1239]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Harvard Mark I,1944,undefined | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" [array.as:1242]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Harvard Mark I,1944,undefined | Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" [array.as:1245]
+PASSED: tostr(a) == "Atanasoff-Berry,1941,true | Harvard Mark I,1944,undefined | Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true" [array.as:1248]
+PASSED: tostr(a) == "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true | Atanasoff-Berry,1941,true | Harvard Mark I,1944,undefined" [array.as:1251]
+PASSED: r.toString() == "0,3,1,2,4" [array.as:1254]
+PASSED: out['len'] == 3 [array.as:1264]
+PASSED: out[0] == 1 [array.as:1265]
+PASSED: out[1] == 1 [array.as:1266]
+PASSED: out[2] == 1 [array.as:1267]
+PASSED: out['len'] == 0 [array.as:1271]
+PASSED: out['len'] == 0 [array.as:1276]
+PASSED: out['len'] == 1 [array.as:1280]
+PASSED: out[1] == 1 [array.as:1281]
+PASSED: out['len'] == 2 [array.as:1285]
+PASSED: out[1] == 1 [array.as:1286]
+PASSED: out[0] == 1 [array.as:1287]
+PASSED: a.length == 0 [array.as:1294]
+PASSED: a.length == 0 [array.as:1296]
+PASSED: a[-1] == 'minusone' [array.as:1297]
+PASSED: a.length == 0 [array.as:1299]
+PASSED: a["Infinite"] == 'inf' [array.as:1300]
+PASSED: ret == true [array.as:1313]
+PASSED: getCalls == 1 [array.as:1316]
+PASSED: setCalls == 0 [array.as:1317]
+PASSED: getCalls == 0 [array.as:1320]
+XPASSED: setCalls == 1 [array.as:1321]
+PASSED: ret == true [array.as:1324]
+XPASSED: getCalls == 1 [array.as:1327]
+PASSED: setCalls == 0 [array.as:1328]
+PASSED: getCalls == 0 [array.as:1331]
+XPASSED: setCalls == 1 [array.as:1332]
+PASSED: a.length == 3 [array.as:1334]
+XPASSED: a.length == 4 [array.as:1336]
+PASSED: getCalls == 0 [array.as:1341]
+PASSED: setCalls == 0 [array.as:1342]
+PASSED: a.length == 2 [array.as:1354]
+PASSED: a.length == 1 [array.as:1356]
+PASSED: f == 'zero' [array.as:1357]
+XPASSED: a[0] == 'zero' [array.as:1358]
+PASSED: typeof(a[1]) == 'undefined' [array.as:1359]
+PASSED: !a.hasOwnProperty(1) [array.as:1361]
+PASSED: a.length == 2 [array.as:1368]
+PASSED: a.length == 1 [array.as:1370]
+PASSED: f == 'zero' [array.as:1371]
+PASSED: a[0] == 'one' [array.as:1372]
+XPASSED: a[1] == 'one' [array.as:1373]
+PASSED: a.hasOwnProperty(0) [array.as:1375]
+XPASSED: a.hasOwnProperty(1) [array.as:1376]
+PASSED: a.length == 2 [array.as:1387]
+XPASSED: a[0] == 'zero' [array.as:1389]
+PASSED: a.length == 1 [array.as:1391]
+XPASSED: f == 'zero' [array.as:1392]
+PASSED: a[0] == 'one' [array.as:1393]
+PASSED: typeof(a[1]) == 'undefined' [array.as:1394]
+PASSED: a[0] == 'overridden' [array.as:1396]
+PASSED: !a.hasOwnProperty(1) [array.as:1398]
+XPASSED: a[1] == 'one' [array.as:1407]
+PASSED: a.length == 3 [array.as:1408]
+PASSED: a.length == 2 [array.as:1410]
+PASSED: f == 'zero' [array.as:1411]
+XPASSED: a[0] == 'one' [array.as:1412]
+PASSED: a[1] == 'two' [array.as:1413]
+PASSED: typeof(a[2]) == 'undefined' [array.as:1414]
+PASSED: a[1] == 'overridden' [array.as:1416]
+PASSED: a.hasOwnProperty(0) [array.as:1418]
+PASSED: a.hasOwnProperty(1) [array.as:1419]
+PASSED: !a.hasOwnProperty(2) [array.as:1420]
+check_totals: 555
diff --git a/test/gnash/actionscript.all/pending/array.as b/test/gnash/actionscript.all/pending/array.as
new file mode 100644
index 0000000..7a7d649
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/array.as
@@ -0,0 +1,1449 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Initial test written by Mike Carlson
+
+
+rcsid="$Id: array.as,v 1.63 2008/03/19 16:36:42 strk Exp $";
+#include "check.as"
+
+check_equals(typeof(Array), 'function');
+check_equals ( Array.CASEINSENSITIVE , 1 );
+check_equals ( Array.DESCENDING , 2 );
+check_equals ( Array.UNIQUESORT , 4 );
+check_equals ( Array.RETURNINDEXEDARRAY , 8 );
+check_equals ( Array.NUMERIC , 16 );
+check_equals(typeof(Array.prototype), 'object');
+check_equals(typeof(Array.prototype.__proto__), 'object');
+check_equals(Array.prototype.__proto__, Object.prototype);
+check_equals(typeof(Array.prototype.concat), 'function');
+check_equals(typeof(Array.prototype.join), 'function');
+check_equals(typeof(Array.prototype.pop), 'function');
+check_equals(typeof(Array.prototype.push), 'function');
+check_equals(typeof(Array.prototype.reverse), 'function');
+check_equals(typeof(Array.prototype.shift), 'function');
+check_equals(typeof(Array.prototype.slice), 'function');
+check_equals(typeof(Array.prototype.sort), 'function');
+check_equals(typeof(Array.prototype.sortOn), 'function');
+check_equals(typeof(Array.prototype.splice), 'function');
+check_equals(typeof(Array.prototype.unshift), 'function');
+check_equals(typeof(Array.prototype.toString), 'function');
+check_equals(typeof(Array.prototype.length), 'undefined');
+check_equals(typeof(Array.prototype.size), 'undefined');
+check_equals ( typeof(Array.prototype.CASEINSENSITIVE), 'undefined' );
+check_equals ( typeof(Array.prototype.DESCENDING), 'undefined' );
+check_equals ( typeof(Array.prototype.UNIQUESORT), 'undefined' );
+check_equals ( typeof(Array.prototype.RETURNINDEXEDARRAY), 'undefined' );
+check_equals ( typeof(Array.prototype.NUMERIC), 'undefined' );
+#if OUTPUT_VERSION >= 6
+check ( Array.hasOwnProperty('CASEINSENSITIVE') );
+check ( Array.hasOwnProperty('DESCENDING') );
+check ( Array.hasOwnProperty('UNIQUESORT') );
+check ( Array.hasOwnProperty('RETURNINDEXEDARRAY') );
+check ( Array.hasOwnProperty('NUMERIC') );
+check(Array.prototype.hasOwnProperty('concat'));
+check(Array.prototype.hasOwnProperty('join'));
+check(Array.prototype.hasOwnProperty('pop'));
+check(Array.prototype.hasOwnProperty('push'));
+check(Array.prototype.hasOwnProperty('reverse'));
+check(Array.prototype.hasOwnProperty('shift'));
+check(Array.prototype.hasOwnProperty('slice'));
+check(Array.prototype.hasOwnProperty('sort'));
+check(Array.prototype.hasOwnProperty('sortOn'));
+check(Array.prototype.hasOwnProperty('splice'));
+check(Array.prototype.hasOwnProperty('unshift'));
+check(Array.prototype.hasOwnProperty('toString'));
+check(!Array.prototype.hasOwnProperty('length'));
+check(!Array.prototype.hasOwnProperty('valueOf'));
+check(!Array.prototype.hasOwnProperty('size'));
+#endif // OUTPUT_VERSION >= 6
+
+check_equals(typeof(Array()), 'object');
+check_equals(typeof(new Array()), 'object');
+f = ASnative(252, 0);
+check_equals(typeof(f), 'function');
+a = f();
+check_equals(typeof(a), 'object');
+check_equals(typeof(a.pop), 'function');
+
+neg = new Object();
+neg.valueOf = function () { return -1; };
+zero = new Object();
+zero.valueOf = function () { return 0; };
+pos = new Object();
+pos.valueOf = function () { return 1; };
+two = new Object();
+two.valueOf = function () { return 2; };
+numeric = new Object();
+numeric.valueOf = function () { return Array.NUMERIC; };
+numericRev = new Object();
+numericRev.valueOf = function () { return (Array.NUMERIC | Array.DESCENDING); };
+
+var a;
+var popped;
+a=[551,"asdf",12];
+check_equals(typeof(a.size), 'undefined');
+
+check (a instanceOf Array);
+check_equals(a.length, 3);
+#if OUTPUT_VERSION >= 6
+check(a.hasOwnProperty('length'));
+#endif
+
+primitiveArrayValue = a.valueOf();
+check_equals(typeof(primitiveArrayValue), 'object');
+check_equals( primitiveArrayValue, a );
+#if OUTPUT_VERSION > 5
+check( primitiveArrayValue === a );
+#endif
+
+b=[];
+b.push(551,"asdf",12);
+
+check ( a != undefined );
+check_equals ( typeof(a), "object" );
+// reference at sephiroth.it/reference.php says (under "==")
+// that two arrays are always considered NOT equal - need to verify
+check ( a != b ); 
+
+
+tmp = new Array(2);
+#if OUTPUT_VERSION > 6
+check_equals ( tmp.toString(), "undefined,undefined" );
+#else
+check_equals ( tmp.toString(), "," );
+#endif
+
+tmp = new Array(two);
+check_equals ( tmp.length, 1 );
+
+check_equals ( a.length, 3 );
+check_equals ( a[2], 12 );
+popped=a.pop();
+check_equals ( popped , 12 );
+check_equals ( a[2] , undefined );
+check_equals ( a[1] , "asdf" );
+a[1] = a[0];
+check_equals ( a[1] , 551 );
+a[0] = 200;
+check_equals ( a[0] , 200 );
+check_equals ( a.toString() , "200,551");
+a.push(7,8,9);
+check_equals ( a.length, 5);
+check_equals ( a[100] , undefined );
+check_equals ( a[5] , undefined );
+check_equals ( a[4] , 9 );
+check_equals ( a.join() , "200,551,7,8,9" );
+a.reverse();
+check_equals ( a.join() , "9,8,7,551,200" );
+#if OUTPUT_VERSION > 5
+check_equals ( Array.prototype.join.apply(a), "9,8,7,551,200" );
+check_equals ( a.join.apply(a), "9,8,7,551,200" );
+#else
+// It seems that up to SWF5 we couldn't do this ...
+check_equals ( Array.prototype.join.apply(a), undefined );
+check_equals ( a.join.apply(a), undefined );
+#endif
+check_equals ( a.join("test") , "9test8test7test551test200" );
+
+// Test one of our sorting type members
+check_equals( typeof(Array.UNIQUE), 'undefined' );
+
+// the following tests do not belong here, but
+// better somewhere then nowhere (are here due to
+// a typo in this testcase triggering this bug)
+//
+check_equals( (undefined|1), 1 );
+check_equals( (1|undefined), 1 );
+check_equals( (undefined&1), 0 );
+check_equals( (1&undefined), 0 );
+check_equals( (undefined^1), 1 );
+check_equals( (1^undefined), 1 );
+
+
+check_equals( Array.UNIQUE | Array.CASEINSENSITIVE | Array.RETURNINDEXEDARRAY, 9 );
+
+// Check sort functions
+a.sort();
+check_equals ( a.toString(), "200,551,7,8,9" );
+
+a.push(200,7,200,7,200,8,8,551,7,7);
+a.sort( Array.NUMERIC );
+check_equals ( a.toString() , "7,7,7,7,7,8,8,8,9,200,200,200,200,551,551" );
+
+a.sort( Array.UNIQUESORT | Array.DESCENDING | Array.NUMERIC);
+check_equals (a.toString() , "7,7,7,7,7,8,8,8,9,200,200,200,200,551,551" );
+
+// Test multi-parameter constructor, and keep testing sort cases
+var trysortarray = new Array("But", "alphabet", "Different", "capitalization");
+trysortarray.sort( Array.CASEINSENSITIVE );
+check_equals ( trysortarray.toString() , "alphabet,But,capitalization,Different");
+trysortarray.sort();
+check_equals ( trysortarray.toString() , "But,Different,alphabet,capitalization" );
+
+gaparray = [];
+gaparray[4] = '4';
+gaparray[16] = '16';
+check_equals(gaparray.length, 17);
+check_equals(gaparray[4], '4');
+check_equals(gaparray[16], '16');
+#if OUTPUT_VERSION > 5
+check(gaparray.hasOwnProperty('4'));
+check(gaparray.hasOwnProperty('16'));
+check(!gaparray.hasOwnProperty('0'));
+check(!gaparray.hasOwnProperty('1'));
+#endif
+gaparray.sort();
+check_equals(gaparray.length, 17);
+#if OUTPUT_VERSION < 7
+ xcheck_equals(gaparray[0], undefined); // this is 16 with gnash
+ xcheck_equals(gaparray[1], undefined); // this is 4 with gnash
+#else
+ check_equals(gaparray[0], '16');
+ check_equals(gaparray[1], '4');
+#endif
+check_equals(gaparray[2], undefined);
+check_equals(gaparray[3], undefined);
+check_equals(gaparray[4], undefined);
+check_equals(gaparray[5], undefined);
+check_equals(gaparray[6], undefined);
+check_equals(gaparray[7], undefined);
+check_equals(gaparray[8], undefined);
+check_equals(gaparray[9], undefined);
+check_equals(gaparray[10], undefined);
+check_equals(gaparray[11], undefined);
+check_equals(gaparray[12], undefined);
+check_equals(gaparray[13], undefined);
+check_equals(gaparray[14], undefined);
+#if OUTPUT_VERSION < 7
+  xcheck_equals(gaparray[15], '16'); // this is at [0] with gnash
+  xcheck_equals(gaparray[16], '4'); // this is at [1] with gnash
+#else
+  check_equals(gaparray[15], undefined);
+  check_equals(gaparray[16], undefined);
+#endif
+
+#if OUTPUT_VERSION > 5
+#if OUTPUT_VERSION < 7
+ xcheck(gaparray.hasOwnProperty('15'));
+ xcheck(gaparray.hasOwnProperty('16'));
+ xcheck(gaparray.hasOwnProperty('4')); // a-ha!
+ xcheck(!gaparray.hasOwnProperty('0'));
+#else
+ xcheck(gaparray.hasOwnProperty('16'));
+ xcheck(gaparray.hasOwnProperty('4')); 
+ check(gaparray.hasOwnProperty('1'));
+ check(gaparray.hasOwnProperty('0'));
+ xcheck(gaparray.hasOwnProperty('2'));
+#endif
+#endif
+
+tmp = []; for (v in gaparray) tmp.push(v);
+tmp.sort();
+#if OUTPUT_VERSION < 7
+ xcheck_equals(tmp.length, '3'); // 4, 15 and 16
+ xcheck_equals(tmp[0], '15');
+ xcheck_equals(tmp[1], '16');
+ xcheck_equals(tmp[2], '4');
+#else
+ xcheck_equals(tmp.length, '5'); // 0, 1, 2, 4, 16 
+ check_equals(tmp[0], '0');
+ check_equals(tmp[1], '1');
+ xcheck_equals(tmp[2], '16');
+ xcheck_equals(tmp[3], '2');
+ xcheck_equals(tmp[4], '4');
+#endif
+
+// TODO - test sort(Array.RETURNINDEXEDARRAY)
+
+//-----------------------------------------------------
+// Test sorting using a custom comparison function
+//-----------------------------------------------------
+
+testCmpCalls=0;
+testCmpThis="not set";
+function testCmp (x,y)
+{
+	// Gnash fails here by *requiring* a not-null 'this_ptr' in fn_call
+	// NOTE: we can't rely on the number of calls to this function,
+	//       which is implementation-defined
+	if ( testCmpCalls++ ) testCmpThis=this;
+
+	if (x.length < y.length) { return -1; }
+	if (x.length > y.length) { return 1; }
+	return 0;
+}
+
+check_equals ( trysortarray.toString() , "But,Different,alphabet,capitalization" );
+trysortarray.sort( testCmp );
+check_equals ( trysortarray.toString() , "But,alphabet,Different,capitalization" );
+xcheck_equals(typeof(testCmpThis), 'undefined');
+xcheck_equals(testCmpCalls, 7); // I don't think this matters much..
+
+function testCmpBogus1 (x,y) { return -1; }
+trysortarray.sort( testCmpBogus1 );
+check_equals ( trysortarray.toString() , "But,alphabet,Different,capitalization" );
+
+function testCmpBogus2 (x,y) { return 1; }
+trysortarray.sort( testCmpBogus2 );
+xcheck_equals ( trysortarray.toString() , "alphabet,Different,capitalization,But" );
+
+function testCmpBogus3 (x,y) { return 0; }
+trysortarray.sort( testCmpBogus3 );
+xcheck_equals ( trysortarray.toString() , "alphabet,Different,capitalization,But" );
+
+function testCmpBogus4 (x,y) { return tmp++%2; }
+trysortarray.sort( testCmpBogus4 );
+xcheck_equals ( trysortarray.toString() , "alphabet,Different,capitalization,But" );
+
+function testCmpBogus5 (x,y) { trysortarray.pop(); return -1; }
+trysortarray.sort( testCmpBogus5 );
+xcheck_equals ( trysortarray.length , 0 );
+
+function testCmpBogus6 (x,y) { trysortarray.pop(); return 1; }
+trysortarray = new Array(1,2,3,4);
+check_equals ( trysortarray.toString(), "1,2,3,4" );
+check_equals ( trysortarray.length, 4 );
+trysortarray.sort( testCmpBogus6 );
+check_equals ( trysortarray.length, 4 );
+xcheck_equals ( trysortarray.toString(), "2,3,4,1" );
+
+
+//-----------------------------------------------------
+// Test non-integer and insane indices.
+//-----------------------------------------------------
+
+c = ["zero", "one", "two", "three"];
+check_equals(typeof(c), "object");
+
+c[1.1] = "one point one";
+c[-3] = "minus three";
+
+check_equals (c[0], "zero");
+xcheck_equals (c[1], "one");
+check_equals (c[1.1], "one point one");
+xcheck_equals (c[1.9], undefined);
+check_equals (c[-3], "minus three");
+check_equals (c[-3.7], undefined);
+
+c[-2147483648] = "lowest int";
+check_equals (c[0], "zero");
+xcheck_equals (c[1], "one");
+
+// This appears to invalidate integer indices, but
+// not non-integer ones.
+c[-2147483649] = "too low";
+xcheck_equals (c[0], undefined);
+xcheck_equals (c[1], undefined);
+xcheck_equals (c[2], undefined);
+xcheck_equals (c[3], undefined);
+check_equals (c[1.1], "one point one");
+check_equals (c[-2147483649], "too low");
+// doesn't set the int(-2147483649) element:
+check_equals (c[int(-2147483649)], undefined); 
+
+c[2147483649] = "too high";
+check_equals (c[-2147483649], "too low");
+check_equals (c[2147483649], "too high");
+xcheck_equals (c[1], undefined);
+xcheck_equals (c[2], undefined);
+xcheck_equals (c[3], undefined);
+
+xcheck_equals (c.length, -2147483646);
+
+str = "";
+
+for (i in c)
+{
+    str += i + ": " + c[i] + "; ";
+}
+xcheck_equals(str, "2147483649: too high; -2147483649: too low; -2147483648: lowest int; -3: minus three; 1.1: one point one; ");
+
+c = ["zero", "one", "two", "three"];
+c[1.1] = "one point one";
+c[-3] = "minus three";
+
+check_equals (c[0], "zero");
+xcheck_equals (c[1], "one");
+
+// No problem...
+c[0xffffffff + 1] = "too high";
+check_equals (c[0], "zero");
+xcheck_equals (c[1], "one");
+check_equals (c[0xffffffff], undefined);
+check_equals (c[0xffffffff + 1], "too high");
+
+c[0xfffffffffffffffff] = "much too high";
+check_equals (c[0xfffffffffffffffff], "much too high");
+
+// Also no problem. Looks like a fairly crappy bug to me.
+c[-2147483650] = "still lower";
+check_equals (c[0], "zero");
+xcheck_equals (c[1], "one");
+
+xcheck_equals (c.length, 2147483647);
+
+str= "";
+
+for (i in c)
+{
+    str += i + ": " + c[i] + "; ";
+}
+
+xcheck_equals(str, "-2147483650: still lower; 2.95147905179353e+20: much too high; 4294967296: too high; -3: minus three; 1.1: one point one; 3: three; 2: two; 1: one; 0: zero; ");
+
+// Getting 'holes' crawls the inheritance chain !
+Array.prototype[3] = 3;
+sparse = new Array();
+sparse[2] = 2;
+check_equals(sparse[3], 3); // crawl inheritance chain !
+sparse[4] = 4;
+check_equals(sparse[3], 3); // crawl inheritance chain !
+delete Array.prototype[3];
+
+//-----------------------------------------------------
+// Test Array.pop()
+//-----------------------------------------------------
+
+popped=b.pop();
+check ( popped == 12 );
+popped=b.pop();
+check ( popped == "asdf" );
+popped=b.pop();
+check ( popped == 551 );
+// make sure pops on an empty array don't cause problems
+popped=b.pop();
+check ( popped == undefined );
+b.pop(); b.pop();
+check_equals ( b.length, 0 );
+b.unshift(8,2);
+b.push(4,3);
+b.pop();
+b.shift();
+check_equals ( b.toString() , "2,4" );
+b.shift();
+b.pop();
+check_equals ( b.toString() , "" );
+
+//------------------------------------------------------
+// Test Array.reverse
+//------------------------------------------------------
+
+// check reverse for empty case
+b.reverse();
+check_equals ( b.toString() , "" );
+
+// check reverse for sparse array
+sparse = new Array();
+sparse[5] = 5;
+count=0; for (var i in sparse) count++;
+check_equals(count, 1); // a single element exists
+#if OUTPUT_VERSION > 5
+ check(!sparse.hasOwnProperty(0));
+ check(sparse.hasOwnProperty(5));
+#endif
+#if OUTPUT_VERSION < 7
+ check_equals(sparse.toString(), ",,,,,5");
+#else
+ check_equals(sparse.toString(), "undefined,undefined,undefined,undefined,undefined,5");
+#endif
+sparse.reverse();
+count=0; for (var i in sparse) count++;
+check_equals(count, 6); // no more holes
+#if OUTPUT_VERSION > 5
+ check(sparse.hasOwnProperty(0));
+ check(sparse.hasOwnProperty(5));
+#endif
+#if OUTPUT_VERSION < 7
+ check_equals(sparse.toString(), "5,,,,,");
+#else
+ check_equals(sparse.toString(), "5,undefined,undefined,undefined,undefined,undefined");
+#endif
+
+//------------------------------------------------------
+// Test Array.join
+//------------------------------------------------------
+
+// join a sparse array
+j = new Array();
+j[1] = 1;
+j[3] = 3;
+s = j.join("^");
+#if OUTPUT_VERSION < 7
+ check_equals(s, "^1^^3");
+#else
+ check_equals(s, "undefined^1^undefined^3");
+#endif
+
+//------------------------------------------------------
+// Test Array.concat and Array.slice (TODO: split)
+//------------------------------------------------------
+
+// check concat, slice
+var bclone = b.concat();
+check_equals ( bclone.length, 0 );
+check_equals ( b.length, 0 );
+var basic = b.concat(0,1,2);
+var concatted = basic.concat(3,4,5,6);
+check_equals ( concatted.join() , "0,1,2,3,4,5,6" );
+check_equals ( concatted[4] , 4 );
+check_equals ( basic.toString() , "0,1,2" );
+var portion = concatted.slice( 2,-2 );
+check_equals ( portion.toString() , "2,3,4" );
+portion = portion.slice(1);
+check_equals ( portion.toString() , "3,4" );
+portion = portion.slice(1, 2);
+check_equals ( portion.toString() , "4" );
+check_equals ( portion.length, 1);
+portion = concatted.slice(-2, -1);
+check_equals ( portion.toString(), "5");
+portion = concatted.slice(-2);
+check_equals ( portion.toString(), "5,6");
+mixed = portion.concat([7,8,9]);
+check_equals ( mixed.toString(), "5,6,7,8,9");
+mixed = mixed.concat([10,11],12,[13]);
+check_equals ( mixed.toString(), "5,6,7,8,9,10,11,12,13");
+
+// invalid calls
+portion = concatted.slice(0, -8);
+check_equals ( portion.toString(), "");
+portion = concatted.slice(-18);
+check_equals ( portion.toString(), "0,1,2,3,4,5,6");
+portion = concatted.slice(-18, 3);
+check_equals ( portion.toString(), "0,1,2");
+portion = concatted.slice(18);
+check_equals ( portion.toString(), "");
+
+// using objects that implement valueOf as index positions
+portion = concatted.slice(zero, two);
+check_equals ( portion.toString(), "0,1");
+
+//------------------------------------------------------
+// Test Array.concat 
+//------------------------------------------------------
+
+sparse1 = new Array();
+sparse1[3] = 'a3';
+
+sparse2 = new Array();
+sparse2[2] = 'b2';
+
+csp = sparse1.concat(sparse2);
+
+count=0; for (var i in sparse1) count++;
+check_equals(count, 1);
+
+count=0; for (var i in sparse2) count++;
+check_equals(count, 1);
+
+count=0; for (var i in csp) count++;
+check_equals(count, 7); // concat filled any holes
+
+csp = sparse1.concat('onemore');
+count=0; for (var i in csp) count++;
+check_equals(count, 5); // concat filled any holes
+
+//-------------------------------
+// Test Array.splice
+//-------------------------------
+
+ary = [0,1,2,3,4,5];
+check_equals ( ary.toString(), "0,1,2,3,4,5" );
+
+// No args is invalid
+spliced = ary.splice();
+check_equals ( ary.toString(), "0,1,2,3,4,5" );
+check_equals ( typeof(spliced), "undefined" );
+
+// Zero and positive offset starts from the end (-1 is last)
+spliced = ary.splice(0, 1);
+check_equals ( ary.toString(), "1,2,3,4,5" );
+check_equals ( spliced.toString(), "0" );
+spliced = ary.splice(1, 1);
+check_equals ( ary.toString(), "1,3,4,5" );
+check_equals ( spliced.toString(), "2" );
+
+// Negative offset starts from the end (-1 is last)
+spliced = ary.splice(-1, 1);
+check_equals ( ary.toString(), "1,3,4" );
+check_equals ( spliced.toString(), "5" );
+spliced = ary.splice(-2, 1);
+check_equals ( ary.toString(), "1,4" );
+check_equals ( spliced.toString(), "3" );
+
+// Out-of bound zero or positive offset are taken as one-past the end
+spliced = ary.splice(2, 1);
+check_equals ( ary.toString(), "1,4" );
+check_equals ( spliced.toString(), "" );
+spliced = ary.splice(2, 10);
+check_equals ( ary.toString(), "1,4" );
+check_equals ( spliced.toString(), "" );
+
+// Out-of bound negative offset are taken as zero
+spliced = ary.splice(-20, 1);
+check_equals ( ary.toString(), "4" );
+check_equals ( spliced.toString(), "1" );
+
+// rebuild the array
+ary = [0,1,2,3,4,5,6,7,8];
+
+// Zero length doesn't change anything, and return an empty array
+spliced = ary.splice(2, 0);
+check_equals ( ary.toString(), "0,1,2,3,4,5,6,7,8" );
+check_equals ( spliced.toString(), "" );
+
+// Out of bound positive length consumes up to the end
+spliced = ary.splice(2, 100);
+check_equals ( ary.toString(), "0,1" );
+check_equals ( spliced.toString(), "2,3,4,5,6,7,8" );
+ary=spliced; // reset array
+spliced = ary.splice(-2, 100);
+check_equals ( ary.toString(), "2,3,4,5,6" );
+check_equals ( spliced.toString(), "7,8" );
+
+// Negative length are invalid
+spliced = ary.splice(0, -1);
+check_equals ( typeof(spliced), 'undefined' );
+check_equals ( ary.toString(), "2,3,4,5,6" );
+spliced = ary.splice(3, -1);
+check_equals ( typeof(spliced), 'undefined' );
+check_equals ( ary.toString(), "2,3,4,5,6" );
+spliced = ary.splice(-1, -1);
+check_equals ( typeof(spliced), 'undefined' );
+check_equals ( ary.toString(), "2,3,4,5,6" );
+spliced = ary.splice(-1, -1, "a", "b", "c");
+check_equals ( typeof(spliced), 'undefined' );
+check_equals ( ary.toString(), "2,3,4,5,6" );
+
+// Provide substitutions now
+spliced = ary.splice(1, 1, "a", "b", "c");
+check_equals ( ary.toString(), "2,a,b,c,4,5,6" );
+check_equals ( spliced.toString(), '3' );
+spliced = ary.splice(-4, 2, 8);
+check_equals ( ary.toString(), "2,a,b,8,5,6" );
+check_equals ( spliced.toString(), 'c,4' );
+
+// Insert w/out deleting anything
+spliced = ary.splice(3, 0, 10, 11, 12);
+check_equals ( ary.toString(), "2,a,b,10,11,12,8,5,6" );
+check_equals ( spliced.toString(), '' );
+
+// Use arrays as replacement
+spliced = ary.splice(0, 7, [1,2], [3,4]);
+check_equals ( ary.toString(), "1,2,3,4,5,6" );
+check_equals ( ary.length, 4 ); // don't be fooled by toString output !
+check_equals ( spliced.toString(), '2,a,b,10,11,12,8' );
+
+// Ensure the simplest usage cases are correct!
+spliced = ary.splice(1);
+check_equals ( spliced.toString(), "3,4,5,6");
+spliced = ary.splice(0);
+check_equals ( spliced.toString(), "1,2");
+
+// Splice a sparse array
+ary = new Array(); ary[2] = 2; ary[7] = 7;
+
+check_equals(ary.length, 8);
+count=0; for (var i in ary) count++;
+check_equals(count, 2);
+
+spliced = ary.splice(3, 0); // no op ?
+check_equals(ary.length, 8); // no change in length
+count=0; for (var i in ary) count++;
+check_equals(count, 8); // but fills the gaps !
+
+ary = new Array(); ary[2] = 2; ary[7] = 7;
+spliced = ary.splice(3, 0, 3); // add 3 at index 3
+check_equals(ary.length, 9); 
+count=0; for (var i in ary) count++;
+check_equals(count, 9); // fills the gaps !
+check_equals(ary[3], 3);
+check_equals(ary[2], 2);
+
+ary = new Array(); ary[2] = 2; ary[7] = 7;
+spliced = ary.splice(3, 1, 3); // replace index 3 (an hole) with a 3 value
+count=0; for (var i in ary) count++;
+check_equals(count, 8); // fills the gaps 
+count=0; for (var i in spliced) count++;
+check_equals(count, 1); // the returned array contains an actual value, not an hole
+
+//-------------------------------
+// Test single parameter constructor, and implicitly expanding array
+//-------------------------------
+
+var c = new Array(10);
+check (a instanceOf Array);
+check_equals ( typeof(c), "object" );
+check_equals ( c.length, 10 );
+check_equals ( c[5] , undefined );
+c[1000] = 283;
+check_equals ( c[1000] , 283 );
+check_equals ( c[1001] , undefined );
+check_equals ( c[999] , undefined );
+check_equals ( c.length, 1001 );
+
+// Test that the 'length' property is overridable
+c[8] = 'eight';
+c[0] = 'zero';
+check_equals(c[8], 'eight');
+c.length = 2;
+check_equals(c.length, 2);
+check_equals(c[8], undefined);
+check_equals(c[0], 'zero');
+c.length = -1;
+// it seems Gnash needs to store the 'length' property as a normal property
+xcheck_equals(c.length, -1);
+check_equals(c[0], undefined);
+
+//-------------------------------
+// Test deleting an array element
+//-------------------------------
+
+var c = new Array(10,20,30);
+check_equals ( c.length, 3 );
+check_equals(c[0], 10);
+check_equals(c[1], 20);
+check_equals(c[2], 30);
+#if OUTPUT_VERSION > 5
+check(c.hasOwnProperty('0'));
+check(c.hasOwnProperty('1'));
+check(c.hasOwnProperty('2'));
+#endif
+check(delete c[1]);
+check_equals ( c.length, 3 );
+check_equals(c[0], 10);
+check_equals(typeof(c[1]), 'undefined');
+check_equals(c[2], 30);
+#if OUTPUT_VERSION > 5
+check(c.hasOwnProperty('0'));
+check(!c.hasOwnProperty('1'));
+check(c.hasOwnProperty('2'));
+#endif
+
+c[10] = 'ten';
+check_equals(c.length, 11);
+ASSetPropFlags(c, "2", 7, 0); // protect from deletion
+xcheck( ! delete c[2] ); // gnash doesn't store prop flags here..
+xcheck_equals(c[2], 30); // so won't respect delete-protection
+c.length = 2;
+xcheck_equals(c[2], 30); // was protected !
+check_equals(typeof(c[10]), 'undefined'); // was not protected..
+c.length = 11;
+check_equals(typeof(c[10]), 'undefined'); // and won't come back
+
+//-------------------------------
+// Test sort
+//-------------------------------
+
+function cmp_fn(x,y)
+{
+	if (x.length < y.length) { return -1; }
+	if (x.length > y.length) { return 1; }
+	return 0;
+}
+
+function cmp_fn_obj(x,y)
+{
+	if (x.length < y.length) { return neg; }
+	if (x.length > y.length) { return pos; }
+	return zero;
+}
+
+function tolen(x)
+{
+	var i;
+	str = "[";
+	for (i = 0; i < x.length; i++) 
+	{
+		str += String(x[i].length);
+		if (i != x.length - 1) str += ", ";
+	}
+	str += "]";
+	return str;
+}
+
+id = new Object();
+id.toString = function () { return "Name"; };
+yr = new Object();
+yr.toString = function () { return "Year"; };
+
+a = ["ed", "emacs", "", "vi", "nano", "Jedit"];
+b = [8, 1, -2, 5, -7, -9, 3, 0];
+c = [7.2, 2.0, -0.5, 3/0, 0.0, 8.35, 0.001, -3.7];
+d = [];
+e = ["singleton"];
+f = [id, yr, id];
+
+//trace(" -- Basic Sort Tests -- ");
+
+r = a.sort( Array.NUMERIC );
+check_equals( r.toString(), ",Jedit,ed,emacs,nano,vi" );
+check_equals( a.toString(), ",Jedit,ed,emacs,nano,vi" );
+a.sort( Array.NUMERIC | Array.CASEINSENSITIVE );
+check_equals( a.toString(), ",ed,emacs,Jedit,nano,vi" );
+a.sort();
+check_equals( a.toString(), ",Jedit,ed,emacs,nano,vi" );
+a.sort( Array.CASEINSENSITIVE );
+check_equals( a.toString(), ",ed,emacs,Jedit,nano,vi" );
+a.sort( Array.UNIQUESORT );
+check_equals( a.toString(), ",Jedit,ed,emacs,nano,vi" );
+r = a.sort( Array.DESCENDING );
+check_equals( r.toString(), "vi,nano,emacs,ed,Jedit," );
+check_equals( a.toString(), "vi,nano,emacs,ed,Jedit," );
+
+r = b.sort();
+check_equals( r.toString(), "-2,-7,-9,0,1,3,5,8" );
+check_equals( b.toString(), "-2,-7,-9,0,1,3,5,8" );
+b.sort( Array.NUMERIC );
+check_equals( b.toString(), "-9,-7,-2,0,1,3,5,8" );
+b.sort( Array.UNIQUESORT );
+check_equals( b.toString(), "-2,-7,-9,0,1,3,5,8" );
+b.sort( Array.DESCENDING );
+check_equals( b.toString(), "8,5,3,1,0,-9,-7,-2" );
+r = b.sort( Array.DESCENDING | Array.NUMERIC );
+check_equals( r.toString(), "8,5,3,1,0,-2,-7,-9" );
+check_equals( b.toString(), "8,5,3,1,0,-2,-7,-9" );
+r = b.sort( zero );
+check_equals( r.toString(), "8,5,3,1,0,-2,-7,-9" );
+check_equals( b.toString(), "8,5,3,1,0,-2,-7,-9" );
+b.sort( numeric );
+check_equals( b.toString(), "8,5,3,1,0,-2,-7,-9" );
+b.sort( numericRev );
+check_equals( b.toString(), "8,5,3,1,0,-2,-7,-9" );
+
+r = c.sort();
+check_equals( r.toString(), "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" );
+check_equals( c.toString(), "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" );
+c.sort( Array.CASEINSENSITIVE );
+check_equals( c.toString(), "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" );
+c.sort( Array.NUMERIC );
+check_equals( c.toString(), "-3.7,-0.5,0,0.001,2,7.2,8.35,Infinity" );
+r = c.sort( Array.UNIQUESORT );
+check_equals( c.toString(), "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity" );
+r = c.sort( Array.DESCENDING | Array.NUMERIC );
+check_equals( c.toString(), "Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" );
+
+r = d.sort();
+check_equals( r.toString(), "" );
+check_equals( d.toString(), "" );
+d.sort( Array.UNIQUESORT );
+check_equals( d.toString(), "" );
+d.sort( Array.DESCENDING | Array.NUMERIC );
+check_equals( d.toString(), "" );
+
+r = e.sort();
+check_equals( r.toString(), "singleton" );
+check_equals( e.toString(), "singleton" );
+e.sort( Array.UNIQUESORT );
+check_equals( e.toString(), "singleton" );
+e.sort( Array.DESCENDING | Array.CASEINSENSITIVE );
+check_equals( e.toString(), "singleton" );
+
+r = f.sort();
+check_equals( r.toString(), "Name,Name,Year" );
+check_equals( f.toString(), "Name,Name,Year" );
+r = f.sort( Array.UNIQUESORT );
+check_equals( r.toString(), "0" );
+f.sort( Array.DESCENDING | Array.CASEINSENSITIVE );
+check_equals( f.toString(), "Year,Name,Name" );
+
+//trace(" -- Return Indexed Array Tests -- ");
+
+r = a.sort( Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "5,4,3,2,1,0" );
+check_equals( a.toString(), "vi,nano,emacs,ed,Jedit," );
+r = a.sort( Array.RETURNINDEXEDARRAY | Array.DESCENDING | Array.CASEINSENSITIVE );
+check_equals( r.toString(), "0,1,4,2,3,5" );
+check_equals( a.toString(), "vi,nano,emacs,ed,Jedit," );
+r = b.sort( Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "5,6,7,4,3,2,1,0" );
+r = b.sort( Array.RETURNINDEXEDARRAY | Array.NUMERIC );
+check_equals( r.toString(), "7,6,5,4,3,2,1,0" );
+r = b.sort( Array.RETURNINDEXEDARRAY | Array.DESCENDING | Array.CASEINSENSITIVE );
+check_equals( r.toString(), "0,1,2,3,4,7,6,5" );
+r = c.sort( Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "6,7,5,4,3,2,1,0" );
+r = c.sort( Array.RETURNINDEXEDARRAY | Array.NUMERIC );
+check_equals( r.toString(), "7,6,5,4,3,2,1,0" );
+r = c.sort( Array.RETURNINDEXEDARRAY | Array.DESCENDING | Array.CASEINSENSITIVE );
+check_equals( r.toString(), "0,1,2,3,4,5,7,6" );
+r = d.sort( Array.RETURNINDEXEDARRAY | Array.DESCENDING );
+check_equals( r.toString(), "" );
+check_equals( d.toString(), "" );
+r = d.sort( Array.NUMERIC | Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "" );
+check_equals( d.toString(), "" );
+r = e.sort( Array.CASEINSENSITIVE | Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "0" );
+check_equals( e.toString(), "singleton" );
+r = e.sort( Array.NUMERIC | Array.RETURNINDEXEDARRAY | Array.DESCENDING );
+check_equals( r.toString(), "0" );
+
+//trace(" -- Custom AS function tests -- ");
+r = a.sort( cmp_fn, Array.UNIQUESORT );
+check_equals( r.toString(), ",vi,ed,nano,emacs,Jedit" );
+check_equals( a.toString(), ",vi,ed,nano,emacs,Jedit" );
+r = a.sort( something_undefined );
+check_equals(typeof(r), 'undefined');
+r = a.sort( cmp_fn, Array.DESCENDING );
+check_equals( tolen(r), "[5, 5, 4, 2, 2, 0]" );
+check_equals( tolen(a), "[5, 5, 4, 2, 2, 0]" );
+a.sort( cmp_fn, Array.CASEINSENSITIVE | Array.NUMERIC );
+check_equals( tolen(a), "[0, 2, 2, 4, 5, 5]" );
+r = a.sort( cmp_fn, Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "0,1,2,3,4,5" );
+r = a.sort( cmp_fn, Array.RETURNINDEXEDARRAY | Array.DESCENDING );
+check_equals( r.toString(), "5,4,3,2,1,0" );
+r = d.sort( cmp_fn );
+check_equals( r.toString(), "" );
+check_equals( d.toString(), "" );
+r = d.sort( cmp_fn, Array.UNIQUESORT | Array.CASEINSENSITIVE );
+check_equals( r.toString(), "" );
+check_equals( d.toString(), "" );
+r = e.sort( cmp_fn, Array.UNIQUESORT | Array.CASEINSENSITIVE );
+check_equals( r.toString(), "singleton" );
+check_equals( e.toString(), "singleton" );
+
+//trace(" -- Custom AS function tests using an AS comparator that returns objects -- ");
+r = a.sort( cmp_fn_obj, Array.DESCENDING );
+check_equals( tolen(r), "[5, 5, 4, 2, 2, 0]" );
+check_equals( tolen(a), "[5, 5, 4, 2, 2, 0]" );
+a.sort( cmp_fn_obj, Array.CASEINSENSITIVE | Array.NUMERIC );
+check_equals( tolen(a), "[0, 2, 2, 4, 5, 5]" );
+r = a.sort( cmp_fn_obj, Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "0,1,2,3,4,5" );
+r = a.sort( cmp_fn_obj, Array.RETURNINDEXEDARRAY | Array.DESCENDING );
+check_equals( r.toString(), "5,4,3,2,1,0" );
+e.sort( cmp_fn_obj, Array.UNIQUESORT | Array.CASEINSENSITIVE );
+check_equals( e.toString(), "singleton" );
+
+a.push("ED");
+b.push(3.0);
+c.push(9/0);
+
+//trace(" -- UNIQUESORT tests -- ");
+
+r = a.sort( Array.UNIQUESORT );
+check_equals( r.toString(), ",ED,Jedit,ed,emacs,nano,vi" );
+check_equals( a.toString(), ",ED,Jedit,ed,emacs,nano,vi" );
+r = a.sort( Array.UNIQUESORT | Array.CASEINSENSITIVE );
+check_equals( r.toString(), "0" );
+check_equals( a.toString(), ",ED,Jedit,ed,emacs,nano,vi" );
+r = a.sort( Array.UNIQUESORT | Array.CASEINSENSITIVE | Array.DESCENDING );
+check_equals( r.toString(), "0" );
+check_equals( a.toString(), ",ED,Jedit,ed,emacs,nano,vi" );
+r = a.sort( Array.UNIQUESORT | Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "0,1,2,3,4,5,6" );
+r = a.sort( Array.UNIQUESORT | Array.CASEINSENSITIVE | Array.DESCENDING | Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "0" );
+
+r = b.sort( Array.UNIQUESORT );
+check_equals( r.toString(), "0" );
+check_equals( b.toString(), "8,5,3,1,0,-2,-7,-9,3" );
+r = b.sort( Array.UNIQUESORT | Array.NUMERIC );
+check_equals( r.toString(), "0" );
+r = b.sort( Array.UNIQUESORT | Array.NUMERIC | Array.DESCENDING );
+check_equals( r.toString(), "0" );
+r = b.sort( Array.UNIQUESORT | Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "0" );
+r = b.sort( Array.UNIQUESORT | Array.NUMERIC | Array.DESCENDING | Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "0" );
+
+r = c.sort( Array.UNIQUESORT );
+check_equals( r.toString(), "0" );
+check_equals( c.toString(), "Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7,Infinity" );
+r = c.sort( Array.UNIQUESORT | Array.NUMERIC );
+check_equals( r.toString(), "0" );
+r = c.sort( Array.UNIQUESORT | Array.NUMERIC | Array.DESCENDING );
+check_equals( r.toString(), "0" );
+r = c.sort( Array.UNIQUESORT | Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "0" );
+r = c.sort( Array.UNIQUESORT | Array.NUMERIC | Array.DESCENDING | Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "0" );
+r = a.sort( cmp_fn, Array.UNIQUESORT | Array.CASEINSENSITIVE );
+check_equals( tolen(r), "[0, 2, 2, 2, 4, 5, 5]" );
+check_equals( tolen(a), "[0, 2, 2, 2, 4, 5, 5]" );
+r = a.sort( cmp_fn, Array.UNIQUESORT | Array.CASEINSENSITIVE | Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "0,1,2,3,4,5,6" ); 
+r = a.sort( cmp_fn, Array.UNIQUESORT | Array.CASEINSENSITIVE | Array.RETURNINDEXEDARRAY | Array.DESCENDING );
+check_equals( r.toString(), "6,5,4,3,2,1,0" );
+
+//trace(" -- Array with null value  -- ");
+c.push(null);
+
+r = c.sort();
+check_equals( r.toString(), "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity,Infinity,null" ); 
+check_equals( c.toString(), "-0.5,-3.7,0,0.001,2,7.2,8.35,Infinity,Infinity,null" );
+c.sort( Array.NUMERIC );
+check_equals( c.toString(), "-3.7,-0.5,0,0.001,2,7.2,8.35,Infinity,Infinity,null" );
+c.sort( Array.DESCENDING | Array.NUMERIC );
+check_equals( c.toString(), "null,Infinity,Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" );
+r = c.sort( Array.RETURNINDEXEDARRAY | Array.NUMERIC );
+check_equals( r.toString(), "9,8,7,6,5,4,3,1,2,0" );
+r = c.sort( Array.RETURNINDEXEDARRAY | Array.DESCENDING | Array.CASEINSENSITIVE );
+check_equals( r.toString(), "0,1,2,3,4,5,6,7,9,8" );
+r = c.sort( Array.UNIQUESORT );
+check_equals( r.toString(), "0" );
+r = c.sort( Array.UNIQUESORT | Array.NUMERIC );
+check_equals( r.toString(), "0" );
+r = c.sort( Array.UNIQUESORT | Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "0" );
+r = c.sort( Array.UNIQUESORT | Array.NUMERIC | Array.DESCENDING | Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "0" );
+
+//trace(" -- Array with 2 null values  -- ");
+c = [7.2, 2.0, null, -0.5, 3/0, 0.0, null, 8.35, 0.001, -3.7];
+c.sort( Array.NUMERIC );
+check_equals( c.toString(), "-3.7,-0.5,0,0.001,2,7.2,8.35,Infinity,null,null" );
+c.sort( Array.DESCENDING | Array.NUMERIC );
+check_equals( c.toString(), "null,null,Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" );
+r = c.sort( Array.RETURNINDEXEDARRAY | Array.NUMERIC );
+check_equals( r.toString(), "9,8,7,6,5,4,3,2,0,1" );
+check_equals( c.toString(), "null,null,Infinity,8.35,7.2,2,0.001,0,-0.5,-3.7" );
+r = c.sort( Array.UNIQUESORT );
+check_equals( r.toString(), "0" );
+r = c.sort( Array.UNIQUESORT | Array.NUMERIC );
+check_equals( r.toString(), "0" );
+
+//trace(" -- Array with 2 undefined values  -- ");
+c = [7.2, 2.0, undefined, -0.5, 3/0, 0.0, undefined, 8.35, 0.001, -3.7];
+r = c.sort( Array.UNIQUESORT );
+check_equals( r.toString(), "0" );
+r = c.sort( Array.UNIQUESORT | Array.NUMERIC );
+check_equals( r.toString(), "0" );
+
+//trace(" -- Array with 2 NaN values  -- ");
+c = [7.2, 2.0, NaN, -0.5, 3/0, 0.0, NaN, 8.35, 0.001, -3.7];
+r = c.sort( Array.UNIQUESORT );
+check_equals( r.toString(), "0" );
+r = c.sort( Array.UNIQUESORT | Array.NUMERIC );
+check_equals( r.toString(), "0" );
+
+//-------------------------------
+// Test sortOn
+//-------------------------------
+
+a = [];
+a.push({Name: "Zuse Z3", Year: 1941, Electronic: false});
+a.push({Name: "Colossus", Year: 1943, Electronic: true});
+a.push({Name: "ENIAC", Year: 1944, Electronic: true});
+
+b = [];
+b.push({Name: id, Year: yr, Electronic: yr});
+b.push({Name: yr, Year: id, Electronic: yr});
+
+function tostr(x)
+{
+	var i;
+	str = "";
+	for(i = 0; i < x.length; i++)
+	{
+		y = x[i];
+		str += (y.Name + "," + y.Year + "," + y.Electronic );
+		if (i != x.length - 1) str += " | ";
+	}
+	return str;
+}
+
+//trace("sortOn a single property ");
+r = a.sortOn( "Name" );
+check_equals( tostr(r), "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+check_equals( tostr(a), "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+r = a.sortOn( "Year" );
+check_equals( tostr(r), "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" );
+check_equals( tostr(a), "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" );
+
+a.sortOn( "Electronic" );
+check_equals( tostr(a), "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" );
+
+a.sortOn("Year", Array.NUMERIC );
+check_equals( tostr(a), "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" );
+
+a.sortOn("Year", Array.NUMERIC | Array.DESCENDING );
+check_equals ( tostr(a), "ENIAC,1944,true | Colossus,1943,true | Zuse Z3,1941,false" );
+
+r = a.sortOn("Year", Array.UNIQUESORT | Array.NUMERIC );
+check_equals ( tostr(r), "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" );
+check_equals ( tostr(a), "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" );
+
+r = a.sortOn("Year", Array.RETURNINDEXEDARRAY | Array.NUMERIC );
+check_equals( r.toString(), "0,1,2" );
+check_equals ( tostr(a), "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" );
+
+r = a.sortOn("Name", Array.UNIQUESORT );
+check_equals( tostr(r), "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+check_equals( tostr(a), "Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+r = a.sortOn("Name", Array.UNIQUESORT | Array.DESCENDING );
+check_equals( tostr(r), "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true" );
+
+r = a.sortOn("Name", Array.UNIQUESORT | Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "2,1,0" );
+
+r = a.sortOn("Electronic", Array.UNIQUESORT | Array.RETURNINDEXEDARRAY );
+check_equals( r.toString(), "0" );
+check_equals( tostr(a), "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true");
+
+//trace("sortOn multiple properties");
+a.push({Name: "Atanasoff-Berry", Year: 1941, Electronic: true, Mass: 320});
+
+r = a.sortOn( ["Name", "Year"] );
+check_equals( tostr(r), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+a.sortOn( ["Electronic", "Year"] );
+check_equals( tostr(a), "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" );
+
+a.sortOn( ["Electronic", "Year"], [Array.DESCENDING, Array.NUMERIC] );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+r = a.sortOn( ["Name", "Year"], [Array.UNIQUESORT, Array.NUMERIC] );
+check_equals( tostr(r), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+r = a.sortOn( ["Electronic", "Name"], [Array.UNIQUESORT, Array.NUMERIC] );
+check_equals( tostr(r), "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" );
+
+
+//trace("sortOn missing properties" );
+r = a.sortOn(["Megaflops"] );
+check_equals( tostr(r), "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" );
+check_equals( tostr(a), "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" );
+
+a.sortOn(["Binary", "Turing complete"] );
+check_equals( tostr(a), "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" );
+
+a.sortOn(["Inventor", "Cost"], [Array.DESCENDING, 0] );
+check_equals( tostr(a), "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" );
+
+r = a.sortOn(["Name", "Year", "Cost"], [Array.DESCENDING, Array.NUMERIC, 0] );
+check_equals( tostr(a), "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true" );
+
+r = a.sortOn(["Name", "Cost", "Year"], [0, 0, Array.NUMERIC] );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+r = a.sortOn(["Electronic", "Year", "Cost"], [Array.UNIQUESORT, Array.NUMERIC, Array.NUMERIC] );
+check_equals( tostr(r), "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" );
+check_equals( tostr(a), "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" );
+
+r = a.sortOn(["Electronic", "Cost" ], [Array.UNIQUESORT, Array.NUMERIC] );
+check_equals( r.toString(), "0" );
+
+//trace("sortOn with mismatching array lengths");
+r = a.sortOn( ["Name", "Year"], [0] );
+check_equals( tostr(r), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+r = a.sortOn( ["Name", "Year"], [Array.DESCENDING] );
+check_equals( tostr(r), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+a.sortOn(["Name", "Electronic"], [Array.DESCENDING] );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+r = a.sortOn(["Name", "Year"], [Array.RETURNINDEXEDARRAY] );
+check_equals( tostr(r), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+//trace("sortOn, undocumented invocation");
+r = a.sortOn( ["Name", "Year"], Array.DESCENDING );
+check_equals( tostr(r), "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true" );
+check_equals( tostr(a), "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true" );
+
+a.sortOn( ["Year", "Name"], Array.NUMERIC );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" );
+
+a.sortOn( ["Electronic", "Year", "Name"], Array.NUMERIC | Array.DESCENDING );
+check_equals( tostr(a), "ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true | Zuse Z3,1941,false" );
+
+r = a.sortOn(["Name", "Electronic"], [Array.DESCENDING] );
+check_equals( tostr(r), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+r = a.sortOn(["Name", "Year"], [Array.RETURNINDEXEDARRAY]);
+check_equals( tostr(r), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+//trace("sortOn using an object implementing/over-riding the toString() method as the property argument");
+
+a.sortOn( id );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+a.sortOn( id, Array.CASEINSENSITIVE | Array.DESCENDING );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+a.sortOn( [id], 0 );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+a.sortOn( [yr, id], [Array.NUMERIC, Array.DESCENDING] );
+check_equals( tostr(a), "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" );
+
+//trace("sortOn with properties that are objects implementing the toString() method");
+
+r = b.sortOn( "Name" );
+check_equals( tostr(r), "Name,Year,Year | Year,Name,Year");
+check_equals( tostr(b), "Name,Year,Year | Year,Name,Year");
+b.sortOn( "Year" );
+check_equals( tostr(b), "Year,Name,Year | Name,Year,Year");
+b.sortOn( ["Year", "Name"], [Array.NUMERIC | Array.DESCENDING, 0] );
+check_equals( tostr(b), "Name,Year,Year | Year,Name,Year");
+
+//trace("sortOn invalid calls");
+r = a.sortOn();
+check( r == undefined );
+check_equals( tostr(a), "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" );
+
+r = a.sortOn(undefined);
+check_equals( typeof(r) , 'object' );
+check( r instanceof Array );
+check_equals( tostr(a), "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" );
+
+//trace("sortOn with flag as an object overriding the valueOf method");
+a.sortOn( ["Year", "Electronic", "Name"], numeric );
+check_equals( tostr(a), "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true" );
+
+#if OUTPUT_VERSION < 7
+//trace("sortOn property name case-mismatch");
+a.sortOn( "name" );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+a.sortOn( ["year", "name"], Array.NUMERIC );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" );
+#endif // OUTPUT_VERSION < 7
+
+#if OUTPUT_VERSION > 6
+//trace("sortOn with some properties undefined");
+a.push({Name: "Harvard Mark I", Year: 1944, Mass: 4500});
+
+a.sortOn(["Electronic", "Year"], Array.DESCENDING | Array.IGNORECASE );
+check_equals( tostr(a), "Harvard Mark I,1944,undefined | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true | Zuse Z3,1941,false" );
+
+a.sortOn( ["Electronic", "Name"], [Array.NUMERIC, Array.DESCENDING] );
+check_equals( tostr(a), "Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true | Atanasoff-Berry,1941,true | Harvard Mark I,1944,undefined" );
+
+r = a.sortOn( ["Electronic", "Name"], [Array.UNIQUESORT, Array.NUMERIC] );
+check_equals( tostr(r), "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Harvard Mark I,1944,undefined" );
+check_equals( tostr(a), "Zuse Z3,1941,false | Atanasoff-Berry,1941,true | Colossus,1943,true | ENIAC,1944,true | Harvard Mark I,1944,undefined" );
+
+a.sortOn( ["Mass", "Name"], [0, 0] );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Harvard Mark I,1944,undefined | Colossus,1943,true | ENIAC,1944,true | Zuse Z3,1941,false" );
+
+a.sortOn( ["Mass", "Year", "Name"], [Array.NUMERIC | Array.DESCENDING, Array.NUMERIC | Array.DESCENDING | 0] );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Harvard Mark I,1944,undefined | Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true" );
+
+a.sortOn( ["Mass", "Name"], [Array.UNIQUESORT, Array.DESCENDING] );
+check_equals( tostr(a), "Atanasoff-Berry,1941,true | Harvard Mark I,1944,undefined | Zuse Z3,1941,false | ENIAC,1944,true | Colossus,1943,true" );
+
+a.sortOn( ["Electronic", "Mass", "Name"], [0, Array.NUMERIC | Array.DESCENDING, 0] );
+check_equals( tostr(a), "Zuse Z3,1941,false | Colossus,1943,true | ENIAC,1944,true | Atanasoff-Berry,1941,true | Harvard Mark I,1944,undefined" );
+
+r = a.sortOn( ["Electronic", "Mass", "Year", "Name"], [Array.RETURNINDEXEDARRAY, Array.NUMERIC, Array.NUMERIC, Array.DESCENDING] );
+check_equals( r.toString(), "0,3,1,2,4");
+#endif // OUTPUT_VERSION > 6
+
+
+//-------------------------------------------------------
+// Test array enumeration
+//------------------------------------------------------
+
+b = ["a","b","c"];
+out = {len:0}; for (var i in b) { out[i] = 1; out['len']++; }
+check_equals(out['len'], 3);
+check_equals(out[0], 1);
+check_equals(out[1], 1);
+check_equals(out[2], 1);
+
+b = [];
+out = {len:0}; for (var i in b) { out[i] = 1; out['len']++; }
+check_equals(out['len'], 0);
+
+// Changing length doesn't trigger enumeration of undefined values
+b.length = 100;
+out = {len:0}; for (var i in b) { out[i] = 1; out['len']++; }
+check_equals(out['len'], 0);
+
+b[1] = undefined;
+out = {len:0}; for (var i in b) { out[i] = 1; out['len']++; }
+check_equals(out['len'], 1);
+check_equals(out[1], 1);
+
+b[0] = undefined;
+out = {len:0}; for (var i in b) { out[i] = 1; out['len']++; }
+check_equals(out['len'], 2);
+check_equals(out[1], 1);
+check_equals(out[0], 1);
+
+//-------------------------------
+// Test length property
+//-------------------------------
+
+a = new Array();
+check_equals(a.length, 0);
+a[-1] = 'minusone';
+check_equals(a.length, 0);
+check_equals(a[-1], 'minusone');
+a["Infinite"] = 'inf';
+check_equals(a.length, 0);
+check_equals(a["Infinite"], 'inf');
+
+//----------------------------------------------
+// Force an indexed property to a getter/setter
+//---------------------------------------------
+
+#if OUTPUT_VERSION > 5 // addProperty was added in SWF6
+
+function get() { getCalls++; }
+function set() { setCalls++; }
+a = new Array();
+a[2] = 2;
+ret = a.addProperty('1', get, set);
+check_equals(ret, true);
+getCalls=0; setCalls=0;
+junk = a[1];
+check_equals(getCalls, 1);
+check_equals(setCalls, 0);
+getCalls=0; setCalls=0;
+a[1] = 1;
+check_equals(getCalls, 0);
+xcheck_equals(setCalls, 1);
+
+ret = a.addProperty('2', get, set);
+check_equals(ret, true);
+getCalls=0; setCalls=0;
+junk = a[2];
+xcheck_equals(getCalls, 1);
+check_equals(setCalls, 0);
+getCalls=0; setCalls=0;
+a[2] = 2;
+check_equals(getCalls, 0);
+xcheck_equals(setCalls, 1);
+
+check_equals(a.length, 3);
+ret = a.addProperty('3', get, set);
+xcheck_equals(a.length, 4);
+
+a.length = 3;
+getCalls=0; setCalls=0;
+a.push(2);
+check_equals(getCalls, 0);
+check_equals(setCalls, 0);
+
+#endif // OUTPUT_VERSION > 5
+
+//--------------------------------------------------------
+// pop an array with delete-protected elements
+//--------------------------------------------------------
+
+a = new Array();
+a[0] = 'zero';
+a[1] = 'one';
+ASSetPropFlags(a, "0", 7, 0); // protect 0 from deletion
+check_equals(a.length, 2);
+f = a.shift();
+check_equals(a.length, 1); 
+check_equals(f, 'zero');
+xcheck_equals(a[0], 'zero'); // could not delete for override
+check_equals(typeof(a[1]), 'undefined');
+#if OUTPUT_VERSION > 5
+ check(!a.hasOwnProperty(1)); 
+#endif
+
+a = new Array();
+a[0] = 'zero';
+a[1] = 'one';
+ASSetPropFlags(a, "1", 7, 0); // protect 1 from deletion
+check_equals(a.length, 2);
+f = a.shift();
+check_equals(a.length, 1);
+check_equals(f, 'zero');
+check_equals(a[0], 'one'); // could replace
+xcheck_equals(a[1], 'one'); // couldn't delete
+#if OUTPUT_VERSION > 5
+ check(a.hasOwnProperty(0)); 
+ xcheck(a.hasOwnProperty(1)); 
+#endif
+
+//--------------------------------------------------------
+// pop an array with read-only elements
+//--------------------------------------------------------
+
+a = new Array();
+a[0] = 'zero';
+a[1] = 'one';
+ASSetPropFlags(a, "0", 4, 0); // protect 0 from override
+check_equals(a.length, 2);
+a[0] = 'overridden';
+xcheck_equals(a[0], 'zero'); // was protected..
+f = a.shift();
+check_equals(a.length, 1); 
+xcheck_equals(f, 'zero');
+check_equals(a[0], 'one'); // 0 was replaced anyway, didn't care about protection
+check_equals(typeof(a[1]), 'undefined');
+a[0] = 'overridden';
+check_equals(a[0], 'overridden'); // flag was lost
+#if OUTPUT_VERSION > 5
+ check(!a.hasOwnProperty(1)); 
+#endif
+
+a = new Array();
+a[0] = 'zero';
+a[1] = 'one';
+a[2] = 'two';
+ASSetPropFlags(a, "1", 4, 0); // protect 1 from override
+a[1] = 'overridden';
+xcheck_equals(a[1], 'one'); // was protected
+check_equals(a.length, 3);
+f = a.shift();
+check_equals(a.length, 2);
+check_equals(f, 'zero');
+xcheck_equals(a[0], 'one'); // 0 was replaced anyway, didn't care about protection
+check_equals(a[1], 'two');
+check_equals(typeof(a[2]), 'undefined');
+a[1] = 'overridden';
+check_equals(a[1], 'overridden'); // flag was lost
+#if OUTPUT_VERSION > 5
+ check(a.hasOwnProperty(0)); 
+ check(a.hasOwnProperty(1)); 
+ check(!a.hasOwnProperty(2)); 
+#endif
+
+
+// TODO: test ASnative-returned functions:
+//
+// ASnative(252, 1) - [Array.prototype] push
+// ASnative(252, 2) - [Array.prototype] pop
+// ASnative(252, 3) - [Array.prototype] concat
+// ASnative(252, 4) - [Array.prototype] shift
+// ASnative(252, 5) - [Array.prototype] unshift
+// ASnative(252, 6) - [Array.prototype] slice
+// ASnative(252, 7) - [Array.prototype] join
+// ASnative(252, 8) - [Array.prototype] splice
+// ASnative(252, 9) - [Array.prototype] toString
+// ASnative(252, 10) - [Array.prototype] sort
+// ASnative(252, 11) - [Array.prototype] reverse
+// ASnative(252, 12) - [Array.prototype] sortOn 
+//
+
+
+#if OUTPUT_VERSION < 6
+ check_totals(484);
+#else
+# if OUTPUT_VERSION < 7
+  check_totals(545);
+# else
+  check_totals(555);
+# endif
+#endif
diff --git a/test/gnash/actionscript.all/pending/case-5.swf b/test/gnash/actionscript.all/pending/case-5.swf
new file mode 100644
index 0000000..79187ea
Binary files /dev/null and b/test/gnash/actionscript.all/pending/case-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/case-5.swf.trace b/test/gnash/actionscript.all/pending/case-5.swf.trace
new file mode 100644
index 0000000..35f612a
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/case-5.swf.trace
@@ -0,0 +1,24 @@
+PASSED: ABCD == 100 [case.as:34]
+PASSED: typeof(OBJ) == 'object' [case.as:35]
+PASSED: OBJ.xyz == 100 [case.as:36]
+PASSED: _root == _ROOT [case.as:44]
+PASSED: _level0 == _LEVEL0 [case.as:45]
+PASSED: xYz == 100 [case.as:180]
+PASSED: xyz == 100 [case.as:182]
+PASSED: this.testVar == 100 [case.as:185]
+PASSED: this.testvar == 100 [case.as:187]
+PASSED: propRecorder.length == 2 [case.as:210]
+XPASSED: propRecorder[0] == 'A' [case.as:212]
+PASSED: propRecorder[1] == 'b' [case.as:216]
+PASSED: propRecorder.length == 2 [case.as:226]
+XPASSED: propRecorder[0] == 'A' [case.as:227]
+PASSED: propRecorder[1] == 'b' [case.as:228]
+PASSED: propRecorder.length == 2 [case.as:244]
+XPASSED: propRecorder[0] == 'A' [case.as:245]
+PASSED: propRecorder[1] == 'b' [case.as:246]
+PASSED: propRecorder.length == 1 [case.as:263]
+PASSED: propRecorder[0] == 'b' [case.as:264]
+PASSED: propRecorder.length == 2 [case.as:290]
+XPASSED: propRecorder[0] == 'B' [case.as:295]
+XPASSED: propRecorder[1] == 'a' [case.as:296]
+check_totals: 23
diff --git a/test/gnash/actionscript.all/pending/case-6.swf b/test/gnash/actionscript.all/pending/case-6.swf
new file mode 100644
index 0000000..77a3b55
Binary files /dev/null and b/test/gnash/actionscript.all/pending/case-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/case-6.swf.trace b/test/gnash/actionscript.all/pending/case-6.swf.trace
new file mode 100644
index 0000000..5a87a07
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/case-6.swf.trace
@@ -0,0 +1,58 @@
+PASSED: ABCD == 100 [case.as:34]
+PASSED: typeof(OBJ) == 'object' [case.as:35]
+PASSED: OBJ.xyz == 100 [case.as:36]
+PASSED: _root == _ROOT [case.as:44]
+PASSED: _level0 == _LEVEL0 [case.as:45]
+PASSED: typeof(mc0) == 'movieclip' [case.as:58]
+PASSED: typeof(mc0.mc1) == 'movieclip' [case.as:60]
+PASSED: mC0._X == 100 [case.as:70]
+PASSED: mC0._x == 100 [case.as:71]
+PASSED: mC0._name == "mC0" [case.as:76]
+PASSED: mC0._target == "/mC0" [case.as:77]
+PASSED: mC0.mC1._name == "mC1" [case.as:78]
+PASSED: mC0.mC1._target == "/mC0/mC1" [case.as:79]
+NOTE: Constructed _level0.clip in depth 6 and assigned to mcRef[0]
+NOTE: Constructed _level0.CLIP in depth 7 and assigned to mcRef[1]
+PASSED: mcRef[0]!= mcRef[1] [case.as:126]
+PASSED: mcRef[0].getDepth() == 6 [case.as:127]
+PASSED: mcRef[0]._name == "clip" [case.as:128]
+PASSED: mcRef[0]._target == "/clip" [case.as:129]
+PASSED: mcRef[1].getDepth() == 7 [case.as:142]
+PASSED: mcRef[1]._name == "CLIP" [case.as:143]
+PASSED: mcRef[1]._target == "/CLIP" [case.as:144]
+PASSED: clip == CLIP [case.as:151]
+NOTE: Constructed _level0.CLIP2 in depth 8 and assigned to mcRef[2]
+NOTE: Constructed _level0.clip2 in depth 9 and assigned to mcRef[3]
+PASSED: clip.getDepth() == 6 [case.as:162]
+PASSED: CLIP.getDepth() == 6 [case.as:164]
+PASSED: CLIP2.getDepth() == 8 [case.as:165]
+PASSED: clip2.getDepth() == 8 [case.as:166]
+PASSED: xYz == 100 [case.as:180]
+PASSED: xyz == 100 [case.as:182]
+PASSED: this.testVar == 100 [case.as:185]
+PASSED: this.testvar == 100 [case.as:187]
+NOTE: Constructed _level0.mc_XYZ in depth 3 and assigned to mcRef[4]
+PASSED: typeof(_root['mc_XYZ']) == 'movieclip' [case.as:196]
+PASSED: typeof(_root['mcRef']) == 'movieclip' [case.as:197]
+PASSED: typeof(mcRef['gotoAndStop']) == 'function' [case.as:198]
+PASSED: propRecorder.length == 2 [case.as:210]
+XPASSED: propRecorder[0] == 'A' [case.as:212]
+PASSED: propRecorder[1] == 'b' [case.as:216]
+PASSED: propRecorder.length == 2 [case.as:226]
+XPASSED: propRecorder[0] == 'A' [case.as:227]
+PASSED: propRecorder[1] == 'b' [case.as:228]
+PASSED: propRecorder.length == 2 [case.as:244]
+XPASSED: propRecorder[0] == 'A' [case.as:245]
+PASSED: propRecorder[1] == 'b' [case.as:246]
+PASSED: propRecorder.length == 1 [case.as:263]
+PASSED: propRecorder[0] == 'b' [case.as:264]
+PASSED: obj.hasOwnProperty('a') [case.as:277]
+PASSED: obj.hasOwnProperty('A') [case.as:279]
+PASSED: propRecorder.length == 2 [case.as:290]
+XPASSED: propRecorder[0] == 'B' [case.as:295]
+XPASSED: propRecorder[1] == 'a' [case.as:296]
+PASSED: _global.hasOwnProperty("Date") [case.as:310]
+PASSED: _global.hasOwnProperty("date") [case.as:312]
+PASSED: _global.hasOwnProperty("Color") [case.as:317]
+PASSED: _global.hasOwnProperty("color") [case.as:319]
+check_totals: 52
diff --git a/test/gnash/actionscript.all/pending/case-7.swf b/test/gnash/actionscript.all/pending/case-7.swf
new file mode 100644
index 0000000..56269ee
Binary files /dev/null and b/test/gnash/actionscript.all/pending/case-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/case-7.swf.trace b/test/gnash/actionscript.all/pending/case-7.swf.trace
new file mode 100644
index 0000000..090895b
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/case-7.swf.trace
@@ -0,0 +1,52 @@
+PASSED: ABCD == undefined [case.as:39]
+PASSED: OBJ == undefined [case.as:40]
+PASSED: _root != _ROOT [case.as:47]
+PASSED: _level0 != _LEVEL0 [case.as:48]
+NOTE: Constructed _level0.clip in depth 6 and assigned to mcRef[0]
+NOTE: Constructed _level0.CLIP in depth 7 and assigned to mcRef[1]
+PASSED: mcRef[0]!= mcRef[1] [case.as:126]
+PASSED: mcRef[0].getDepth() == 6 [case.as:127]
+PASSED: mcRef[0]._name == "clip" [case.as:128]
+PASSED: mcRef[0]._target == "/clip" [case.as:129]
+PASSED: mcRef[1].getDepth() == 7 [case.as:132]
+PASSED: mcRef[1]._name == "CLIP" [case.as:133]
+PASSED: mcRef[1]._target == "/CLIP" [case.as:134]
+PASSED: clip != CLIP [case.as:154]
+PASSED: clip.getDepth() == 6 [case.as:155]
+PASSED: CLIP.getDepth() == 7 [case.as:156]
+NOTE: Constructed _level0.CLIP2 in depth 8 and assigned to mcRef[2]
+NOTE: Constructed _level0.clip2 in depth 9 and assigned to mcRef[3]
+PASSED: clip.getDepth() == 6 [case.as:162]
+PASSED: CLIP.getDepth() == 7 [case.as:168]
+PASSED: clip2.getDepth() == 9 [case.as:169]
+PASSED: CLIP2.getDepth() == 8 [case.as:170]
+PASSED: xYz == 100 [case.as:180]
+PASSED: this.testVar == 100 [case.as:185]
+NOTE: Constructed _level0.mc_XYZ in depth 3 and assigned to mcRef[4]
+PASSED: typeof(_root['mc_XYZ']) == 'movieclip' [case.as:196]
+PASSED: typeof(_root['mcRef']) == 'movieclip' [case.as:197]
+PASSED: typeof(mcRef['gotoAndStop']) == 'function' [case.as:198]
+PASSED: propRecorder.length == 2 [case.as:210]
+PASSED: propRecorder[0] == 'A' [case.as:214]
+PASSED: propRecorder[1] == 'b' [case.as:216]
+PASSED: propRecorder.length == 3 [case.as:230]
+PASSED: propRecorder[0] == 'A' [case.as:231]
+PASSED: propRecorder[1] == 'a' [case.as:232]
+PASSED: propRecorder[2] == 'b' [case.as:233]
+PASSED: propRecorder.length == 4 [case.as:248]
+PASSED: propRecorder[0] == 'A' [case.as:249]
+PASSED: propRecorder[1] == 'B' [case.as:250]
+PASSED: propRecorder[2] == 'a' [case.as:251]
+PASSED: propRecorder[3] == 'b' [case.as:252]
+PASSED: propRecorder.length == 3 [case.as:266]
+PASSED: propRecorder[0] == 'A' [case.as:267]
+PASSED: propRecorder[1] == 'B' [case.as:268]
+PASSED: propRecorder[2] == 'b' [case.as:269]
+PASSED: obj.hasOwnProperty('a') [case.as:277]
+PASSED: !obj.hasOwnProperty('A') [case.as:281]
+PASSED: propRecorder.length == 2 [case.as:290]
+PASSED: propRecorder[0] == 'B' [case.as:300]
+PASSED: propRecorder[1] == 'a' [case.as:301]
+PASSED: _global.hasOwnProperty("Date") [case.as:310]
+PASSED: _global.hasOwnProperty("Color") [case.as:317]
+check_totals: 46
diff --git a/test/gnash/actionscript.all/pending/case-8.swf b/test/gnash/actionscript.all/pending/case-8.swf
new file mode 100644
index 0000000..77a2259
Binary files /dev/null and b/test/gnash/actionscript.all/pending/case-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/case-8.swf.trace b/test/gnash/actionscript.all/pending/case-8.swf.trace
new file mode 100644
index 0000000..090895b
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/case-8.swf.trace
@@ -0,0 +1,52 @@
+PASSED: ABCD == undefined [case.as:39]
+PASSED: OBJ == undefined [case.as:40]
+PASSED: _root != _ROOT [case.as:47]
+PASSED: _level0 != _LEVEL0 [case.as:48]
+NOTE: Constructed _level0.clip in depth 6 and assigned to mcRef[0]
+NOTE: Constructed _level0.CLIP in depth 7 and assigned to mcRef[1]
+PASSED: mcRef[0]!= mcRef[1] [case.as:126]
+PASSED: mcRef[0].getDepth() == 6 [case.as:127]
+PASSED: mcRef[0]._name == "clip" [case.as:128]
+PASSED: mcRef[0]._target == "/clip" [case.as:129]
+PASSED: mcRef[1].getDepth() == 7 [case.as:132]
+PASSED: mcRef[1]._name == "CLIP" [case.as:133]
+PASSED: mcRef[1]._target == "/CLIP" [case.as:134]
+PASSED: clip != CLIP [case.as:154]
+PASSED: clip.getDepth() == 6 [case.as:155]
+PASSED: CLIP.getDepth() == 7 [case.as:156]
+NOTE: Constructed _level0.CLIP2 in depth 8 and assigned to mcRef[2]
+NOTE: Constructed _level0.clip2 in depth 9 and assigned to mcRef[3]
+PASSED: clip.getDepth() == 6 [case.as:162]
+PASSED: CLIP.getDepth() == 7 [case.as:168]
+PASSED: clip2.getDepth() == 9 [case.as:169]
+PASSED: CLIP2.getDepth() == 8 [case.as:170]
+PASSED: xYz == 100 [case.as:180]
+PASSED: this.testVar == 100 [case.as:185]
+NOTE: Constructed _level0.mc_XYZ in depth 3 and assigned to mcRef[4]
+PASSED: typeof(_root['mc_XYZ']) == 'movieclip' [case.as:196]
+PASSED: typeof(_root['mcRef']) == 'movieclip' [case.as:197]
+PASSED: typeof(mcRef['gotoAndStop']) == 'function' [case.as:198]
+PASSED: propRecorder.length == 2 [case.as:210]
+PASSED: propRecorder[0] == 'A' [case.as:214]
+PASSED: propRecorder[1] == 'b' [case.as:216]
+PASSED: propRecorder.length == 3 [case.as:230]
+PASSED: propRecorder[0] == 'A' [case.as:231]
+PASSED: propRecorder[1] == 'a' [case.as:232]
+PASSED: propRecorder[2] == 'b' [case.as:233]
+PASSED: propRecorder.length == 4 [case.as:248]
+PASSED: propRecorder[0] == 'A' [case.as:249]
+PASSED: propRecorder[1] == 'B' [case.as:250]
+PASSED: propRecorder[2] == 'a' [case.as:251]
+PASSED: propRecorder[3] == 'b' [case.as:252]
+PASSED: propRecorder.length == 3 [case.as:266]
+PASSED: propRecorder[0] == 'A' [case.as:267]
+PASSED: propRecorder[1] == 'B' [case.as:268]
+PASSED: propRecorder[2] == 'b' [case.as:269]
+PASSED: obj.hasOwnProperty('a') [case.as:277]
+PASSED: !obj.hasOwnProperty('A') [case.as:281]
+PASSED: propRecorder.length == 2 [case.as:290]
+PASSED: propRecorder[0] == 'B' [case.as:300]
+PASSED: propRecorder[1] == 'a' [case.as:301]
+PASSED: _global.hasOwnProperty("Date") [case.as:310]
+PASSED: _global.hasOwnProperty("Color") [case.as:317]
+check_totals: 46
diff --git a/test/gnash/actionscript.all/pending/case.as b/test/gnash/actionscript.all/pending/case.as
new file mode 100644
index 0000000..a13f712
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/case.as
@@ -0,0 +1,333 @@
+// 
+//   Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modchecky
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; check not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fcheckth Floor, Boston, MA  02110-1301  USA
+//
+
+/*
+ *  Zou Lunkai, zoulunkai at gmail.com
+ *
+ *  Test case sensitivity 
+ */
+
+
+rcsid="$Id: case.as,v 1.21 2008/06/07 12:11:34 bwy Exp $";
+#include "check.as"
+
+#if OUTPUT_VERSION <= 6 // {
+aBcD = 100;
+oBj = new Object();
+obj.xYZ = 100;
+
+check_equals(ABCD, 100);
+check_equals(typeof(OBJ), 'object');
+check_equals(OBJ.xyz, 100);
+#else // OUTPUT_VERSION > 6 }{
+//swf7 and above are case sensitive
+check_equals(ABCD, undefined);
+check_equals(OBJ, undefined);
+#endif  // OUTPUT_VERSION > 6 }
+
+#if OUTPUT_VERSION <= 6
+check_equals(_root, _ROOT);
+check_equals(_level0, _LEVEL0);
+#else // OUTPUT_VERSION >= 7
+check(_root != _ROOT);
+check(_level0 != _LEVEL0);
+#endif // OUTPUT_VERSION >= 7
+
+#if OUTPUT_VERSION == 6 // { 
+
+
+// 
+// create _root.mc0 and _root.mc0.mc1
+// 
+_ROOT.createEmptyMovieClip("mC0", 3);
+check_equals(typeof(mc0), 'movieclip');
+mC0.createEmptyMovieClip("mC1", 3);
+check_equals(typeof(mc0.mc1), 'movieclip');
+
+#ifdef MING_SUPPORTS_ASM // {
+asm{
+     push "/_ROOT/MC0/"
+     push 0.0
+     push 100
+     setproperty
+};
+// check setproperty
+check_equals(mC0._X, 100);
+check_equals(mC0._x, 100);
+
+//
+// check _name and _target, they still keep the case
+// 
+check_equals(mC0._name, "mC0");
+check_equals(mC0._target, "/mC0");
+check_equals(mC0.mC1._name, "mC1");
+check_equals(mC0.mC1._target, "/mC0/mC1");
+#endif  // MING_SUPPORTS_ASM }
+#endif  // OUTPUT_VERSION == 6  }
+
+#if OUTPUT_VERSION >= 6 // {
+
+//
+// create two movieclips named by same letters but different cases
+//
+mcRef = new Array(10);
+i = 0;
+MovieClip.prototype.onConstruct = function ()
+{
+  mcRef[i++] = this;
+  note("Constructed "+this+" in depth "+this.getDepth()+" and assigned to mcRef["+(i-1)+"]");
+};
+
+_root.createEmptyMovieClip("clip", 6); //this will invoke the onConstruct listener
+_root.createEmptyMovieClip("CLIP", 7); //this will invoke the onConstruct listener
+
+// support visual checks
+with(mcRef[0])
+{
+  beginFill(0xff0000, 100);
+  moveTo(100, 100);
+  lineTo(200,100);
+  lineTo(200,200);
+  lineTo(100,200);
+  lineTo(100,100);
+  endFill();
+  _alpha = 20;
+}
+
+// support visual checks
+with(mcRef[1])
+{
+  beginFill(0x00ff00, 100);
+  moveTo(100, 100);
+  lineTo(200,100);
+  lineTo(200,200);
+  lineTo(100,200);
+  lineTo(100,100);
+  endFill();
+  _alpha = 20;
+}
+mcRef[1]._x += 100;
+
+check(mcRef[0]!= mcRef[1]);
+check_equals(mcRef[0].getDepth(), 6);
+check_equals(mcRef[0]._name, "clip");
+check_equals(mcRef[0]._target, "/clip");
+
+#if OUTPUT_VERSION > 6
+check_equals(mcRef[1].getDepth(), 7); 
+check_equals(mcRef[1]._name, "CLIP"); 
+check_equals(mcRef[1]._target, "/CLIP"); 
+#else // OUTPUT_VERSION <= 6
+// Gnash used to fail these due to "soft references"
+// Basically, a MOVIECLIP as_value stores the clip
+// target, but in SWF<7 the target is insensitive
+// so /clip and /CLIP both resolve to the *same*
+// character.
+//
+check_equals(mcRef[1].getDepth(), 7);
+check_equals(mcRef[1]._name, "CLIP"); 
+check_equals(mcRef[1]._target, "/CLIP"); 
+#endif // OUTPUT_VERSION <= 6
+
+
+#if OUTPUT_VERSION <= 6
+//case insensitive, so they reference the same movieclip.
+//Or both are undefined with OUTPUT_VERSION <= 5
+check(clip == CLIP); 
+#else // OUTPUT_VERSION >= 7
+//case sensitive, so they are different
+check(clip != CLIP);
+check_equals(clip.getDepth(), 6);
+check_equals(CLIP.getDepth(), 7);
+#endif  // OUTPUT_VERSION >= 7
+
+_root.createEmptyMovieClip("CLIP2", 8); //this will invoke the onConstruct listener
+_root.createEmptyMovieClip("clip2", 9); //this will invoke the onConstruct listener
+
+check_equals(clip.getDepth(), 6);
+#if OUTPUT_VERSION < 7
+check_equals(CLIP.getDepth(), 6);
+check_equals(CLIP2.getDepth(), 8);
+check_equals(clip2.getDepth(), 8);
+#else // OUTPUT_VERSION >= 7
+check_equals(CLIP.getDepth(), 7);
+check_equals(clip2.getDepth(), 9);
+check_equals(CLIP2.getDepth(), 8);
+#endif
+
+#endif // OUTPUT_VERSION >= 6 }
+
+//
+// Test function args
+//
+func = function (xYz)
+{
+  check_equals(xYz, 100);
+#if OUTPUT_VERSION < 7
+  check_equals(xyz, 100);
+#endif 
+  this.testVar = xYz;
+  check_equals(this.testVar, 100);
+#if OUTPUT_VERSION < 7
+  check_equals(this.testvar, 100);
+#endif 
+};
+// call the function above,
+// trigger tests in it.
+func(100);
+
+#if OUTPUT_VERSION > 5
+  mcRef = _root.createEmptyMovieClip("mc_XYZ", 3);
+  check_equals(typeof(_root['mc_XYZ']), 'movieclip');
+  check_equals(typeof(_root['mcRef']), 'movieclip');
+  check_equals(typeof(mcRef['gotoAndStop']), 'function');
+#endif 
+
+
+delete obj;
+propRecorder = new Array();
+obj = { A: 1, b: 2 };
+for(var prop in obj)
+{
+   propRecorder.push(prop);
+}
+propRecorder.sort(); // case sensitive sort
+check_equals(propRecorder.length, 2);
+#if OUTPUT_VERSION < 7
+xcheck_equals(propRecorder[0], 'A')
+#else
+check_equals(propRecorder[0], 'A')
+#endif
+check_equals(propRecorder[1], 'b')
+
+propRecorder = new Array();
+obj.a = 3;
+for(var prop in obj)
+{
+   propRecorder.push(prop);
+}
+propRecorder.sort(); //case sensitive sort
+#if OUTPUT_VERSION < 7
+    check_equals(propRecorder.length, 2);
+    xcheck_equals(propRecorder[0], 'A')
+    check_equals(propRecorder[1], 'b')
+#else
+    check_equals(propRecorder.length, 3);
+    check_equals(propRecorder[0], 'A')
+    check_equals(propRecorder[1], 'a')
+    check_equals(propRecorder[2], 'b')
+#endif
+
+propRecorder = new Array();
+obj.B = 4;
+for(var prop in obj)
+{
+   propRecorder.push(prop);
+}
+propRecorder.sort(); //case sensitive sort
+#if OUTPUT_VERSION < 7
+    check_equals(propRecorder.length, 2);
+    xcheck_equals(propRecorder[0], 'A')
+    check_equals(propRecorder[1], 'b')
+#else
+    check_equals(propRecorder.length, 4);
+    check_equals(propRecorder[0], 'A') 
+    check_equals(propRecorder[1], 'B') 
+    check_equals(propRecorder[2], 'a')
+    check_equals(propRecorder[3], 'b')
+#endif
+
+propRecorder = new Array();
+delete obj.a;
+for(var prop in obj)
+{
+   propRecorder.push(prop);
+}
+propRecorder.sort(); //case sensitive sort
+#if OUTPUT_VERSION < 7
+    check_equals(propRecorder.length, 1);
+    check_equals(propRecorder[0], 'b')
+#else
+    check_equals(propRecorder.length, 3);
+    check_equals(propRecorder[0], 'A')
+    check_equals(propRecorder[1], 'B')
+    check_equals(propRecorder[2], 'b')
+#endif 
+
+// Now create a new object, with lowercase A and uppercase B
+// Gnash will fail as long as it uses a single string_table
+// for the whole objects set
+obj = { a: 1, B: 2 };
+#if OUTPUT_VERSION > 5
+ check(obj.hasOwnProperty('a'));
+ #if OUTPUT_VERSION == 6
+  check(obj.hasOwnProperty('A')); 
+ #else
+  check(!obj.hasOwnProperty('A')); 
+ #endif
+#endif
+propRecorder = new Array();
+for(var prop in obj)
+{
+   propRecorder.push(prop);
+}
+propRecorder.sort();
+check_equals(propRecorder.length, 2);
+#if OUTPUT_VERSION < 7
+ // gnash fails here because 'B' will point to a previously used 'b'
+ // and 'a' will point to a previously used 'A'
+ // in the global string_table
+ xcheck_equals(propRecorder[0], 'B');
+ xcheck_equals(propRecorder[1], 'a');
+#else
+ // The problem above is a non-issue in SWF7 or higher, as 'b' and
+ // 'B' will be separate entries in the string_table
+ check_equals(propRecorder[0], 'B');
+ check_equals(propRecorder[1], 'a');
+#endif
+
+
+#if OUTPUT_VERSION > 5
+// Check that properties are not overridden by
+// variable names.
+_global.hasOwnProperty = ASnative(101, 5);
+
+check(_global.hasOwnProperty("Date"));
+# if OUTPUT_VERSION == 6
+check(_global.hasOwnProperty("date"));
+# endif
+Color = 5;
+color = 8;
+
+check(_global.hasOwnProperty("Color"));
+# if OUTPUT_VERSION == 6
+check(_global.hasOwnProperty("color"));
+# endif
+
+#endif
+
+
+#if OUTPUT_VERSION <= 5
+ check_totals(23);
+#endif
+#if OUTPUT_VERSION == 6
+ check_totals(52);
+#endif
+#if OUTPUT_VERSION >= 7
+ check_totals(46);
+#endif
diff --git a/test/gnash/actionscript.all/pending/getvariable-5.swf b/test/gnash/actionscript.all/pending/getvariable-5.swf
new file mode 100644
index 0000000..d886ed7
Binary files /dev/null and b/test/gnash/actionscript.all/pending/getvariable-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/getvariable-5.swf.trace b/test/gnash/actionscript.all/pending/getvariable-5.swf.trace
new file mode 100644
index 0000000..59e0648
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/getvariable-5.swf.trace
@@ -0,0 +1,53 @@
+PASSED: checkpoint == 5 [getvariable.as:49]
+PASSED: checkpoint == 5.1 [getvariable.as:62]
+PASSED: checkpoint == 5.2 [getvariable.as:75]
+PASSED: checkpoint == 5.3 [getvariable.as:88]
+PASSED: checkpoint == 5.4 [getvariable.as:102]
+PASSED: checkpoint == 5.5 [getvariable.as:118]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:135]
+PASSED: checkpoint == _level0.mc.mc [getvariable.as:136]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:153]
+PASSED: checkpoint == _level0.mc.mc [getvariable.as:154]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:167]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:179]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:192]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:205]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:220]
+PASSED: checkpoint == undefined [getvariable.as:236]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:250]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:263]
+PASSED: obj.variable_in_object == 'yes' [getvariable.as:270]
+PASSED: checkpoint == 'yes' [getvariable.as:277]
+PASSED: obj.variable_in_object == 'yes2' [getvariable.as:283]
+PASSED: obj.variable_in_object == 'yes' [getvariable.as:290]
+PASSED: checkpoint == undefined [getvariable.as:297]
+PASSED: obj.variable_in_object == 'yes' [getvariable.as:303]
+PASSED: typeof(_root['obj::::variable_in_object']) == 'undefined' [getvariable.as:304]
+PASSED: obj.variable_in_object == 'yes3' [getvariable.as:311]
+PASSED: obj.variable_in_object == 'yes4' [getvariable.as:318]
+PASSED: obj.variable_in_object == 'yes4' [getvariable.as:327]
+PASSED: checkpoint == undefined [getvariable.as:390]
+PASSED: checkpoint == undefined [getvariable.as:406]
+PASSED: objmemb == 3 [getvariable.as:419]
+PASSED: checkpoint == undefined [getvariable.as:434]
+PASSED: checkpoint == undefined [getvariable.as:448]
+PASSED: checkpoint == 4 [getvariable.as:462]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:477]
+PASSED: checkpoint == undefined [getvariable.as:491]
+PASSED: checkpoint == undefined [getvariable.as:508]
+PASSED: objmemb == 3 [getvariable.as:522]
+PASSED: objmemb == 4 [getvariable.as:535]
+PASSED: objmemb == 4.4 [getvariable.as:548]
+PASSED: objmemb == 4 [getvariable.as:561]
+PASSED: memb == 6 [getvariable.as:574]
+PASSED: thismemb == 6 [getvariable.as:575]
+PASSED: checkpoint == 7 [getvariable.as:591]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:606]
+PASSED: typeof(invalid) == 'undefined' [getvariable.as:607]
+PASSED: xx == 1 [getvariable.as:621]
+PASSED: _root.xx == 2 [getvariable.as:622]
+PASSED: checkpoint == 5 [getvariable.as:646]
+PASSED: checkpoint == 4 [getvariable.as:662]
+PASSED: checkpoint == 7 [getvariable.as:673]
+PASSED: checkpoint == 4 [getvariable.as:683]
+xcheck_totals: 52
diff --git a/test/gnash/actionscript.all/pending/getvariable-6.swf b/test/gnash/actionscript.all/pending/getvariable-6.swf
new file mode 100644
index 0000000..1e7a460
Binary files /dev/null and b/test/gnash/actionscript.all/pending/getvariable-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/getvariable-6.swf.trace b/test/gnash/actionscript.all/pending/getvariable-6.swf.trace
new file mode 100644
index 0000000..412f0b5
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/getvariable-6.swf.trace
@@ -0,0 +1,58 @@
+PASSED: checkpoint == 5 [getvariable.as:49]
+PASSED: checkpoint == 5.1 [getvariable.as:62]
+PASSED: checkpoint == 5.2 [getvariable.as:75]
+PASSED: checkpoint == 5.3 [getvariable.as:88]
+PASSED: checkpoint == 5.4 [getvariable.as:102]
+PASSED: checkpoint == 5.5 [getvariable.as:118]
+PASSED: typeof(checkpoint) == 'movieclip' [getvariable.as:132]
+PASSED: checkpoint == _level0.mc.mc [getvariable.as:133]
+PASSED: typeof(checkpoint) == 'movieclip' [getvariable.as:150]
+PASSED: checkpoint == _level0.mc.mc [getvariable.as:151]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:167]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:179]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:192]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:205]
+PASSED: checkpoint == 'mc2' [getvariable.as:218]
+PASSED: checkpoint == undefined [getvariable.as:236]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:250]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:263]
+PASSED: obj.variable_in_object == 'yes' [getvariable.as:270]
+PASSED: checkpoint == 'yes' [getvariable.as:277]
+PASSED: obj.variable_in_object == 'yes2' [getvariable.as:283]
+PASSED: obj.variable_in_object == 'yes' [getvariable.as:290]
+PASSED: checkpoint == undefined [getvariable.as:297]
+PASSED: obj.variable_in_object == 'yes' [getvariable.as:303]
+PASSED: typeof(_root['obj::::variable_in_object']) == 'undefined' [getvariable.as:304]
+PASSED: obj.variable_in_object == 'yes3' [getvariable.as:311]
+PASSED: obj.variable_in_object == 'yes4' [getvariable.as:318]
+PASSED: obj.variable_in_object == 'yes4' [getvariable.as:327]
+PASSED: checkpoint == 'yes' [getvariable.as:342]
+PASSED: mc1.variable_in_object == 'yes2' [getvariable.as:348]
+PASSED: checkpoint == undefined [getvariable.as:365]
+PASSED: mc1.variable_in_object == 'yes' [getvariable.as:371]
+PASSED: typeof(_root['mc1::::variable_in_object']) == 'undefined' [getvariable.as:372]
+PASSED: checkpoint == undefined [getvariable.as:390]
+PASSED: checkpoint == undefined [getvariable.as:406]
+PASSED: objmemb == 3 [getvariable.as:419]
+PASSED: checkpoint == undefined [getvariable.as:434]
+PASSED: checkpoint == undefined [getvariable.as:448]
+PASSED: checkpoint == 4 [getvariable.as:462]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:477]
+PASSED: checkpoint == undefined [getvariable.as:491]
+PASSED: checkpoint == 1 [getvariable.as:505]
+PASSED: objmemb == 3 [getvariable.as:522]
+PASSED: objmemb == 4 [getvariable.as:535]
+PASSED: objmemb == 4.4 [getvariable.as:548]
+PASSED: objmemb == 4 [getvariable.as:561]
+PASSED: memb == 6 [getvariable.as:574]
+PASSED: thismemb == 6 [getvariable.as:575]
+PASSED: checkpoint == 7 [getvariable.as:591]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:606]
+PASSED: typeof(invalid) == 'undefined' [getvariable.as:607]
+PASSED: xx == 1 [getvariable.as:621]
+PASSED: _root.xx == 2 [getvariable.as:622]
+PASSED: checkpoint == 5 [getvariable.as:646]
+PASSED: checkpoint == 4 [getvariable.as:662]
+PASSED: checkpoint == 7 [getvariable.as:673]
+PASSED: checkpoint == 4 [getvariable.as:683]
+xcheck_totals: 57
diff --git a/test/gnash/actionscript.all/pending/getvariable-7.swf b/test/gnash/actionscript.all/pending/getvariable-7.swf
new file mode 100644
index 0000000..ccaaeee
Binary files /dev/null and b/test/gnash/actionscript.all/pending/getvariable-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/getvariable-7.swf.trace b/test/gnash/actionscript.all/pending/getvariable-7.swf.trace
new file mode 100644
index 0000000..95a2838
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/getvariable-7.swf.trace
@@ -0,0 +1,58 @@
+PASSED: checkpoint == 5 [getvariable.as:49]
+PASSED: checkpoint == 5.1 [getvariable.as:62]
+PASSED: checkpoint == 5.2 [getvariable.as:75]
+PASSED: checkpoint == 5.3 [getvariable.as:88]
+PASSED: checkpoint == 5.4 [getvariable.as:102]
+PASSED: checkpoint == undefined [getvariable.as:116]
+PASSED: typeof(checkpoint) == 'movieclip' [getvariable.as:132]
+PASSED: checkpoint == _level0.mc.mc [getvariable.as:133]
+PASSED: typeof(checkpoint) == 'movieclip' [getvariable.as:150]
+PASSED: checkpoint == _level0.mc.mc [getvariable.as:151]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:167]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:179]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:192]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:205]
+PASSED: checkpoint == 'mc2' [getvariable.as:218]
+PASSED: checkpoint == undefined [getvariable.as:236]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:250]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:263]
+PASSED: obj.variable_in_object == 'yes' [getvariable.as:270]
+PASSED: checkpoint == 'yes' [getvariable.as:277]
+PASSED: obj.variable_in_object == 'yes2' [getvariable.as:283]
+PASSED: obj.variable_in_object == 'yes' [getvariable.as:290]
+PASSED: checkpoint == undefined [getvariable.as:297]
+PASSED: obj.variable_in_object == 'yes' [getvariable.as:303]
+PASSED: typeof(_root['obj::::variable_in_object']) == 'undefined' [getvariable.as:304]
+PASSED: obj.variable_in_object == 'yes3' [getvariable.as:311]
+PASSED: obj.variable_in_object == 'yes4' [getvariable.as:318]
+PASSED: obj.variable_in_object == 'yes4' [getvariable.as:327]
+PASSED: checkpoint == 'yes' [getvariable.as:342]
+PASSED: mc1.variable_in_object == 'yes2' [getvariable.as:348]
+PASSED: checkpoint == undefined [getvariable.as:365]
+PASSED: mc1.variable_in_object == 'yes' [getvariable.as:371]
+PASSED: typeof(_root['mc1::::variable_in_object']) == 'undefined' [getvariable.as:372]
+PASSED: checkpoint == undefined [getvariable.as:390]
+PASSED: checkpoint == undefined [getvariable.as:406]
+PASSED: objmemb == 3 [getvariable.as:419]
+PASSED: checkpoint == undefined [getvariable.as:434]
+PASSED: checkpoint == undefined [getvariable.as:448]
+PASSED: checkpoint == 4 [getvariable.as:462]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:477]
+PASSED: checkpoint == undefined [getvariable.as:491]
+PASSED: checkpoint == 1 [getvariable.as:505]
+PASSED: objmemb == 3 [getvariable.as:522]
+PASSED: objmemb == 4 [getvariable.as:535]
+PASSED: objmemb == 4.4 [getvariable.as:548]
+PASSED: objmemb == 4 [getvariable.as:561]
+PASSED: memb == 6 [getvariable.as:574]
+PASSED: thismemb == 6 [getvariable.as:575]
+PASSED: checkpoint == 7 [getvariable.as:591]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:606]
+PASSED: typeof(invalid) == 'undefined' [getvariable.as:607]
+PASSED: xx == 1 [getvariable.as:621]
+PASSED: _root.xx == 2 [getvariable.as:622]
+PASSED: checkpoint == 5 [getvariable.as:646]
+PASSED: checkpoint == 4 [getvariable.as:662]
+PASSED: checkpoint == 7 [getvariable.as:673]
+PASSED: checkpoint == 4 [getvariable.as:683]
+xcheck_totals: 57
diff --git a/test/gnash/actionscript.all/pending/getvariable-8.swf b/test/gnash/actionscript.all/pending/getvariable-8.swf
new file mode 100644
index 0000000..11c390b
Binary files /dev/null and b/test/gnash/actionscript.all/pending/getvariable-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/getvariable-8.swf.trace b/test/gnash/actionscript.all/pending/getvariable-8.swf.trace
new file mode 100644
index 0000000..95a2838
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/getvariable-8.swf.trace
@@ -0,0 +1,58 @@
+PASSED: checkpoint == 5 [getvariable.as:49]
+PASSED: checkpoint == 5.1 [getvariable.as:62]
+PASSED: checkpoint == 5.2 [getvariable.as:75]
+PASSED: checkpoint == 5.3 [getvariable.as:88]
+PASSED: checkpoint == 5.4 [getvariable.as:102]
+PASSED: checkpoint == undefined [getvariable.as:116]
+PASSED: typeof(checkpoint) == 'movieclip' [getvariable.as:132]
+PASSED: checkpoint == _level0.mc.mc [getvariable.as:133]
+PASSED: typeof(checkpoint) == 'movieclip' [getvariable.as:150]
+PASSED: checkpoint == _level0.mc.mc [getvariable.as:151]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:167]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:179]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:192]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:205]
+PASSED: checkpoint == 'mc2' [getvariable.as:218]
+PASSED: checkpoint == undefined [getvariable.as:236]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:250]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:263]
+PASSED: obj.variable_in_object == 'yes' [getvariable.as:270]
+PASSED: checkpoint == 'yes' [getvariable.as:277]
+PASSED: obj.variable_in_object == 'yes2' [getvariable.as:283]
+PASSED: obj.variable_in_object == 'yes' [getvariable.as:290]
+PASSED: checkpoint == undefined [getvariable.as:297]
+PASSED: obj.variable_in_object == 'yes' [getvariable.as:303]
+PASSED: typeof(_root['obj::::variable_in_object']) == 'undefined' [getvariable.as:304]
+PASSED: obj.variable_in_object == 'yes3' [getvariable.as:311]
+PASSED: obj.variable_in_object == 'yes4' [getvariable.as:318]
+PASSED: obj.variable_in_object == 'yes4' [getvariable.as:327]
+PASSED: checkpoint == 'yes' [getvariable.as:342]
+PASSED: mc1.variable_in_object == 'yes2' [getvariable.as:348]
+PASSED: checkpoint == undefined [getvariable.as:365]
+PASSED: mc1.variable_in_object == 'yes' [getvariable.as:371]
+PASSED: typeof(_root['mc1::::variable_in_object']) == 'undefined' [getvariable.as:372]
+PASSED: checkpoint == undefined [getvariable.as:390]
+PASSED: checkpoint == undefined [getvariable.as:406]
+PASSED: objmemb == 3 [getvariable.as:419]
+PASSED: checkpoint == undefined [getvariable.as:434]
+PASSED: checkpoint == undefined [getvariable.as:448]
+PASSED: checkpoint == 4 [getvariable.as:462]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:477]
+PASSED: checkpoint == undefined [getvariable.as:491]
+PASSED: checkpoint == 1 [getvariable.as:505]
+PASSED: objmemb == 3 [getvariable.as:522]
+PASSED: objmemb == 4 [getvariable.as:535]
+PASSED: objmemb == 4.4 [getvariable.as:548]
+PASSED: objmemb == 4 [getvariable.as:561]
+PASSED: memb == 6 [getvariable.as:574]
+PASSED: thismemb == 6 [getvariable.as:575]
+PASSED: checkpoint == 7 [getvariable.as:591]
+PASSED: typeof(checkpoint) == 'undefined' [getvariable.as:606]
+PASSED: typeof(invalid) == 'undefined' [getvariable.as:607]
+PASSED: xx == 1 [getvariable.as:621]
+PASSED: _root.xx == 2 [getvariable.as:622]
+PASSED: checkpoint == 5 [getvariable.as:646]
+PASSED: checkpoint == 4 [getvariable.as:662]
+PASSED: checkpoint == 7 [getvariable.as:673]
+PASSED: checkpoint == 4 [getvariable.as:683]
+xcheck_totals: 57
diff --git a/test/gnash/actionscript.all/pending/getvariable.as b/test/gnash/actionscript.all/pending/getvariable.as
new file mode 100644
index 0000000..8b57ebd
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/getvariable.as
@@ -0,0 +1,700 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Test case for getvariable Action tag class
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: getvariable.as,v 1.25 2008/03/11 19:31:48 strk Exp $";
+#include "check.as"
+
+// see check.as
+#ifdef MING_SUPPORTS_ASM
+
+_global.globalvar = "gv1";
+_global.globalobj = { m1: 1 };
+
+mc1 = createEmptyMovieClip('mc', 1);
+mc1.mem = 'mc1';
+mc2 = mc1.createEmptyMovieClip('mc', 1);
+mc2.mem = 'mc2';
+mc2.o = new Object();
+
+//---------------------------------------------------------------------
+// Check access to root variable (simplest case)
+//---------------------------------------------------------------------
+
+var variable_in_root = 5;
+asm {
+        push 'checkpoint'
+	push 'variable_in_root'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, 5);
+
+//---------------------------------------------------------------------
+// Check access to root variable trough '_root.varname'
+//---------------------------------------------------------------------
+
+var variable_in_root = 5.1;
+asm {
+        push 'checkpoint'
+	push '_root.variable_in_root'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, 5.1);
+
+//---------------------------------------------------------------------
+// Check access to root variable trough '_level0.varname'
+//---------------------------------------------------------------------
+
+var variable_in_root = 5.2;
+asm {
+        push 'checkpoint'
+	push '_level0.variable_in_root'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, 5.2);
+
+//---------------------------------------------------------------------
+// Check access to root variable trough 'this.varname'
+//---------------------------------------------------------------------
+
+var variable_in_root = 5.3;
+asm {
+        push 'checkpoint'
+	push 'this.variable_in_root'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, 5.3);
+
+//---------------------------------------------------------------------
+// Check access to root variable trough 'this._root._level0.varname'
+// (insane)
+//---------------------------------------------------------------------
+
+var variable_in_root = 5.4;
+asm {
+        push 'checkpoint'
+	push 'this._root._level0.variable_in_root'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, 5.4);
+
+//---------------------------------------------------------------------
+// Check access to root variable trough 'THIS.varname'
+//---------------------------------------------------------------------
+
+var variable_in_root = 5.5;
+asm {
+        push 'checkpoint'
+	push 'THIS.variable_in_root'
+	getvariable
+        setvariable
+};
+#if OUTPUT_VERSION > 6
+check_equals(checkpoint, undefined);
+#else
+check_equals(checkpoint, 5.5);
+#endif
+
+//---------------------------------------------------------------------
+// Check '/mc/mc' access 
+//---------------------------------------------------------------------
+
+asm {
+        push 'checkpoint'
+	push '/mc/mc'
+	getvariable
+        setvariable
+};
+#if OUTPUT_VERSION > 5
+ check_equals(typeof(checkpoint), 'movieclip');
+ check_equals(checkpoint, _level0.mc.mc);
+#else
+ check_equals(typeof(checkpoint), 'undefined');
+ check_equals(checkpoint, _level0.mc.mc);
+#endif
+
+//---------------------------------------------------------------------
+// Check '/mc/mc/' access 
+//---------------------------------------------------------------------
+
+asm {
+        push 'checkpoint'
+	push '/mc/mc/'
+	getvariable
+        setvariable
+};
+#if OUTPUT_VERSION > 5
+ check_equals(typeof(checkpoint), 'movieclip');
+ check_equals(checkpoint, _level0.mc.mc);
+#else
+ check_equals(typeof(checkpoint), 'undefined');
+ check_equals(checkpoint, _level0.mc.mc);
+#endif
+
+//---------------------------------------------------------------------
+// Check '/mc/mc/:' access 
+//---------------------------------------------------------------------
+
+asm {
+        push 'checkpoint'
+	push '/mc/mc/:'
+	getvariable
+        setvariable
+};
+check_equals(typeof(checkpoint), 'undefined');
+
+//---------------------------------------------------------------------
+// Check '/mc/mc:' access 
+//---------------------------------------------------------------------
+
+asm {
+        push 'checkpoint'
+	push '/mc/mc:'
+	getvariable
+        setvariable
+};
+check_equals(typeof(checkpoint), 'undefined');
+
+//---------------------------------------------------------------------
+// Check '/mc/mc/mem' access 
+// (expected to fail, but I'm not sure why)
+//---------------------------------------------------------------------
+
+asm {
+        push 'checkpoint'
+	push '/mc/mc/mem'
+	getvariable
+        setvariable
+};
+check_equals(typeof(checkpoint), 'undefined');
+
+//---------------------------------------------------------------------
+// Check '/mc/mc/o' access 
+// (expected to fail, but I'm not sure why)
+//---------------------------------------------------------------------
+
+asm {
+        push 'checkpoint'
+	push '/mc/mc/o'
+	getvariable
+        setvariable
+};
+check_equals(typeof(checkpoint), 'undefined');
+
+//---------------------------------------------------------------------
+// Check '/mc/mc:mem' access 
+//---------------------------------------------------------------------
+
+asm {
+        push 'checkpoint'
+	push '/mc/mc:mem'
+	getvariable
+        setvariable
+};
+#if OUTPUT_VERSION > 5
+ check_equals(checkpoint, 'mc2');
+#else
+ check_equals(typeof(checkpoint), 'undefined');
+#endif
+
+
+//---------------------------------------------------------------------
+// Check '../:variable_in_root' access 
+// (expected to fail, but I'm not sure why)
+//---------------------------------------------------------------------
+
+var variable_in_root = 6;
+asm {
+        push 'checkpoint'
+	push '../:variable_in_root'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, undefined);
+
+//---------------------------------------------------------------------
+// Check '...:variable_in_root' access 
+//---------------------------------------------------------------------
+
+checkpoint = 1;
+var variable_in_root = 6;
+asm {
+        push 'checkpoint'
+	push '...:variable_in_root'
+	getvariable
+        setvariable
+};
+check_equals(typeof(checkpoint), 'undefined');
+
+//---------------------------------------------------------------------
+// Check '...:mc1' access 
+//---------------------------------------------------------------------
+
+checkpoint = 1;
+asm {
+        push 'checkpoint'
+	push '...:mc1'
+	getvariable
+        setvariable
+};
+check_equals(typeof(checkpoint), 'undefined');
+
+//---------------------------------------------------------------------
+// Check 'obj:variable_in_object' access 
+//---------------------------------------------------------------------
+
+var obj = { variable_in_object: 'yes' };
+check_equals(obj.variable_in_object, 'yes');
+asm {
+        push 'checkpoint'
+	push 'obj:variable_in_object'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, 'yes');
+asm {
+	push 'obj:variable_in_object'
+        push 'yes2'
+        setvariable
+};
+check_equals(obj.variable_in_object, 'yes2');
+
+//---------------------------------------------------------------------
+// Check 'obj::::variable_in_object' access 
+//---------------------------------------------------------------------
+
+var obj = { variable_in_object: 'yes' };
+check_equals(obj.variable_in_object, 'yes');
+asm {
+        push 'checkpoint'
+	push 'obj::::variable_in_object'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, undefined);
+asm {
+	push 'obj::::variable_in_object'
+        push 'yes2'
+        setvariable
+};
+check_equals(obj.variable_in_object, 'yes');
+check_equals(typeof(_root['obj::::variable_in_object']), 'undefined');
+
+asm {
+	push 'obj:variable_in_object'
+        push 'yes3'
+        setvariable
+};
+check_equals(obj.variable_in_object, 'yes3');
+
+asm {
+	push 'obj::variable_in_object'
+        push 'yes4'
+        setvariable
+};
+check_equals(obj.variable_in_object, 'yes4');
+
+// NOTE: 'obj:::variable_in_object' is invalid, while
+//       'obj::variable_in_object' is valid - AARagagag
+asm {
+	push 'obj:::variable_in_object'
+        push 'yes5'
+        setvariable
+};
+check_equals(obj.variable_in_object, 'yes4');
+
+//---------------------------------------------------------------------
+// Check 'mc1:variable_in_object' access 
+//---------------------------------------------------------------------
+
+#if OUTPUT_VERSION > 5
+
+mc1.variable_in_object = 'yes';
+asm {
+        push 'checkpoint'
+	push 'mc1:variable_in_object'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, 'yes');
+asm {
+	push 'mc1:variable_in_object'
+        push 'yes2'
+        setvariable
+};
+check_equals(mc1.variable_in_object, 'yes2');
+
+#endif // OUTPUT_VERSION > 5
+
+//---------------------------------------------------------------------
+// Check 'mc1::::variable_in_object' access 
+//---------------------------------------------------------------------
+
+#if OUTPUT_VERSION > 5
+
+mc1.variable_in_object = 'yes';
+asm {
+        push 'checkpoint'
+	push 'mc1::::variable_in_object'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, undefined);
+asm {
+	push 'mc1::::variable_in_object'
+        push 'yes2'
+        setvariable
+};
+check_equals(mc1.variable_in_object, 'yes');
+check_equals(typeof(_root['mc1::::variable_in_object']), 'undefined');
+
+#endif // OUTPUT_VERSION > 5
+
+//---------------------------------------------------------------------
+// Check '../invalidname' access 
+// (expected to fail)
+//---------------------------------------------------------------------
+
+asm {
+	push '../invalidname'
+	push '8'
+	setvariable
+        push 'checkpoint'
+	push '../invalidname'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, undefined);
+
+//---------------------------------------------------------------------
+// Check '/invalidname2' access 
+// (expected to fail)
+//---------------------------------------------------------------------
+
+asm {
+	push '/invalidname2'
+	push '18'
+	setvariable
+        push 'checkpoint'
+	push '/invalidname'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, undefined);
+
+//---------------------------------------------------------------------
+// Check 'obj.member' access 
+//---------------------------------------------------------------------
+
+var obj = { memb:3 };
+asm {
+        push 'objmemb'
+	push 'obj.memb'
+	getvariable
+        setvariable
+};
+check_equals(objmemb, 3);
+
+//---------------------------------------------------------------------
+// Check 'obj._root.variable_in_root' access 
+// (expect to fail)
+//---------------------------------------------------------------------
+
+var variable_in_root = 10.0;
+var o = { memb:4 };
+asm {
+        push 'checkpoint'
+	push 'o._root.variable_in_root'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, undefined);
+
+//---------------------------------------------------------------------
+// Check 'obj.this.memb' access 
+// (expect to fail)
+//---------------------------------------------------------------------
+
+var o = { memb:10.1 };
+asm {
+        push 'checkpoint'
+	push 'o.this.memb'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, undefined);
+
+//---------------------------------------------------------------------
+// Check 'obj1.obj2.member' access 
+//---------------------------------------------------------------------
+
+var o2 = { memb:4 };
+var o = { obj2:o2 };
+asm {
+        push 'checkpoint'
+	push 'o.obj2.memb'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, 4);
+
+//---------------------------------------------------------------------
+// Check 'obj1..obj2.member' access 
+// (expect to fail)
+//---------------------------------------------------------------------
+
+var o2 = { memb:4 };
+var o = { obj2:o2 };
+asm {
+        push 'checkpoint'
+	push 'o..obj2.memb'
+	getvariable
+        setvariable
+};
+check_equals(typeof(checkpoint), 'undefined');
+
+//---------------------------------------------------------------------
+// Check 'obj1.globalvar'
+// (expect to fail)
+//---------------------------------------------------------------------
+
+var o3 = { memb:4 };
+asm {
+        push 'checkpoint'
+	push 'o3.globalvar'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, undefined);
+
+//---------------------------------------------------------------------
+// Check 'globalobj.m1'
+//---------------------------------------------------------------------
+
+var o3 = { memb:4 };
+asm {
+        push 'checkpoint'
+	push 'globalobj.m1'
+	getvariable
+        setvariable
+};
+#if OUTPUT_VERSION > 5
+check_equals(checkpoint, 1);
+#else // OUTPUT_VERSION < 6
+// _global was added in SWF6 !
+check_equals(checkpoint, undefined);
+#endif
+
+//-----------------------------------------------------------------------
+// Check 'obj/:member' access 
+//-----------------------------------------------------------------------
+
+var obj = { memb:3 };
+asm {
+        push 'objmemb'
+	push 'obj/:memb'
+	getvariable
+        setvariable
+};
+check_equals(objmemb, 3);
+
+//-----------------------------------------------------------------------
+// Check '::obj:member' access 
+//-----------------------------------------------------------------------
+
+var obj = { memb:4 };
+asm {
+        push 'objmemb'
+	push '::obj:memb'
+	getvariable
+        setvariable
+};
+check_equals(objmemb, 4);
+
+//-----------------------------------------------------------------------
+// Check '::obj::member' access 
+//-----------------------------------------------------------------------
+
+var obj = { memb:4.4 };
+asm {
+        push 'objmemb'
+	push '::obj::memb'
+	getvariable
+        setvariable
+};
+check_equals(objmemb, 4.4);
+
+//-----------------------------------------------------------------------
+// Check '::obj.member' access 
+//-----------------------------------------------------------------------
+
+var obj = { memb:4 };
+asm {
+        push 'objmemb'
+	push '::obj.memb'
+	getvariable
+        setvariable
+};
+check_equals(objmemb, 4);
+
+//-----------------------------------------------------------------------
+// Check 'this/:member' access  (and deletion)
+//-----------------------------------------------------------------------
+
+var memb = 6;
+asm {
+        push 'thismemb'
+	push 'this/:memb'
+	getvariable
+        setvariable
+};
+check_equals(memb, 6);
+check_equals(thismemb, 6);
+
+//-----------------------------------------------------------------------
+// Check 'invalid/name' access
+// ('invalid/name' used as a variable name)
+//-----------------------------------------------------------------------
+
+asm {
+	push 'invalid/name'
+	push '7'
+	setvariable
+        push 'checkpoint'
+	push 'invalid/name'
+	getvariable
+        setvariable
+};
+check_equals(checkpoint, 7);
+
+//-----------------------------------------------------------------------
+// Check 'invalid:Number'
+//-----------------------------------------------------------------------
+
+asm {
+	push 'invalid:Number'
+	push '8'
+	setvariable
+        push 'checkpoint'
+	push 'invalid:Number'
+	getvariable
+        setvariable
+};
+check_equals(typeof(checkpoint), 'undefined');
+check_equals(typeof(invalid), 'undefined');
+
+
+//-----------------------------------------------------------------------
+// Check 'path and var'
+//-----------------------------------------------------------------------
+function func_obj() 
+{ 
+	var xx = 1;
+	asm {	
+		push '/:xx'
+		push '2'
+		setvariable
+	};
+	check_equals(xx, 1);
+	check_equals(_root.xx, 2);
+};
+
+func = new func_obj();
+func();
+
+//---------------------------------------------------------------------
+// Check scope of function called trough a path
+// nothing to do with GetVariable, but I didnt' feel like adding another
+// file for testing this.. it's still related to tags and variable names
+//---------------------------------------------------------------------
+
+num = 7;
+func = function() { return this.num; };
+o = new Object;
+o.func = func;
+o.num = 5;
+asm {
+        push 'checkpoint'
+	push 0
+	push '_root.o.func'
+	callfunction
+        setvariable
+};
+check_equals(checkpoint, 5);
+
+o2 = new Object;
+o2.m = new Object;
+o2.m.func = func;
+o2.num = 3;
+o2.m.num = 4;
+with (o2.m) {
+asm {
+        push 'checkpoint'
+	push 0
+	push 'func'
+	callfunction
+        setvariable
+};
+};
+check_equals(checkpoint, 4);
+
+_global.func = func;
+_global.num = 9;
+asm {
+        push 'checkpoint'
+	push 0
+	push 'func'
+	callfunction
+        setvariable
+};
+check_equals(checkpoint, 7);
+
+this["o2.m.func"] = function() { return 19; };
+asm {
+        push 'checkpoint'
+	push 0
+	push 'o2.m.func'
+	callfunction
+        setvariable
+};
+check_equals(checkpoint, 4);
+
+//-----------------------------------------------------------------------
+// TODO: try use of 'with' stack
+//-----------------------------------------------------------------------
+
+#if OUTPUT_VERSION < 6
+ xcheck_totals(52); // gnash runs +2 tests ?!
+#else
+ xcheck_totals(57); // gnash runs +2 tests ?!
+#endif
+
+#else // ndef MING_SUPPORT_ASM
+
+check_totals(0);
+
+#endif // MING_SUPPORT_ASM
+
diff --git a/test/gnash/actionscript.all/pending/ops-5.swf b/test/gnash/actionscript.all/pending/ops-5.swf
new file mode 100644
index 0000000..bc2c98b
Binary files /dev/null and b/test/gnash/actionscript.all/pending/ops-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/ops-5.swf.trace b/test/gnash/actionscript.all/pending/ops-5.swf.trace
new file mode 100644
index 0000000..ef9b5d9
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/ops-5.swf.trace
@@ -0,0 +1,240 @@
+PASSED: 'xyz' == 'xyz' [ops.as:30]
+PASSED: !('xyz' == 'XYZ') [ops.as:31]
+PASSED: !('xyz' == 'abc') [ops.as:32]
+PASSED: 1 == 1 [ops.as:33]
+PASSED: 1 == "1" [ops.as:34]
+PASSED: "1" == 1 [ops.as:35]
+PASSED: 0 == -0 [ops.as:36]
+PASSED: 0 == "-0" [ops.as:37]
+PASSED: "0" == -0 [ops.as:38]
+PASSED: null == null [ops.as:39]
+PASSED: undefined == undefined [ops.as:40]
+PASSED: null==undefined [ops.as:41]
+PASSED: undefined==null [ops.as:42]
+PASSED: ! (NaN == 0) [ops.as:43]
+PASSED: ! (0 == NaN) [ops.as:44]
+PASSED: ! ('string' == 0) [ops.as:45]
+PASSED: ! (0 == 'string') [ops.as:46]
+PASSED: ! ('string' == NaN) [ops.as:47]
+PASSED: ! (NaN == 'string') [ops.as:48]
+PASSED: ! (Infinity == 'Infinity') [ops.as:49]
+PASSED: ! ('Infinity' == Infinity) [ops.as:50]
+PASSED: ! (-Infinity == '-Infinity') [ops.as:51]
+PASSED: ! ('-Infinity' == -Infinity) [ops.as:52]
+PASSED: Infinity == Infinity [ops.as:53]
+PASSED: -Infinity == -Infinity [ops.as:54]
+PASSED: ! (-Infinity == Infinity) [ops.as:55]
+PASSED: x/0 == Infinity [ops.as:57]
+PASSED: -x/0 == -Infinity [ops.as:58]
+PASSED: 1==true [ops.as:59]
+PASSED: true==1 [ops.as:60]
+PASSED: 2!=true [ops.as:61]
+PASSED: true!=2 [ops.as:62]
+PASSED: 1+true == 2 [ops.as:63]
+PASSED: true+1 == 2 [ops.as:64]
+PASSED: 1+false == 1 [ops.as:65]
+PASSED: false+1 == 1 [ops.as:66]
+PASSED: true+true == 2 [ops.as:67]
+PASSED: true+false == 1 [ops.as:68]
+PASSED: false == 0 [ops.as:69]
+PASSED: false+false == 0 [ops.as:70]
+PASSED: ! (z == 0) [ops.as:78]
+PASSED: isNaN(z) [ops.as:79]
+XPASSED: ! (z == NaN) [ops.as:82]
+PASSED: NaN == NaN [ops.as:85]
+PASSED: x == y [ops.as:90]
+PASSED: typeof(x) == 'number' [ops.as:96]
+PASSED: typeof(y) == 'number' [ops.as:97]
+PASSED: typeof(z) == 'number' [ops.as:98]
+PASSED: isNaN(x) [ops.as:99]
+PASSED: isNaN(y) [ops.as:100]
+PASSED: isNaN(z) [ops.as:101]
+XPASSED: x != y [ops.as:102]
+XPASSED: y != z [ops.as:103]
+XPASSED: x != z [ops.as:104]
+PASSED: x == x [ops.as:105]
+PASSED: y == y [ops.as:106]
+PASSED: z == z [ops.as:107]
+PASSED: (1/0) == (1/0) [ops.as:108]
+PASSED: ! (ary1 == ary2) [ops.as:113]
+PASSED: ! (ary1 == "1,2,3") [ops.as:114]
+PASSED: ! ("1,2,3" == ary1) [ops.as:115]
+PASSED: ! (str1 == str3) [ops.as:121]
+PASSED: str1 == "hello" [ops.as:122]
+PASSED: "hello" == str1 [ops.as:123]
+PASSED: str3 == 3.0 [ops.as:125]
+PASSED: str3.toString() == 3.0 [ops.as:126]
+PASSED: ! (str1 == 0) [ops.as:128]
+PASSED: ! (str1 == NaN) [ops.as:129]
+PASSED: str1 == str2 [ops.as:134]
+PASSED: "_root" != _root [ops.as:139]
+PASSED: _root != "_root" [ops.as:140]
+PASSED: _root == o [ops.as:142]
+PASSED: o == _root [ops.as:143]
+PASSED: x<y [ops.as:151]
+PASSED: x<y [ops.as:155]
+PASSED: x<y [ops.as:159]
+PASSED: x<y [ops.as:163]
+PASSED: x<y [ops.as:167]
+PASSED: x<y [ops.as:171]
+PASSED: ! (NaN < NaN) [ops.as:173]
+PASSED: ! (undefined < undefined) [ops.as:174]
+PASSED: ! (NaN < undefined) [ops.as:176]
+PASSED: ! (undefined < NaN) [ops.as:177]
+PASSED: typeof(r) == 'boolean' [ops.as:181]
+PASSED: r == false [ops.as:182]
+PASSED: typeof(r) == 'boolean' [ops.as:191]
+PASSED: r == false [ops.as:192]
+PASSED: z == y [ops.as:208]
+PASSED: z == y [ops.as:213]
+PASSED: z == y [ops.as:218]
+PASSED: z == y [ops.as:223]
+PASSED: z == "1.999" [ops.as:228]
+PASSED: z == y [ops.as:233]
+PASSED: z == "adcd" [ops.as:239]
+PASSED: z == "adcd" [ops.as:247]
+PASSED: z == x [ops.as:252]
+PASSED: z == y [ops.as:257]
+PASSED: z == y [ops.as:262]
+PASSED: z == y [ops.as:266]
+PASSED: z == "adcd" [ops.as:272]
+PASSED: z == y [ops.as:288]
+PASSED: z == y [ops.as:293]
+PASSED: z == y [ops.as:298]
+PASSED: z == "abcd" [ops.as:315]
+PASSED: z == "abcd" [ops.as:323]
+PASSED: z == y [ops.as:328]
+PASSED: z == y [ops.as:333]
+PASSED: typeof(z) == 'string' [ops.as:338]
+PASSED: typeof(z) == 'string' [ops.as:343]
+PASSED: z == y [ops.as:348]
+PASSED: typeof(z) == 'boolean' [ops.as:360]
+PASSED: z [ops.as:362]
+PASSED: typeof(z) == 'boolean' [ops.as:371]
+PASSED: !z [ops.as:373]
+PASSED: typeof(z) == 'boolean' [ops.as:382]
+PASSED: !z [ops.as:383]
+PASSED: typeof(z) == 'boolean' [ops.as:389]
+PASSED: !z [ops.as:390]
+PASSED: x&y == 1 [ops.as:400]
+PASSED: x&y == 0 [ops.as:404]
+PASSED: x&y == 1 [ops.as:408]
+PASSED: x&y == 1 [ops.as:412]
+PASSED: x&y == 1 [ops.as:416]
+PASSED: x&y == 1 [ops.as:420]
+PASSED: x&y == 1 [ops.as:424]
+PASSED: x&y == 1 [ops.as:428]
+PASSED: x&y == 3 [ops.as:432]
+PASSED: x&y == 3 [ops.as:436]
+PASSED: (undefined&1) == 0 [ops.as:438]
+PASSED: (1&undefined) == 0 [ops.as:439]
+PASSED: (1&null) == 0 [ops.as:440]
+PASSED: (null&1) == 0 [ops.as:441]
+PASSED: (null&null) == 0 [ops.as:442]
+PASSED: (3&2) == 2 [ops.as:443]
+PASSED: (-1 & 1) == 1 [ops.as:446]
+PASSED: (1 & -1) == 1 [ops.as:447]
+PASSED: (-2 & 1) == 0 [ops.as:449]
+PASSED: (1 & -2) == 0 [ops.as:450]
+PASSED: x|y == 9 [ops.as:458]
+PASSED: x|y == 9 [ops.as:462]
+PASSED: x|y == 9 [ops.as:466]
+PASSED: x|y == 9 [ops.as:470]
+PASSED: x|y == 9 [ops.as:474]
+PASSED: x|y == 9 [ops.as:478]
+PASSED: (undefined|1) == 1 [ops.as:480]
+PASSED: (1|undefined) == 1 [ops.as:481]
+PASSED: (undefined|undefined) == 0 [ops.as:482]
+PASSED: (null|1) == 1 [ops.as:483]
+PASSED: (1|null) == 1 [ops.as:484]
+PASSED: (null|null) == 0 [ops.as:485]
+PASSED: (8|4) == 12 [ops.as:486]
+PASSED: (0xffffffff|0) == -1 [ops.as:490]
+PASSED: (undefined^1) == 1 [ops.as:496]
+PASSED: (1^undefined) == 1 [ops.as:497]
+PASSED: (undefined^undefined) == 0 [ops.as:498]
+PASSED: (null^1) == 1 [ops.as:499]
+PASSED: (1^null) == 1 [ops.as:500]
+PASSED: (null^null) == 0 [ops.as:501]
+PASSED: (8^12) == 4 [ops.as:502]
+PASSED: x^y == 3 [ops.as:506]
+PASSED: x^y == 3 [ops.as:510]
+PASSED: x^y == 3 [ops.as:514]
+PASSED: x^y == 3 [ops.as:518]
+PASSED: x^y == 3 [ops.as:522]
+PASSED: x^y == 3 [ops.as:526]
+PASSED: y == 1049601 [ops.as:530]
+PASSED: y == 4 [ops.as:538]
+PASSED: y == -65536 [ops.as:545]
+PASSED: y == -65536 [ops.as:549]
+PASSED: y == -65536 [ops.as:553]
+PASSED: y == 177209344 [ops.as:557]
+PASSED: y == 4 [ops.as:561]
+PASSED: typeof(y) == 'number' [ops.as:565]
+PASSED: ! isnan(y) [ops.as:566]
+PASSED: y == 0 [ops.as:567]
+PASSED: 0 << 1 == 0 [ops.as:569]
+PASSED: y == 0 [ops.as:573]
+PASSED: y == 0 [ops.as:577]
+PASSED: y == 6 [ops.as:581]
+PASSED: y == 6 [ops.as:585]
+PASSED: y == 6 [ops.as:589]
+PASSED: y == 2147483647 [ops.as:592]
+PASSED: y == 2147483647 [ops.as:595]
+PASSED: y == 1 [ops.as:603]
+PASSED: y == -1 [ops.as:607]
+PASSED: y == 1 [ops.as:611]
+PASSED: y == 0 [ops.as:615]
+PASSED: y == 0 [ops.as:619]
+PASSED: y == 0 [ops.as:623]
+PASSED: y == 3 [ops.as:627]
+PASSED: y == 3 [ops.as:631]
+PASSED: y == 3 [ops.as:635]
+PASSED: y == 1025 [ops.as:639]
+PASSED: y == -1 [ops.as:643]
+PASSED: y == -32 [ops.as:647]
+PASSED: y == -1023 [ops.as:651]
+PASSED: y == 32800 [ops.as:655]
+PASSED: y == 16400 [ops.as:659]
+PASSED: y == 0 [ops.as:663]
+PASSED: y == 0 [ops.as:672]
+PASSED: y == 2 [ops.as:675]
+PASSED: y == -1 [ops.as:678]
+PASSED: y == -1 [ops.as:681]
+PASSED: y == -1 [ops.as:684]
+PASSED: y == -1 [ops.as:687]
+PASSED: y == -1 [ops.as:690]
+PASSED: y == -1 [ops.as:693]
+PASSED: y == -1 [ops.as:696]
+PASSED: y == -1 [ops.as:699]
+PASSED: y == -2 [ops.as:702]
+PASSED: y == -2 [ops.as:705]
+PASSED: y == 0 [ops.as:720]
+PASSED: y == -1 [ops.as:724]
+PASSED: (y-0.9) < 0.001 [ops.as:729]
+PASSED: (y+1.0) < 0.001 [ops.as:734]
+PASSED: typeof(y) == 'number' [ops.as:738]
+XPASSED: y!=NaN [ops.as:739]
+PASSED: ! (NaN!=NaN) [ops.as:740]
+PASSED: isNaN(y) [ops.as:741]
+PASSED: isNaN(NaN) [ops.as:742]
+PASSED: y == 1 [ops.as:750]
+PASSED: y == 0 [ops.as:754]
+PASSED: (y-2.9) < 0.001 [ops.as:759]
+PASSED: y == 1 [ops.as:763]
+XPASSED: y!=NaN [ops.as:767]
+PASSED: isNaN(y) [ops.as:768]
+PASSED: !"" [ops.as:774]
+PASSED: !"a" [ops.as:776]
+PASSED: !"true" [ops.as:777]
+PASSED: !"false" [ops.as:778]
+PASSED: !"0000.000" [ops.as:779]
+PASSED: "1" [ops.as:787]
+PASSED: !false [ops.as:788]
+PASSED: true [ops.as:789]
+PASSED: !0 [ops.as:790]
+PASSED: 4 [ops.as:791]
+PASSED: _root [ops.as:792]
+PASSED: !null [ops.as:793]
+PASSED: !undefined [ops.as:794]
+totals
diff --git a/test/gnash/actionscript.all/pending/ops-6.swf b/test/gnash/actionscript.all/pending/ops-6.swf
new file mode 100644
index 0000000..5204110
Binary files /dev/null and b/test/gnash/actionscript.all/pending/ops-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/ops-6.swf.trace b/test/gnash/actionscript.all/pending/ops-6.swf.trace
new file mode 100644
index 0000000..3457ce9
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/ops-6.swf.trace
@@ -0,0 +1,240 @@
+PASSED: 'xyz' == 'xyz' [ops.as:30]
+PASSED: !('xyz' == 'XYZ') [ops.as:31]
+PASSED: !('xyz' == 'abc') [ops.as:32]
+PASSED: 1 == 1 [ops.as:33]
+PASSED: 1 == "1" [ops.as:34]
+PASSED: "1" == 1 [ops.as:35]
+PASSED: 0 == -0 [ops.as:36]
+PASSED: 0 == "-0" [ops.as:37]
+PASSED: "0" == -0 [ops.as:38]
+PASSED: null == null [ops.as:39]
+PASSED: undefined == undefined [ops.as:40]
+PASSED: null==undefined [ops.as:41]
+PASSED: undefined==null [ops.as:42]
+PASSED: ! (NaN == 0) [ops.as:43]
+PASSED: ! (0 == NaN) [ops.as:44]
+PASSED: ! ('string' == 0) [ops.as:45]
+PASSED: ! (0 == 'string') [ops.as:46]
+PASSED: ! ('string' == NaN) [ops.as:47]
+PASSED: ! (NaN == 'string') [ops.as:48]
+PASSED: ! (Infinity == 'Infinity') [ops.as:49]
+PASSED: ! ('Infinity' == Infinity) [ops.as:50]
+PASSED: ! (-Infinity == '-Infinity') [ops.as:51]
+PASSED: ! ('-Infinity' == -Infinity) [ops.as:52]
+PASSED: Infinity == Infinity [ops.as:53]
+PASSED: -Infinity == -Infinity [ops.as:54]
+PASSED: ! (-Infinity == Infinity) [ops.as:55]
+PASSED: x/0 == Infinity [ops.as:57]
+PASSED: -x/0 == -Infinity [ops.as:58]
+PASSED: 1==true [ops.as:59]
+PASSED: true==1 [ops.as:60]
+PASSED: 2!=true [ops.as:61]
+PASSED: true!=2 [ops.as:62]
+PASSED: 1+true == 2 [ops.as:63]
+PASSED: true+1 == 2 [ops.as:64]
+PASSED: 1+false == 1 [ops.as:65]
+PASSED: false+1 == 1 [ops.as:66]
+PASSED: true+true == 2 [ops.as:67]
+PASSED: true+false == 1 [ops.as:68]
+PASSED: false == 0 [ops.as:69]
+PASSED: false+false == 0 [ops.as:70]
+PASSED: ! (z == 0) [ops.as:78]
+PASSED: isNaN(z) [ops.as:79]
+XPASSED: ! (z == NaN) [ops.as:82]
+PASSED: NaN == NaN [ops.as:85]
+PASSED: x == y [ops.as:90]
+PASSED: typeof(x) == 'number' [ops.as:96]
+PASSED: typeof(y) == 'number' [ops.as:97]
+PASSED: typeof(z) == 'number' [ops.as:98]
+PASSED: isNaN(x) [ops.as:99]
+PASSED: isNaN(y) [ops.as:100]
+PASSED: isNaN(z) [ops.as:101]
+XPASSED: x != y [ops.as:102]
+XPASSED: y != z [ops.as:103]
+XPASSED: x != z [ops.as:104]
+PASSED: x == x [ops.as:105]
+PASSED: y == y [ops.as:106]
+PASSED: z == z [ops.as:107]
+PASSED: (1/0) == (1/0) [ops.as:108]
+PASSED: ! (ary1 == ary2) [ops.as:113]
+PASSED: ! (ary1 == "1,2,3") [ops.as:114]
+PASSED: ! ("1,2,3" == ary1) [ops.as:115]
+PASSED: ! (str1 == str3) [ops.as:121]
+PASSED: str1 == "hello" [ops.as:122]
+PASSED: "hello" == str1 [ops.as:123]
+PASSED: str3 == 3.0 [ops.as:125]
+PASSED: str3.toString() == 3.0 [ops.as:126]
+PASSED: ! (str1 == 0) [ops.as:128]
+PASSED: ! (str1 == NaN) [ops.as:129]
+PASSED: ! (str1 == str2) [ops.as:132]
+PASSED: "_root" != _root [ops.as:139]
+PASSED: _root != "_root" [ops.as:140]
+PASSED: _root == o [ops.as:142]
+PASSED: o == _root [ops.as:143]
+PASSED: x<y [ops.as:151]
+PASSED: x<y [ops.as:155]
+PASSED: x<y [ops.as:159]
+PASSED: x<y [ops.as:163]
+PASSED: x<y [ops.as:167]
+PASSED: x<y [ops.as:171]
+PASSED: ! (NaN < NaN) [ops.as:173]
+PASSED: ! (undefined < undefined) [ops.as:174]
+PASSED: ! (NaN < undefined) [ops.as:176]
+PASSED: ! (undefined < NaN) [ops.as:177]
+PASSED: typeof(r) == 'boolean' [ops.as:181]
+PASSED: r == false [ops.as:182]
+PASSED: typeof(r) == 'boolean' [ops.as:191]
+PASSED: r == false [ops.as:192]
+PASSED: z == y [ops.as:208]
+PASSED: z == y [ops.as:213]
+PASSED: z == y [ops.as:218]
+PASSED: z == y [ops.as:223]
+PASSED: z == "1.999" [ops.as:228]
+PASSED: z == y [ops.as:233]
+PASSED: z == "adcd" [ops.as:239]
+PASSED: z == "adcd" [ops.as:247]
+PASSED: z == x [ops.as:252]
+PASSED: z == y [ops.as:257]
+PASSED: z == y [ops.as:262]
+PASSED: z == y [ops.as:266]
+PASSED: z == "adcd" [ops.as:272]
+PASSED: z == y [ops.as:288]
+PASSED: z == y [ops.as:293]
+PASSED: z == y [ops.as:298]
+PASSED: z == "abcd" [ops.as:315]
+PASSED: z == "abcd" [ops.as:323]
+PASSED: z == y [ops.as:328]
+PASSED: z == y [ops.as:333]
+PASSED: typeof(z) == 'string' [ops.as:338]
+PASSED: typeof(z) == 'string' [ops.as:343]
+PASSED: z == y [ops.as:348]
+PASSED: typeof(z) == 'boolean' [ops.as:360]
+PASSED: z [ops.as:362]
+PASSED: typeof(z) == 'boolean' [ops.as:371]
+PASSED: !z [ops.as:373]
+PASSED: typeof(z) == 'boolean' [ops.as:382]
+PASSED: !z [ops.as:383]
+PASSED: typeof(z) == 'boolean' [ops.as:389]
+PASSED: !z [ops.as:390]
+PASSED: x&y == 1 [ops.as:400]
+PASSED: x&y == 0 [ops.as:404]
+PASSED: x&y == 1 [ops.as:408]
+PASSED: x&y == 1 [ops.as:412]
+PASSED: x&y == 1 [ops.as:416]
+PASSED: x&y == 1 [ops.as:420]
+PASSED: x&y == 1 [ops.as:424]
+PASSED: x&y == 1 [ops.as:428]
+PASSED: x&y == 3 [ops.as:432]
+PASSED: x&y == 3 [ops.as:436]
+PASSED: (undefined&1) == 0 [ops.as:438]
+PASSED: (1&undefined) == 0 [ops.as:439]
+PASSED: (1&null) == 0 [ops.as:440]
+PASSED: (null&1) == 0 [ops.as:441]
+PASSED: (null&null) == 0 [ops.as:442]
+PASSED: (3&2) == 2 [ops.as:443]
+PASSED: (-1 & 1) == 1 [ops.as:446]
+PASSED: (1 & -1) == 1 [ops.as:447]
+PASSED: (-2 & 1) == 0 [ops.as:449]
+PASSED: (1 & -2) == 0 [ops.as:450]
+PASSED: x|y == 9 [ops.as:458]
+PASSED: x|y == 9 [ops.as:462]
+PASSED: x|y == 9 [ops.as:466]
+PASSED: x|y == 9 [ops.as:470]
+PASSED: x|y == 9 [ops.as:474]
+PASSED: x|y == 9 [ops.as:478]
+PASSED: (undefined|1) == 1 [ops.as:480]
+PASSED: (1|undefined) == 1 [ops.as:481]
+PASSED: (undefined|undefined) == 0 [ops.as:482]
+PASSED: (null|1) == 1 [ops.as:483]
+PASSED: (1|null) == 1 [ops.as:484]
+PASSED: (null|null) == 0 [ops.as:485]
+PASSED: (8|4) == 12 [ops.as:486]
+PASSED: (0xffffffff|0) == -1 [ops.as:490]
+PASSED: (undefined^1) == 1 [ops.as:496]
+PASSED: (1^undefined) == 1 [ops.as:497]
+PASSED: (undefined^undefined) == 0 [ops.as:498]
+PASSED: (null^1) == 1 [ops.as:499]
+PASSED: (1^null) == 1 [ops.as:500]
+PASSED: (null^null) == 0 [ops.as:501]
+PASSED: (8^12) == 4 [ops.as:502]
+PASSED: x^y == 3 [ops.as:506]
+PASSED: x^y == 3 [ops.as:510]
+PASSED: x^y == 3 [ops.as:514]
+PASSED: x^y == 3 [ops.as:518]
+PASSED: x^y == 3 [ops.as:522]
+PASSED: x^y == 3 [ops.as:526]
+PASSED: y == 1049601 [ops.as:530]
+PASSED: y == 4 [ops.as:538]
+PASSED: y == -65536 [ops.as:545]
+PASSED: y == -65536 [ops.as:549]
+PASSED: y == -65536 [ops.as:553]
+PASSED: y == 177209344 [ops.as:557]
+PASSED: y == 4 [ops.as:561]
+PASSED: typeof(y) == 'number' [ops.as:565]
+PASSED: ! isnan(y) [ops.as:566]
+PASSED: y == 0 [ops.as:567]
+PASSED: 0 << 1 == 0 [ops.as:569]
+PASSED: y == 0 [ops.as:573]
+PASSED: y == 0 [ops.as:577]
+PASSED: y == 6 [ops.as:581]
+PASSED: y == 6 [ops.as:585]
+PASSED: y == 6 [ops.as:589]
+PASSED: y == 2147483647 [ops.as:592]
+PASSED: y == 2147483647 [ops.as:595]
+PASSED: y == 1 [ops.as:603]
+PASSED: y == -1 [ops.as:607]
+PASSED: y == 1 [ops.as:611]
+PASSED: y == 0 [ops.as:615]
+PASSED: y == 0 [ops.as:619]
+PASSED: y == 0 [ops.as:623]
+PASSED: y == 3 [ops.as:627]
+PASSED: y == 3 [ops.as:631]
+PASSED: y == 3 [ops.as:635]
+PASSED: y == 1025 [ops.as:639]
+PASSED: y == -1 [ops.as:643]
+PASSED: y == -32 [ops.as:647]
+PASSED: y == -1023 [ops.as:651]
+PASSED: y == 32800 [ops.as:655]
+PASSED: y == 16400 [ops.as:659]
+PASSED: y == 0 [ops.as:663]
+PASSED: y == 0 [ops.as:672]
+PASSED: y == 2 [ops.as:675]
+PASSED: y == -1 [ops.as:678]
+PASSED: y == -1 [ops.as:681]
+PASSED: y == -1 [ops.as:684]
+PASSED: y == -1 [ops.as:687]
+PASSED: y == -1 [ops.as:690]
+PASSED: y == -1 [ops.as:693]
+PASSED: y == -1 [ops.as:696]
+PASSED: y == -1 [ops.as:699]
+PASSED: y == -2 [ops.as:702]
+PASSED: y == -2 [ops.as:705]
+PASSED: y == 0 [ops.as:720]
+PASSED: y == -1 [ops.as:724]
+PASSED: (y-0.9) < 0.001 [ops.as:729]
+PASSED: (y+1.0) < 0.001 [ops.as:734]
+PASSED: typeof(y) == 'number' [ops.as:738]
+XPASSED: y!=NaN [ops.as:739]
+PASSED: ! (NaN!=NaN) [ops.as:740]
+PASSED: isNaN(y) [ops.as:741]
+PASSED: isNaN(NaN) [ops.as:742]
+PASSED: y == 1 [ops.as:750]
+PASSED: y == 0 [ops.as:754]
+PASSED: (y-2.9) < 0.001 [ops.as:759]
+PASSED: y == 1 [ops.as:763]
+XPASSED: y!=NaN [ops.as:767]
+PASSED: isNaN(y) [ops.as:768]
+PASSED: !"" [ops.as:774]
+PASSED: !"a" [ops.as:776]
+PASSED: !"true" [ops.as:777]
+PASSED: !"false" [ops.as:778]
+PASSED: !"0000.000" [ops.as:779]
+PASSED: "1" [ops.as:787]
+PASSED: !false [ops.as:788]
+PASSED: true [ops.as:789]
+PASSED: !0 [ops.as:790]
+PASSED: 4 [ops.as:791]
+PASSED: _root [ops.as:792]
+PASSED: !null [ops.as:793]
+PASSED: !undefined [ops.as:794]
+totals
diff --git a/test/gnash/actionscript.all/pending/ops-7.swf b/test/gnash/actionscript.all/pending/ops-7.swf
new file mode 100644
index 0000000..b50615a
Binary files /dev/null and b/test/gnash/actionscript.all/pending/ops-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/ops-7.swf.trace b/test/gnash/actionscript.all/pending/ops-7.swf.trace
new file mode 100644
index 0000000..91115eb
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/ops-7.swf.trace
@@ -0,0 +1,242 @@
+PASSED: 'xyz' == 'xyz' [ops.as:30]
+PASSED: !('xyz' == 'XYZ') [ops.as:31]
+PASSED: !('xyz' == 'abc') [ops.as:32]
+PASSED: 1 == 1 [ops.as:33]
+PASSED: 1 == "1" [ops.as:34]
+PASSED: "1" == 1 [ops.as:35]
+PASSED: 0 == -0 [ops.as:36]
+PASSED: 0 == "-0" [ops.as:37]
+PASSED: "0" == -0 [ops.as:38]
+PASSED: null == null [ops.as:39]
+PASSED: undefined == undefined [ops.as:40]
+PASSED: null==undefined [ops.as:41]
+PASSED: undefined==null [ops.as:42]
+PASSED: ! (NaN == 0) [ops.as:43]
+PASSED: ! (0 == NaN) [ops.as:44]
+PASSED: ! ('string' == 0) [ops.as:45]
+PASSED: ! (0 == 'string') [ops.as:46]
+PASSED: ! ('string' == NaN) [ops.as:47]
+PASSED: ! (NaN == 'string') [ops.as:48]
+PASSED: ! (Infinity == 'Infinity') [ops.as:49]
+PASSED: ! ('Infinity' == Infinity) [ops.as:50]
+PASSED: ! (-Infinity == '-Infinity') [ops.as:51]
+PASSED: ! ('-Infinity' == -Infinity) [ops.as:52]
+PASSED: Infinity == Infinity [ops.as:53]
+PASSED: -Infinity == -Infinity [ops.as:54]
+PASSED: ! (-Infinity == Infinity) [ops.as:55]
+PASSED: x/0 == Infinity [ops.as:57]
+PASSED: -x/0 == -Infinity [ops.as:58]
+PASSED: 1==true [ops.as:59]
+PASSED: true==1 [ops.as:60]
+PASSED: 2!=true [ops.as:61]
+PASSED: true!=2 [ops.as:62]
+PASSED: 1+true == 2 [ops.as:63]
+PASSED: true+1 == 2 [ops.as:64]
+PASSED: 1+false == 1 [ops.as:65]
+PASSED: false+1 == 1 [ops.as:66]
+PASSED: true+true == 2 [ops.as:67]
+PASSED: true+false == 1 [ops.as:68]
+PASSED: false == 0 [ops.as:69]
+PASSED: false+false == 0 [ops.as:70]
+PASSED: ! (z == 0) [ops.as:78]
+PASSED: isNaN(z) [ops.as:79]
+XPASSED: ! (z == NaN) [ops.as:82]
+PASSED: NaN == NaN [ops.as:85]
+PASSED: x == y [ops.as:90]
+PASSED: typeof(x) == 'number' [ops.as:96]
+PASSED: typeof(y) == 'number' [ops.as:97]
+PASSED: typeof(z) == 'number' [ops.as:98]
+PASSED: isNaN(x) [ops.as:99]
+PASSED: isNaN(y) [ops.as:100]
+PASSED: isNaN(z) [ops.as:101]
+XPASSED: x != y [ops.as:102]
+XPASSED: y != z [ops.as:103]
+XPASSED: x != z [ops.as:104]
+PASSED: x == x [ops.as:105]
+PASSED: y == y [ops.as:106]
+PASSED: z == z [ops.as:107]
+PASSED: (1/0) == (1/0) [ops.as:108]
+PASSED: ! (ary1 == ary2) [ops.as:113]
+PASSED: ! (ary1 == "1,2,3") [ops.as:114]
+PASSED: ! ("1,2,3" == ary1) [ops.as:115]
+PASSED: ! (str1 == str3) [ops.as:121]
+PASSED: str1 == "hello" [ops.as:122]
+PASSED: "hello" == str1 [ops.as:123]
+PASSED: str3 == 3.0 [ops.as:125]
+PASSED: str3.toString() == 3.0 [ops.as:126]
+PASSED: ! (str1 == 0) [ops.as:128]
+PASSED: ! (str1 == NaN) [ops.as:129]
+PASSED: ! (str1 == str2) [ops.as:132]
+PASSED: "_root" != _root [ops.as:139]
+PASSED: _root != "_root" [ops.as:140]
+PASSED: _root == o [ops.as:142]
+PASSED: o == _root [ops.as:143]
+PASSED: x<y [ops.as:151]
+PASSED: x<y [ops.as:155]
+PASSED: x<y [ops.as:159]
+PASSED: x<y [ops.as:163]
+PASSED: x<y [ops.as:167]
+PASSED: x<y [ops.as:171]
+PASSED: ! (NaN < NaN) [ops.as:173]
+PASSED: ! (undefined < undefined) [ops.as:174]
+PASSED: ! (NaN < undefined) [ops.as:176]
+PASSED: ! (undefined < NaN) [ops.as:177]
+PASSED: typeof(r) == 'undefined' [ops.as:184]
+PASSED: r != true [ops.as:185]
+PASSED: r != false [ops.as:186]
+PASSED: typeof(r) == 'undefined' [ops.as:194]
+PASSED: r != true [ops.as:195]
+PASSED: r != false [ops.as:196]
+PASSED: z == y [ops.as:208]
+PASSED: z == y [ops.as:213]
+PASSED: z == y [ops.as:218]
+PASSED: z == y [ops.as:223]
+PASSED: z == "1.999" [ops.as:228]
+PASSED: z == y [ops.as:233]
+PASSED: z == true [ops.as:241]
+PASSED: z == "adcd" [ops.as:247]
+PASSED: z == x [ops.as:252]
+PASSED: z == y [ops.as:257]
+PASSED: z == y [ops.as:262]
+PASSED: z == y [ops.as:266]
+PASSED: z == false [ops.as:274]
+PASSED: z == y [ops.as:288]
+PASSED: z == y [ops.as:293]
+PASSED: z == y [ops.as:298]
+PASSED: z == "abcd" [ops.as:317]
+PASSED: z == "abcd" [ops.as:323]
+PASSED: z == y [ops.as:328]
+PASSED: z == y [ops.as:333]
+PASSED: typeof(z) == 'string' [ops.as:338]
+PASSED: typeof(z) == 'string' [ops.as:343]
+PASSED: z == y [ops.as:348]
+PASSED: typeof(z) == 'boolean' [ops.as:360]
+PASSED: !z [ops.as:364]
+PASSED: typeof(z) == 'boolean' [ops.as:371]
+PASSED: z [ops.as:375]
+PASSED: typeof(z) == 'boolean' [ops.as:382]
+PASSED: !z [ops.as:383]
+PASSED: typeof(z) == 'boolean' [ops.as:389]
+PASSED: !z [ops.as:390]
+PASSED: x&y == 1 [ops.as:400]
+PASSED: x&y == 0 [ops.as:404]
+PASSED: x&y == 1 [ops.as:408]
+PASSED: x&y == 1 [ops.as:412]
+PASSED: x&y == 1 [ops.as:416]
+PASSED: x&y == 1 [ops.as:420]
+PASSED: x&y == 1 [ops.as:424]
+PASSED: x&y == 1 [ops.as:428]
+PASSED: x&y == 3 [ops.as:432]
+PASSED: x&y == 3 [ops.as:436]
+PASSED: (undefined&1) == 0 [ops.as:438]
+PASSED: (1&undefined) == 0 [ops.as:439]
+PASSED: (1&null) == 0 [ops.as:440]
+PASSED: (null&1) == 0 [ops.as:441]
+PASSED: (null&null) == 0 [ops.as:442]
+PASSED: (3&2) == 2 [ops.as:443]
+PASSED: (-1 & 1) == 1 [ops.as:446]
+PASSED: (1 & -1) == 1 [ops.as:447]
+PASSED: (-2 & 1) == 0 [ops.as:449]
+PASSED: (1 & -2) == 0 [ops.as:450]
+PASSED: x|y == 9 [ops.as:458]
+PASSED: x|y == 9 [ops.as:462]
+PASSED: x|y == 9 [ops.as:466]
+PASSED: x|y == 9 [ops.as:470]
+PASSED: x|y == 9 [ops.as:474]
+PASSED: x|y == 9 [ops.as:478]
+PASSED: (undefined|1) == 1 [ops.as:480]
+PASSED: (1|undefined) == 1 [ops.as:481]
+PASSED: (undefined|undefined) == 0 [ops.as:482]
+PASSED: (null|1) == 1 [ops.as:483]
+PASSED: (1|null) == 1 [ops.as:484]
+PASSED: (null|null) == 0 [ops.as:485]
+PASSED: (8|4) == 12 [ops.as:486]
+PASSED: (0xffffffff|0) == -1 [ops.as:490]
+PASSED: (undefined^1) == 1 [ops.as:496]
+PASSED: (1^undefined) == 1 [ops.as:497]
+PASSED: (undefined^undefined) == 0 [ops.as:498]
+PASSED: (null^1) == 1 [ops.as:499]
+PASSED: (1^null) == 1 [ops.as:500]
+PASSED: (null^null) == 0 [ops.as:501]
+PASSED: (8^12) == 4 [ops.as:502]
+PASSED: x^y == 3 [ops.as:506]
+PASSED: x^y == 3 [ops.as:510]
+PASSED: x^y == 3 [ops.as:514]
+PASSED: x^y == 3 [ops.as:518]
+PASSED: x^y == 3 [ops.as:522]
+PASSED: x^y == 3 [ops.as:526]
+PASSED: y == 1049601 [ops.as:530]
+PASSED: y == 4 [ops.as:538]
+PASSED: y == -65536 [ops.as:545]
+PASSED: y == -65536 [ops.as:549]
+PASSED: y == -65536 [ops.as:553]
+PASSED: y == 177209344 [ops.as:557]
+PASSED: y == 4 [ops.as:561]
+PASSED: typeof(y) == 'number' [ops.as:565]
+PASSED: ! isnan(y) [ops.as:566]
+PASSED: y == 0 [ops.as:567]
+PASSED: 0 << 1 == 0 [ops.as:569]
+PASSED: y == 0 [ops.as:573]
+PASSED: y == 0 [ops.as:577]
+PASSED: y == 6 [ops.as:581]
+PASSED: y == 6 [ops.as:585]
+PASSED: y == 6 [ops.as:589]
+PASSED: y == 2147483647 [ops.as:592]
+PASSED: y == 2147483647 [ops.as:595]
+PASSED: y == 1 [ops.as:603]
+PASSED: y == -1 [ops.as:607]
+PASSED: y == 1 [ops.as:611]
+PASSED: y == 0 [ops.as:615]
+PASSED: y == 0 [ops.as:619]
+PASSED: y == 0 [ops.as:623]
+PASSED: y == 3 [ops.as:627]
+PASSED: y == 3 [ops.as:631]
+PASSED: y == 3 [ops.as:635]
+PASSED: y == 1025 [ops.as:639]
+PASSED: y == -1 [ops.as:643]
+PASSED: y == -32 [ops.as:647]
+PASSED: y == -1023 [ops.as:651]
+PASSED: y == 32800 [ops.as:655]
+PASSED: y == 16400 [ops.as:659]
+PASSED: y == 0 [ops.as:663]
+PASSED: y == 0 [ops.as:672]
+PASSED: y == 2 [ops.as:675]
+PASSED: y == -1 [ops.as:678]
+PASSED: y == -1 [ops.as:681]
+PASSED: y == -1 [ops.as:684]
+PASSED: y == -1 [ops.as:687]
+PASSED: y == -1 [ops.as:690]
+PASSED: y == -1 [ops.as:693]
+PASSED: y == -1 [ops.as:696]
+PASSED: y == -1 [ops.as:699]
+PASSED: y == -2 [ops.as:702]
+PASSED: y == -2 [ops.as:705]
+PASSED: y == 0 [ops.as:720]
+PASSED: y == -1 [ops.as:724]
+PASSED: (y-0.9) < 0.001 [ops.as:729]
+PASSED: (y+1.0) < 0.001 [ops.as:734]
+PASSED: typeof(y) == 'number' [ops.as:738]
+XPASSED: y!=NaN [ops.as:739]
+PASSED: ! (NaN!=NaN) [ops.as:740]
+PASSED: isNaN(y) [ops.as:741]
+PASSED: isNaN(NaN) [ops.as:742]
+PASSED: y == 1 [ops.as:750]
+PASSED: y == 0 [ops.as:754]
+PASSED: (y-2.9) < 0.001 [ops.as:759]
+PASSED: y == 1 [ops.as:763]
+XPASSED: y!=NaN [ops.as:767]
+PASSED: isNaN(y) [ops.as:768]
+PASSED: !"" [ops.as:774]
+PASSED: "a" [ops.as:781]
+PASSED: "true" [ops.as:782]
+PASSED: "false" [ops.as:783]
+PASSED: "0000.000" [ops.as:784]
+PASSED: "1" [ops.as:787]
+PASSED: !false [ops.as:788]
+PASSED: true [ops.as:789]
+PASSED: !0 [ops.as:790]
+PASSED: 4 [ops.as:791]
+PASSED: _root [ops.as:792]
+PASSED: !null [ops.as:793]
+PASSED: !undefined [ops.as:794]
+totals
diff --git a/test/gnash/actionscript.all/pending/ops-8.swf b/test/gnash/actionscript.all/pending/ops-8.swf
new file mode 100644
index 0000000..ad42e60
Binary files /dev/null and b/test/gnash/actionscript.all/pending/ops-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/ops-8.swf.trace b/test/gnash/actionscript.all/pending/ops-8.swf.trace
new file mode 100644
index 0000000..91115eb
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/ops-8.swf.trace
@@ -0,0 +1,242 @@
+PASSED: 'xyz' == 'xyz' [ops.as:30]
+PASSED: !('xyz' == 'XYZ') [ops.as:31]
+PASSED: !('xyz' == 'abc') [ops.as:32]
+PASSED: 1 == 1 [ops.as:33]
+PASSED: 1 == "1" [ops.as:34]
+PASSED: "1" == 1 [ops.as:35]
+PASSED: 0 == -0 [ops.as:36]
+PASSED: 0 == "-0" [ops.as:37]
+PASSED: "0" == -0 [ops.as:38]
+PASSED: null == null [ops.as:39]
+PASSED: undefined == undefined [ops.as:40]
+PASSED: null==undefined [ops.as:41]
+PASSED: undefined==null [ops.as:42]
+PASSED: ! (NaN == 0) [ops.as:43]
+PASSED: ! (0 == NaN) [ops.as:44]
+PASSED: ! ('string' == 0) [ops.as:45]
+PASSED: ! (0 == 'string') [ops.as:46]
+PASSED: ! ('string' == NaN) [ops.as:47]
+PASSED: ! (NaN == 'string') [ops.as:48]
+PASSED: ! (Infinity == 'Infinity') [ops.as:49]
+PASSED: ! ('Infinity' == Infinity) [ops.as:50]
+PASSED: ! (-Infinity == '-Infinity') [ops.as:51]
+PASSED: ! ('-Infinity' == -Infinity) [ops.as:52]
+PASSED: Infinity == Infinity [ops.as:53]
+PASSED: -Infinity == -Infinity [ops.as:54]
+PASSED: ! (-Infinity == Infinity) [ops.as:55]
+PASSED: x/0 == Infinity [ops.as:57]
+PASSED: -x/0 == -Infinity [ops.as:58]
+PASSED: 1==true [ops.as:59]
+PASSED: true==1 [ops.as:60]
+PASSED: 2!=true [ops.as:61]
+PASSED: true!=2 [ops.as:62]
+PASSED: 1+true == 2 [ops.as:63]
+PASSED: true+1 == 2 [ops.as:64]
+PASSED: 1+false == 1 [ops.as:65]
+PASSED: false+1 == 1 [ops.as:66]
+PASSED: true+true == 2 [ops.as:67]
+PASSED: true+false == 1 [ops.as:68]
+PASSED: false == 0 [ops.as:69]
+PASSED: false+false == 0 [ops.as:70]
+PASSED: ! (z == 0) [ops.as:78]
+PASSED: isNaN(z) [ops.as:79]
+XPASSED: ! (z == NaN) [ops.as:82]
+PASSED: NaN == NaN [ops.as:85]
+PASSED: x == y [ops.as:90]
+PASSED: typeof(x) == 'number' [ops.as:96]
+PASSED: typeof(y) == 'number' [ops.as:97]
+PASSED: typeof(z) == 'number' [ops.as:98]
+PASSED: isNaN(x) [ops.as:99]
+PASSED: isNaN(y) [ops.as:100]
+PASSED: isNaN(z) [ops.as:101]
+XPASSED: x != y [ops.as:102]
+XPASSED: y != z [ops.as:103]
+XPASSED: x != z [ops.as:104]
+PASSED: x == x [ops.as:105]
+PASSED: y == y [ops.as:106]
+PASSED: z == z [ops.as:107]
+PASSED: (1/0) == (1/0) [ops.as:108]
+PASSED: ! (ary1 == ary2) [ops.as:113]
+PASSED: ! (ary1 == "1,2,3") [ops.as:114]
+PASSED: ! ("1,2,3" == ary1) [ops.as:115]
+PASSED: ! (str1 == str3) [ops.as:121]
+PASSED: str1 == "hello" [ops.as:122]
+PASSED: "hello" == str1 [ops.as:123]
+PASSED: str3 == 3.0 [ops.as:125]
+PASSED: str3.toString() == 3.0 [ops.as:126]
+PASSED: ! (str1 == 0) [ops.as:128]
+PASSED: ! (str1 == NaN) [ops.as:129]
+PASSED: ! (str1 == str2) [ops.as:132]
+PASSED: "_root" != _root [ops.as:139]
+PASSED: _root != "_root" [ops.as:140]
+PASSED: _root == o [ops.as:142]
+PASSED: o == _root [ops.as:143]
+PASSED: x<y [ops.as:151]
+PASSED: x<y [ops.as:155]
+PASSED: x<y [ops.as:159]
+PASSED: x<y [ops.as:163]
+PASSED: x<y [ops.as:167]
+PASSED: x<y [ops.as:171]
+PASSED: ! (NaN < NaN) [ops.as:173]
+PASSED: ! (undefined < undefined) [ops.as:174]
+PASSED: ! (NaN < undefined) [ops.as:176]
+PASSED: ! (undefined < NaN) [ops.as:177]
+PASSED: typeof(r) == 'undefined' [ops.as:184]
+PASSED: r != true [ops.as:185]
+PASSED: r != false [ops.as:186]
+PASSED: typeof(r) == 'undefined' [ops.as:194]
+PASSED: r != true [ops.as:195]
+PASSED: r != false [ops.as:196]
+PASSED: z == y [ops.as:208]
+PASSED: z == y [ops.as:213]
+PASSED: z == y [ops.as:218]
+PASSED: z == y [ops.as:223]
+PASSED: z == "1.999" [ops.as:228]
+PASSED: z == y [ops.as:233]
+PASSED: z == true [ops.as:241]
+PASSED: z == "adcd" [ops.as:247]
+PASSED: z == x [ops.as:252]
+PASSED: z == y [ops.as:257]
+PASSED: z == y [ops.as:262]
+PASSED: z == y [ops.as:266]
+PASSED: z == false [ops.as:274]
+PASSED: z == y [ops.as:288]
+PASSED: z == y [ops.as:293]
+PASSED: z == y [ops.as:298]
+PASSED: z == "abcd" [ops.as:317]
+PASSED: z == "abcd" [ops.as:323]
+PASSED: z == y [ops.as:328]
+PASSED: z == y [ops.as:333]
+PASSED: typeof(z) == 'string' [ops.as:338]
+PASSED: typeof(z) == 'string' [ops.as:343]
+PASSED: z == y [ops.as:348]
+PASSED: typeof(z) == 'boolean' [ops.as:360]
+PASSED: !z [ops.as:364]
+PASSED: typeof(z) == 'boolean' [ops.as:371]
+PASSED: z [ops.as:375]
+PASSED: typeof(z) == 'boolean' [ops.as:382]
+PASSED: !z [ops.as:383]
+PASSED: typeof(z) == 'boolean' [ops.as:389]
+PASSED: !z [ops.as:390]
+PASSED: x&y == 1 [ops.as:400]
+PASSED: x&y == 0 [ops.as:404]
+PASSED: x&y == 1 [ops.as:408]
+PASSED: x&y == 1 [ops.as:412]
+PASSED: x&y == 1 [ops.as:416]
+PASSED: x&y == 1 [ops.as:420]
+PASSED: x&y == 1 [ops.as:424]
+PASSED: x&y == 1 [ops.as:428]
+PASSED: x&y == 3 [ops.as:432]
+PASSED: x&y == 3 [ops.as:436]
+PASSED: (undefined&1) == 0 [ops.as:438]
+PASSED: (1&undefined) == 0 [ops.as:439]
+PASSED: (1&null) == 0 [ops.as:440]
+PASSED: (null&1) == 0 [ops.as:441]
+PASSED: (null&null) == 0 [ops.as:442]
+PASSED: (3&2) == 2 [ops.as:443]
+PASSED: (-1 & 1) == 1 [ops.as:446]
+PASSED: (1 & -1) == 1 [ops.as:447]
+PASSED: (-2 & 1) == 0 [ops.as:449]
+PASSED: (1 & -2) == 0 [ops.as:450]
+PASSED: x|y == 9 [ops.as:458]
+PASSED: x|y == 9 [ops.as:462]
+PASSED: x|y == 9 [ops.as:466]
+PASSED: x|y == 9 [ops.as:470]
+PASSED: x|y == 9 [ops.as:474]
+PASSED: x|y == 9 [ops.as:478]
+PASSED: (undefined|1) == 1 [ops.as:480]
+PASSED: (1|undefined) == 1 [ops.as:481]
+PASSED: (undefined|undefined) == 0 [ops.as:482]
+PASSED: (null|1) == 1 [ops.as:483]
+PASSED: (1|null) == 1 [ops.as:484]
+PASSED: (null|null) == 0 [ops.as:485]
+PASSED: (8|4) == 12 [ops.as:486]
+PASSED: (0xffffffff|0) == -1 [ops.as:490]
+PASSED: (undefined^1) == 1 [ops.as:496]
+PASSED: (1^undefined) == 1 [ops.as:497]
+PASSED: (undefined^undefined) == 0 [ops.as:498]
+PASSED: (null^1) == 1 [ops.as:499]
+PASSED: (1^null) == 1 [ops.as:500]
+PASSED: (null^null) == 0 [ops.as:501]
+PASSED: (8^12) == 4 [ops.as:502]
+PASSED: x^y == 3 [ops.as:506]
+PASSED: x^y == 3 [ops.as:510]
+PASSED: x^y == 3 [ops.as:514]
+PASSED: x^y == 3 [ops.as:518]
+PASSED: x^y == 3 [ops.as:522]
+PASSED: x^y == 3 [ops.as:526]
+PASSED: y == 1049601 [ops.as:530]
+PASSED: y == 4 [ops.as:538]
+PASSED: y == -65536 [ops.as:545]
+PASSED: y == -65536 [ops.as:549]
+PASSED: y == -65536 [ops.as:553]
+PASSED: y == 177209344 [ops.as:557]
+PASSED: y == 4 [ops.as:561]
+PASSED: typeof(y) == 'number' [ops.as:565]
+PASSED: ! isnan(y) [ops.as:566]
+PASSED: y == 0 [ops.as:567]
+PASSED: 0 << 1 == 0 [ops.as:569]
+PASSED: y == 0 [ops.as:573]
+PASSED: y == 0 [ops.as:577]
+PASSED: y == 6 [ops.as:581]
+PASSED: y == 6 [ops.as:585]
+PASSED: y == 6 [ops.as:589]
+PASSED: y == 2147483647 [ops.as:592]
+PASSED: y == 2147483647 [ops.as:595]
+PASSED: y == 1 [ops.as:603]
+PASSED: y == -1 [ops.as:607]
+PASSED: y == 1 [ops.as:611]
+PASSED: y == 0 [ops.as:615]
+PASSED: y == 0 [ops.as:619]
+PASSED: y == 0 [ops.as:623]
+PASSED: y == 3 [ops.as:627]
+PASSED: y == 3 [ops.as:631]
+PASSED: y == 3 [ops.as:635]
+PASSED: y == 1025 [ops.as:639]
+PASSED: y == -1 [ops.as:643]
+PASSED: y == -32 [ops.as:647]
+PASSED: y == -1023 [ops.as:651]
+PASSED: y == 32800 [ops.as:655]
+PASSED: y == 16400 [ops.as:659]
+PASSED: y == 0 [ops.as:663]
+PASSED: y == 0 [ops.as:672]
+PASSED: y == 2 [ops.as:675]
+PASSED: y == -1 [ops.as:678]
+PASSED: y == -1 [ops.as:681]
+PASSED: y == -1 [ops.as:684]
+PASSED: y == -1 [ops.as:687]
+PASSED: y == -1 [ops.as:690]
+PASSED: y == -1 [ops.as:693]
+PASSED: y == -1 [ops.as:696]
+PASSED: y == -1 [ops.as:699]
+PASSED: y == -2 [ops.as:702]
+PASSED: y == -2 [ops.as:705]
+PASSED: y == 0 [ops.as:720]
+PASSED: y == -1 [ops.as:724]
+PASSED: (y-0.9) < 0.001 [ops.as:729]
+PASSED: (y+1.0) < 0.001 [ops.as:734]
+PASSED: typeof(y) == 'number' [ops.as:738]
+XPASSED: y!=NaN [ops.as:739]
+PASSED: ! (NaN!=NaN) [ops.as:740]
+PASSED: isNaN(y) [ops.as:741]
+PASSED: isNaN(NaN) [ops.as:742]
+PASSED: y == 1 [ops.as:750]
+PASSED: y == 0 [ops.as:754]
+PASSED: (y-2.9) < 0.001 [ops.as:759]
+PASSED: y == 1 [ops.as:763]
+XPASSED: y!=NaN [ops.as:767]
+PASSED: isNaN(y) [ops.as:768]
+PASSED: !"" [ops.as:774]
+PASSED: "a" [ops.as:781]
+PASSED: "true" [ops.as:782]
+PASSED: "false" [ops.as:783]
+PASSED: "0000.000" [ops.as:784]
+PASSED: "1" [ops.as:787]
+PASSED: !false [ops.as:788]
+PASSED: true [ops.as:789]
+PASSED: !0 [ops.as:790]
+PASSED: 4 [ops.as:791]
+PASSED: _root [ops.as:792]
+PASSED: !null [ops.as:793]
+PASSED: !undefined [ops.as:794]
+totals
diff --git a/test/gnash/actionscript.all/pending/ops.as b/test/gnash/actionscript.all/pending/ops.as
new file mode 100644
index 0000000..5751a8f
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/ops.as
@@ -0,0 +1,812 @@
+// 
+//   Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modchecky
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; check not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fcheckth Floor, Boston, MA  02110-1301  USA
+//
+
+/*
+ *  Test binary predicates (equal, less_then, greater_then, logical and bitwise ops)
+ */
+
+
+rcsid="$Id: ops.as,v 1.38 2008/04/02 08:21:49 strk Exp $";
+#include "check.as"
+
+//--------------------------------------------
+// Equality operator (ACTION_NEWEQUALS : 0x49)
+//--------------------------------------------
+check('xyz' == 'xyz');
+check(!('xyz' == 'XYZ'));
+check(!('xyz' == 'abc'));
+check(1 == 1); // doh
+check(1 == "1");
+check("1" == 1);
+check(0 == -0);
+check(0 == "-0");
+check("0" == -0);
+check(null == null);
+check(undefined == undefined);
+check(null==undefined); 
+check(undefined==null); 
+check(! (NaN == 0) );
+check(! (0 == NaN) );
+check(! ('string' == 0) );
+check(! (0 == 'string') );
+check(! ('string' == NaN) );
+check(! (NaN == 'string') );
+check(! (Infinity == 'Infinity') );
+check(! ('Infinity' == Infinity) );
+check(! (-Infinity == '-Infinity') );
+check(! ('-Infinity' == -Infinity) );
+check(Infinity == Infinity);
+check(-Infinity == -Infinity);
+check(! (-Infinity == Infinity));
+x = 1;
+check_equals(x/0, Infinity);
+check_equals(-x/0, -Infinity);
+check(1==true);
+check(true==1);
+check(2!=true);
+check(true!=2);
+check_equals(1+true, 2);
+check_equals(true+1, 2);
+check_equals(1+false, 1);
+check_equals(false+1, 1);
+check_equals(true+true, 2);
+check_equals(true+false, 1);
+check_equals(false, 0);
+check_equals(false+false, 0);
+
+x = "abc";
+y = 0;
+z = x * y;
+
+// in swf4, z is 0, tested in swf4opcode.sc
+// in swf5~8, z is NaN.
+check(! (z == 0));  
+check(isNaN(z));
+// both EMACS and Moock's book says NaN != NaN, now I believe they are correct.
+// we have enough tests to confirm this.
+xcheck(! (z == NaN)); 
+// Deduction: Flash built-in NaN constant(string) has a special representation.
+// Note: This is the ONLY case where NaN == NaN, IIRC
+check(NaN == NaN);
+
+// for Number
+x = new Number(3);
+y = 3;
+check(x == y);
+
+// for different nan values...
+x = Number(new Number(NaN));
+y = NaN;
+z = 0/0;
+check_equals(typeof(x), 'number')
+check_equals(typeof(y), 'number');
+check_equals(typeof(z), 'number');
+check(isNaN(x));
+check(isNaN(y));
+check(isNaN(z));
+xcheck(x != y);
+xcheck(y != z);
+xcheck(x != z);
+check(x == x);
+check(y == y);
+check(z == z);
+check((1/0) == (1/0));
+
+// for Arrays
+ary1 = [1,2,3];
+ary2 = [1,2,3];
+check( ! (ary1 == ary2) ); // two different objects
+check( ! (ary1 == "1,2,3") ); // the array doesn't get converted to a string
+check( ! ("1,2,3" == ary1) ); // the array doesn't get converted to a string
+
+// for String
+str1 = new String("hello");
+str2 = new String("hello");
+str3 = new String("3");
+check( ! (str1 == str3) );  
+check_equals(str1, "hello"); // str1 is automatically converted to a string
+check_equals("hello", str1); // str1 is automatically converted to a string
+
+check_equals( str3, 3.0 ); // str3 (object) is automatically converted to a number 
+check_equals( str3.toString(), 3.0 ); // str3 (primitive string) is automatically converted to a number 
+
+check( ! (str1 == 0) ); // str1 (object) is NOT converted to a number (due to NaN?)
+check( ! (str1 == NaN) ); // str1 (object) is NOT converted to a number (due to NaN?)
+
+#if OUTPUT_VERSION > 5
+  check( ! (str1 == str2) ); // they are not the same object
+#else // OUTPUT_VERSION <= 5
+  check( str1 == str2 );  // SWF5 automatically converts to primitive before comparison !
+#endif // OUTPUT_VERSION <= 5
+
+// for MovieClip
+
+check("_root" != _root);
+check(_root != "_root");
+o = new Object(); o.valueOf = function() { return _root; };
+check_equals(_root, o);
+check_equals(o, _root);
+
+//---------------------------------------------
+// Less then operator (ACTION_LESSTHAN : 0x0F)
+//---------------------------------------------
+
+x = 0.999;
+y = 1.0;
+check(x<y);
+
+x=String("0.999");
+y=String("1.0");
+check(x<y);
+
+x=String("A");
+y=String("a");
+check(x<y);
+
+x=String("abc");
+y=String("abcd");
+check(x<y);
+
+x=0.999;
+y=String("1.000");
+check(x<y);
+
+x=String("0.999");
+y=1.0;
+check(x<y);
+
+check(! (NaN < NaN) );
+check(! (undefined < undefined) );
+
+check(! (NaN < undefined) );
+check(! (undefined < NaN) );
+
+r = null < undefined;
+#if OUTPUT_VERSION < 7
+ check_equals(typeof(r), 'boolean');
+ check_equals(r, false);
+#else
+ check_equals(typeof(r), 'undefined');
+ check(r != true);
+ check(r != false);
+#endif
+
+r = null > undefined;
+#if OUTPUT_VERSION < 7
+ check_equals(typeof(r), 'boolean');
+ check_equals(r, false);
+#else
+ check_equals(typeof(r), 'undefined');
+ check(r != true);
+ check(r != false);
+#endif
+
+//------------------------------------------------
+// Logical AND operator (ACTION_LOGICALAND : 0x10)
+//------------------------------------------------
+
+#ifndef MING_LOGICAL_ANDOR_BROKEN
+
+x = true;
+y = true;
+z = x && y;
+check_equals(z, y);
+
+x = true;
+y = false;
+z = x && y;
+check_equals(z, y);
+
+x = true;
+y = 0;
+z=x && y;
+check_equals(z, y);
+
+x = true;
+y = 1;
+z=x && y;
+check_equals(z, y);
+
+x = true;
+y = String("1.999");
+z=x && y;
+check_equals(z, "1.999"); 
+
+x=String("1.999");
+y=true;
+z=x && y;
+check_equals(z, y);
+
+x=String("adcd");
+y=true;
+z=x && y;
+#if OUTPUT_VERSION < 7
+	check_equals(z, "adcd");
+#else
+	check_equals(z, true);
+#endif 
+
+x=true;
+y=String("adcd");
+z=x && y;
+check_equals(z, "adcd");
+
+x=0;
+y=true;
+z=x && y;
+check_equals(z, x);
+
+x=1;
+y=false;
+z=x && y;
+check_equals(z, y);
+
+x = new Number(9);
+y=false;
+z=x && y;
+check_equals(z, y);
+
+x = new Object();
+y = false;
+check_equals(z, y);
+
+x=String("adcd");
+y=false;
+z=x && y;
+#if OUTPUT_VERSION < 7
+	check_equals(z, "adcd"); 
+#else
+	check_equals(z, false);
+#endif
+
+#endif // ndef MING_LOGICAL_ANDOR_BROKEN
+
+//------------------------------------------------
+// Logical OR operator (ACTION_LOGICALOR : 0x11)
+//------------------------------------------------
+
+#ifndef MING_LOGICAL_ANDOR_BROKEN
+
+x = 0;
+y = 0;
+z = x || y;
+check_equals(z, y); 
+
+x = 0;
+y = 1;
+z = x || y;
+check_equals(z, y); 
+
+x = 0;
+y = 0.0001;
+z = x || y;
+check_equals(z, y); 
+
+x = 0;
+y = "abcd";
+z = x || y;
+#if OUTPUT_VERSION == 4
+	check_equals(z, 1); 
+#elseif < 7
+	check_equals(z, false); 
+#esle
+	check_equals(z, true);
+#endif
+
+x = 0;
+y = String("abcd");
+z = x || y;
+#if OUTPUT_VERSION < 7
+	check_equals(z, "abcd"); 
+#else
+	check_equals(z, "abcd");
+#endif
+
+x = 0;
+y = new String("abcd");
+z = x || y;
+check_equals(z, "abcd");
+
+x = 0;
+y = Object();
+z = x || y;
+check_equals(z, y);
+
+x = 0;
+y = new Object();
+z = x || y;
+check_equals(z, y);
+
+x = 0;
+y = "0";
+z = x || y;
+check_equals(typeof(z), 'string');
+
+x = 0;
+y = String("0");
+z = x || y;
+check_equals(typeof(z), 'string');
+
+x = 0;
+y = new String("0");
+z = x || y;
+check_equals(z, y);
+
+#endif // ndef MING_LOGICAL_ANDOR_BROKEN
+
+//------------------------------------------------
+// String comparison (ACTION_STRINGCOMPARE : 0x29)
+//------------------------------------------------
+
+asm {
+	push "z", undefined, null
+	stringlessthan setvariable
+};
+check_equals(typeof(z), 'boolean');
+#if OUTPUT_VERSION < 7
+ check(z);
+#else
+ check(!z);
+#endif
+
+asm {
+	push "z", null, undefined
+	stringlessthan setvariable
+};
+check_equals(typeof(z), 'boolean');
+#if OUTPUT_VERSION < 7
+ check(!z);
+#else
+ check(z);
+#endif
+
+asm {
+	push "z", null, null
+	stringlessthan setvariable
+};
+check_equals(typeof(z), 'boolean');
+check(!z);
+
+asm {
+	push "z", undefined, undefined
+	stringlessthan setvariable
+};
+check_equals(typeof(z), 'boolean');
+check(!z);
+
+// TODO: add saner tests for stringcompare here
+
+//------------------------------------------------
+// Bitwise AND operator (ACTION_BITWISEAND : 0x60)
+//------------------------------------------------
+
+x=1;
+y=1;
+check_equals(x&y, 1); 
+
+x=1;
+y=2;
+check_equals(x&y, 0); 
+
+x = 1.0;
+y = 3.0;
+check_equals(x&y, 1); 
+
+x = 1.9999;
+y = 3.0;
+check_equals(x&y, 1); 
+
+x = 1.9999;
+y = 3.9999;
+check_equals(x&y, 1); 
+
+x = new String("1");
+y = new String("3");
+check_equals(x&y, 1); 
+
+x = new String("1.0");
+y = new String("3.0");
+check_equals(x&y, 1); 
+
+x = new String("1.999");
+y = new String("3.999");
+check_equals(x&y, 1); 
+
+x = new String("3.999");
+y = 7;
+check_equals(x&y, 3); 
+
+x = Number("7.999");
+y = 3;
+check_equals(x&y, 3);
+
+check_equals( (undefined&1), 0 );
+check_equals( (1&undefined), 0 );
+check_equals( (1&null), 0 );
+check_equals( (null&1), 0 );
+check_equals( (null&null), 0 );
+check_equals( (3&2), 2 );
+// TODO ... 
+
+check_equals ((-1 & 1), 1);
+check_equals ((1 & -1), 1);
+
+check_equals ((-2 & 1), 0);
+check_equals ((1 & -2), 0);
+
+//------------------------------------------------
+// Bitwise OR operator (ACTION_BITWISEOR : 0x61)
+//------------------------------------------------
+
+x = 1;
+y = 8;
+check_equals(x|y, 9); 
+
+x = 1.1;
+y = 8.1;
+check_equals(x|y, 9); 
+
+x = 1.999;
+y = 8.999;
+check_equals(x|y, 9); 
+
+x = new String("1.999");
+y = 8.999;
+check_equals(x|y, 9); 
+
+x = String("1.999");
+y = String("8.999");
+check_equals(x|y, 9); 
+
+x = 9;
+y = String("1.5");
+check_equals(x|y, 9); 
+
+check_equals( (undefined|1), 1 );
+check_equals( (1|undefined), 1 );
+check_equals( (undefined|undefined), 0 );
+check_equals( (null|1), 1 );
+check_equals( (1|null), 1 );
+check_equals( (null|null), 0 );
+check_equals( (8|4), 12 );
+
+// The check below will fail if Ming converts the long int to a double
+// (only with Gnash, it works fine with the proprietary player)
+check_equals((0xffffffff|0), -1); 
+
+//------------------------------------------------
+// Bitwise XOR operator (ACTION_BITWISEOR : 0x62)
+//------------------------------------------------
+
+check_equals( (undefined^1), 1 );
+check_equals( (1^undefined), 1 );
+check_equals( (undefined^undefined), 0 );
+check_equals( (null^1), 1 );
+check_equals( (1^null), 1 );
+check_equals( (null^null), 0 );
+check_equals( (8^12), 4 );
+
+x = 1;
+y = 2;
+check_equals(x^y, 3);
+
+x = 1.1;
+y = 2.1;
+check_equals(x^y, 3);
+
+x = 1.999;
+y = 2.999;
+check_equals(x^y, 3);
+
+x = new String("1.999");
+y = new String("2.999");
+check_equals(x^y, 3);
+
+x = new String("1.999");
+y = 2.999;
+check_equals(x^y, 3);
+
+x = 1.999;
+y = new String("2.999");
+check_equals(x^y, 3);
+
+x = 1082401;
+y = x^32800;
+check_equals(y, 1049601);
+
+//------------------------------------------------
+// Shift left operator (ACTION_SHIFTLEFT : 0x63)
+//------------------------------------------------
+
+x = 1;
+y = x << 2;
+check_equals(y, 4);
+
+x = 0xffffffff; // Ming up to 0.4.0.beta4 will convert this to -1 !
+                // Newer Ming will store it as a double. Still, the
+                // player itself converts it back to -1 as an integer
+                // prior to applying the bitwise operator.
+y = x << 16;
+check_equals(y, -65536);
+
+x = -1;
+y = x << 16;
+check_equals(y, -65536);
+
+x = 4.294967295e+09;
+y = x << 16;
+check_equals(y, -65536);
+
+x = 4.29497e+09;
+y = x << 16;
+check_equals(y, 177209344);
+
+x = 1.9;
+y = x << 2;
+check_equals(y, 4);
+
+x= undefined;
+y = x << 1;
+check_equals(typeof(y), 'number');
+check(! isnan(y) );
+check_equals(y, 0);
+
+check_equals(0 << 1, 0);
+
+x= NaN;
+y = x << 1;
+check_equals(y, 0);
+
+x = "abcd";
+y = x << 1;
+check_equals(y, 0);
+
+x = "3";
+y = x << 1;
+check_equals(y, 6);
+
+x = String("3");
+y = x << 1;
+check_equals(y, 6);
+
+x = new String("3");
+y = x << 1;
+check_equals(y, 6); 
+
+y = 2147483647 << Infinity;
+check_equals(y,  2147483647);
+
+y = 2147483647 << 0;
+check_equals(y, 2147483647);
+
+//------------------------------------------------
+// Shift right operator (ACTION_SHIFTRIGHT : 0x64)
+//------------------------------------------------
+
+x = 7;
+y = x >> 2;
+check_equals(y, 1);
+
+x = 0xffffffff;
+y = x >> 16;
+check_equals(y, -1);
+
+x = 7.9;
+y = x >> 2;
+check_equals(y, 1);
+
+x= undefined;
+y = x >> 1;
+check_equals(y, 0);
+
+x= NaN;
+y = x >> 1;
+check_equals(y, 0);
+
+x = "abcd";
+y = x >> 1;
+check_equals(y, 0);
+
+x = "7";
+y = x >> 1;
+check_equals(y, 3);
+
+x = String("7");
+y = x >> 1;
+check_equals(y, 3);
+
+x = new String("7");
+y = x >> 1;
+check_equals(y, 3);
+
+x = 32800;
+y = x >> 5;
+check_equals(y, 1025);
+
+x = -32;
+y = x >> 5;
+check_equals(y, -1);
+
+x = -1023;
+y = x >> 5;
+check_equals(y, -32);
+
+x = -32736;
+y = x >> 5;
+check_equals(y, -1023);
+
+x = 32800;
+y = x >> 1082400;
+check_equals(y, 32800);
+
+x = 32800;
+y = x >> 1082401;
+check_equals(y, 16400);
+
+x = 32800;
+y = x >> -2;
+check_equals(y, 0);
+
+
+
+//-------------------------------------------------
+// Shift right2 operator (ACTION_SHIFTRIGHT2 : 0x65)
+//-------------------------------------------------
+
+y = 1 >>> 3;
+check_equals(y, 0);
+
+y = 32 >>> 4;
+check_equals(y, 2);
+
+y = -1 >>> Infinity;
+check_equals(y, -1);
+
+y = -1 >>> -Infinity;
+check_equals(y, -1);
+
+y = -1 >>> 0;
+check_equals(y, -1);
+
+y = -1 >>> NaN;
+check_equals(y, -1);
+
+y = -1 >>> 32;
+check_equals(y, -1);
+
+y = -1 >>> -32;
+check_equals(y, -1);
+
+y = -1 >>> 2147483648;
+check_equals(y, -1);
+
+y = -1 >>> 4294967296;
+check_equals(y, -1);
+
+y = -2 >>> Infinity;
+check_equals(y, -2);
+
+y = -2 >>> 32;
+check_equals(y, -2);
+
+//-------------------------------------------------
+// Strict equality operator (ACTION_STRICTEQ : 0x66)
+//-------------------------------------------------
+
+// TODO ...  
+
+
+//------------------------------------------------
+// Decrement Operator (ACTION_DECREMENT: 0x51)
+//------------------------------------------------
+
+x = 1;
+y = --x;
+check_equals(y, 0);
+
+x = 0;
+y = --x;
+check_equals(y, -1);
+
+x = new String("1.9");
+y = --x;
+//xcheck_equals(y, 0.9);
+check( (y-0.9) < 0.001 );
+
+x = new String("0.0");
+y = --x;
+//xcheck_equals(y, -1.0);
+check( (y+1.0) < 0.001 );
+
+x = new String("a");
+y = --x;
+check_equals(typeof(y), 'number');
+xcheck(y!=NaN); // uh ? is it a different NaN ?
+check(! (NaN!=NaN));
+check(isNaN(y));
+check(isNaN(NaN));
+
+//------------------------------------------------
+// Increment Operator (ACTION_DECREMENT: 0x50)
+//------------------------------------------------
+
+x = 0;
+y = ++x;
+check_equals(y, 1);
+
+x = -1;
+y = ++x;
+check_equals(y, 0);
+
+x = new String("1.9");
+y = ++x;
+//xcheck_equals(y, 2.9);
+check( (y-2.9) < 0.001 );
+
+x = new String("0.0");
+y = ++x;
+check_equals(y, 1);
+
+x = new String("a");
+y = ++x;
+xcheck(y!=NaN);
+check(isNaN(y));
+
+//------------------------------------------------------
+// Less logical not operator (ACTION_LOGICALNOT : 0x12)
+//-----------------------------------------------------
+
+check(!"");
+#if OUTPUT_VERSION < 7
+ check(!"a");
+ check(!"true"); 
+ check(!"false"); 
+ check(!"0000.000"); 
+#else
+ check("a"); 
+ check("true"); 
+ check("false"); 
+ check("0000.000"); 
+#endif
+
+check("1");
+check(!false); // doh !
+check(true); // doh !
+check(!0); 
+check(4); 
+check(_root); 
+check(!null); 
+check(!undefined); 
+
+//------------------------------------------------------
+// END OF TEST
+//-----------------------------------------------------
+
+#if OUTPUT_VERSION < 7
+# ifndef MING_LOGICAL_ANDOR_BROKEN
+ totals(239);
+# else
+ totals(216);
+# endif
+#else
+# ifndef MING_LOGICAL_ANDOR_BROKEN
+ totals(241);
+# else
+ totals(218);
+# endif
+#endif
diff --git a/test/gnash/actionscript.all/pending/targetPath-5.swf b/test/gnash/actionscript.all/pending/targetPath-5.swf
new file mode 100644
index 0000000..80dd870
Binary files /dev/null and b/test/gnash/actionscript.all/pending/targetPath-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/targetPath-5.swf.trace b/test/gnash/actionscript.all/pending/targetPath-5.swf.trace
new file mode 100644
index 0000000..12bee48
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/targetPath-5.swf.trace
@@ -0,0 +1,7 @@
+PASSED: targetPath(_root) == "_level0" [targetPath.as:35]
+PASSED: typeof(a) == 'undefined' [targetPath.as:46]
+PASSED: typeof(a) == 'undefined' [targetPath.as:55]
+PASSED: typeof(a) == 'undefined' [targetPath.as:64]
+PASSED: typeof(a) == 'undefined' [targetPath.as:73]
+PASSED: typeof(a) == 'undefined' [targetPath.as:83]
+check_totals: 6
diff --git a/test/gnash/actionscript.all/pending/targetPath-6.swf b/test/gnash/actionscript.all/pending/targetPath-6.swf
new file mode 100644
index 0000000..2c1526a
Binary files /dev/null and b/test/gnash/actionscript.all/pending/targetPath-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/targetPath-6.swf.trace b/test/gnash/actionscript.all/pending/targetPath-6.swf.trace
new file mode 100644
index 0000000..0572039
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/targetPath-6.swf.trace
@@ -0,0 +1,18 @@
+PASSED: targetPath(_root) == "_level0" [targetPath.as:35]
+PASSED: typeof(a) == 'undefined' [targetPath.as:46]
+PASSED: typeof(a) == 'undefined' [targetPath.as:55]
+PASSED: typeof(a) == 'undefined' [targetPath.as:64]
+PASSED: typeof(a) == 'undefined' [targetPath.as:73]
+PASSED: typeof(a) == 'undefined' [targetPath.as:83]
+PASSED: _target == '/' [targetPath.as:100]
+XPASSED: checkpoint == undefined [targetPath.as:109]
+PASSED: _target == '/' [targetPath.as:114]
+XPASSED: checkpoint == undefined [targetPath.as:123]
+PASSED: _target == '/' [targetPath.as:128]
+XPASSED: checkpoint == undefined [targetPath.as:137]
+PASSED: checkpoint == '/' [targetPath.as:147]
+PASSED: _target == '/mc' [targetPath.as:150]
+PASSED: _target == '/' [targetPath.as:152]
+PASSED: _target == '/mc/mc' [targetPath.as:155]
+PASSED: _target == '/' [targetPath.as:157]
+check_totals: 17
diff --git a/test/gnash/actionscript.all/pending/targetPath-7.swf b/test/gnash/actionscript.all/pending/targetPath-7.swf
new file mode 100644
index 0000000..f596468
Binary files /dev/null and b/test/gnash/actionscript.all/pending/targetPath-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/targetPath-7.swf.trace b/test/gnash/actionscript.all/pending/targetPath-7.swf.trace
new file mode 100644
index 0000000..0572039
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/targetPath-7.swf.trace
@@ -0,0 +1,18 @@
+PASSED: targetPath(_root) == "_level0" [targetPath.as:35]
+PASSED: typeof(a) == 'undefined' [targetPath.as:46]
+PASSED: typeof(a) == 'undefined' [targetPath.as:55]
+PASSED: typeof(a) == 'undefined' [targetPath.as:64]
+PASSED: typeof(a) == 'undefined' [targetPath.as:73]
+PASSED: typeof(a) == 'undefined' [targetPath.as:83]
+PASSED: _target == '/' [targetPath.as:100]
+XPASSED: checkpoint == undefined [targetPath.as:109]
+PASSED: _target == '/' [targetPath.as:114]
+XPASSED: checkpoint == undefined [targetPath.as:123]
+PASSED: _target == '/' [targetPath.as:128]
+XPASSED: checkpoint == undefined [targetPath.as:137]
+PASSED: checkpoint == '/' [targetPath.as:147]
+PASSED: _target == '/mc' [targetPath.as:150]
+PASSED: _target == '/' [targetPath.as:152]
+PASSED: _target == '/mc/mc' [targetPath.as:155]
+PASSED: _target == '/' [targetPath.as:157]
+check_totals: 17
diff --git a/test/gnash/actionscript.all/pending/targetPath-8.swf b/test/gnash/actionscript.all/pending/targetPath-8.swf
new file mode 100644
index 0000000..e247940
Binary files /dev/null and b/test/gnash/actionscript.all/pending/targetPath-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/targetPath-8.swf.trace b/test/gnash/actionscript.all/pending/targetPath-8.swf.trace
new file mode 100644
index 0000000..0572039
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/targetPath-8.swf.trace
@@ -0,0 +1,18 @@
+PASSED: targetPath(_root) == "_level0" [targetPath.as:35]
+PASSED: typeof(a) == 'undefined' [targetPath.as:46]
+PASSED: typeof(a) == 'undefined' [targetPath.as:55]
+PASSED: typeof(a) == 'undefined' [targetPath.as:64]
+PASSED: typeof(a) == 'undefined' [targetPath.as:73]
+PASSED: typeof(a) == 'undefined' [targetPath.as:83]
+PASSED: _target == '/' [targetPath.as:100]
+XPASSED: checkpoint == undefined [targetPath.as:109]
+PASSED: _target == '/' [targetPath.as:114]
+XPASSED: checkpoint == undefined [targetPath.as:123]
+PASSED: _target == '/' [targetPath.as:128]
+XPASSED: checkpoint == undefined [targetPath.as:137]
+PASSED: checkpoint == '/' [targetPath.as:147]
+PASSED: _target == '/mc' [targetPath.as:150]
+PASSED: _target == '/' [targetPath.as:152]
+PASSED: _target == '/mc/mc' [targetPath.as:155]
+PASSED: _target == '/' [targetPath.as:157]
+check_totals: 17
diff --git a/test/gnash/actionscript.all/pending/targetPath.as b/test/gnash/actionscript.all/pending/targetPath.as
new file mode 100644
index 0000000..b1ab29f
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/targetPath.as
@@ -0,0 +1,165 @@
+// 
+//   Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modchecky
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; check not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fcheckth Floor, Boston, MA  02110-1301  USA
+//
+
+/*
+ *  Test TARGETPATH tags (0x45)
+ */
+
+
+rcsid="$Id: targetPath.as,v 1.15 2008/03/11 19:31:49 strk Exp $";
+#include "check.as"
+
+#if MING_VERSION_CODE > 00040005
+# define TARGETPATH targetpath
+#else
+# define TARGETPATH targetPath
+#endif
+
+// The AS version is always targetPath, just
+// the ASM label changes in case before 0.4.0.beta6
+check_equals(targetPath(_root), "_level0");
+
+#ifdef MING_SUPPORTS_ASM_TARGETPATH
+
+// TARGETPATH(null)
+asm {
+push "a"
+push null
+TARGETPATH
+setvariable
+};
+check_equals(typeof(a), 'undefined');
+
+// TARGETPATH(undefined)
+asm {
+push "a"
+push undefined
+TARGETPATH
+setvariable
+};
+check_equals(typeof(a), 'undefined');
+
+// TARGETPATH("str")
+asm {
+push "a"
+push "str"
+TARGETPATH
+setvariable
+};
+check_equals(typeof(a), 'undefined');
+
+// TARGETPATH(9)
+asm {
+push "a"
+push 9
+TARGETPATH
+setvariable
+};
+check_equals(typeof(a), 'undefined');
+
+
+// TARGETPATH("_root")
+asm {
+push "a"
+push "_root"
+TARGETPATH
+setvariable
+};
+check_equals(typeof(a), 'undefined');
+
+#endif // MING_SUPPORTS_ASM_TARGETPATH
+
+#if OUTPUT_VERSION > 5
+
+mc1 = createEmptyMovieClip('mc', 1);
+mc2 = mc1.createEmptyMovieClip('mc', 1);
+
+// hack to make check_equals work even with modified target
+_global.fail_check = fail_check;
+_global.xfail_check = xfail_check;
+_global.pass_check = pass_check;
+_global.xpass_check = xpass_check;
+
+setTarget(null);
+// getVaiable(_target) would ascend to other target
+check_equals(_target, '/');
+asm{          
+    push 'checkpoint'         
+    push ''
+    push 11         
+    getproperty  //_target         
+    setvariable             
+};
+//check current target is undefined
+xcheck_equals(checkpoint, undefined);
+setTarget("");
+
+setTarget('...:mc1');
+// getVaiable(_target) would ascend to other target
+check_equals(_target, '/');
+asm{          
+    push 'checkpoint'         
+    push ''
+    push 11         
+    getproperty  //_target         
+    setvariable             
+};
+//check current target is undefined
+xcheck_equals(checkpoint, undefined);
+setTarget("");
+
+setTarget('...:mc');
+// getVaiable(_target) would ascend to other target
+check_equals(_target, '/');
+asm{          
+    push 'checkpoint'         
+    push ''
+    push 11         
+    getproperty  //_target         
+    setvariable             
+};
+//check current target is undefined
+xcheck_equals(checkpoint, undefined);
+setTarget("");
+
+asm{          
+    push 'checkpoint'         
+    push ''
+    push 11         
+    getproperty  //_target         
+    setvariable             
+};
+check_equals(checkpoint, '/');
+
+setTarget('mc');
+check_equals(_target, '/mc');
+setTarget("/");
+check_equals(_target, '/');
+
+setTarget('/mc/mc');
+check_equals(_target, '/mc/mc');
+setTarget("/");
+check_equals(_target, '/');
+
+#endif
+
+#if OUTPUT_VERSION < 6
+ check_totals(6);
+#else
+ check_totals(17);
+#endif
diff --git a/test/gnash/actionscript.all/pending/toString_valueOf-5.swf b/test/gnash/actionscript.all/pending/toString_valueOf-5.swf
new file mode 100644
index 0000000..8a2dfa5
Binary files /dev/null and b/test/gnash/actionscript.all/pending/toString_valueOf-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/toString_valueOf-5.swf.trace b/test/gnash/actionscript.all/pending/toString_valueOf-5.swf.trace
new file mode 100644
index 0000000..9224ad8
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/toString_valueOf-5.swf.trace
@@ -0,0 +1,127 @@
+PASSED: typeof(Function) == 'undefined' [toString_valueOf.as:51]
+PASSED: typeof(x) == 'function' [toString_valueOf.as:55]
+PASSED: typeof(hasOwnProperty) == 'undefined' [toString_valueOf.as:66]
+PASSED: typeof(Object.prototype['toString']) == 'function' [toString_valueOf.as:68]
+PASSED: typeof(Object.prototype['valueOf']) == 'function' [toString_valueOf.as:69]
+PASSED: Object.prototype.toString == undefined [toString_valueOf.as:72]
+PASSED: Object.prototype.valueOf == undefined [toString_valueOf.as:73]
+PASSED: typeof(x) == "string" [toString_valueOf.as:79]
+PASSED: typeof(y) == "object" [toString_valueOf.as:80]
+PASSED: x == "[object Object]" [toString_valueOf.as:81]
+PASSED: y == obj [toString_valueOf.as:82]
+PASSED: obj.toString == undefined [toString_valueOf.as:97]
+PASSED: obj.valueOf == undefined [toString_valueOf.as:98]
+PASSED: obj.toString == obj.valueOf [toString_valueOf.as:99]
+PASSED: Object.prototype.toString == undefined [toString_valueOf.as:100]
+PASSED: Object.prototype.valueOf == undefined [toString_valueOf.as:101]
+PASSED: x=="TO_STRING" [toString_valueOf.as:105]
+PASSED: y=="TO_VALUE" [toString_valueOf.as:106]
+PASSED: typeof(obj)=="object" [toString_valueOf.as:107]
+PASSED: typeof(y) == "string" [toString_valueOf.as:109]
+PASSED: obj == y [toString_valueOf.as:110]
+PASSED: Number.prototype.toString == undefined [toString_valueOf.as:123]
+PASSED: Number.prototype.valueOf == undefined [toString_valueOf.as:124]
+PASSED: typeof(x)=="string" [toString_valueOf.as:131]
+PASSED: typeof(y)=="number" [toString_valueOf.as:132]
+PASSED: x==1 [toString_valueOf.as:133]
+PASSED: y==1 [toString_valueOf.as:134]
+PASSED: num3 == "TO_VALUETO_VALUE" [toString_valueOf.as:142]
+PASSED: typeof(x)=="string" [toString_valueOf.as:146]
+PASSED: typeof(y)=="string" [toString_valueOf.as:147]
+PASSED: x=="TO_STRING" [toString_valueOf.as:148]
+PASSED: y=="TO_VALUE" [toString_valueOf.as:149]
+PASSED: String.prototype.toString == undefined [toString_valueOf.as:163]
+PASSED: String.prototype.valueOf == undefined [toString_valueOf.as:164]
+PASSED: typeof(x) == "string" [toString_valueOf.as:170]
+PASSED: typeof(y) == "string" [toString_valueOf.as:171]
+PASSED: x == 10 [toString_valueOf.as:172]
+PASSED: y == 10 [toString_valueOf.as:173]
+PASSED: x == "10" [toString_valueOf.as:174]
+PASSED: y == "10" [toString_valueOf.as:175]
+PASSED: str3 == "102" [toString_valueOf.as:181]
+PASSED: str3 == 102 [toString_valueOf.as:182]
+PASSED: parseInt(str1) == 10 [toString_valueOf.as:187]
+PASSED: parseInt(str2) == 2 [toString_valueOf.as:188]
+PASSED: typeof(str3) == "string" [toString_valueOf.as:190]
+PASSED: str3 == "TO_VALUETO_VALUE" [toString_valueOf.as:192]
+PASSED: typeof(x) == "string" [toString_valueOf.as:199]
+PASSED: typeof(y) == "string" [toString_valueOf.as:200]
+PASSED: x == "TO_STRING" [toString_valueOf.as:201]
+PASSED: y == "TO_VALUE" [toString_valueOf.as:202]
+PASSED: MovieClip.prototype.toString == Object.prototype.toString [toString_valueOf.as:216]
+PASSED: MovieClip.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:217]
+PASSED: typeof(x) == 'undefined' [toString_valueOf.as:229]
+PASSED: typeof(y) == 'undefined' [toString_valueOf.as:230]
+PASSED: x == undefined [toString_valueOf.as:231]
+PASSED: y == undefined [toString_valueOf.as:232]
+PASSED: y == _level0.mc1 [toString_valueOf.as:234]
+PASSED: mc1 != '_level0.mc1' [toString_valueOf.as:242]
+PASSED: mc1 == _level0.mc1 [toString_valueOf.as:243]
+PASSED: x==undefined [toString_valueOf.as:251]
+PASSED: y==undefined [toString_valueOf.as:252]
+PASSED: typeof(createEmptyMovieClip) == "undefined" [toString_valueOf.as:264]
+PASSED: typeof(mc1) == "undefined" [toString_valueOf.as:265]
+PASSED: typeof(mc2) == "undefined" [toString_valueOf.as:266]
+PASSED: typeof(TextField.prototype) == 'undefined' [toString_valueOf.as:279]
+PASSED: TextField.prototype.toString == Object.prototype.toString [toString_valueOf.as:283]
+PASSED: TextField.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:284]
+PASSED: typeof(text1) == "object" [toString_valueOf.as:287]
+XPASSED: typeof(text1.toString) == "undefined" [toString_valueOf.as:292]
+XPASSED: typeof(text1.valueOf) == "undefined" [toString_valueOf.as:293]
+PASSED: typeof(text1.__proto__) == 'object' [toString_valueOf.as:294]
+XPASSED: typeof(text1.__proto__.toString) == "undefined" [toString_valueOf.as:295]
+XPASSED: typeof(text1.__proto__.valueOf) == "undefined" [toString_valueOf.as:296]
+XPASSED: typeof(x) == "undefined" [toString_valueOf.as:308]
+XPASSED: typeof(y) == "undefined" [toString_valueOf.as:309]
+XPASSED: x == undefined [toString_valueOf.as:310]
+XPASSED: y.toString() == undefined [toString_valueOf.as:311]
+XPASSED: typeof(y.valueOf()) == "undefined" [toString_valueOf.as:312]
+PASSED: y == text1 [toString_valueOf.as:314]
+PASSED: text1 != "A STRING" [toString_valueOf.as:317]
+XPASSED: a == "prefix_" [toString_valueOf.as:322]
+PASSED: typeof(Button.prototype.toString) == 'function' [toString_valueOf.as:335]
+PASSED: typeof(Button.prototype.valueOf) == 'function' [toString_valueOf.as:336]
+PASSED: Button.prototype.toString == Object.prototype.toString [toString_valueOf.as:340]
+PASSED: Button.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:341]
+PASSED: Button.prototype.toString == undefined [toString_valueOf.as:342]
+PASSED: Button.prototype.valueOf == undefined [toString_valueOf.as:343]
+PASSED: typeof(btn1) == "object" [toString_valueOf.as:350]
+PASSED: typeof(x) == "string" [toString_valueOf.as:353]
+PASSED: typeof(y) == "object" [toString_valueOf.as:354]
+PASSED: x == "[object Object]" [toString_valueOf.as:355]
+PASSED: y.toString() == "[object Object]" [toString_valueOf.as:356]
+PASSED: typeof(y.valueOf()) == "object" [toString_valueOf.as:357]
+PASSED: typeof(btn1) == "object" [toString_valueOf.as:358]
+PASSED: y == btn1 [toString_valueOf.as:359]
+PASSED: Boolean.prototype.toString == undefined [toString_valueOf.as:370]
+PASSED: Boolean.prototype.valueOf == undefined [toString_valueOf.as:371]
+PASSED: typeof(b1) == "object" [toString_valueOf.as:375]
+PASSED: typeof(x) == "string" [toString_valueOf.as:378]
+PASSED: typeof(y) == "boolean" [toString_valueOf.as:379]
+PASSED: x == "false" [toString_valueOf.as:380]
+PASSED: y == false [toString_valueOf.as:381]
+PASSED: typeof(b3) == 'number' [toString_valueOf.as:386]
+PASSED: b3 == 1 [toString_valueOf.as:387]
+PASSED: Date.prototype.toString == undefined [toString_valueOf.as:398]
+PASSED: Date.prototype.valueOf == undefined [toString_valueOf.as:399]
+PASSED: typeof(d1) == "object" [toString_valueOf.as:403]
+PASSED: typeof(x) == "string" [toString_valueOf.as:406]
+PASSED: typeof(y) == "number" [toString_valueOf.as:407]
+PASSED: y == 0 [toString_valueOf.as:412]
+PASSED: typeof(d3) == 'number' [toString_valueOf.as:421]
+PASSED: d3 == 1 [toString_valueOf.as:422]
+PASSED: d1.toString() == d2.toString() [toString_valueOf.as:426]
+PASSED: Array.prototype.toString == undefined [toString_valueOf.as:437]
+PASSED: Array.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:440]
+PASSED: typeof(a1) == "object" [toString_valueOf.as:443]
+PASSED: typeof(x) == "string" [toString_valueOf.as:446]
+PASSED: typeof(y) == "object" [toString_valueOf.as:447]
+PASSED: x == "1,2,3,4" [toString_valueOf.as:448]
+PASSED: y == a1 [toString_valueOf.as:449]
+PASSED: typeof(a3) == 'number' [toString_valueOf.as:454]
+PASSED: isNaN(a3) [toString_valueOf.as:455]
+PASSED: o.valueOfCalls == 1 [toString_valueOf.as:475]
+PASSED: o.toStringCalls == 1 [toString_valueOf.as:476]
+PASSED: typeof(a) == "string" [toString_valueOf.as:477]
+PASSED: a == "[type Object]" [toString_valueOf.as:478]
+check_totals: 126
diff --git a/test/gnash/actionscript.all/pending/toString_valueOf-6.swf b/test/gnash/actionscript.all/pending/toString_valueOf-6.swf
new file mode 100644
index 0000000..ca2470c
Binary files /dev/null and b/test/gnash/actionscript.all/pending/toString_valueOf-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/toString_valueOf-6.swf.trace b/test/gnash/actionscript.all/pending/toString_valueOf-6.swf.trace
new file mode 100644
index 0000000..8c30218
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/toString_valueOf-6.swf.trace
@@ -0,0 +1,145 @@
+PASSED: typeof(Function) == 'function' [toString_valueOf.as:32]
+PASSED: Function.prototype.hasOwnProperty('apply') [toString_valueOf.as:34]
+PASSED: Function.prototype.hasOwnProperty('call') [toString_valueOf.as:35]
+PASSED: Function.prototype.hasOwnProperty('__proto__') [toString_valueOf.as:36]
+PASSED: Function.prototype.hasOwnProperty('constructor') [toString_valueOf.as:37]
+PASSED: !Function.prototype.hasOwnProperty('toString') [toString_valueOf.as:39]
+PASSED: !Function.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:40]
+PASSED: Function.prototype.__proto__.hasOwnProperty('toString') [toString_valueOf.as:42]
+PASSED: Function.prototype.__proto__.hasOwnProperty('valueOf') [toString_valueOf.as:43]
+PASSED: Function.prototype.__proto__ == Object.prototype [toString_valueOf.as:44]
+PASSED: Object.prototype.__proto__ == undefined [toString_valueOf.as:45]
+PASSED: typeof(Function.prototype['toString']) == 'function' [toString_valueOf.as:47]
+PASSED: typeof(Function.prototype['valueOf']) == 'function' [toString_valueOf.as:48]
+PASSED: Object.prototype.hasOwnProperty('toString') [toString_valueOf.as:62]
+PASSED: Object.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:63]
+PASSED: typeof(x) == "string" [toString_valueOf.as:79]
+PASSED: typeof(y) == "object" [toString_valueOf.as:80]
+PASSED: x == "[object Object]" [toString_valueOf.as:81]
+PASSED: y == obj [toString_valueOf.as:82]
+PASSED: obj.toString == Object.prototype.toString [toString_valueOf.as:85]
+PASSED: obj.valueOf == Object.prototype.valueOf [toString_valueOf.as:86]
+PASSED: obj.toString != Object.prototype.toString [toString_valueOf.as:93]
+PASSED: obj.valueOf != Object.prototype.valueOf [toString_valueOf.as:94]
+PASSED: x=="TO_STRING" [toString_valueOf.as:105]
+PASSED: y=="TO_VALUE" [toString_valueOf.as:106]
+PASSED: typeof(obj)=="object" [toString_valueOf.as:107]
+PASSED: typeof(y) == "string" [toString_valueOf.as:109]
+PASSED: obj == y [toString_valueOf.as:110]
+PASSED: Number.prototype.hasOwnProperty('toString') [toString_valueOf.as:116]
+PASSED: Number.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:117]
+PASSED: Number.prototype.toString != Object.prototype.toString [toString_valueOf.as:119]
+PASSED: Number.prototype.valueOf != Object.prototype.valueOf [toString_valueOf.as:120]
+PASSED: typeof(x)=="string" [toString_valueOf.as:131]
+PASSED: typeof(y)=="number" [toString_valueOf.as:132]
+PASSED: x==1 [toString_valueOf.as:133]
+PASSED: y==1 [toString_valueOf.as:134]
+PASSED: num3 == "TO_VALUETO_VALUE" [toString_valueOf.as:142]
+PASSED: typeof(x)=="string" [toString_valueOf.as:146]
+PASSED: typeof(y)=="string" [toString_valueOf.as:147]
+PASSED: x=="TO_STRING" [toString_valueOf.as:148]
+PASSED: y=="TO_VALUE" [toString_valueOf.as:149]
+PASSED: String.prototype.hasOwnProperty('toString') [toString_valueOf.as:156]
+PASSED: String.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:157]
+PASSED: String.prototype.toString != Object.prototype.toString [toString_valueOf.as:159]
+PASSED: String.prototype.valueOf != Object.prototype.valueOf [toString_valueOf.as:160]
+PASSED: typeof(x) == "string" [toString_valueOf.as:170]
+PASSED: typeof(y) == "string" [toString_valueOf.as:171]
+PASSED: x == 10 [toString_valueOf.as:172]
+PASSED: y == 10 [toString_valueOf.as:173]
+PASSED: x == "10" [toString_valueOf.as:174]
+PASSED: y == "10" [toString_valueOf.as:175]
+PASSED: str3 == "102" [toString_valueOf.as:181]
+PASSED: str3 == 102 [toString_valueOf.as:182]
+PASSED: parseInt(str1) == 10 [toString_valueOf.as:187]
+PASSED: parseInt(str2) == 2 [toString_valueOf.as:188]
+PASSED: typeof(str3) == "string" [toString_valueOf.as:190]
+PASSED: str3 == "TO_VALUETO_VALUE" [toString_valueOf.as:192]
+PASSED: typeof(x) == "string" [toString_valueOf.as:199]
+PASSED: typeof(y) == "string" [toString_valueOf.as:200]
+PASSED: x == "TO_STRING" [toString_valueOf.as:201]
+PASSED: y == "TO_VALUE" [toString_valueOf.as:202]
+PASSED: !MovieClip.prototype.hasOwnProperty('toString') [toString_valueOf.as:209]
+PASSED: !MovieClip.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:210]
+PASSED: typeof(MovieClip.prototype.toString) == 'function' [toString_valueOf.as:211]
+PASSED: typeof(MovieClip.prototype.valueOf) == 'function' [toString_valueOf.as:212]
+PASSED: MovieClip.prototype.toString == Object.prototype.toString [toString_valueOf.as:216]
+PASSED: MovieClip.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:217]
+PASSED: typeof(x) == 'string' [toString_valueOf.as:223]
+PASSED: typeof(y) == 'movieclip' [toString_valueOf.as:224]
+PASSED: x == '[object Object]' [toString_valueOf.as:225]
+PASSED: y == _level0.mc1 [toString_valueOf.as:226]
+PASSED: y == _level0.mc1 [toString_valueOf.as:234]
+PASSED: mc1 != '_level0.mc1' [toString_valueOf.as:242]
+PASSED: mc1 == _level0.mc1 [toString_valueOf.as:243]
+PASSED: x=="TO_STRING" [toString_valueOf.as:248]
+PASSED: y=="TO_VALUE" [toString_valueOf.as:249]
+PASSED: typeof(mc1) == "movieclip" [toString_valueOf.as:257]
+PASSED: typeof(mc2) == "movieclip" [toString_valueOf.as:258]
+PASSED: typeof(mc3) == "number" [toString_valueOf.as:260]
+PASSED: isNaN(mc3) [toString_valueOf.as:261]
+PASSED: !TextField.prototype.hasOwnProperty('toString') [toString_valueOf.as:273]
+PASSED: !TextField.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:274]
+PASSED: typeof(TextField.prototype.toString) == 'function' [toString_valueOf.as:275]
+PASSED: typeof(TextField.prototype.valueOf) == 'function' [toString_valueOf.as:276]
+PASSED: TextField.prototype.toString == Object.prototype.toString [toString_valueOf.as:283]
+PASSED: TextField.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:284]
+PASSED: typeof(text1) == "object" [toString_valueOf.as:287]
+PASSED: typeof(text1.toString) == "function" [toString_valueOf.as:289]
+PASSED: typeof(text1.__proto__.toString) == "function" [toString_valueOf.as:290]
+PASSED: typeof(x) == "string" [toString_valueOf.as:302]
+PASSED: typeof(y) == "object" [toString_valueOf.as:303]
+PASSED: x == "[object Object]" [toString_valueOf.as:304]
+PASSED: y.toString() == "[object Object]" [toString_valueOf.as:305]
+PASSED: typeof(y.valueOf()) == "object" [toString_valueOf.as:306]
+PASSED: y == text1 [toString_valueOf.as:314]
+PASSED: text1 != "A STRING" [toString_valueOf.as:317]
+PASSED: a == "prefix_A STRING" [toString_valueOf.as:320]
+PASSED: !Button.prototype.hasOwnProperty('toString') [toString_valueOf.as:331]
+PASSED: !Button.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:332]
+PASSED: typeof(Button.prototype.toString) == 'function' [toString_valueOf.as:335]
+PASSED: typeof(Button.prototype.valueOf) == 'function' [toString_valueOf.as:336]
+PASSED: Button.prototype.toString == Object.prototype.toString [toString_valueOf.as:345]
+PASSED: Button.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:346]
+PASSED: typeof(btn1) == "object" [toString_valueOf.as:350]
+PASSED: typeof(x) == "string" [toString_valueOf.as:353]
+PASSED: typeof(y) == "object" [toString_valueOf.as:354]
+PASSED: x == "[object Object]" [toString_valueOf.as:355]
+PASSED: y.toString() == "[object Object]" [toString_valueOf.as:356]
+PASSED: typeof(y.valueOf()) == "object" [toString_valueOf.as:357]
+PASSED: typeof(btn1) == "object" [toString_valueOf.as:358]
+PASSED: y == btn1 [toString_valueOf.as:359]
+PASSED: Boolean.prototype.toString != Object.prototype.toString [toString_valueOf.as:367]
+PASSED: Boolean.prototype.valueOf != Object.prototype.valueOf [toString_valueOf.as:368]
+PASSED: typeof(b1) == "object" [toString_valueOf.as:375]
+PASSED: typeof(x) == "string" [toString_valueOf.as:378]
+PASSED: typeof(y) == "boolean" [toString_valueOf.as:379]
+PASSED: x == "false" [toString_valueOf.as:380]
+PASSED: y == false [toString_valueOf.as:381]
+PASSED: typeof(b3) == 'number' [toString_valueOf.as:386]
+PASSED: b3 == 1 [toString_valueOf.as:387]
+PASSED: Date.prototype.toString != Object.prototype.toString [toString_valueOf.as:395]
+PASSED: Date.prototype.valueOf != Object.prototype.valueOf [toString_valueOf.as:396]
+PASSED: typeof(d1) == "object" [toString_valueOf.as:403]
+PASSED: typeof(x) == "string" [toString_valueOf.as:406]
+PASSED: typeof(y) == "number" [toString_valueOf.as:407]
+PASSED: y == 0 [toString_valueOf.as:412]
+PASSED: typeof(d3) == 'string' [toString_valueOf.as:418]
+PASSED: d3 == exp [toString_valueOf.as:419]
+PASSED: d1.toString() == d2.toString() [toString_valueOf.as:426]
+PASSED: Array.prototype.hasOwnProperty('toString') [toString_valueOf.as:433]
+PASSED: !Array.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:434]
+PASSED: Array.prototype.toString != Object.prototype.toString [toString_valueOf.as:435]
+PASSED: Array.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:440]
+PASSED: typeof(a1) == "object" [toString_valueOf.as:443]
+PASSED: typeof(x) == "string" [toString_valueOf.as:446]
+PASSED: typeof(y) == "object" [toString_valueOf.as:447]
+PASSED: x == "1,2,3,4" [toString_valueOf.as:448]
+PASSED: y == a1 [toString_valueOf.as:449]
+PASSED: typeof(a3) == 'number' [toString_valueOf.as:454]
+PASSED: isNaN(a3) [toString_valueOf.as:455]
+PASSED: o.valueOfCalls == 1 [toString_valueOf.as:475]
+PASSED: o.toStringCalls == 1 [toString_valueOf.as:476]
+PASSED: typeof(a) == "string" [toString_valueOf.as:477]
+PASSED: a == "[type Object]" [toString_valueOf.as:478]
+check_totals: 144
diff --git a/test/gnash/actionscript.all/pending/toString_valueOf-7.swf b/test/gnash/actionscript.all/pending/toString_valueOf-7.swf
new file mode 100644
index 0000000..6c504b7
Binary files /dev/null and b/test/gnash/actionscript.all/pending/toString_valueOf-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/toString_valueOf-7.swf.trace b/test/gnash/actionscript.all/pending/toString_valueOf-7.swf.trace
new file mode 100644
index 0000000..8c30218
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/toString_valueOf-7.swf.trace
@@ -0,0 +1,145 @@
+PASSED: typeof(Function) == 'function' [toString_valueOf.as:32]
+PASSED: Function.prototype.hasOwnProperty('apply') [toString_valueOf.as:34]
+PASSED: Function.prototype.hasOwnProperty('call') [toString_valueOf.as:35]
+PASSED: Function.prototype.hasOwnProperty('__proto__') [toString_valueOf.as:36]
+PASSED: Function.prototype.hasOwnProperty('constructor') [toString_valueOf.as:37]
+PASSED: !Function.prototype.hasOwnProperty('toString') [toString_valueOf.as:39]
+PASSED: !Function.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:40]
+PASSED: Function.prototype.__proto__.hasOwnProperty('toString') [toString_valueOf.as:42]
+PASSED: Function.prototype.__proto__.hasOwnProperty('valueOf') [toString_valueOf.as:43]
+PASSED: Function.prototype.__proto__ == Object.prototype [toString_valueOf.as:44]
+PASSED: Object.prototype.__proto__ == undefined [toString_valueOf.as:45]
+PASSED: typeof(Function.prototype['toString']) == 'function' [toString_valueOf.as:47]
+PASSED: typeof(Function.prototype['valueOf']) == 'function' [toString_valueOf.as:48]
+PASSED: Object.prototype.hasOwnProperty('toString') [toString_valueOf.as:62]
+PASSED: Object.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:63]
+PASSED: typeof(x) == "string" [toString_valueOf.as:79]
+PASSED: typeof(y) == "object" [toString_valueOf.as:80]
+PASSED: x == "[object Object]" [toString_valueOf.as:81]
+PASSED: y == obj [toString_valueOf.as:82]
+PASSED: obj.toString == Object.prototype.toString [toString_valueOf.as:85]
+PASSED: obj.valueOf == Object.prototype.valueOf [toString_valueOf.as:86]
+PASSED: obj.toString != Object.prototype.toString [toString_valueOf.as:93]
+PASSED: obj.valueOf != Object.prototype.valueOf [toString_valueOf.as:94]
+PASSED: x=="TO_STRING" [toString_valueOf.as:105]
+PASSED: y=="TO_VALUE" [toString_valueOf.as:106]
+PASSED: typeof(obj)=="object" [toString_valueOf.as:107]
+PASSED: typeof(y) == "string" [toString_valueOf.as:109]
+PASSED: obj == y [toString_valueOf.as:110]
+PASSED: Number.prototype.hasOwnProperty('toString') [toString_valueOf.as:116]
+PASSED: Number.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:117]
+PASSED: Number.prototype.toString != Object.prototype.toString [toString_valueOf.as:119]
+PASSED: Number.prototype.valueOf != Object.prototype.valueOf [toString_valueOf.as:120]
+PASSED: typeof(x)=="string" [toString_valueOf.as:131]
+PASSED: typeof(y)=="number" [toString_valueOf.as:132]
+PASSED: x==1 [toString_valueOf.as:133]
+PASSED: y==1 [toString_valueOf.as:134]
+PASSED: num3 == "TO_VALUETO_VALUE" [toString_valueOf.as:142]
+PASSED: typeof(x)=="string" [toString_valueOf.as:146]
+PASSED: typeof(y)=="string" [toString_valueOf.as:147]
+PASSED: x=="TO_STRING" [toString_valueOf.as:148]
+PASSED: y=="TO_VALUE" [toString_valueOf.as:149]
+PASSED: String.prototype.hasOwnProperty('toString') [toString_valueOf.as:156]
+PASSED: String.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:157]
+PASSED: String.prototype.toString != Object.prototype.toString [toString_valueOf.as:159]
+PASSED: String.prototype.valueOf != Object.prototype.valueOf [toString_valueOf.as:160]
+PASSED: typeof(x) == "string" [toString_valueOf.as:170]
+PASSED: typeof(y) == "string" [toString_valueOf.as:171]
+PASSED: x == 10 [toString_valueOf.as:172]
+PASSED: y == 10 [toString_valueOf.as:173]
+PASSED: x == "10" [toString_valueOf.as:174]
+PASSED: y == "10" [toString_valueOf.as:175]
+PASSED: str3 == "102" [toString_valueOf.as:181]
+PASSED: str3 == 102 [toString_valueOf.as:182]
+PASSED: parseInt(str1) == 10 [toString_valueOf.as:187]
+PASSED: parseInt(str2) == 2 [toString_valueOf.as:188]
+PASSED: typeof(str3) == "string" [toString_valueOf.as:190]
+PASSED: str3 == "TO_VALUETO_VALUE" [toString_valueOf.as:192]
+PASSED: typeof(x) == "string" [toString_valueOf.as:199]
+PASSED: typeof(y) == "string" [toString_valueOf.as:200]
+PASSED: x == "TO_STRING" [toString_valueOf.as:201]
+PASSED: y == "TO_VALUE" [toString_valueOf.as:202]
+PASSED: !MovieClip.prototype.hasOwnProperty('toString') [toString_valueOf.as:209]
+PASSED: !MovieClip.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:210]
+PASSED: typeof(MovieClip.prototype.toString) == 'function' [toString_valueOf.as:211]
+PASSED: typeof(MovieClip.prototype.valueOf) == 'function' [toString_valueOf.as:212]
+PASSED: MovieClip.prototype.toString == Object.prototype.toString [toString_valueOf.as:216]
+PASSED: MovieClip.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:217]
+PASSED: typeof(x) == 'string' [toString_valueOf.as:223]
+PASSED: typeof(y) == 'movieclip' [toString_valueOf.as:224]
+PASSED: x == '[object Object]' [toString_valueOf.as:225]
+PASSED: y == _level0.mc1 [toString_valueOf.as:226]
+PASSED: y == _level0.mc1 [toString_valueOf.as:234]
+PASSED: mc1 != '_level0.mc1' [toString_valueOf.as:242]
+PASSED: mc1 == _level0.mc1 [toString_valueOf.as:243]
+PASSED: x=="TO_STRING" [toString_valueOf.as:248]
+PASSED: y=="TO_VALUE" [toString_valueOf.as:249]
+PASSED: typeof(mc1) == "movieclip" [toString_valueOf.as:257]
+PASSED: typeof(mc2) == "movieclip" [toString_valueOf.as:258]
+PASSED: typeof(mc3) == "number" [toString_valueOf.as:260]
+PASSED: isNaN(mc3) [toString_valueOf.as:261]
+PASSED: !TextField.prototype.hasOwnProperty('toString') [toString_valueOf.as:273]
+PASSED: !TextField.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:274]
+PASSED: typeof(TextField.prototype.toString) == 'function' [toString_valueOf.as:275]
+PASSED: typeof(TextField.prototype.valueOf) == 'function' [toString_valueOf.as:276]
+PASSED: TextField.prototype.toString == Object.prototype.toString [toString_valueOf.as:283]
+PASSED: TextField.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:284]
+PASSED: typeof(text1) == "object" [toString_valueOf.as:287]
+PASSED: typeof(text1.toString) == "function" [toString_valueOf.as:289]
+PASSED: typeof(text1.__proto__.toString) == "function" [toString_valueOf.as:290]
+PASSED: typeof(x) == "string" [toString_valueOf.as:302]
+PASSED: typeof(y) == "object" [toString_valueOf.as:303]
+PASSED: x == "[object Object]" [toString_valueOf.as:304]
+PASSED: y.toString() == "[object Object]" [toString_valueOf.as:305]
+PASSED: typeof(y.valueOf()) == "object" [toString_valueOf.as:306]
+PASSED: y == text1 [toString_valueOf.as:314]
+PASSED: text1 != "A STRING" [toString_valueOf.as:317]
+PASSED: a == "prefix_A STRING" [toString_valueOf.as:320]
+PASSED: !Button.prototype.hasOwnProperty('toString') [toString_valueOf.as:331]
+PASSED: !Button.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:332]
+PASSED: typeof(Button.prototype.toString) == 'function' [toString_valueOf.as:335]
+PASSED: typeof(Button.prototype.valueOf) == 'function' [toString_valueOf.as:336]
+PASSED: Button.prototype.toString == Object.prototype.toString [toString_valueOf.as:345]
+PASSED: Button.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:346]
+PASSED: typeof(btn1) == "object" [toString_valueOf.as:350]
+PASSED: typeof(x) == "string" [toString_valueOf.as:353]
+PASSED: typeof(y) == "object" [toString_valueOf.as:354]
+PASSED: x == "[object Object]" [toString_valueOf.as:355]
+PASSED: y.toString() == "[object Object]" [toString_valueOf.as:356]
+PASSED: typeof(y.valueOf()) == "object" [toString_valueOf.as:357]
+PASSED: typeof(btn1) == "object" [toString_valueOf.as:358]
+PASSED: y == btn1 [toString_valueOf.as:359]
+PASSED: Boolean.prototype.toString != Object.prototype.toString [toString_valueOf.as:367]
+PASSED: Boolean.prototype.valueOf != Object.prototype.valueOf [toString_valueOf.as:368]
+PASSED: typeof(b1) == "object" [toString_valueOf.as:375]
+PASSED: typeof(x) == "string" [toString_valueOf.as:378]
+PASSED: typeof(y) == "boolean" [toString_valueOf.as:379]
+PASSED: x == "false" [toString_valueOf.as:380]
+PASSED: y == false [toString_valueOf.as:381]
+PASSED: typeof(b3) == 'number' [toString_valueOf.as:386]
+PASSED: b3 == 1 [toString_valueOf.as:387]
+PASSED: Date.prototype.toString != Object.prototype.toString [toString_valueOf.as:395]
+PASSED: Date.prototype.valueOf != Object.prototype.valueOf [toString_valueOf.as:396]
+PASSED: typeof(d1) == "object" [toString_valueOf.as:403]
+PASSED: typeof(x) == "string" [toString_valueOf.as:406]
+PASSED: typeof(y) == "number" [toString_valueOf.as:407]
+PASSED: y == 0 [toString_valueOf.as:412]
+PASSED: typeof(d3) == 'string' [toString_valueOf.as:418]
+PASSED: d3 == exp [toString_valueOf.as:419]
+PASSED: d1.toString() == d2.toString() [toString_valueOf.as:426]
+PASSED: Array.prototype.hasOwnProperty('toString') [toString_valueOf.as:433]
+PASSED: !Array.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:434]
+PASSED: Array.prototype.toString != Object.prototype.toString [toString_valueOf.as:435]
+PASSED: Array.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:440]
+PASSED: typeof(a1) == "object" [toString_valueOf.as:443]
+PASSED: typeof(x) == "string" [toString_valueOf.as:446]
+PASSED: typeof(y) == "object" [toString_valueOf.as:447]
+PASSED: x == "1,2,3,4" [toString_valueOf.as:448]
+PASSED: y == a1 [toString_valueOf.as:449]
+PASSED: typeof(a3) == 'number' [toString_valueOf.as:454]
+PASSED: isNaN(a3) [toString_valueOf.as:455]
+PASSED: o.valueOfCalls == 1 [toString_valueOf.as:475]
+PASSED: o.toStringCalls == 1 [toString_valueOf.as:476]
+PASSED: typeof(a) == "string" [toString_valueOf.as:477]
+PASSED: a == "[type Object]" [toString_valueOf.as:478]
+check_totals: 144
diff --git a/test/gnash/actionscript.all/pending/toString_valueOf-8.swf b/test/gnash/actionscript.all/pending/toString_valueOf-8.swf
new file mode 100644
index 0000000..1d12007
Binary files /dev/null and b/test/gnash/actionscript.all/pending/toString_valueOf-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/toString_valueOf-8.swf.trace b/test/gnash/actionscript.all/pending/toString_valueOf-8.swf.trace
new file mode 100644
index 0000000..8c30218
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/toString_valueOf-8.swf.trace
@@ -0,0 +1,145 @@
+PASSED: typeof(Function) == 'function' [toString_valueOf.as:32]
+PASSED: Function.prototype.hasOwnProperty('apply') [toString_valueOf.as:34]
+PASSED: Function.prototype.hasOwnProperty('call') [toString_valueOf.as:35]
+PASSED: Function.prototype.hasOwnProperty('__proto__') [toString_valueOf.as:36]
+PASSED: Function.prototype.hasOwnProperty('constructor') [toString_valueOf.as:37]
+PASSED: !Function.prototype.hasOwnProperty('toString') [toString_valueOf.as:39]
+PASSED: !Function.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:40]
+PASSED: Function.prototype.__proto__.hasOwnProperty('toString') [toString_valueOf.as:42]
+PASSED: Function.prototype.__proto__.hasOwnProperty('valueOf') [toString_valueOf.as:43]
+PASSED: Function.prototype.__proto__ == Object.prototype [toString_valueOf.as:44]
+PASSED: Object.prototype.__proto__ == undefined [toString_valueOf.as:45]
+PASSED: typeof(Function.prototype['toString']) == 'function' [toString_valueOf.as:47]
+PASSED: typeof(Function.prototype['valueOf']) == 'function' [toString_valueOf.as:48]
+PASSED: Object.prototype.hasOwnProperty('toString') [toString_valueOf.as:62]
+PASSED: Object.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:63]
+PASSED: typeof(x) == "string" [toString_valueOf.as:79]
+PASSED: typeof(y) == "object" [toString_valueOf.as:80]
+PASSED: x == "[object Object]" [toString_valueOf.as:81]
+PASSED: y == obj [toString_valueOf.as:82]
+PASSED: obj.toString == Object.prototype.toString [toString_valueOf.as:85]
+PASSED: obj.valueOf == Object.prototype.valueOf [toString_valueOf.as:86]
+PASSED: obj.toString != Object.prototype.toString [toString_valueOf.as:93]
+PASSED: obj.valueOf != Object.prototype.valueOf [toString_valueOf.as:94]
+PASSED: x=="TO_STRING" [toString_valueOf.as:105]
+PASSED: y=="TO_VALUE" [toString_valueOf.as:106]
+PASSED: typeof(obj)=="object" [toString_valueOf.as:107]
+PASSED: typeof(y) == "string" [toString_valueOf.as:109]
+PASSED: obj == y [toString_valueOf.as:110]
+PASSED: Number.prototype.hasOwnProperty('toString') [toString_valueOf.as:116]
+PASSED: Number.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:117]
+PASSED: Number.prototype.toString != Object.prototype.toString [toString_valueOf.as:119]
+PASSED: Number.prototype.valueOf != Object.prototype.valueOf [toString_valueOf.as:120]
+PASSED: typeof(x)=="string" [toString_valueOf.as:131]
+PASSED: typeof(y)=="number" [toString_valueOf.as:132]
+PASSED: x==1 [toString_valueOf.as:133]
+PASSED: y==1 [toString_valueOf.as:134]
+PASSED: num3 == "TO_VALUETO_VALUE" [toString_valueOf.as:142]
+PASSED: typeof(x)=="string" [toString_valueOf.as:146]
+PASSED: typeof(y)=="string" [toString_valueOf.as:147]
+PASSED: x=="TO_STRING" [toString_valueOf.as:148]
+PASSED: y=="TO_VALUE" [toString_valueOf.as:149]
+PASSED: String.prototype.hasOwnProperty('toString') [toString_valueOf.as:156]
+PASSED: String.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:157]
+PASSED: String.prototype.toString != Object.prototype.toString [toString_valueOf.as:159]
+PASSED: String.prototype.valueOf != Object.prototype.valueOf [toString_valueOf.as:160]
+PASSED: typeof(x) == "string" [toString_valueOf.as:170]
+PASSED: typeof(y) == "string" [toString_valueOf.as:171]
+PASSED: x == 10 [toString_valueOf.as:172]
+PASSED: y == 10 [toString_valueOf.as:173]
+PASSED: x == "10" [toString_valueOf.as:174]
+PASSED: y == "10" [toString_valueOf.as:175]
+PASSED: str3 == "102" [toString_valueOf.as:181]
+PASSED: str3 == 102 [toString_valueOf.as:182]
+PASSED: parseInt(str1) == 10 [toString_valueOf.as:187]
+PASSED: parseInt(str2) == 2 [toString_valueOf.as:188]
+PASSED: typeof(str3) == "string" [toString_valueOf.as:190]
+PASSED: str3 == "TO_VALUETO_VALUE" [toString_valueOf.as:192]
+PASSED: typeof(x) == "string" [toString_valueOf.as:199]
+PASSED: typeof(y) == "string" [toString_valueOf.as:200]
+PASSED: x == "TO_STRING" [toString_valueOf.as:201]
+PASSED: y == "TO_VALUE" [toString_valueOf.as:202]
+PASSED: !MovieClip.prototype.hasOwnProperty('toString') [toString_valueOf.as:209]
+PASSED: !MovieClip.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:210]
+PASSED: typeof(MovieClip.prototype.toString) == 'function' [toString_valueOf.as:211]
+PASSED: typeof(MovieClip.prototype.valueOf) == 'function' [toString_valueOf.as:212]
+PASSED: MovieClip.prototype.toString == Object.prototype.toString [toString_valueOf.as:216]
+PASSED: MovieClip.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:217]
+PASSED: typeof(x) == 'string' [toString_valueOf.as:223]
+PASSED: typeof(y) == 'movieclip' [toString_valueOf.as:224]
+PASSED: x == '[object Object]' [toString_valueOf.as:225]
+PASSED: y == _level0.mc1 [toString_valueOf.as:226]
+PASSED: y == _level0.mc1 [toString_valueOf.as:234]
+PASSED: mc1 != '_level0.mc1' [toString_valueOf.as:242]
+PASSED: mc1 == _level0.mc1 [toString_valueOf.as:243]
+PASSED: x=="TO_STRING" [toString_valueOf.as:248]
+PASSED: y=="TO_VALUE" [toString_valueOf.as:249]
+PASSED: typeof(mc1) == "movieclip" [toString_valueOf.as:257]
+PASSED: typeof(mc2) == "movieclip" [toString_valueOf.as:258]
+PASSED: typeof(mc3) == "number" [toString_valueOf.as:260]
+PASSED: isNaN(mc3) [toString_valueOf.as:261]
+PASSED: !TextField.prototype.hasOwnProperty('toString') [toString_valueOf.as:273]
+PASSED: !TextField.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:274]
+PASSED: typeof(TextField.prototype.toString) == 'function' [toString_valueOf.as:275]
+PASSED: typeof(TextField.prototype.valueOf) == 'function' [toString_valueOf.as:276]
+PASSED: TextField.prototype.toString == Object.prototype.toString [toString_valueOf.as:283]
+PASSED: TextField.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:284]
+PASSED: typeof(text1) == "object" [toString_valueOf.as:287]
+PASSED: typeof(text1.toString) == "function" [toString_valueOf.as:289]
+PASSED: typeof(text1.__proto__.toString) == "function" [toString_valueOf.as:290]
+PASSED: typeof(x) == "string" [toString_valueOf.as:302]
+PASSED: typeof(y) == "object" [toString_valueOf.as:303]
+PASSED: x == "[object Object]" [toString_valueOf.as:304]
+PASSED: y.toString() == "[object Object]" [toString_valueOf.as:305]
+PASSED: typeof(y.valueOf()) == "object" [toString_valueOf.as:306]
+PASSED: y == text1 [toString_valueOf.as:314]
+PASSED: text1 != "A STRING" [toString_valueOf.as:317]
+PASSED: a == "prefix_A STRING" [toString_valueOf.as:320]
+PASSED: !Button.prototype.hasOwnProperty('toString') [toString_valueOf.as:331]
+PASSED: !Button.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:332]
+PASSED: typeof(Button.prototype.toString) == 'function' [toString_valueOf.as:335]
+PASSED: typeof(Button.prototype.valueOf) == 'function' [toString_valueOf.as:336]
+PASSED: Button.prototype.toString == Object.prototype.toString [toString_valueOf.as:345]
+PASSED: Button.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:346]
+PASSED: typeof(btn1) == "object" [toString_valueOf.as:350]
+PASSED: typeof(x) == "string" [toString_valueOf.as:353]
+PASSED: typeof(y) == "object" [toString_valueOf.as:354]
+PASSED: x == "[object Object]" [toString_valueOf.as:355]
+PASSED: y.toString() == "[object Object]" [toString_valueOf.as:356]
+PASSED: typeof(y.valueOf()) == "object" [toString_valueOf.as:357]
+PASSED: typeof(btn1) == "object" [toString_valueOf.as:358]
+PASSED: y == btn1 [toString_valueOf.as:359]
+PASSED: Boolean.prototype.toString != Object.prototype.toString [toString_valueOf.as:367]
+PASSED: Boolean.prototype.valueOf != Object.prototype.valueOf [toString_valueOf.as:368]
+PASSED: typeof(b1) == "object" [toString_valueOf.as:375]
+PASSED: typeof(x) == "string" [toString_valueOf.as:378]
+PASSED: typeof(y) == "boolean" [toString_valueOf.as:379]
+PASSED: x == "false" [toString_valueOf.as:380]
+PASSED: y == false [toString_valueOf.as:381]
+PASSED: typeof(b3) == 'number' [toString_valueOf.as:386]
+PASSED: b3 == 1 [toString_valueOf.as:387]
+PASSED: Date.prototype.toString != Object.prototype.toString [toString_valueOf.as:395]
+PASSED: Date.prototype.valueOf != Object.prototype.valueOf [toString_valueOf.as:396]
+PASSED: typeof(d1) == "object" [toString_valueOf.as:403]
+PASSED: typeof(x) == "string" [toString_valueOf.as:406]
+PASSED: typeof(y) == "number" [toString_valueOf.as:407]
+PASSED: y == 0 [toString_valueOf.as:412]
+PASSED: typeof(d3) == 'string' [toString_valueOf.as:418]
+PASSED: d3 == exp [toString_valueOf.as:419]
+PASSED: d1.toString() == d2.toString() [toString_valueOf.as:426]
+PASSED: Array.prototype.hasOwnProperty('toString') [toString_valueOf.as:433]
+PASSED: !Array.prototype.hasOwnProperty('valueOf') [toString_valueOf.as:434]
+PASSED: Array.prototype.toString != Object.prototype.toString [toString_valueOf.as:435]
+PASSED: Array.prototype.valueOf == Object.prototype.valueOf [toString_valueOf.as:440]
+PASSED: typeof(a1) == "object" [toString_valueOf.as:443]
+PASSED: typeof(x) == "string" [toString_valueOf.as:446]
+PASSED: typeof(y) == "object" [toString_valueOf.as:447]
+PASSED: x == "1,2,3,4" [toString_valueOf.as:448]
+PASSED: y == a1 [toString_valueOf.as:449]
+PASSED: typeof(a3) == 'number' [toString_valueOf.as:454]
+PASSED: isNaN(a3) [toString_valueOf.as:455]
+PASSED: o.valueOfCalls == 1 [toString_valueOf.as:475]
+PASSED: o.toStringCalls == 1 [toString_valueOf.as:476]
+PASSED: typeof(a) == "string" [toString_valueOf.as:477]
+PASSED: a == "[type Object]" [toString_valueOf.as:478]
+check_totals: 144
diff --git a/test/gnash/actionscript.all/pending/toString_valueOf.as b/test/gnash/actionscript.all/pending/toString_valueOf.as
new file mode 100644
index 0000000..3626ef5
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/toString_valueOf.as
@@ -0,0 +1,485 @@
+// 
+//   Copyright (C) 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modchecky
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; check not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fcheckth Floor, Boston, MA  02110-1301  USA
+//
+
+/*
+ *  Test toString and valueOf.
+ */
+
+
+
+rcsid="$Id: toString_valueOf.as,v 1.33 2008/04/02 01:52:14 zoulunkai Exp $";
+#include "check.as"
+
+//
+//Testing toString and valueOf of Function
+//
+#if OUTPUT_VERSION > 5
+  check_equals(typeof(Function), 'function');
+  
+  check(Function.prototype.hasOwnProperty('apply'));
+  check(Function.prototype.hasOwnProperty('call'));
+  check(Function.prototype.hasOwnProperty('__proto__'));
+  check(Function.prototype.hasOwnProperty('constructor'));
+  
+  check(!Function.prototype.hasOwnProperty('toString'));
+  check(!Function.prototype.hasOwnProperty('valueOf'));
+  
+  check(Function.prototype.__proto__.hasOwnProperty('toString'));
+  check(Function.prototype.__proto__.hasOwnProperty('valueOf'));
+  check_equals(Function.prototype.__proto__, Object.prototype);
+  check_equals(Object.prototype.__proto__, undefined);
+  
+  check_equals(typeof(Function.prototype['toString']), 'function');
+  check_equals(typeof(Function.prototype['valueOf']), 'function');
+#else
+  // No Function Class in swf5
+  check_equals(typeof(Function), 'undefined');
+   
+  // test 'function' is supported in swf5:)
+  x = function () {};
+  check_equals(typeof(x), 'function');
+#endif
+
+//
+//Testing toString and valueOf of Object
+//
+#if OUTPUT_VERSION > 5
+  check(Object.prototype.hasOwnProperty('toString'));
+  check(Object.prototype.hasOwnProperty('valueOf'));
+#else
+  // hasOwnProperty method is not visible in swf5 by default.
+  check(typeof(hasOwnProperty) == 'undefined');
+  // Object object still supports toString and valueOf in swf5
+  check_equals(typeof(Object.prototype['toString']), 'function');
+  check_equals(typeof(Object.prototype['valueOf']), 'function');
+  // this is true because a function is considered like an undefined
+  // value in equality context.
+  check_equals(Object.prototype.toString, undefined);
+  check_equals(Object.prototype.valueOf,  undefined);
+#endif
+
+obj = new Object();
+x = obj.toString();
+y = obj.valueOf();
+check(typeof(x) == "string");
+check(typeof(y) == "object");
+check(x == "[object Object]"); 
+check(y == obj); //true
+//trace(obj); //invoke obj.toString(), output [object Object]
+#if OUTPUT_VERSION > 5
+  check(obj.toString == Object.prototype.toString);
+  check(obj.valueOf == Object.prototype.valueOf);
+#endif
+
+obj.toString = function () {return "TO_STRING";};
+obj.valueOf = function () {return "TO_VALUE";};
+#if OUTPUT_VERSION > 5
+  // no longer true in swf6, and a general case in swf6 and above
+  check(obj.toString != Object.prototype.toString);
+  check(obj.valueOf != Object.prototype.valueOf);
+#else
+  // this is true only in swf5 (any function is equal to any other in SWF5)
+  check(obj.toString == undefined);
+  check(obj.valueOf == undefined);
+  check(obj.toString == obj.valueOf);
+  check(Object.prototype.toString == undefined);
+  check(Object.prototype.valueOf == undefined);
+#endif
+x = obj.toString();
+y = obj.valueOf();
+check(x=="TO_STRING");
+check(y=="TO_VALUE");
+check(typeof(obj)=="object"); 
+//trace(obj); //invoke obj.toString(), output TO_STRING
+check(typeof(y) == "string");
+check(obj == y); 
+
+//
+//Testing toString and valueOf of Number
+//
+#if OUTPUT_VERSION > 5
+  check(Number.prototype.hasOwnProperty('toString'));
+  check(Number.prototype.hasOwnProperty('valueOf'));
+  // no longer true in swf6, and a general case in swf6 and above
+  check(Number.prototype.toString != Object.prototype.toString);
+  check(Number.prototype.valueOf != Object.prototype.valueOf);
+#else
+  // toString and valueOf are not visible in swf5 by default.
+  check(Number.prototype.toString == undefined);
+  check(Number.prototype.valueOf == undefined);
+#endif
+
+
+num1 = new Number(1);
+x = num1.toString();
+y = num1.valueOf();
+check(typeof(x)=="string"); 
+check(typeof(y)=="number"); 
+check(x==1); 
+check(y==1); 
+
+Number.prototype.toString = function () {return "TO_STRING"; };
+Number.prototype.valueOf = function () {return "TO_VALUE"; };
+
+num2 = new Number(2);
+num3 = num1 + num2;
+//valueOf called;
+check_equals(num3, "TO_VALUETO_VALUE");
+
+x = num1.toString();
+y = num1.valueOf();
+check(typeof(x)=="string"); 
+check(typeof(y)=="string"); 
+check(x=="TO_STRING"); 
+check(y=="TO_VALUE");  
+//trace(num1); // invoke num1.toString(), output TO_STRING
+
+//
+//Testing toString and valueOf of String
+//
+#if OUTPUT_VERSION > 5
+  check(String.prototype.hasOwnProperty('toString'));
+  check(String.prototype.hasOwnProperty('valueOf'));
+  // no longer true in swf6, and a general case in swf6 and above
+  check(String.prototype.toString != Object.prototype.toString);
+  check(String.prototype.valueOf != Object.prototype.valueOf);
+#else
+  // toString and valueOf are not visible in swf5 by default.
+  check(String.prototype.toString == undefined);
+  check(String.prototype.valueOf == undefined);
+#endif
+
+str1 = new String("10");
+x = str1.toString();
+y = str1.valueOf();
+check(typeof(x) == "string");
+check(typeof(y) == "string");
+check(x == 10);
+check(y == 10);
+check(x == "10");
+check(y == "10");
+//trace(x);  // output 10
+//trace(y);  // output 10
+
+str2 = new String("2");
+str3 = str1+str2;
+check(str3 == "102"); 
+check(str3 == 102); 
+
+String.prototype.toString = function () {return "TO_STRING";};
+String.prototype.valueOf = function () {return "TO_VALUE";};
+
+check_equals(parseInt(str1), 10); 
+check_equals(parseInt(str2), 2);  
+str3 =  str1 + str2;
+check(typeof(str3) == "string");
+//valueOf called
+check_equals(str3, "TO_VALUETO_VALUE"); 
+// trace a string Object won't invoke the toString method.
+// I don't think it's a bug.
+//trace(str1); //output 10 !
+
+x = str1.toString();
+y = str1.valueOf();
+check(typeof(x) == "string"); 
+check(typeof(y) == "string"); 
+check(x == "TO_STRING");  
+check(y == "TO_VALUE");   
+
+
+//
+//Testing toString and valueOf of movieclip
+//
+#if OUTPUT_VERSION > 5
+  check(!MovieClip.prototype.hasOwnProperty('toString'));
+  check(!MovieClip.prototype.hasOwnProperty('valueOf'));
+  check_equals(typeof(MovieClip.prototype.toString), 'function');
+  check_equals(typeof(MovieClip.prototype.valueOf), 'function');
+#endif
+
+// For movieclips, this true from swf5~swf8!
+check_equals(MovieClip.prototype.toString, Object.prototype.toString);
+check_equals(MovieClip.prototype.valueOf, Object.prototype.valueOf);
+
+_root.createEmptyMovieClip("mc1", 1);
+x = mc1.toString();
+y = mc1.valueOf();
+#if OUTPUT_VERSION > 5
+  check_equals(typeof(x), 'string'); 
+  check_equals(typeof(y), 'movieclip');  
+  check_equals(x, '[object Object]'); 
+  check_equals(y, _level0.mc1); 
+#else
+  // swf5 does not support createEmptyMovieClip by default
+  check_equals(typeof(x), 'undefined'); 
+  check_equals(typeof(y), 'undefined');  
+  check_equals(x, undefined); 
+  check_equals(y, undefined); 
+#endif
+check_equals(y, _level0.mc1);  
+
+//trace a movieclip doesn't invoke the toString method, either.
+//trace(mc1); //output _level0.mc
+
+MovieClip.prototype.toString = function () {return "TO_STRING";};
+MovieClip.prototype.valueOf = function () {return "TO_VALUE";};
+
+check( mc1 != '_level0.mc1'); // won't invoke toString for comparison
+check_equals( mc1, _level0.mc1 ); 
+
+x = mc1.toString();
+y = mc1.valueOf();
+#if OUTPUT_VERSION > 5
+  check(x=="TO_STRING");
+  check(y=="TO_VALUE");
+#else
+  check(x==undefined);
+  check(y==undefined);
+#endif
+
+_root.createEmptyMovieClip("mc2", 2);
+#if OUTPUT_VERSION > 5
+  check(typeof(mc1) == "movieclip"); 
+  check(typeof(mc2) == "movieclip"); 
+  mc3 = mc1 + mc2;
+  check(typeof(mc3) == "number");    
+  check(isNaN(mc3)); 
+#else
+  // swf5 does not support createEmptyMovieClip by default
+  check(typeof(createEmptyMovieClip) == "undefined");
+  check(typeof(mc1) == "undefined"); 
+  check(typeof(mc2) == "undefined"); 
+#endif
+
+//
+//Testing toString and valueOf of TextFields
+//
+#if OUTPUT_VERSION > 5
+  check(!TextField.prototype.hasOwnProperty('toString'));
+  check(!TextField.prototype.hasOwnProperty('valueOf'));
+  check(typeof(TextField.prototype.toString) == 'function' );
+  check(typeof(TextField.prototype.valueOf) == 'function' );
+#else
+  // TextField in swf5 does not have a prototype by default!
+  check_equals(typeof(TextField.prototype), 'undefined'); 
+#endif
+
+// For TextFields, this true from swf5~swf8!
+check(TextField.prototype.toString == Object.prototype.toString);
+check(TextField.prototype.valueOf == Object.prototype.valueOf);
+
+text1 = new TextField();
+check(typeof(text1) == "object");
+#if OUTPUT_VERSION > 5
+  check_equals(typeof(text1.toString), "function");
+  check_equals(typeof(text1.__proto__.toString), "function");
+#else
+  xcheck_equals(typeof(text1.toString), "undefined");
+  xcheck_equals(typeof(text1.valueOf), "undefined");
+  check_equals(typeof(text1.__proto__), 'object');
+  xcheck_equals(typeof(text1.__proto__.toString), "undefined"); 
+  xcheck_equals(typeof(text1.__proto__.valueOf), "undefined"); 
+#endif
+
+x = text1.toString();
+y = text1.valueOf();
+#if OUTPUT_VERSION > 5 
+  check(typeof(x) == "string");   
+  check(typeof(y) == "object");  
+  check(x == "[object Object]"); 
+  check(y.toString() == "[object Object]"); 
+  check(typeof(y.valueOf()) == "object"); 
+#else
+  xcheck_equals(typeof(x), "undefined");   
+  xcheck_equals(typeof(y), "undefined");  
+  xcheck_equals(x, undefined); 
+  xcheck_equals(y.toString(), undefined); 
+  xcheck_equals(typeof(y.valueOf()),  "undefined"); 
+#endif 
+check_equals(y, text1);
+
+text1.toString = function() { return "A STRING"; };
+check(text1 != "A STRING");
+a = "prefix_"+text1;
+#if OUTPUT_VERSION > 5
+ check_equals(a, "prefix_A STRING");
+#else
+ xcheck_equals(a, "prefix_");
+#endif
+
+//
+//Testing toString and valueOf of Buttons
+//
+
+#if OUTPUT_VERSION > 5 
+// hasOwnProperty method is not visible in swf5 by default.
+check(!Button.prototype.hasOwnProperty('toString'));
+check(!Button.prototype.hasOwnProperty('valueOf'));
+#endif
+
+check_equals(typeof(Button.prototype.toString), 'function' );
+check_equals(typeof(Button.prototype.valueOf), 'function' );
+
+// For Buttons, this true from swf5~swf8!
+#if OUTPUT_VERSION < 6
+ check(Button.prototype.toString == Object.prototype.toString);
+ check(Button.prototype.valueOf == Object.prototype.valueOf);
+ check_equals(Button.prototype.toString, undefined);
+ check_equals(Button.prototype.valueOf, undefined);
+#else
+ check_equals(Button.prototype.toString, Object.prototype.toString);
+ check_equals(Button.prototype.valueOf, Object.prototype.valueOf);
+#endif
+
+btn1 = new Button();
+check_equals(typeof(btn1), "object");
+x = btn1.toString();
+y = btn1.valueOf();
+check_equals(typeof(x), "string");  
+check_equals(typeof(y), "object");   
+check_equals(x, "[object Object]");  
+check_equals(y.toString(), "[object Object]"); 
+check_equals(typeof(y.valueOf()), "object");  
+check_equals(typeof(btn1), "object");
+check(y == btn1);
+//trace(btn1); // invoke btn1.toString(), output [object Object]
+
+//
+//Testing toString and valueOf of Boolean
+//
+
+#if OUTPUT_VERSION > 5 
+  check(Boolean.prototype.toString != Object.prototype.toString);
+  check(Boolean.prototype.valueOf != Object.prototype.valueOf);
+#else
+  check(Boolean.prototype.toString == undefined);
+  check(Boolean.prototype.valueOf == undefined);
+#endif
+
+b1 = new Boolean(false);
+check(typeof(b1) == "object");
+x = b1.toString();
+y = b1.valueOf();
+check(typeof(x) == "string");   
+check(typeof(y) == "boolean");  
+check(x == "false");
+check(y == false);
+//trace(b1); // invoke b1.toString(), output false 
+
+b2 = new Boolean(true);
+b3 = b1 + b2;
+check(typeof(b3) == 'number');
+check_equals(b3, 1);
+
+
+//
+//Testing toString and valueOf of Date
+//
+
+#if OUTPUT_VERSION > 5 
+  check(Date.prototype.toString != Object.prototype.toString);
+  check(Date.prototype.valueOf != Object.prototype.valueOf);
+#else
+  check(Date.prototype.toString == undefined);
+  check(Date.prototype.valueOf == undefined);
+#endif
+
+d1 = new Date(0);
+check_equals(typeof(d1), "object");
+x = d1.toString();
+y = d1.valueOf();
+check_equals(typeof(x), "string");  
+check_equals(typeof(y), "number");   
+// NOTE: the value of toString() here depends on timezone !
+//       It's the epoch, but depending on timezone the GMT+<x> and actual hour change
+//       For this reason the test is disabled till a solution is found.
+//check_equals(x, "Thu Jan 1 08:00:00 GMT+0800 1970"); 
+check_equals(y, 0);
+
+d2 = new Date(1);
+d3 = d1 + d2; // in SWF5 this should result in a number, in SWF6 or higher, in a string
+exp = d1.toString() + d2.toString();
+#if OUTPUT_VERSION > 5 
+  check_equals(typeof(d3), 'string');
+  check_equals(d3, exp);
+#else
+  check_equals(typeof(d3), 'number');
+  check_equals(d3, 1);
+#endif
+
+// Date(0) == Date(1) 
+check_equals(d1.toString(), d2.toString());
+
+//
+//Testing toString and valueOf of Array
+//
+
+#if OUTPUT_VERSION > 5 
+  check(Array.prototype.hasOwnProperty('toString'));
+  check(!Array.prototype.hasOwnProperty('valueOf'));
+  check(Array.prototype.toString != Object.prototype.toString);
+#else
+  check(Array.prototype.toString == undefined);
+#endif
+
+check(Array.prototype.valueOf == Object.prototype.valueOf);
+
+a1 = new Array(1,2,3,4);
+check(typeof(a1) == "object");
+x = a1.toString();
+y = a1.valueOf();
+check(typeof(x) == "string");  
+check(typeof(y) == "object");   
+check(x == "1,2,3,4");  
+check(y == a1);   
+//trace(a1); // invoke a1.toString(), output 1,2,3,4     
+
+a2 = new Array(2,3,4,5);
+a3 = a1 + a2;
+check(typeof(a3) == 'number');
+check(isNaN(a3));
+
+
+var v = function () {
+        this.valueOfCalls++;
+        return this.v;
+};
+var s = function () {
+        this.toStringCalls++;
+        return this.v;
+};
+
+
+var o = new Object ();
+o.valueOfCalls = 0;
+o.toStringCalls = 0;
+o.valueOf = v;
+o.toString = s;
+o.v = new Object();
+a = "" + o;
+check_equals(o.valueOfCalls, 1);
+check_equals(o.toStringCalls, 1);
+check_equals(typeof(a), "string");
+check_equals(a, "[type Object]");
+
+
+#if OUTPUT_VERSION < 6
+ check_totals(126);
+#else
+ check_totals(144);
+#endif
diff --git a/test/gnash/actionscript.all/pending/with-5.swf b/test/gnash/actionscript.all/pending/with-5.swf
new file mode 100644
index 0000000..ef4c9d8
Binary files /dev/null and b/test/gnash/actionscript.all/pending/with-5.swf differ
diff --git a/test/gnash/actionscript.all/pending/with-5.swf.trace b/test/gnash/actionscript.all/pending/with-5.swf.trace
new file mode 100644
index 0000000..9b9fa3f
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/with-5.swf.trace
@@ -0,0 +1,42 @@
+PASSED: a == undefined [with.as:31]
+PASSED: b == undefined [with.as:32]
+PASSED: a == 1 [with.as:36]
+PASSED: b == 2 [with.as:37]
+PASSED: l0 == 5 [with.as:38]
+PASSED: obj.c == undefined [with.as:42]
+PASSED: l0 == 5 [with.as:49]
+PASSED: obj.a == 1 [with.as:50]
+PASSED: a == 1 [with.as:51]
+PASSED: b == 2 [with.as:52]
+PASSED: obj.a == 1 [with.as:54]
+PASSED: a == 1 [with.as:57]
+PASSED: b == 2 [with.as:58]
+PASSED: a == 1 [with.as:63]
+PASSED: b == 2 [with.as:64]
+PASSED: found7 == 1 [with.as:80]
+PASSED: get_name() == "timeline" [with.as:114]
+PASSED: get_name() == "obj1" [with.as:117]
+PASSED: checkpoint == 1 [with.as:134]
+PASSED: checkpoint == 1 [with.as:137]
+PASSED: checkpoint == 3 [with.as:140]
+PASSED: Number.prototype.checkpoint == 'three' [with.as:141]
+PASSED: checkpoint == 4 [with.as:144]
+PASSED: String.prototype.checkpoint == 'four' [with.as:145]
+PASSED: this == objA [with.as:233]
+PASSED: this == objA [with.as:236]
+PASSED: a == 4 [with.as:420]
+PASSED: b == 6 [with.as:424]
+PASSED: typeof(checkpoint) == "undefined" [with.as:433]
+PASSED: checkpoint == "o.i.j" [with.as:442]
+PASSED: c == "with o" [with.as:454]
+PASSED: d == "with o" [with.as:455]
+PASSED: typeof(e) == "undefined" [with.as:456]
+PASSED: f == "empty" [with.as:457]
+PASSED: typeof(o.c) == 'undefined' [with.as:489]
+PASSED: typeof(o.d) == 'undefined' [with.as:490]
+PASSED: o.e == 'with o' [with.as:491]
+PASSED: o.f == 'with o' [with.as:492]
+PASSED: typeof(checkpoint) == "undefined" [with.as:500]
+PASSED: a == 120 [with.as:470]
+PASSED: b == 7 [with.as:474]
+check_totals: 41
diff --git a/test/gnash/actionscript.all/pending/with-6.swf b/test/gnash/actionscript.all/pending/with-6.swf
new file mode 100644
index 0000000..c8c4b92
Binary files /dev/null and b/test/gnash/actionscript.all/pending/with-6.swf differ
diff --git a/test/gnash/actionscript.all/pending/with-6.swf.trace b/test/gnash/actionscript.all/pending/with-6.swf.trace
new file mode 100644
index 0000000..2488a86
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/with-6.swf.trace
@@ -0,0 +1,100 @@
+PASSED: a == undefined [with.as:31]
+PASSED: b == undefined [with.as:32]
+PASSED: a == 1 [with.as:36]
+PASSED: b == 2 [with.as:37]
+PASSED: l0 == 5 [with.as:38]
+PASSED: obj.c == undefined [with.as:42]
+PASSED: l0 == 5 [with.as:49]
+PASSED: obj.a == 1 [with.as:50]
+PASSED: a == 1 [with.as:51]
+PASSED: b == 2 [with.as:52]
+PASSED: obj.a == 1 [with.as:54]
+PASSED: a == 1 [with.as:57]
+PASSED: b == 2 [with.as:58]
+PASSED: a == 1 [with.as:63]
+PASSED: b == 2 [with.as:64]
+PASSED: found7 == 1 [with.as:80]
+PASSED: obj.a == 1 [with.as:87]
+PASSED: found8 == 1 [with.as:90]
+PASSED: get_name() == "timeline" [with.as:114]
+PASSED: get_name() == "obj1" [with.as:117]
+PASSED: checkpoint == 1 [with.as:134]
+PASSED: checkpoint == 1 [with.as:137]
+PASSED: checkpoint == 3 [with.as:140]
+PASSED: Number.prototype.checkpoint == 'three' [with.as:141]
+PASSED: checkpoint == 4 [with.as:144]
+PASSED: String.prototype.checkpoint == 'four' [with.as:145]
+PASSED: a == 1 [with.as:165]
+PASSED: a == 2 [with.as:169]
+PASSED: a == 2 [with.as:176]
+PASSED: b == 2 [with.as:177]
+PASSED: x == 3 [with.as:178]
+PASSED: y == 3 [with.as:179]
+PASSED: this == _root [with.as:185]
+PASSED: this == _level0 [with.as:188]
+PASSED: a == 1 [with.as:189]
+PASSED: b == 1 [with.as:190]
+PASSED: x == 3 [with.as:191]
+PASSED: y == 3 [with.as:192]
+PASSED: f_a() == 100 [with.as:220]
+PASSED: f_b() == 100 [with.as:221]
+PASSED: typeof(f_x()) == 'undefined' [with.as:222]
+PASSED: typeof(f_y()) == 'undefined' [with.as:223]
+PASSED: this == objA [with.as:233]
+PASSED: this == objA [with.as:236]
+PASSED: typeof(clip1.clip2) == 'movieclip' [with.as:251]
+PASSED: this == _level0 [with.as:275]
+PASSED: testvar == 'clip1_var' [with.as:276]
+PASSED: testvar2 == 'global_var' [with.as:278]
+PASSED: testvar3 == undefined [with.as:279]
+PASSED: this == _level0 [with.as:283]
+PASSED: testvar == 'clip2_var' [with.as:284]
+PASSED: testvar2 == 'global_var' [with.as:285]
+PASSED: testvar3 == undefined [with.as:286]
+PASSED: this == _level0 [with.as:290]
+PASSED: testvar == 'clip3_var' [with.as:291]
+PASSED: testvar2 == 'global_var' [with.as:292]
+PASSED: testvar3 == undefined [with.as:293]
+PASSED: checkpoint == '/' [with.as:304]
+PASSED: checkpoint == '/clip1' [with.as:315]
+PASSED: checkpoint == '/clip1/clip2' [with.as:326]
+PASSED: checkpoint == '/clip1/clip2' [with.as:338]
+PASSED: checkpoint == '/' [with.as:348]
+PASSED: _target == "/clip1" [with.as:353]
+PASSED: _target == "/clip1" [with.as:357]
+PASSED: _target == "/" [with.as:361]
+PASSED: _target == "/" [with.as:367]
+PASSED: _target == "/clip1" [with.as:371]
+PASSED: _target == "/" [with.as:376]
+PASSED: _target == "/clip1" [with.as:381]
+PASSED: _target == "/clip1" [with.as:393]
+PASSED: a == 4 [with.as:420]
+PASSED: b == 6 [with.as:424]
+PASSED: typeof(checkpoint) == "undefined" [with.as:433]
+PASSED: checkpoint == "o.i.j" [with.as:442]
+PASSED: c == "with o" [with.as:454]
+PASSED: d == "with o" [with.as:455]
+PASSED: typeof(e) == "undefined" [with.as:456]
+PASSED: f == "empty" [with.as:457]
+PASSED: typeof(o.c) == 'undefined' [with.as:489]
+PASSED: typeof(o.d) == 'undefined' [with.as:490]
+PASSED: o.e == 'with o' [with.as:491]
+PASSED: o.f == 'with o' [with.as:492]
+PASSED: typeof(checkpoint) == "undefined" [with.as:500]
+PASSED: a == 1 [with.as:466]
+PASSED: b == 7 [with.as:474]
+PASSED: inheritedMem == "McProto" [with.as:523]
+PASSED: nonexistent == "nonExistent" [with.as:524]
+PASSED: nooverride == "nooverride" [with.as:525]
+PASSED: mem == "mcMemberUpdated" [with.as:526]
+PASSED: child._target == "/mc/child" [with.as:527]
+PASSED: inheritedMem == "McProtoOverridden" [with.as:529]
+PASSED: mc.inheritedMem == "McProto" [with.as:530]
+PASSED: nonexistent == 'nonExistent' [with.as:531]
+PASSED: typeof(nooverride) == 'undefined' [with.as:532]
+PASSED: mc.nooverride == 'nooverride' [with.as:533]
+PASSED: typeof(mem) == 'undefined' [with.as:534]
+PASSED: mc.mem == "mcMemberUpdated" [with.as:535]
+PASSED: typeof(mc.child) == 'movieclip' [with.as:536]
+PASSED: child == "rootChild" [with.as:537]
+check_totals: 99
diff --git a/test/gnash/actionscript.all/pending/with-7.swf b/test/gnash/actionscript.all/pending/with-7.swf
new file mode 100644
index 0000000..e48875f
Binary files /dev/null and b/test/gnash/actionscript.all/pending/with-7.swf differ
diff --git a/test/gnash/actionscript.all/pending/with-7.swf.trace b/test/gnash/actionscript.all/pending/with-7.swf.trace
new file mode 100644
index 0000000..2488a86
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/with-7.swf.trace
@@ -0,0 +1,100 @@
+PASSED: a == undefined [with.as:31]
+PASSED: b == undefined [with.as:32]
+PASSED: a == 1 [with.as:36]
+PASSED: b == 2 [with.as:37]
+PASSED: l0 == 5 [with.as:38]
+PASSED: obj.c == undefined [with.as:42]
+PASSED: l0 == 5 [with.as:49]
+PASSED: obj.a == 1 [with.as:50]
+PASSED: a == 1 [with.as:51]
+PASSED: b == 2 [with.as:52]
+PASSED: obj.a == 1 [with.as:54]
+PASSED: a == 1 [with.as:57]
+PASSED: b == 2 [with.as:58]
+PASSED: a == 1 [with.as:63]
+PASSED: b == 2 [with.as:64]
+PASSED: found7 == 1 [with.as:80]
+PASSED: obj.a == 1 [with.as:87]
+PASSED: found8 == 1 [with.as:90]
+PASSED: get_name() == "timeline" [with.as:114]
+PASSED: get_name() == "obj1" [with.as:117]
+PASSED: checkpoint == 1 [with.as:134]
+PASSED: checkpoint == 1 [with.as:137]
+PASSED: checkpoint == 3 [with.as:140]
+PASSED: Number.prototype.checkpoint == 'three' [with.as:141]
+PASSED: checkpoint == 4 [with.as:144]
+PASSED: String.prototype.checkpoint == 'four' [with.as:145]
+PASSED: a == 1 [with.as:165]
+PASSED: a == 2 [with.as:169]
+PASSED: a == 2 [with.as:176]
+PASSED: b == 2 [with.as:177]
+PASSED: x == 3 [with.as:178]
+PASSED: y == 3 [with.as:179]
+PASSED: this == _root [with.as:185]
+PASSED: this == _level0 [with.as:188]
+PASSED: a == 1 [with.as:189]
+PASSED: b == 1 [with.as:190]
+PASSED: x == 3 [with.as:191]
+PASSED: y == 3 [with.as:192]
+PASSED: f_a() == 100 [with.as:220]
+PASSED: f_b() == 100 [with.as:221]
+PASSED: typeof(f_x()) == 'undefined' [with.as:222]
+PASSED: typeof(f_y()) == 'undefined' [with.as:223]
+PASSED: this == objA [with.as:233]
+PASSED: this == objA [with.as:236]
+PASSED: typeof(clip1.clip2) == 'movieclip' [with.as:251]
+PASSED: this == _level0 [with.as:275]
+PASSED: testvar == 'clip1_var' [with.as:276]
+PASSED: testvar2 == 'global_var' [with.as:278]
+PASSED: testvar3 == undefined [with.as:279]
+PASSED: this == _level0 [with.as:283]
+PASSED: testvar == 'clip2_var' [with.as:284]
+PASSED: testvar2 == 'global_var' [with.as:285]
+PASSED: testvar3 == undefined [with.as:286]
+PASSED: this == _level0 [with.as:290]
+PASSED: testvar == 'clip3_var' [with.as:291]
+PASSED: testvar2 == 'global_var' [with.as:292]
+PASSED: testvar3 == undefined [with.as:293]
+PASSED: checkpoint == '/' [with.as:304]
+PASSED: checkpoint == '/clip1' [with.as:315]
+PASSED: checkpoint == '/clip1/clip2' [with.as:326]
+PASSED: checkpoint == '/clip1/clip2' [with.as:338]
+PASSED: checkpoint == '/' [with.as:348]
+PASSED: _target == "/clip1" [with.as:353]
+PASSED: _target == "/clip1" [with.as:357]
+PASSED: _target == "/" [with.as:361]
+PASSED: _target == "/" [with.as:367]
+PASSED: _target == "/clip1" [with.as:371]
+PASSED: _target == "/" [with.as:376]
+PASSED: _target == "/clip1" [with.as:381]
+PASSED: _target == "/clip1" [with.as:393]
+PASSED: a == 4 [with.as:420]
+PASSED: b == 6 [with.as:424]
+PASSED: typeof(checkpoint) == "undefined" [with.as:433]
+PASSED: checkpoint == "o.i.j" [with.as:442]
+PASSED: c == "with o" [with.as:454]
+PASSED: d == "with o" [with.as:455]
+PASSED: typeof(e) == "undefined" [with.as:456]
+PASSED: f == "empty" [with.as:457]
+PASSED: typeof(o.c) == 'undefined' [with.as:489]
+PASSED: typeof(o.d) == 'undefined' [with.as:490]
+PASSED: o.e == 'with o' [with.as:491]
+PASSED: o.f == 'with o' [with.as:492]
+PASSED: typeof(checkpoint) == "undefined" [with.as:500]
+PASSED: a == 1 [with.as:466]
+PASSED: b == 7 [with.as:474]
+PASSED: inheritedMem == "McProto" [with.as:523]
+PASSED: nonexistent == "nonExistent" [with.as:524]
+PASSED: nooverride == "nooverride" [with.as:525]
+PASSED: mem == "mcMemberUpdated" [with.as:526]
+PASSED: child._target == "/mc/child" [with.as:527]
+PASSED: inheritedMem == "McProtoOverridden" [with.as:529]
+PASSED: mc.inheritedMem == "McProto" [with.as:530]
+PASSED: nonexistent == 'nonExistent' [with.as:531]
+PASSED: typeof(nooverride) == 'undefined' [with.as:532]
+PASSED: mc.nooverride == 'nooverride' [with.as:533]
+PASSED: typeof(mem) == 'undefined' [with.as:534]
+PASSED: mc.mem == "mcMemberUpdated" [with.as:535]
+PASSED: typeof(mc.child) == 'movieclip' [with.as:536]
+PASSED: child == "rootChild" [with.as:537]
+check_totals: 99
diff --git a/test/gnash/actionscript.all/pending/with-8.swf b/test/gnash/actionscript.all/pending/with-8.swf
new file mode 100644
index 0000000..c8899ad
Binary files /dev/null and b/test/gnash/actionscript.all/pending/with-8.swf differ
diff --git a/test/gnash/actionscript.all/pending/with-8.swf.trace b/test/gnash/actionscript.all/pending/with-8.swf.trace
new file mode 100644
index 0000000..2488a86
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/with-8.swf.trace
@@ -0,0 +1,100 @@
+PASSED: a == undefined [with.as:31]
+PASSED: b == undefined [with.as:32]
+PASSED: a == 1 [with.as:36]
+PASSED: b == 2 [with.as:37]
+PASSED: l0 == 5 [with.as:38]
+PASSED: obj.c == undefined [with.as:42]
+PASSED: l0 == 5 [with.as:49]
+PASSED: obj.a == 1 [with.as:50]
+PASSED: a == 1 [with.as:51]
+PASSED: b == 2 [with.as:52]
+PASSED: obj.a == 1 [with.as:54]
+PASSED: a == 1 [with.as:57]
+PASSED: b == 2 [with.as:58]
+PASSED: a == 1 [with.as:63]
+PASSED: b == 2 [with.as:64]
+PASSED: found7 == 1 [with.as:80]
+PASSED: obj.a == 1 [with.as:87]
+PASSED: found8 == 1 [with.as:90]
+PASSED: get_name() == "timeline" [with.as:114]
+PASSED: get_name() == "obj1" [with.as:117]
+PASSED: checkpoint == 1 [with.as:134]
+PASSED: checkpoint == 1 [with.as:137]
+PASSED: checkpoint == 3 [with.as:140]
+PASSED: Number.prototype.checkpoint == 'three' [with.as:141]
+PASSED: checkpoint == 4 [with.as:144]
+PASSED: String.prototype.checkpoint == 'four' [with.as:145]
+PASSED: a == 1 [with.as:165]
+PASSED: a == 2 [with.as:169]
+PASSED: a == 2 [with.as:176]
+PASSED: b == 2 [with.as:177]
+PASSED: x == 3 [with.as:178]
+PASSED: y == 3 [with.as:179]
+PASSED: this == _root [with.as:185]
+PASSED: this == _level0 [with.as:188]
+PASSED: a == 1 [with.as:189]
+PASSED: b == 1 [with.as:190]
+PASSED: x == 3 [with.as:191]
+PASSED: y == 3 [with.as:192]
+PASSED: f_a() == 100 [with.as:220]
+PASSED: f_b() == 100 [with.as:221]
+PASSED: typeof(f_x()) == 'undefined' [with.as:222]
+PASSED: typeof(f_y()) == 'undefined' [with.as:223]
+PASSED: this == objA [with.as:233]
+PASSED: this == objA [with.as:236]
+PASSED: typeof(clip1.clip2) == 'movieclip' [with.as:251]
+PASSED: this == _level0 [with.as:275]
+PASSED: testvar == 'clip1_var' [with.as:276]
+PASSED: testvar2 == 'global_var' [with.as:278]
+PASSED: testvar3 == undefined [with.as:279]
+PASSED: this == _level0 [with.as:283]
+PASSED: testvar == 'clip2_var' [with.as:284]
+PASSED: testvar2 == 'global_var' [with.as:285]
+PASSED: testvar3 == undefined [with.as:286]
+PASSED: this == _level0 [with.as:290]
+PASSED: testvar == 'clip3_var' [with.as:291]
+PASSED: testvar2 == 'global_var' [with.as:292]
+PASSED: testvar3 == undefined [with.as:293]
+PASSED: checkpoint == '/' [with.as:304]
+PASSED: checkpoint == '/clip1' [with.as:315]
+PASSED: checkpoint == '/clip1/clip2' [with.as:326]
+PASSED: checkpoint == '/clip1/clip2' [with.as:338]
+PASSED: checkpoint == '/' [with.as:348]
+PASSED: _target == "/clip1" [with.as:353]
+PASSED: _target == "/clip1" [with.as:357]
+PASSED: _target == "/" [with.as:361]
+PASSED: _target == "/" [with.as:367]
+PASSED: _target == "/clip1" [with.as:371]
+PASSED: _target == "/" [with.as:376]
+PASSED: _target == "/clip1" [with.as:381]
+PASSED: _target == "/clip1" [with.as:393]
+PASSED: a == 4 [with.as:420]
+PASSED: b == 6 [with.as:424]
+PASSED: typeof(checkpoint) == "undefined" [with.as:433]
+PASSED: checkpoint == "o.i.j" [with.as:442]
+PASSED: c == "with o" [with.as:454]
+PASSED: d == "with o" [with.as:455]
+PASSED: typeof(e) == "undefined" [with.as:456]
+PASSED: f == "empty" [with.as:457]
+PASSED: typeof(o.c) == 'undefined' [with.as:489]
+PASSED: typeof(o.d) == 'undefined' [with.as:490]
+PASSED: o.e == 'with o' [with.as:491]
+PASSED: o.f == 'with o' [with.as:492]
+PASSED: typeof(checkpoint) == "undefined" [with.as:500]
+PASSED: a == 1 [with.as:466]
+PASSED: b == 7 [with.as:474]
+PASSED: inheritedMem == "McProto" [with.as:523]
+PASSED: nonexistent == "nonExistent" [with.as:524]
+PASSED: nooverride == "nooverride" [with.as:525]
+PASSED: mem == "mcMemberUpdated" [with.as:526]
+PASSED: child._target == "/mc/child" [with.as:527]
+PASSED: inheritedMem == "McProtoOverridden" [with.as:529]
+PASSED: mc.inheritedMem == "McProto" [with.as:530]
+PASSED: nonexistent == 'nonExistent' [with.as:531]
+PASSED: typeof(nooverride) == 'undefined' [with.as:532]
+PASSED: mc.nooverride == 'nooverride' [with.as:533]
+PASSED: typeof(mem) == 'undefined' [with.as:534]
+PASSED: mc.mem == "mcMemberUpdated" [with.as:535]
+PASSED: typeof(mc.child) == 'movieclip' [with.as:536]
+PASSED: child == "rootChild" [with.as:537]
+check_totals: 99
diff --git a/test/gnash/actionscript.all/pending/with.as b/test/gnash/actionscript.all/pending/with.as
new file mode 100644
index 0000000..5613d14
--- /dev/null
+++ b/test/gnash/actionscript.all/pending/with.as
@@ -0,0 +1,548 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+// Test case for 'with' call
+// See http://sswf.sourceforge.net/SWFalexref.html#action_with
+//
+// compile this test case with Ming makeswf, and then
+// execute it like this gnash -1 -r 0 -v out.swf
+
+
+rcsid="$Id: with.as,v 1.41 2008/03/11 19:31:49 strk Exp $";
+#include "check.as"
+
+var l0 = 5;
+var obj = { a:1, b:2 };
+
+check_equals(a, undefined);
+check_equals(b, undefined);
+
+with(obj)
+{
+	check_equals(a, 1);
+	check_equals(b, 2);
+	check_equals(l0, 5);
+	c = 3; // see below
+}
+// make sure that the assignment above didn't affect the object
+check_equals(obj.c, undefined); 
+
+var obj2 = { o:obj };
+with(obj2)
+{
+	with(o)
+	{
+		check_equals(l0, 5); // scan back to the root
+		check_equals(obj.a, 1); // scan back to the root
+		check_equals(a, 1);
+		check_equals(b, 2);
+	}
+	check_equals(obj.a, 1); // scan back to the root
+	with(obj) // scans back to the root...
+	{
+		check_equals(a, 1);
+		check_equals(b, 2);
+	}
+}
+with(obj2.o) // this seems more a Ming test...
+{
+	check_equals(a, 1);
+	check_equals(b, 2);
+}
+
+// Now test the limits of the 'with' stack
+// use 20 item, to make sure both 7/8 and 15/16 limit is reached
+
+var o3 = { o:obj2 }; var o4 = { o:o3 }; var o5 = { o:o4 }; var o6 = { o:o5 };
+var o7 = { o:o6 }; var o8 = { o:o7 }; var o9 = { o:o8 }; var o10 = { o:o9 };
+var o11 = { o:o10 }; var o12 = { o:o11 }; var o13 = { o:o12 };
+var o14 = { o:o13 }; var o15 = { o:o14 }; var o16 = { o:o15 };
+var o17 = { o:o16 }; var o18 = { o:o17 };
+
+// Try with a depth of 7, should be supported by SWF5 and up
+with(o7) { with(o) { with(o) { with(o) { with(o) { with(o) { with(o) { 
+	found7 = a;
+}}}}}}} // depth 7 (should be supported by SWF5)
+check_equals(found7, 1); // this works if the above worked
+
+#if OUTPUT_VERSION > 5
+// Try with a depth of 8, should be supported by Players from version 6 up
+// but supported by later target (alexis sais)
+with(o8) {
+with(o) { with(o) { with(o) { with(o) { with(o) { with(o) { with(o) {
+	check_equals(obj.a, 1); // scan back to the root
+	found8 = a;
+}}}}}}}} // depth 8 (should be unsupported by SWF5)
+check_equals(found8, 1); 
+#else
+// Don't assume that SWF version drives this: it only depends on the player.
+//check_equals(found8, undefined); 
+#endif
+
+#if 0 // Don't assume that SWF version drives this: it only depends on the player!
+// Try with a depth of 17, should be unsupported with all targets
+// target
+with(o17) {
+with(o) { with(o) { with(o) { with(o) { with(o) { with(o) { with(o) { with(0) {
+with(o) { with(o) { with(o) { with(o) { with(o) { with(o) { with(o) { with(0) {
+	found17 = a; // this should never execute !
+}}}}}}}}}}}}}}}}}
+check_equals(found17, undefined); 
+#endif
+
+//---------------------------------------------------------
+// Test function calls in 'with' context
+//---------------------------------------------------------
+
+var name = "timeline";
+get_name = function() { return this.name; }; 
+var obj1 = { name: "obj1", get_name: get_name }; 
+check_equals(get_name(), "timeline");
+with(obj1)
+{
+	check_equals(get_name(), "obj1");
+}
+
+//---------------------------------------------------------
+// Test empty 'with' block
+//---------------------------------------------------------
+
+with(_root) { ; }
+// not aborting is enough to pass this test
+
+//---------------------------------------------------------
+// Test with(undefined) with(null) with(3) with("string")
+//---------------------------------------------------------
+
+checkpoint = 1;
+
+with(null) { _root.checkpoint = 2; }
+check_equals(checkpoint, 1);
+
+with(undefined) { _root.checkpoint = 3; }
+check_equals(checkpoint, 1);
+
+with(4) { _root.checkpoint = 3; __proto__.checkpoint = 'three'; }
+check_equals(checkpoint, 3);
+check_equals(Number.prototype.checkpoint, 'three');
+
+with('string') { _root.checkpoint = 4; __proto__.checkpoint = 'four'; }
+check_equals(checkpoint, 4);
+check_equals(String.prototype.checkpoint, 'four');
+
+
+//---------------------------------------------------------
+// tests how "with" affect the serch path(ScopeChain).
+//---------------------------------------------------------
+
+a = 100;
+b = 100;
+_root.createEmptyMovieClip("mc1", 3);
+mc1.a = 1;
+mc1.b = 1;
+mc1.x = 3;
+_root.createEmptyMovieClip("mc2", 4);
+mc2.a = 2;
+mc2.b = 2;
+mc2.y = 3;
+
+with(mc1)
+{
+	check_equals(a, 1);
+}
+with(mc2)
+{
+	check_equals(a, 2);
+}
+
+with(mc1)
+{
+	with(mc2)
+	{
+		check_equals(a, 2);
+		check_equals(b, 2);
+		check_equals(x, 3);
+		check_equals(y, 3);
+	}
+}
+
+with(mc2)
+{
+	check_equals(this, _root);
+	with(mc1)
+	{
+	  check_equals(this, _level0);
+		check_equals(a, 1);
+		check_equals(b, 1);
+		check_equals(x, 3);
+		check_equals(y, 3);
+	}
+}
+
+function f_a()
+{
+	return a;
+}
+
+function f_b()
+{
+	return b;
+}
+
+function f_x()
+{
+	return x;
+}
+
+function f_y()
+{
+	return y;
+}
+
+with(mc1)
+{
+	with(mc2)
+	{
+		check_equals(f_a(), 100); 
+		check_equals(f_b(), 100); 
+		check_equals(typeof(f_x()), 'undefined'); 
+		check_equals(typeof(f_y()), 'undefined'); 
+	}
+}
+
+//
+//  test 'this' in 'with' context
+//
+objA = new Object();
+objB = new Object();
+objA.func = function () {
+   check_equals(this, objA);
+   with(_root.objB){
+    // 'with' won't change this context
+   	check_equals(this, objA);
+   }
+};
+objA.func();
+
+
+// 
+// test ActionSetTarget and ActionSetTarget2 
+//
+#if OUTPUT_VERSION > 5
+
+// create _root.clip1.clip2 
+_root.createEmptyMovieClip("clip1", 101);
+clip1.createEmptyMovieClip("clip2", 102);  
+_root.createEmptyMovieClip("clip3", 103);
+check_equals(typeof(clip1.clip2),'movieclip');
+
+clip1.testvar = 'clip1_var'; 
+clip1.clip2.testvar = 'clip2_var';  
+clip3.testvar = 'clip3_var';  
+testvar = '_root_timeline_var'; 
+_global.testvar = 'global_var';
+
+testvar2 = '_root_timeline_var'; 
+_global.testvar2  = 'global_var';
+
+testvar3 = '_root_timeline_var';
+
+
+// Quick Dejagnu hack for setTarget
+// After setTarget, those function are hidden.
+// Calling _root.check is also not appropriate at the moment.
+// TODO: find a better way to fix Dejagnu
+_global.pass_check = pass_check;
+_global.fail_check = fail_check;
+_global.xpass_check = xpass_check;
+_global.xfail_check = xfail_check;
+
+setTarget('/clip1'); //tag 0x8B 
+    check_equals(this, _level0);
+    check_equals(testvar, 'clip1_var');     
+    // won't search timeline properties, different with ActionWith     
+    check_equals(testvar2, 'global_var');
+    check_equals(testvar3, undefined);  
+setTarget("");
+
+setTarget('/clip1/clip2'); //tag 0x8B 
+    check_equals(this, _level0);
+    check_equals(testvar, 'clip2_var');     
+    check_equals(testvar2, 'global_var');  
+    check_equals(testvar3, undefined);  
+setTarget("");
+
+setTarget('/clip1/../clip3'); //tag 0x8B 
+    check_equals(this, _level0);
+    check_equals(testvar, 'clip3_var');     
+    check_equals(testvar2, 'global_var');  
+    check_equals(testvar3, undefined);  
+setTarget("");
+
+// first understand getproperty 
+asm{   
+    push  'checkpoint'   
+    push  ''   
+    push  11 //_target   
+    getproperty  
+    setvariable        
+};  
+check_equals(checkpoint, '/');
+
+// then see how _target is affected. 
+setTarget("/clip1"); 
+  asm{
+    push 'checkpoint'         
+    push ''         
+    push 11 //_target        
+    getproperty  
+    setvariable             
+  };      
+  check_equals(checkpoint, '/clip1'); 
+setTarget("");
+
+setTarget("/clip1/clip2");  
+  asm{
+    push 'checkpoint'         
+    push ''
+    push 11         
+    getproperty  //_target         
+    setvariable             
+  };
+  check_equals(checkpoint, '/clip1/clip2'); 
+setTarget("");
+
+setTarget("/clip1"); 
+  setTarget("/clip1/clip2");  
+    asm{
+      push 'checkpoint'         
+      push ''
+      push 11         
+      getproperty  //_target         
+      setvariable             
+    };
+    check_equals(checkpoint, '/clip1/clip2'); 
+  setTarget("");
+  asm{
+    push 'checkpoint'         
+    push ''
+    push 11         
+    getproperty  //_target         
+    setvariable             
+  };
+  // _target don't need to be stacked.
+  check_equals(checkpoint, '/'); 
+setTarget("");
+
+var o = {}; o.t = _root.clip1;
+setTarget('o.t');
+check_equals(_target, "/clip1");
+setTarget("");
+
+setTarget('o:t');
+check_equals(_target, "/clip1");
+setTarget("");
+
+setTarget('../o:t'); // invalid ?
+check_equals(_target, "/");
+setTarget("");
+
+var o2 = {};
+o2.o = o;
+setTarget('o2.o'); // not a movie
+check_equals(_target, "/");
+setTarget("");
+
+setTarget('o2.o.t'); 
+check_equals(_target, "/clip1");
+setTarget("");
+
+o2['o.p'] = o;
+setTarget('o2.o.p.t');  // member p of object o2.o doesn't exist
+check_equals(_target, "/");
+setTarget("");
+
+o2.__proto__.inh = o;
+setTarget('o2.inh.t');  // inherited members are scanned 
+check_equals(_target, "/clip1");
+setTarget("");
+
+with (o2)
+{
+	// NOTE: AS setTarget() used SETTARGET opcode while
+	// ASM settargetexpr uses the setTArgetExpression one.
+	// Problem is that Ming 0.4.0.beta6 correctly compiles
+	// a setTarget() call inside a 'with' block as a function
+	// call rather then as the SETTARGET opcode, so we
+	// *need* to use ASM here, but 'settarget' is not available yet.
+	asm { push 'o:t' settargetexpr }; //setTarget("o:t");
+	check_equals(_target, "/clip1");
+	asm { push '' settargetexpr }; //setTarget("");
+}
+
+// 
+// TODO: add tests for setTarget
+//
+
+#endif  //OUTPUT_VERSION > 5
+
+//---------------------------------------------------------
+// Test with() inside user-defined function context
+//---------------------------------------------------------
+
+function testWith()
+{
+	var a = 1;
+	var b = 6;
+	var c = "empty";
+	var f = "empty";
+
+	with (o)
+	{
+		//// GETTING VARIABLES
+
+		// with stack takes precedence over locals
+		// (this is o.a)
+		check_equals(a, 4);
+
+		// locals take precedence over scope stack
+		// (o.b does not exist)
+		check_equals(b, 6);
+
+		// Members named 'x.y' won't be seeked for in with stack elements 
+		asm {
+			push  'checkpoint'   
+			push  'g.h'   
+			getvariable  
+			setvariable
+		};
+		check_equals(typeof(checkpoint), "undefined");
+
+		// Path like 'x.y' will be looked for in with stack elements 
+		asm {
+			push  'checkpoint'   
+			push  'i.j'   
+			getvariable  
+			setvariable
+		};
+		check_equals(checkpoint, "o.i.j");
+
+		//// SETTING VARIABLES
+
+		// with stack takes precedence over locals:
+		// locals are only set if with stack don't contain the variable being set
+		c = "with o"; // c exists in  locals:YES  with:NO 
+		d = "with o"; // d exists in  locals:NO   with:NO 
+		e = "with o"; // e exists in  locals:NO   with:YES
+		f = "with o"; // f exists in  locals:YES  with:YES
+	}
+
+	check_equals(c, "with o");
+	check_equals(d, "with o");
+	check_equals(typeof(e), "undefined");
+	check_equals(f, "empty"); 
+
+	_root.newFunc = function()
+	{
+		var b = 7;
+
+#if OUTPUT_VERSION >= 6
+		// scope stack includes activation object
+		// which is locals of testWith
+		check_equals(a, 1); 
+#else
+		// scope stack doesn't include activation object
+		// of testWith
+		check_equals(a, 120); 
+#endif
+
+		// locals take precedence over scope stack
+		check_equals(b, 7);
+
+	};
+}
+
+o = new Object();
+o.a = 4;
+o.e = "o.e";
+o.f = "o.f";
+o['g.h'] = "o.g.h";
+o.i = new Object;
+o.i.j = "o.i.j";
+a = 120;
+b = 5;
+testWith();
+check_equals(typeof(o.c), 'undefined');
+check_equals(typeof(o.d), 'undefined');
+check_equals(o.e, 'with o');
+check_equals(o.f, 'with o'); 
+
+asm {
+	push  'checkpoint'   
+	push  'o.g.h'   
+	getvariable  
+	setvariable
+};
+check_equals(typeof(checkpoint), "undefined");
+
+newFunc();
+
+//---------------------------------------------------------
+// Test with(movieclip) 
+//---------------------------------------------------------
+
+#if OUTPUT_VERSION > 5
+createEmptyMovieClip("mc", 1);
+mc.createEmptyMovieClip("child", 1);
+mc.mem = "mcMember";
+mc.nooverride = "nooverride";
+ASSetPropFlags(mc, "nooverride", 4, 1); 
+MovieClip.prototype.inheritedMem = "McProto";
+with (mc)
+{
+	child = "rootChild"; // non-proper in mc, will be set in root
+	mem = "mcMemberUpdated"; // overridable in mc, will be updated
+	nooverride = "nooverrideUpdated"; // protected from override in mc, but existing. Will NOT be set in _root
+	nonexistent = "nonExistent"; // non-existing in mc, will be set in root
+	inheritedMem = "McProtoOverridden"; // non own-property of mc, will be set in root
+
+	check_equals(inheritedMem, "McProto");
+	check_equals(nonexistent, "nonExistent");
+	check_equals(nooverride, "nooverride");
+	check_equals(mem, "mcMemberUpdated");
+	check_equals(child._target, "/mc/child");
+}
+check_equals(inheritedMem, "McProtoOverridden");
+check_equals(mc.inheritedMem, "McProto");
+check_equals(nonexistent, 'nonExistent');
+check_equals(typeof(nooverride), 'undefined');
+check_equals(mc.nooverride, 'nooverride');
+check_equals(typeof(mem), 'undefined');
+check_equals(mc.mem, "mcMemberUpdated");
+check_equals(typeof(mc.child), 'movieclip');
+check_equals(child, "rootChild");
+#endif // OUTPUT_VERSION > 5
+
+//---------------------------------------------------------
+// END OF TESTS
+//---------------------------------------------------------
+
+#if OUTPUT_VERSION < 6
+ check_totals(41);
+#else
+ check_totals(99);
+#endif
diff --git a/test/gnash/actionscript.all/swap-5.swf b/test/gnash/actionscript.all/swap-5.swf
new file mode 100644
index 0000000..f0a1137
Binary files /dev/null and b/test/gnash/actionscript.all/swap-5.swf differ
diff --git a/test/gnash/actionscript.all/swap-5.swf.trace b/test/gnash/actionscript.all/swap-5.swf.trace
new file mode 100644
index 0000000..a540427
--- /dev/null
+++ b/test/gnash/actionscript.all/swap-5.swf.trace
@@ -0,0 +1,2 @@
+PASSED: var_x == "hello" [swap.as:42]
+totals
diff --git a/test/gnash/actionscript.all/swap-6.swf b/test/gnash/actionscript.all/swap-6.swf
new file mode 100644
index 0000000..2527b3e
Binary files /dev/null and b/test/gnash/actionscript.all/swap-6.swf differ
diff --git a/test/gnash/actionscript.all/swap-6.swf.trace b/test/gnash/actionscript.all/swap-6.swf.trace
new file mode 100644
index 0000000..a540427
--- /dev/null
+++ b/test/gnash/actionscript.all/swap-6.swf.trace
@@ -0,0 +1,2 @@
+PASSED: var_x == "hello" [swap.as:42]
+totals
diff --git a/test/gnash/actionscript.all/swap-7.swf b/test/gnash/actionscript.all/swap-7.swf
new file mode 100644
index 0000000..a372e7f
Binary files /dev/null and b/test/gnash/actionscript.all/swap-7.swf differ
diff --git a/test/gnash/actionscript.all/swap-7.swf.trace b/test/gnash/actionscript.all/swap-7.swf.trace
new file mode 100644
index 0000000..a540427
--- /dev/null
+++ b/test/gnash/actionscript.all/swap-7.swf.trace
@@ -0,0 +1,2 @@
+PASSED: var_x == "hello" [swap.as:42]
+totals
diff --git a/test/gnash/actionscript.all/swap-8.swf b/test/gnash/actionscript.all/swap-8.swf
new file mode 100644
index 0000000..0ffd080
Binary files /dev/null and b/test/gnash/actionscript.all/swap-8.swf differ
diff --git a/test/gnash/actionscript.all/swap-8.swf.trace b/test/gnash/actionscript.all/swap-8.swf.trace
new file mode 100644
index 0000000..a540427
--- /dev/null
+++ b/test/gnash/actionscript.all/swap-8.swf.trace
@@ -0,0 +1,2 @@
+PASSED: var_x == "hello" [swap.as:42]
+totals
diff --git a/test/gnash/actionscript.all/swap.as b/test/gnash/actionscript.all/swap.as
new file mode 100644
index 0000000..e50236d
--- /dev/null
+++ b/test/gnash/actionscript.all/swap.as
@@ -0,0 +1,46 @@
+// 
+//   Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modchecky
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; check not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fcheckth Floor, Boston, MA  02110-1301  USA
+//
+
+/*
+ *  Zou Lunkai, zoulunkai at gmail.com
+ *  Test stack status after action "Swap"
+ */
+
+
+rcsid="$Id: swap.as,v 1.5 2008/03/11 19:31:49 strk Exp $";
+#include "check.as"
+
+// see check.as
+#ifdef MING_SUPPORTS_ASM
+
+var var_x = "init_x";
+
+//stack:
+asm 
+{ 
+  push "var_x"   //stack: "var_x"
+  swap           //stack: "var_x"  undefined
+  pop            //stack: "var_x"
+  push "hello"   //stack: "var_x" "hello"
+  setvariable    //stack:
+};
+check_equals(var_x, "hello");
+
+#endif
+
+totals();
diff --git a/test/gnash/actionscript.all/utils.as b/test/gnash/actionscript.all/utils.as
new file mode 100644
index 0000000..1bb1bae
--- /dev/null
+++ b/test/gnash/actionscript.all/utils.as
@@ -0,0 +1,49 @@
+// 
+//   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+// Utilities for ActionScript tests
+
+//
+// Return a string containing a dump of the given object
+//
+// Usage: 
+//	var o = new Array();
+//	trace(dumpObject(o));
+//
+//
+dumpObject = function(obj, indent)
+{
+        var s = '';
+        //if ( typeof(obj) == 'object' )
+
+        if ( indent == undefined ) indent = 0;
+
+        for (var i in obj)
+        {
+                var value = obj[i];
+                for (var j=0; j<indent; j++) s += ' ';
+                if ( typeof(value) == 'object' ) {
+                        s += i+" (object):\n";
+                        s += dumpObject(value, indent+1);
+                } else {
+                        s += i+'='+value+' ('+typeof(value)+')\n';
+                }
+        }
+        return s;
+};
+
diff --git a/test/gnash/media/Bitstream-Vera-Sans.COPYRIGHT b/test/gnash/media/Bitstream-Vera-Sans.COPYRIGHT
new file mode 100644
index 0000000..e651be1
--- /dev/null
+++ b/test/gnash/media/Bitstream-Vera-Sans.COPYRIGHT
@@ -0,0 +1,124 @@
+Bitstream Vera Fonts Copyright
+
+The fonts have a generous copyright, allowing derivative works (as
+long as "Bitstream" or "Vera" are not in the names), and full
+redistribution (so long as they are not *sold* by themselves). They
+can be be bundled, redistributed and sold with any software.
+
+The fonts are distributed under the following copyright:
+
+Copyright
+=========
+
+Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream
+Vera is a trademark of Bitstream, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the fonts accompanying this license ("Fonts") and associated
+documentation files (the "Font Software"), to reproduce and distribute
+the Font Software, including without limitation the rights to use,
+copy, merge, publish, distribute, and/or sell copies of the Font
+Software, and to permit persons to whom the Font Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright and trademark notices and this permission notice
+shall be included in all copies of one or more of the Font Software
+typefaces.
+
+The Font Software may be modified, altered, or added to, and in
+particular the designs of glyphs or characters in the Fonts may be
+modified and additional glyphs or characters may be added to the
+Fonts, only if the fonts are renamed to names not containing either
+the words "Bitstream" or the word "Vera".
+
+This License becomes null and void to the extent applicable to Fonts
+or Font Software that has been modified and is distributed under the
+"Bitstream Vera" names.
+
+The Font Software may be sold as part of a larger software package but
+no copy of one or more of the Font Software typefaces may be sold by
+itself.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
+BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL,
+OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT
+SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
+
+Except as contained in this notice, the names of Gnome, the Gnome
+Foundation, and Bitstream Inc., shall not be used in advertising or
+otherwise to promote the sale, use or other dealings in this Font
+Software without prior written authorization from the Gnome Foundation
+or Bitstream Inc., respectively. For further information, contact:
+fonts at gnome dot org.
+
+Copyright FAQ
+=============
+
+   1. I don't understand the resale restriction... What gives?
+
+      Bitstream is giving away these fonts, but wishes to ensure its
+      competitors can't just drop the fonts as is into a font sale system
+      and sell them as is. It seems fair that if Bitstream can't make money
+      from the Bitstream Vera fonts, their competitors should not be able to
+      do so either. You can sell the fonts as part of any software package,
+      however.
+
+   2. I want to package these fonts separately for distribution and
+      sale as part of a larger software package or system.  Can I do so?
+
+      Yes. A RPM or Debian package is a "larger software package" to begin 
+      with, and you aren't selling them independently by themselves. 
+      See 1. above.
+
+   3. Are derivative works allowed?
+      Yes!
+
+   4. Can I change or add to the font(s)?
+      Yes, but you must change the name(s) of the font(s).
+
+   5. Under what terms are derivative works allowed?
+
+      You must change the name(s) of the fonts. This is to ensure the
+      quality of the fonts, both to protect Bitstream and Gnome. We want to
+      ensure that if an application has opened a font specifically of these
+      names, it gets what it expects (though of course, using fontconfig,
+      substitutions could still could have occurred during font
+      opening). You must include the Bitstream copyright. Additional
+      copyrights can be added, as per copyright law. Happy Font Hacking!
+
+   6. If I have improvements for Bitstream Vera, is it possible they might get 
+       adopted in future versions?
+
+      Yes. The contract between the Gnome Foundation and Bitstream has
+      provisions for working with Bitstream to ensure quality additions to
+      the Bitstream Vera font family. Please contact us if you have such
+      additions. Note, that in general, we will want such additions for the
+      entire family, not just a single font, and that you'll have to keep
+      both Gnome and Jim Lyles, Vera's designer, happy! To make sense to add
+      glyphs to the font, they must be stylistically in keeping with Vera's
+      design. Vera cannot become a "ransom note" font. Jim Lyles will be
+      providing a document describing the design elements used in Vera, as a
+      guide and aid for people interested in contributing to Vera.
+
+   7. I want to sell a software package that uses these fonts: Can I do so?
+
+      Sure. Bundle the fonts with your software and sell your software
+      with the fonts. That is the intent of the copyright.
+
+   8. If applications have built the names "Bitstream Vera" into them, 
+      can I override this somehow to use fonts of my choosing?
+
+      This depends on exact details of the software. Most open source
+      systems and software (e.g., Gnome, KDE, etc.) are now converting to
+      use fontconfig (see www.fontconfig.org) to handle font configuration,
+      selection and substitution; it has provisions for overriding font
+      names and subsituting alternatives. An example is provided by the
+      supplied local.conf file, which chooses the family Bitstream Vera for
+      "sans", "serif" and "monospace".  Other software (e.g., the XFree86
+      core server) has other mechanisms for font substitution.
+
diff --git a/test/gnash/media/Bitstream-Vera-Sans.fdb b/test/gnash/media/Bitstream-Vera-Sans.fdb
new file mode 100644
index 0000000..5fefdcb
Binary files /dev/null and b/test/gnash/media/Bitstream-Vera-Sans.fdb differ
diff --git a/test/gnash/media/Makefile.am b/test/gnash/media/Makefile.am
new file mode 100644
index 0000000..7b7d35f
--- /dev/null
+++ b/test/gnash/media/Makefile.am
@@ -0,0 +1,22 @@
+EXTRA_DIST = \
+	README \
+	Bitstream-Vera-Sans.COPYRIGHT \
+	Bitstream-Vera-Sans.fdb \
+	default.orc \
+	gnash.xml \
+	green.jpg \
+	green.swf \
+	lynch.jpg \
+	lynch.swf \
+	majorscale.sco \
+	Makefile \
+	Makefile.am \
+	Makefile.in \
+	offspring.jpg \
+	offspring.swf \
+	sound1.mp3 \
+	sound1.wav \
+	square.flv \
+	square.ogg \
+	vars2.txt \
+	vars.txt
diff --git a/test/gnash/media/README b/test/gnash/media/README
new file mode 100644
index 0000000..724e26f
--- /dev/null
+++ b/test/gnash/media/README
@@ -0,0 +1,67 @@
+	This directory contains "media" files, that is files for use
+	by either Ming to embed in SWFs or to test gnash loading capabilities.
+	Any filename beginning at the left margin goes into the source
+	distribution
+
+README
+
+	This file.
+
+Bitstream-Vera-Sans.fdb
+Bitstream-Vera-Sans.COPYRIGHT
+
+	Font Definition Block (fdb) for embedding in SWF.
+	Taken from http://ming.sf.net.
+
+default.orc
+
+	Csound default orchestra file
+
+gnash.xml
+
+	An example XML file.
+
+majorscale.sco
+
+	Csound score file for a major scale execution
+
+offspring.swf
+offspring.jpg
+green.jpg
+green.swf
+lynch.swf
+lynch.jpg
+
+	The swfs display the associated jpgs.
+
+sound1.wav
+
+	(tick, tick)
+	Sample Size    : 16-bits
+	Sample Encoding: signed (2's complement)
+	Channels       : 1
+	Sample Rate    : 8000
+
+sound1.mp3
+
+	(bip bip)
+	Sample Size    : 16-bits
+	Sample Encoding: MPEG audio (layer I, II or III)
+	Channels       : 1
+	Sample Rate    : 22050
+
+square.flv
+
+	H263 video in an FLV
+	It's a red square moving horizontally (left to right)
+	over a yellow background.
+
+square.ogg
+
+	Theora video version of square.flv.
+
+vars.txt
+vars2.txt
+
+	Text files containing variable assignments.
+
diff --git a/test/gnash/media/default.orc b/test/gnash/media/default.orc
new file mode 100644
index 0000000..080f964
--- /dev/null
+++ b/test/gnash/media/default.orc
@@ -0,0 +1,15 @@
+; Default orchestra file for csound-generated audio
+;
+;
+
+	sr = 44100
+	kr = 100
+	ksmps = 441
+	nchnls = 1
+
+	instr	1
+k1      linen   p4, 0.05, p3, 0.08			; envelope
+a3	oscil	k1, 3*cpspch(p5), 1			; sine wave at freq * 3
+	out	a3
+	endin
+
diff --git a/test/gnash/media/gnash.xml b/test/gnash/media/gnash.xml
new file mode 100644
index 0000000..86640bd
Binary files /dev/null and b/test/gnash/media/gnash.xml differ
diff --git a/test/gnash/media/green.jpg b/test/gnash/media/green.jpg
new file mode 100644
index 0000000..7f2598a
Binary files /dev/null and b/test/gnash/media/green.jpg differ
diff --git a/test/gnash/media/green.swf b/test/gnash/media/green.swf
new file mode 100644
index 0000000..c0045b9
Binary files /dev/null and b/test/gnash/media/green.swf differ
diff --git a/test/gnash/media/lynch.jpg b/test/gnash/media/lynch.jpg
new file mode 100644
index 0000000..638703e
Binary files /dev/null and b/test/gnash/media/lynch.jpg differ
diff --git a/test/gnash/media/lynch.swf b/test/gnash/media/lynch.swf
new file mode 100644
index 0000000..97d3043
Binary files /dev/null and b/test/gnash/media/lynch.swf differ
diff --git a/test/gnash/media/majorscale.sco b/test/gnash/media/majorscale.sco
new file mode 100644
index 0000000..d094180
--- /dev/null
+++ b/test/gnash/media/majorscale.sco
@@ -0,0 +1,20 @@
+; Csound score file for a simple major scale
+; This is just an initial example, we may generate
+; all needed sounds...
+;
+; Generate a majorscale.wav with the following command:
+;
+;    csound --nodisplays --wave -o majorscale.wav default.orc majorscale.sco
+;
+
+f1 0 8192 10 1			; sine wave table
+i1 0.0 1 5000 7.00              ; C (below middle)
+i1 1.0 1 5000 7.02		; D
+i1 2.0 1 5000 7.04		; E
+i1 3.0 1 5000 7.05		; F
+i1 4.0 1 5000 7.07		; G
+i1 5.0 1 5000 7.09		; A
+i1 6.0 1 5000 7.11		; B
+i1 7.0 1 5000 8.00		; C (middle)
+e
+
diff --git a/test/gnash/media/offspring.jpg b/test/gnash/media/offspring.jpg
new file mode 100644
index 0000000..e637463
Binary files /dev/null and b/test/gnash/media/offspring.jpg differ
diff --git a/test/gnash/media/offspring.swf b/test/gnash/media/offspring.swf
new file mode 100644
index 0000000..843ed19
Binary files /dev/null and b/test/gnash/media/offspring.swf differ
diff --git a/test/gnash/media/sound1.mp3 b/test/gnash/media/sound1.mp3
new file mode 100644
index 0000000..7d4e9d0
Binary files /dev/null and b/test/gnash/media/sound1.mp3 differ
diff --git a/test/gnash/media/sound1.wav b/test/gnash/media/sound1.wav
new file mode 100644
index 0000000..e8438f8
Binary files /dev/null and b/test/gnash/media/sound1.wav differ
diff --git a/test/gnash/media/square.flv b/test/gnash/media/square.flv
new file mode 100644
index 0000000..c557b75
Binary files /dev/null and b/test/gnash/media/square.flv differ
diff --git a/test/gnash/media/square.ogg b/test/gnash/media/square.ogg
new file mode 100644
index 0000000..e16b7c6
Binary files /dev/null and b/test/gnash/media/square.ogg differ
diff --git a/test/gnash/media/vars.txt b/test/gnash/media/vars.txt
new file mode 100644
index 0000000..d092016
--- /dev/null
+++ b/test/gnash/media/vars.txt
@@ -0,0 +1,35 @@
+var1=val1&var2=val2&
+second line (should be discarded)
+second line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+third line (should be discarded)
+&var3=val3
diff --git a/test/gnash/media/vars2.txt b/test/gnash/media/vars2.txt
new file mode 100644
index 0000000..f58d59d
--- /dev/null
+++ b/test/gnash/media/vars2.txt
@@ -0,0 +1 @@
+v2_var1=val1&v2_var2=val2&


More information about the Swfdec-commits mailing list