[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash server/action.cpp ./ChangeLog testsuite/a...
From: |
Michael Carlson |
Subject: |
[Gnash-commit] gnash server/action.cpp ./ChangeLog testsuite/a... |
Date: |
Thu, 09 Feb 2006 10:02:17 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Branch:
Changes by: Michael Carlson <address@hidden> 06/02/09 10:02:17
Modified files:
server : action.cpp
. : ChangeLog
testsuite/actionscript.all: Global.as
Log message:
Implement _global.parseFloat, add testcases for parseFloat to Global.as
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/server/action.cpp.diff?tr1=1.33&tr2=1.34&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/ChangeLog.diff?tr1=1.109&tr2=1.110&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/gnash/gnash/testsuite/actionscript.all/Global.as.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
Patches:
Index: gnash/ChangeLog
diff -u gnash/ChangeLog:1.109 gnash/ChangeLog:1.110
--- gnash/ChangeLog:1.109 Thu Feb 9 09:19:51 2006
+++ gnash/ChangeLog Thu Feb 9 10:02:17 2006
@@ -1,9 +1,11 @@
2006-02-09 Michael Carlson <address@hidden>
* server/action.cpp: implement _global.parseInt for all cases
- Also implement _global.isNan, _global.isFinite
+ Implement _global.parseFloat, and _global.isNan,
+ _global.isFinite
* server/action.h: add as_value::is_finite() for internal use
- * testsuite/actionscript.all: add and fix up parseint test cases
+ * testsuite/actionscript.all: add and fix up parseInt test cases
+ add some parseFloat test cases
2006-02-08 Rob Savoye <address@hidden>
Index: gnash/server/action.cpp
diff -u gnash/server/action.cpp:1.33 gnash/server/action.cpp:1.34
--- gnash/server/action.cpp:1.33 Thu Feb 9 09:19:51 2006
+++ gnash/server/action.cpp Thu Feb 9 10:02:17 2006
@@ -1055,13 +1055,25 @@
fn.result->set_bool(!fn.arg(0).is_finite());
}
+ void as_global_parsefloat(const fn_call& fn)
+ {
+ assert(fn.nargs == 1);
+
+ float result;
+
+ // sscanf will handle the whitespace / unneeded characters etc.
automatically
+ if (1 == sscanf(fn.arg(0).to_string(), "%f", &result))
+ fn.result->set_double(double(result));
+ else
+ // if sscanf didn't find anything, return NaN
+ fn.result->set_nan();
+ }
+
void as_global_parseint(const fn_call& fn)
{
assert(fn.nargs == 2 || fn.nargs == 1);
- // Make sure our arguments are the correct type
- fn.arg(0).convert_to_string();
-
+ // Make sure our argument is the correct type
if (fn.nargs > 1)
fn.arg(1).convert_to_number();
@@ -1315,6 +1327,8 @@
s_global->set_member("ASSetPropFlags",
as_global_assetpropflags);
// parseInt
s_global->set_member("parseInt", as_global_parseint);
+ // parseFloat
+ s_global->set_member("parseFloat",
as_global_parsefloat);
// isNan
s_global->set_member("isNan", as_global_isnan);
// isFinite
Index: gnash/testsuite/actionscript.all/Global.as
diff -u gnash/testsuite/actionscript.all/Global.as:1.4
gnash/testsuite/actionscript.all/Global.as:1.5
--- gnash/testsuite/actionscript.all/Global.as:1.4 Thu Feb 9 09:19:51 2006
+++ gnash/testsuite/actionscript.all/Global.as Thu Feb 9 10:02:17 2006
@@ -45,6 +45,14 @@
// parseInt returns NaN (which is different from infinity)
check ( isFinite(parseInt('none')) );
+// It's not reliable to compare a double type with ==, so we'll give it a
+// small range using >= and <=
+check ( isNaN(parseFloat('test')) );
+check ( parseFloat('1.5') >= 1.499 && parseFloat('1.5') <= 1.501 );
+check ( parseFloat(' -2001.5') >= -2001.51 && parseFloat('
-2001.5') <= -2001.49 );
+check ( parseFloat(' 5.13123abc2.35387') >= 5.1312 && parseFloat('
5.13123abc2.35387') <= 5.1313 );
+check ( isNaN(parseFloat(' x1.234')) );
+
// All %NN must become the corresponding ascii char
check ( unescape('%3A%2F%3F%3D%26') == ':/?=&' );
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash server/action.cpp ./ChangeLog testsuite/a...,
Michael Carlson <=