gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/asobj/string.cpp testsui...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/asobj/string.cpp testsui...
Date: Sat, 25 Aug 2007 23:11:01 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/08/25 23:11:01

Modified files:
        .              : ChangeLog 
        server/asobj   : string.cpp 
        testsuite/actionscript.all: String.as 
        testsuite/swfdec: PASSING 

Log message:
                * server/asobj/string.cpp (string_split): correctly handle some 
more
                  corner cases.
                * testsuite/swfdec/PASSING: string-split-empty-*.swf tests 
succeed.
                * testsuite/actionscript.all/String.as: some more testing for
                  String.split

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4103&r2=1.4104
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/string.cpp?cvsroot=gnash&r1=1.34&r2=1.35
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/String.as?cvsroot=gnash&r1=1.19&r2=1.20
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/swfdec/PASSING?cvsroot=gnash&r1=1.25&r2=1.26

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4103
retrieving revision 1.4104
diff -u -b -r1.4103 -r1.4104
--- ChangeLog   25 Aug 2007 21:38:48 -0000      1.4103
+++ ChangeLog   25 Aug 2007 23:11:00 -0000      1.4104
@@ -1,3 +1,11 @@
+2007-08-26 Sandro Santilli <address@hidden>
+
+       * server/asobj/string.cpp (string_split): correctly handle some more
+         corner cases.
+       * testsuite/swfdec/PASSING: string-split-empty-*.swf tests succeed.
+       * testsuite/actionscript.all/String.as: some more testing for
+         String.split
+
 2007-08-25 Sandro Santilli <address@hidden>
 
        * testsuite/actionscript.all/toString_valueOf.as: note that any

Index: server/asobj/string.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/string.cpp,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -b -r1.34 -r1.35
--- server/asobj/string.cpp     1 Aug 2007 15:56:54 -0000       1.34
+++ server/asobj/string.cpp     25 Aug 2007 23:11:00 -0000      1.35
@@ -16,7 +16,7 @@
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-/* $Id: string.cpp,v 1.34 2007/08/01 15:56:54 strk Exp $ */
+/* $Id: string.cpp,v 1.35 2007/08/25 23:11:00 strk Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -223,7 +223,10 @@
 
     boost::intrusive_ptr<as_array_object> array(new as_array_object());
 
-    if (fn.nargs == 0) {
+    int SWFVersion = fn.env().get_version();
+
+    if (fn.nargs == 0)
+    {
         val.set_std_string(str);
         array->push(val);
 
@@ -233,7 +236,7 @@
     const std::string& delim = fn.arg(0).to_string(&(fn.env()));
 
     // SWF5 didn't support multichar or empty delimiter
-    if ( fn.env().get_version() < 6 )
+    if ( SWFVersion < 6 )
     {
            if ( delim.size() != 1 )
            {
@@ -245,10 +248,25 @@
 
     size_t max = str.size();
 
-    if (fn.nargs >= 2) {
-        max = iclamp(fn.arg(1).to_number<size_t>(), 0, str.size());
+    if (fn.nargs >= 2)
+    {
+       int max_in = fn.arg(1).to_number<int>();
+       if ( SWFVersion < 6 && max_in < 1 )
+       {
+               return as_value(array.get());
+       }
+        max = iclamp((size_t)max_in, 0, str.size());
     }
 
+    if ( str.empty() )
+    {
+        val.set_std_string(str);
+        array->push(val);
+
+        return as_value(array.get());
+    }
+
+
     //if (delim == "") {
     if ( delim.empty() ) {
         for (unsigned i=0; i <max; i++) {

Index: testsuite/actionscript.all/String.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/String.as,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- testsuite/actionscript.all/String.as        1 Jul 2007 10:54:40 -0000       
1.19
+++ testsuite/actionscript.all/String.as        25 Aug 2007 23:11:00 -0000      
1.20
@@ -16,7 +16,7 @@
 
 // Original author: Mike Carlson - June 19th, 2006
 
-rcsid="$Id: String.as,v 1.19 2007/07/01 10:54:40 bjacques Exp $";
+rcsid="$Id: String.as,v 1.20 2007/08/25 23:11:00 strk Exp $";
 
 #include "check.as"
 
@@ -75,13 +75,60 @@
 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');
+
+
+//----------------------------------------
+// Check String.fromCharCode
+//-----------------------------------------
+
 
 // This is the correct usage pattern
 var b = String.fromCharCode(97,98,99,100);
 check_equals ( b, "abcd" );
 
+//-------------------------------------------
+// Check String.toUpperCase and toLowerCase
+//-------------------------------------------
+
 check_equals ( a.toUpperCase(), "WALLAWALLAWASHINGTON" );
 check_equals ( a.toLowerCase(), "wallawallawashington" );
+
+//-------------------------------------------
+// Check substr / slice / substring
+//-------------------------------------------
+
 a = new String("abcdefghijklmnopqrstuvwxyz");
 check_equals ( a.substr(5,2), "fg" );
 check_equals ( a.substr(5,7), "fghijkl" );

Index: testsuite/swfdec/PASSING
===================================================================
RCS file: /sources/gnash/gnash/testsuite/swfdec/PASSING,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- testsuite/swfdec/PASSING    6 Aug 2007 20:42:57 -0000       1.25
+++ testsuite/swfdec/PASSING    25 Aug 2007 23:11:01 -0000      1.26
@@ -96,3 +96,6 @@
 bitwise-5.swf
 bitwise-6.swf
 bitwise-7.swf
+string-split-empty-5.swf
+string-split-empty-6.swf
+string-split-empty-7.swf




reply via email to

[Prev in Thread] Current Thread [Next in Thread]