[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gnash-commit] /srv/bzr/gnash/trunk r10099: Test property enumeratio
From: |
zou lunkai |
Subject: |
Re: [Gnash-commit] /srv/bzr/gnash/trunk r10099: Test property enumeration. Gnash is wrong. LoadVars.toString() (and similar |
Date: |
Sun, 26 Oct 2008 10:30:08 +0800 |
> Test property enumeration. Gnash is wrong. LoadVars.toString() (and similar
> methods) rely on this.
The spec says the enumeration order on an object is random, IIRC. So
you probably want a sort on the enumeration result, to make the result
predictable.
> +enumerateObj = function(object) {
> + list = "";
> + for (el in o) { <--------------------[1]
> + list += el + ",";
> + }
> + return list;
> +};
[1] is it a typo? 'o' is undefined there.
enumeration with sort:
enumerateObj = function(o) {
props = Array();
for (el in o) {
props.push(el);
}
props.sort();
list = "";
for(i=0; i<props.length; i++){
list = list + props[i] + ",";
}
return list;
};
--zou
On Sun, Oct 26, 2008 at 12:13 AM, Benjamin Wolsey <address@hidden> wrote:
> ------------------------------------------------------------
> revno: 10099
> committer: Benjamin Wolsey <address@hidden>
> branch nick: trunk
> timestamp: Sat 2008-10-25 18:13:26 +0200
> message:
> Test property enumeration. Gnash is wrong. LoadVars.toString() (and similar
> methods) rely on this.
>
> Add comment to FsCommand2 opcode.
> modified:
> libcore/vm/ASHandlers.cpp
> testsuite/actionscript.all/enumerate.as
>
> === modified file 'libcore/vm/ASHandlers.cpp'
> --- a/libcore/vm/ASHandlers.cpp 2008-10-25 10:38:32 +0000
> +++ b/libcore/vm/ASHandlers.cpp 2008-10-25 16:13:26 +0000
> @@ -1474,6 +1474,9 @@
> }
> }
>
> +/// FsCommand2 is not part of the Flash spec. It belongs to
> +/// Flash Lite (from 1.1 onwards) and is used to control
> +/// devices (backlight, vibrate etc).
> void
> SWFHandlers::ActionFscommand2(ActionExec& thread)
> {
> @@ -1486,7 +1489,6 @@
> as_environment& env = thread.env;
>
> unsigned int off=0;
> -
>
> const unsigned int nargs = env.top(off++).to_int();
>
> @@ -1521,8 +1523,6 @@
>
> as_environment& env = thread.env;
>
> -
> -
> int max = env.top(0).to_int();
>
> if (max < 1) max = 1;
> @@ -1837,8 +1837,6 @@
> // No need to return - it works a bit.
> }
>
> -
> -
> const std::string s = env.top(0).to_string();
>
> std::string::const_iterator it = s.begin(), e = s.end();
> @@ -1865,8 +1863,6 @@
> // No need to return.
> }
>
> -
> -
> // Cut to uint16, as characters above 65535 'wrap around'
> const boost::uint16_t i = static_cast<boost::uint16_t>
> (env.top(0).to_int());
>
>
> === modified file 'testsuite/actionscript.all/enumerate.as'
> --- a/testsuite/actionscript.all/enumerate.as 2008-03-11 19:31:46 +0000
> +++ b/testsuite/actionscript.all/enumerate.as 2008-10-25 16:13:26 +0000
> @@ -98,5 +98,58 @@
> delete recorder;
> }
>
> +enumerateObj = function(object) {
> + list = "";
> + for (el in o) {
> + list += el + ",";
> + }
> + return list;
> +};
> +
> +/// Try different enumerations.
> +{
> + list = "";
> + o = {};
> +
> + o.a = 3;
> + check_equals(enumerateObj(o), "a,");
> +
> + o.b = "string";
> + check_equals(enumerateObj(o), "b,a,");
> +
> + o["el"] = 5;
> + check_equals(enumerateObj(o), "el,b,a,");
> +
> + o[8] = new Date();
> + check_equals(enumerateObj(o), "8,el,b,a,");
> +
> + o.b = 8;
> + check_equals(enumerateObj(o), "8,el,b,a,");
> +
> + delete o.b;
> + check_equals(enumerateObj(o), "8,el,a,");
> +
> + o.b = "string again";
> + xcheck_equals(enumerateObj(o), "b,8,el,a,");
> +
> + r = o.u;
> + xcheck_equals(enumerateObj(o), "b,8,el,a,");
> +
> + t = {};
> + o[t] = 9;
> + xcheck_equals(enumerateObj(o), "[object Object],b,8,el,a,");
> +
> + delete o["8"];
> + xcheck_equals(enumerateObj(o), "[object Object],b,el,a,");
> +
> + o.c = Object.prototype.toString;
> + xcheck_equals(enumerateObj(o), "c,[object Object],b,el,a,");
> +
> +
> +}
> +totals(29);
> +#else
> +totals(0);
> #endif // OUTPUT_VERSION > 5
> -totals();
> +
> +
>
>
> _______________________________________________
> Gnash-commit mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/gnash-commit
>
>