[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog server/asobj/string.cpp testsui...,
Sandro Santilli <=