ruffle/core/tests/swfs/avm2
David Wendt 19219ad0c1 avm2: Implement `dispatchEvent`.
Event dispatch is a surprisingly complicated procedure, so this makes sure to test:

1. Event dispatch on bare dispatchers
2. Event dispatch on hierarchial dispatchers (movieclips)
3. Event cancellation (which is reported by `dispatchEvent`)
4. The implicit `this` on unbound event handlers. I'm not yet sure if this is a special property of event dispatch or if all unbound functions inherit their global scope as `this`.
5. The execution order of handlers on both bare and hierarchial dispatchers
6. Delegation to hierarchial dispatchers
7. Modification of the dispatch list during dispatch of an event. Surprisingly enough, you can add handlers to the event you're handling and expect them to execute, *if* you added them to a further object in the order *or* you added a bubble handler in the capture phase.
2020-12-21 21:47:29 -08:00
..
add avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
array_access tests: Add test for reading properties of an array 2020-09-15 02:20:11 -07:00
array_concat tests: Add test for `Array.concat`. 2020-09-15 02:20:11 -07:00
array_constr tests: Add test for `new Array`'s arguments. 2020-09-15 02:20:11 -07:00
array_delete tests: Add tests for `deleteproperty` on arrays. 2020-09-15 02:20:11 -07:00
array_every avm2: Implement `forEach`, `map`, `filter`, `every`, and `some` on `Array`. 2020-09-15 02:20:11 -07:00
array_filter avm2: Implement `forEach`, `map`, `filter`, `every`, and `some` on `Array`. 2020-09-15 02:20:11 -07:00
array_foreach avm2: Implement `forEach`, `map`, `filter`, `every`, and `some` on `Array`. 2020-09-15 02:20:11 -07:00
array_hasownproperty Fix `hasOwnProperty` yielding false on populated non-hole array indicies. 2020-09-15 02:20:11 -07:00
array_holes tests: Add `array_holes` test. 2020-09-15 02:20:11 -07:00
array_indexof avm2: Implement `indexOf` and `lastIndexOf` 2020-09-15 02:20:11 -07:00
array_join avm2: Array `join` and `toString` treat `undefined` and `null` as empty strings. 2020-09-15 02:20:11 -07:00
array_lastindexof avm2: Implement `indexOf` and `lastIndexOf` 2020-09-15 02:20:11 -07:00
array_literal tests: Add test for `newarray`. 2020-09-15 02:20:11 -07:00
array_map avm2: Implement `forEach`, `map`, `filter`, `every`, and `some` on `Array`. 2020-09-15 02:20:11 -07:00
array_pop avm2: Implement `Array.push` and `Array.pop` 2020-09-15 02:20:11 -07:00
array_push avm2: Implement `Array.shift` and `Array.unshift`. 2020-09-15 02:20:11 -07:00
array_reverse tests: `Array.reverse`'s test should also include a check for holes. 2020-09-15 02:20:11 -07:00
array_shift avm2: Implement `Array.shift` and `Array.unshift`. 2020-09-15 02:20:11 -07:00
array_slice avm2: Implement `Array.slice`. 2020-09-15 02:20:11 -07:00
array_some avm2: Implement `forEach`, `map`, `filter`, `every`, and `some` on `Array`. 2020-09-15 02:20:11 -07:00
array_sort avm2: Implement `Array.sort` 2020-09-15 02:20:11 -07:00
array_sorton avm2: Implement `Array.sortOn` 2020-09-15 02:20:11 -07:00
array_splice avm2: Impl `Array.splice`. 2020-09-15 02:20:11 -07:00
array_storage tests: Add `array_storage` test. 2020-09-15 02:20:11 -07:00
array_tolocalestring avm2: Impl `Array.toLocaleString`. 2020-09-15 02:20:11 -07:00
array_tostring avm2: Array `join` and `toString` treat `undefined` and `null` as empty strings. 2020-09-15 02:20:11 -07:00
array_unshift avm2: Implement `Array.shift` and `Array.unshift`. 2020-09-15 02:20:11 -07:00
array_valueof avm2: Implement `Array.join`, `Array.toString`, and `Array.valueOf` (w/tests) 2020-09-15 02:20:11 -07:00
bitand avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
bitnot avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
bitor avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
bitxor avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
boolean_negation Implement and test `not`. 2020-08-10 16:38:04 -07:00
class_enumeration Add `as3_object_enumeration` and `as3_class_enumeration` tests. 2020-07-13 17:44:33 -04:00
class_methods Add a test for various types of class methods. 2020-07-13 17:44:19 -04:00
class_to_locale_string Implement and test `toLocaleString`. 2020-07-13 17:44:57 -04:00
class_to_string Add tests for `toString` on objects, functions, and classes. 2020-07-13 17:44:54 -04:00
class_value_of Add tests for `valueOf`. 2020-07-13 17:44:58 -04:00
coerce_string Test for `coerce_s`. 2020-08-10 16:38:04 -07:00
coerce_string_precision Test for `coerce_s`. 2020-08-10 16:38:04 -07:00
constructor_call Add (currently failing) test for constructors. 2020-07-13 17:44:14 -04:00
control_flow_bool Add tests for control flow instructions that use booleans or strict equality. 2020-07-13 17:44:30 -04:00
control_flow_stricteq Add tests for control flow instructions that use booleans or strict equality. 2020-07-13 17:44:30 -04:00
convert_boolean Implement and test for `convert_b`. 2020-08-10 16:38:04 -07:00
convert_integer Add & test ECMA-262 ToInt32 and `convert_i` opcode. 2020-08-10 16:38:04 -07:00
convert_number Add a test for all the above numerical coercions. 2020-08-10 16:38:04 -07:00
convert_uinteger Add and test for `convert_u` using `ToUint32` from ECMA-262 2020-08-10 16:38:04 -07:00
declocal avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
declocal_i avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
decrement avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
decrement_i avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
displayobject_alpha tests: Add inactive tests for `alpha`, `height`, `rotation`, `width`, `x`, and `y`. 2020-12-09 14:00:06 -08:00
displayobject_height tests: Add more stringent height/width test that we're only accurate to within 1 twip. 2020-12-09 14:00:06 -08:00
displayobject_hittestobject avm2: Implement `hitTestObject` 2020-12-09 14:00:06 -08:00
displayobject_hittestpoint avm2: Implement `hitTestPoint`. 2020-12-09 14:00:06 -08:00
displayobject_name tests: Fix name test breaking with our half-working execution order 2020-12-09 14:00:06 -08:00
displayobject_parent avm2: Implement `DisplayObject.parent`. 2020-12-09 14:00:06 -08:00
displayobject_root avm2: Expose `DisplayObject.root` 2020-12-09 14:00:06 -08:00
displayobject_rotation tests: Add inactive tests for `alpha`, `height`, `rotation`, `width`, `x`, and `y`. 2020-12-09 14:00:06 -08:00
displayobject_visible avm2: Implement `visible`. 2020-12-09 14:00:06 -08:00
displayobject_width tests: Add more stringent height/width test that we're only accurate to within 1 twip. 2020-12-09 14:00:06 -08:00
displayobject_x tests: Add inactive tests for `alpha`, `height`, `rotation`, `width`, `x`, and `y`. 2020-12-09 14:00:06 -08:00
displayobject_y tests: Add inactive tests for `alpha`, `height`, `rotation`, `width`, `x`, and `y`. 2020-12-09 14:00:06 -08:00
displayobjectcontainer_addchild avm2: Implement `addChild` and `addChildAt`, with tests 2020-11-27 13:23:34 -08:00
displayobjectcontainer_addchild_timelinepull0 tests: Add a whole number of tests of depth/render list interaction from the AS3 side 2020-11-27 13:23:34 -08:00
displayobjectcontainer_addchild_timelinepull1 tests: Add a whole number of tests of depth/render list interaction from the AS3 side 2020-11-27 13:23:34 -08:00
displayobjectcontainer_addchild_timelinepull2 tests: Add a whole number of tests of depth/render list interaction from the AS3 side 2020-11-27 13:23:34 -08:00
displayobjectcontainer_addchildat avm2: Implement `addChild` and `addChildAt`, with tests 2020-11-27 13:23:34 -08:00
displayobjectcontainer_addchildat_timelinelock0 tests: Add a whole number of tests of depth/render list interaction from the AS3 side 2020-11-27 13:23:34 -08:00
displayobjectcontainer_addchildat_timelinelock1 tests: Add a whole number of tests of depth/render list interaction from the AS3 side 2020-11-27 13:23:34 -08:00
displayobjectcontainer_addchildat_timelinelock2 tests: Add a whole number of tests of depth/render list interaction from the AS3 side 2020-11-27 13:23:34 -08:00
displayobjectcontainer_contains avm2: Impl `contains` w/ test 2020-11-27 13:23:34 -08:00
displayobjectcontainer_getchildat avm2: Implement `DisplayObjectContainer.getChildAt`. 2020-11-27 13:23:34 -08:00
displayobjectcontainer_getchildbyname avm2: Implement `getChildByName` 2020-11-27 13:23:34 -08:00
displayobjectcontainer_getchildindex avm2: Implement `getChildIndex` 2020-11-27 13:23:34 -08:00
displayobjectcontainer_removechild avm2: Implement `removeChild`. 2020-11-27 13:23:34 -08:00
displayobjectcontainer_removechild_timelinemanip_remove1 tests: Add a whole number of tests of depth/render list interaction from the AS3 side 2020-11-27 13:23:34 -08:00
displayobjectcontainer_removechildat avm2: Implement `removeChildAt` 2020-11-27 13:23:34 -08:00
displayobjectcontainer_removechildren avm2: Implement `removeChildren`. 2020-11-27 13:23:34 -08:00
displayobjectcontainer_setchildindex avm2: Implement `setChildIndex` 2020-11-27 13:23:34 -08:00
displayobjectcontainer_stopallmovieclips avm2: Implement `stopAllMovieClips` 2020-11-27 13:23:34 -08:00
displayobjectcontainer_swapchildren avm2: Implement `swapChildren` and `swapChildrenAt`. 2020-11-27 13:23:34 -08:00
displayobjectcontainer_swapchildrenat avm2: Implement `swapChildren` and `swapChildrenAt`. 2020-11-27 13:23:34 -08:00
displayobjectcontainer_timelineinstance core: Store named children on AVM2 movieclips as object properties 2020-11-27 13:23:34 -08:00
divide avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
equals Implement and test `equals`. 2020-08-10 16:38:04 -07:00
es3_inheritance Add a test for legacy / ES3 inheritance. 2020-07-13 17:44:56 -04:00
es4_inheritance Since we have an `es3_inheritance` test now, rename the existing inheritance test to `es4_inheritance`. 2020-07-13 17:44:57 -04:00
es4_interfaces Add a test for loading interfaces into the AVM2. 2020-07-13 17:45:07 -04:00
es4_method_binding Add a test for ES4 method binding of `this`. 2020-07-13 17:44:29 -04:00
es4_oop_prototypes Add a test for interactions between prototype and class-trait properties. 2020-07-13 17:44:27 -04:00
event_bubbles avm2: Implement `Event.bubbles`, `cancelable`, and `type`. 2020-12-14 16:46:33 -08:00
event_cancelable avm2: Implement `Event.bubbles`, `cancelable`, and `type`. 2020-12-14 16:46:33 -08:00
event_clone avm2: Implement `Event.clone` 2020-12-14 16:46:33 -08:00
event_formattostring avm2: Implement `Event.formatToString`. 2020-12-14 16:46:33 -08:00
event_isdefaultprevented avm2: Implement `Event.preventDefault` and `Event.isDefaultPrevented` 2020-12-14 16:46:33 -08:00
event_type avm2: Implement `Event.bubbles`, `cancelable`, and `type`. 2020-12-14 16:46:33 -08:00
event_valueof_tostring avm2: Implement `Event.toString` (which matches it's valueof behavior) 2020-12-14 16:46:33 -08:00
eventdispatcher_dispatchevent avm2: Implement `dispatchEvent`. 2020-12-21 21:47:29 -08:00
eventdispatcher_dispatchevent_cancel avm2: Implement `dispatchEvent`. 2020-12-21 21:47:29 -08:00
eventdispatcher_dispatchevent_handlerorder avm2: Implement `dispatchEvent`. 2020-12-21 21:47:29 -08:00
eventdispatcher_dispatchevent_this avm2: Implement `dispatchEvent`. 2020-12-21 21:47:29 -08:00
eventdispatcher_haseventlistener avm2: Implement `addEventListener`, `removeEventListener`, and `hasEventListener`. 2020-12-21 21:47:29 -08:00
eventdispatcher_willtrigger avm2: Implement `EventDispatcher.willTrigger` 2020-12-21 21:47:29 -08:00
falsiness Oh look, I figured out how to emit `istrue`, so that's tested, too. 2020-08-10 16:38:04 -07:00
framelabel_constr avm2: Implement `FrameLabel`. 2020-10-06 06:03:22 -07:00
function_call Add a basic test for function calls. 2020-07-13 17:44:13 -04:00
function_call_arguments avm2: Implement `arguments`. 2020-12-17 13:21:44 -08:00
function_call_rest avm2: Implement `rest` parameters in function calls. 2020-12-17 13:21:44 -08:00
function_call_via_apply avm2: Implement `Function.apply` 2020-12-17 13:21:44 -08:00
function_call_via_call Add test of `Function.prototype.call` 2020-07-13 17:44:56 -04:00
function_to_locale_string Implement and test `toLocaleString`. 2020-07-13 17:44:57 -04:00
function_to_string Add tests for `toString` on objects, functions, and classes. 2020-07-13 17:44:54 -04:00
function_value_of Add tests for `valueOf`. 2020-07-13 17:44:58 -04:00
greaterequals Add tests for `greaterequals`, `greaterthan`, `lessequals`, and `lessthan`. 2020-08-10 16:38:04 -07:00
greaterthan Add tests for `greaterequals`, `greaterthan`, `lessequals`, and `lessthan`. 2020-08-10 16:38:04 -07:00
has_own_property Add a test for `has_own_property` in various class instance scenarios. 2020-07-13 17:44:35 -04:00
hello_world Add our first AVM2 regression test: hello world! 2020-07-13 17:44:09 -04:00
if_eq Test for `iseq` and `isne` 2020-08-10 16:38:04 -07:00
if_gt Add tests for `>`, `<`, `<=`, and `>=`. 2020-08-10 16:38:04 -07:00
if_gte Add tests for `>`, `<`, `<=`, and `>=`. 2020-08-10 16:38:04 -07:00
if_lt Add tests for `>`, `<`, `<=`, and `>=`. 2020-08-10 16:38:04 -07:00
if_lte Add tests for `>`, `<`, `<=`, and `>=`. 2020-08-10 16:38:04 -07:00
if_ne Test for `iseq` and `isne` 2020-08-10 16:38:04 -07:00
if_stricteq Add tests for `ifstricteq`, `ifstrictne`, and `strictequals`. 2020-07-13 17:44:59 -04:00
if_strictne Add tests for `ifstricteq`, `ifstrictne`, and `strictequals`. 2020-07-13 17:44:59 -04:00
in avm2: Implement `in` 2020-09-07 11:07:07 -07:00
inclocal avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
inclocal_i avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
increment avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
increment_i avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
instanceof Add tests for `instanceof` and `is` operators. 2020-07-13 17:45:10 -04:00
is_prototype_of Actually enable the `isPrototypeOf` test. 2020-07-13 17:44:34 -04:00
istype Add tests for `instanceof` and `is` operators. 2020-07-13 17:45:10 -04:00
lazyinit tests: Fix the lazyinit test so that it actually passes on Ruffle 2020-10-17 03:32:09 -07:00
lessequals Add tests for `greaterequals`, `greaterthan`, `lessequals`, and `lessthan`. 2020-08-10 16:38:04 -07:00
lessthan Add tests for `greaterequals`, `greaterthan`, `lessequals`, and `lessthan`. 2020-08-10 16:38:04 -07:00
lshift avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
math tests: Add test for AVM2 Math 2020-11-12 04:24:47 -08:00
modulo avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
movieclip_constr avm2: Implement `new MovieClip()`. 2020-10-06 06:03:22 -07:00
movieclip_currentlabels avm2: Implement `MovieClip.currentLabels` 2020-10-06 06:03:22 -07:00
movieclip_currentscene avm2: Implement `MovieClip.currentScene` 2020-10-06 06:03:22 -07:00
movieclip_dispatchevent avm2: Implement `dispatchEvent`. 2020-12-21 21:47:29 -08:00
movieclip_dispatchevent_cancel avm2: Implement `dispatchEvent`. 2020-12-21 21:47:29 -08:00
movieclip_dispatchevent_handlerorder avm2: Implement `dispatchEvent`. 2020-12-21 21:47:29 -08:00
movieclip_dispatchevent_selfadd avm2: Implement `dispatchEvent`. 2020-12-21 21:47:29 -08:00
movieclip_dispatchevent_target avm2: Implement `dispatchEvent`. 2020-12-21 21:47:29 -08:00
movieclip_gotoandplay avm2: Non-integer numbers should be handled as strings and integer-parsible strings should be handled as numbers. 2020-10-06 06:03:22 -07:00
movieclip_gotoandstop avm2: Non-integer numbers should be handled as strings and integer-parsible strings should be handled as numbers. 2020-10-06 06:03:22 -07:00
movieclip_next_frame avm2: Implement `prevFrame` and `nextFrame`, with tests. 2020-10-06 06:03:22 -07:00
movieclip_next_scene tests: Add tests for `prevScene` and `nextScene`. 2020-10-06 06:03:22 -07:00
movieclip_play tests: Add test for AS3 movieclip play 2020-10-06 06:03:22 -07:00
movieclip_prev_frame tests: Add tests for `prevScene` and `nextScene`. 2020-10-06 06:03:22 -07:00
movieclip_prev_scene tests: Add tests for `prevScene` and `nextScene`. 2020-10-06 06:03:22 -07:00
movieclip_properties avm2: Implement the programmatically-playing flag that governs `isPlaying` behavior. 2020-10-06 06:03:22 -07:00
movieclip_scenes avm2: Implement `MovieClip.scenes`. 2020-10-06 06:03:22 -07:00
movieclip_stop avm2: Implement `stop` and `play`, with tests for the former. 2020-10-06 06:03:22 -07:00
movieclip_willtrigger avm2: Implement `EventDispatcher.willTrigger` 2020-12-21 21:47:29 -08:00
multiply avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
negate avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
object_enumeration Add `as3_object_enumeration` and `as3_class_enumeration` tests. 2020-07-13 17:44:33 -04:00
object_to_locale_string Implement and test `toLocaleString`. 2020-07-13 17:44:57 -04:00
object_to_string Add tests for `toString` on objects, functions, and classes. 2020-07-13 17:44:54 -04:00
object_value_of Add tests for `valueOf`. 2020-07-13 17:44:58 -04:00
property_is_enumerable Add a test for `propertyIsEnumerable`. 2020-07-13 17:44:37 -04:00
rshift avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
scene_constr avm2: Implement `Scene` object. 2020-10-06 06:03:22 -07:00
set_property_is_enumerable Add test for `setPropertyIsEnumerable` 2020-07-13 17:44:39 -04:00
stored_properties Add a test for stored properties as well. 2020-07-13 17:44:24 -04:00
strict_equality Add tests for `ifstricteq`, `ifstrictne`, and `strictequals`. 2020-07-13 17:44:59 -04:00
subtract avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
timeline_scripts tests: Add tests for timeline scripts. 2020-10-06 06:03:22 -07:00
trace avm2: trace accepts multiple arguments 2020-11-10 17:05:56 -08:00
truthiness Add test for truthiness. 2020-08-10 16:38:04 -07:00
urshift avm2: Implement avm2 math opcodes (merge #1037) 2020-08-23 13:38:38 -07:00
virtual_properties Add test of AVM2 virtual properties. 2020-07-13 17:44:24 -04:00