Mike Welsh
544c1becc2
tests: Add test for button children
2020-08-18 01:18:15 -07:00
Mike Welsh
b5c7e1dab0
tests: Add test for conflicting instance names
2020-08-18 01:18:15 -07:00
Floens
95acc14190
avm1: fix array unshift
...
update array_trivial test for it
2020-08-16 04:27:09 -07:00
Albert Safin
e03373bceb
avm1: parseInt
2020-08-13 00:40:20 -07:00
David Wendt
354b194b69
avm1: Add test for nested text fields in buttons.
2020-08-12 11:08:27 -07:00
David Wendt
6ec1d453b8
Add tests for `greaterequals`, `greaterthan`, `lessequals`, and `lessthan`.
2020-08-10 16:38:04 -07:00
David Wendt
f88f2e225a
Add tests for `>`, `<`, `<=`, and `>=`.
...
Note that this does NOT completely test the full range of if instructions for abstract relational comparison. Notably, the Adobe Animate CC compiler compiles each operator into it's negated equivalent, e.g. `<` becomes `ifnlt`.
I do not know how to get it to emit `ifge` or the like, which differ only by how they handle `NaN`s.
2020-08-10 16:38:04 -07:00
David Wendt
76ab8570e4
Implement and test `equals`.
...
The test is also far more in-depth than the `if_eq`/`if_ne` tests, which use the same set of vectors as the strict-equality tests from a while ago. Interestingly, this test passed on first run
2020-08-10 16:38:04 -07:00
David Wendt
5da4e2f118
Test for `iseq` and `isne`
2020-08-10 16:38:04 -07:00
David Wendt
86965eb674
Test for `coerce_s`.
...
I cannot yet figure out how to generate tests that use `convert_s`, so it's not covered.
2020-08-10 16:38:04 -07:00
David Wendt
35f939cb15
Add and test for `convert_u` using `ToUint32` from ECMA-262
2020-08-10 16:38:04 -07:00
David Wendt
6eb41035cf
Add & test ECMA-262 ToInt32 and `convert_i` opcode.
...
The ECMA-262 documentation is awfully overwrought for something that boils down to "chop off the non-whole part, wrap to 32 bits, then reinterpret as signed". Bitwise operations are *hell* to describe mathematically, and such descriptions are even harder to understand.
2020-08-10 16:38:04 -07:00
David Wendt
351fe026e9
Add a test for all the above numerical coercions.
2020-08-10 16:38:04 -07:00
David Wendt
60f9613365
Implement and test for `convert_b`.
2020-08-10 16:38:04 -07:00
David Wendt
6cf48eb543
Implement and test `not`.
2020-08-10 16:38:04 -07:00
David Wendt
b972c24f7e
Oh look, I figured out how to emit `istrue`, so that's tested, too.
2020-08-10 16:38:04 -07:00
David Wendt
850ebc88a2
Add test for truthiness.
...
As compiled by Adobe Animate CC 2020, this test appears to only use `iffalse`. However, both `op_is_false` and `op_is_true` coerce in the same manner, so I'm not entirely sure this is a problem for now.
2020-08-10 16:38:04 -07:00
unknown
47a8eb6f3e
avm1: Copy broadcast functions for MovieClipLoader
2020-08-04 07:02:14 -07:00
Nathan Adams
88a31cc5a9
avm1: Ensure we call movie constructors through Function::construct, not manually, to set __constructor__
2020-08-01 02:33:14 -07:00
unknown
a14f19e9e5
avm1: Call the respective listeners
2020-07-29 15:24:23 -07:00
unknown
795cd72dce
avm1: Broadcasting functions are now copied from AsBroadcaster
2020-07-29 15:24:23 -07:00
unknown
b72dbcae96
chore: Assert his inside of listeners
2020-07-29 15:24:23 -07:00
unknown
df50cbb27f
avm1: Fix the behavior of addListener and removeListener
2020-07-29 15:24:23 -07:00
unknown
20989ef03d
avm1: Initialize now copies the functions from AsBroadcaster
2020-07-29 15:24:23 -07:00
unknown
890dc0ea13
avm1: Implement AsBroadcaster
2020-07-29 15:24:23 -07:00
Nathan Adams
32be19da6d
avm1: Allow gotoAndStop/gotoAndPlay with frame numbers in paths - #915
2020-07-29 13:53:57 -07:00
Mike Welsh
5d08956152
tests: Add typeof and labels for Object() test
2020-07-29 13:52:51 -07:00
CUB3D
0fe3a23fd6
core: Correct handling of Object function without args
2020-07-29 13:52:51 -07:00
CUB3D
49bee3fe5c
core: Implement Object() function
2020-07-29 13:52:51 -07:00
CUB3D
c1771d7d4e
core: Split function and constructor, tests, fix bug with constructor
2020-07-27 12:50:31 -07:00
CUB3D
afb1d6b42f
core: Add global Array() function
2020-07-27 12:50:31 -07:00
CUB3D
22db5ab76a
core: Populate function when creating a constructor
2020-07-27 10:38:50 -07:00
Nathan Adams
cf61f8a4d3
avm1: Add failing test for registerClass in a loaded movie
2020-07-27 01:40:28 -07:00
David Wendt
f56d16a68d
Separate player creation from root movie setup, and allow users of Ruffle to load in movies synchronously or asynchronously.
...
During the small period of time when a player is created but has no root movie, a temporary empty movie is installed with an assumed stage size and framerate of 550x400@12fps. This is Flash default for new projects, so it seemed appropriate. User ActionScript cannot see these values, and I'm not even sure JavaScript can, either.
2020-07-23 23:02:51 -04:00
Mike Welsh
efa059ff8d
tests: Add test for LoadVars
2020-07-23 03:00:19 -07:00
Mike Welsh
74cb8609c1
avm1: Support loading into _level in GetURL2
...
Calling loadMovieNum with a variable parameter compiles into a
GetURL2 call with a `_level` window target parameter. Previously
this triggered Ruffle to try to navigate to the SWF. Now it
properly loads the SWF inside the current movie.
2020-07-23 02:08:48 -07:00
Nathan Adams
f0980301da
avm1: Implement arguments.callee
2020-07-22 15:57:45 -07:00
Nathan Adams
d5deeee1b7
avm1: Properly implement the arguments object, it's an array
2020-07-21 07:49:00 -07:00
Mike Welsh
1a5d7fe452
avm2: Initial AVM2 interpreter (merge #404 )
...
Initial work on the AVM2 interpreter.
2020-07-19 19:59:05 -07:00
Mike Welsh
8c1ec01d75
tests: Test clip events copying in duplicateMovieClip
...
duplicateMovieClip should also copy any clip events on the source
clip to the newly created movie clip.
2020-07-17 20:49:05 -07:00
Mike Welsh
f9b1c586d1
tests: Add test for paths in ActionCall
2020-07-14 23:34:21 -07:00
David Wendt
64e5b46259
Add tests for `instanceof` and `is` operators.
2020-07-13 17:45:10 -04:00
David Wendt
563a515189
Add a test for loading interfaces into the AVM2.
...
This test will fail if the AVM2 implementation does not support bodyless methods or bare classes properly.
2020-07-13 17:45:07 -04:00
David Wendt
6117288fe2
Add tests for `ifstricteq`, `ifstrictne`, and `strictequals`.
2020-07-13 17:44:59 -04:00
David Wendt
03a240ebcd
Add tests for `valueOf`.
2020-07-13 17:44:58 -04:00
David Wendt
3b52dfe2ba
Since we have an `es3_inheritance` test now, rename the existing inheritance test to `es4_inheritance`.
2020-07-13 17:44:57 -04:00
David Wendt
cf6714d33c
Implement and test `toLocaleString`.
...
This function has vague documentation about enabling locale-specific formatting in subclasses. As far as I can tell, none of the objects I implemented so far do anything different than `toString`, so I just have it use the same `TObject` property I set up for `toString`.
2020-07-13 17:44:57 -04:00
David Wendt
3558c3afa0
Add test of `Function.prototype.call`
2020-07-13 17:44:56 -04:00
David Wendt
16774aa055
Add a test for legacy / ES3 inheritance.
...
This was originally something *way* more evil: mixed inheritance between ES3 and ES4 classes. It didn't pan out due to fundamental limitations of the two object models. How the hell did Brendan Eich/Adobe/TC-39 expect ES4 classes to be adopted in already-existing codebases?!
2020-07-13 17:44:56 -04:00
David Wendt
37cdcb3bce
Add tests for `toString` on objects, functions, and classes.
2020-07-13 17:44:54 -04:00
David Wendt
ba2c1f5750
Add test for `setPropertyIsEnumerable`
2020-07-13 17:44:39 -04:00
David Wendt
dc0cb00a03
Add a test for `propertyIsEnumerable`.
2020-07-13 17:44:37 -04:00
David Wendt
42cb8f57c8
Add a test for `has_own_property` in various class instance scenarios.
2020-07-13 17:44:35 -04:00
David Wendt
8677804ea0
Actually enable the `isPrototypeOf` test.
2020-07-13 17:44:34 -04:00
David Wendt
0e89cb2175
Impl `Object.isPrototypeOf` w/ test
2020-07-13 17:44:33 -04:00
David Wendt
d29f3dc1d0
Add `as3_object_enumeration` and `as3_class_enumeration` tests.
...
The former tests iterating normal objects and the latter tests iterating objects with prototypes.
2020-07-13 17:44:33 -04:00
David Wendt
7253c091a2
Add tests for control flow instructions that use booleans or strict equality.
...
Other comparisons will have to wait until we have ECMA-compliant abstract comparison and coercion.
2020-07-13 17:44:30 -04:00
David Wendt
ddc9aa4cca
Add a test for ES4 method binding of `this`.
2020-07-13 17:44:29 -04:00
David Wendt
f042e453a3
Add a test for interactions between prototype and class-trait properties.
...
This is the test that broke the old object model's back, please see parent commit's description for more details.
2020-07-13 17:44:27 -04:00
David Wendt
6cc3f7ecc3
Add a test for stored properties as well.
...
This test passed with no errors.
2020-07-13 17:44:24 -04:00
David Wendt
5abc78d3bd
Add test of AVM2 virtual properties.
...
This tests:
* Getter invocation
* Setter invocation
* Properties with one or the other, but not both
* Inheritance
* Superproperty getters and setters
* Getters with inherited setter
* Setters with inherited getter
2020-07-13 17:44:24 -04:00
David Wendt
785832b7f3
Add `as3_inheritance` test, which is primarily designed to test method calls, constructor execution, and usage of `super`.
2020-07-13 17:44:22 -04:00
David Wendt
ab5a95c05b
Add a test for various types of class methods.
2020-07-13 17:44:19 -04:00
David Wendt
f3dee5c310
Add (currently failing) test for constructors.
2020-07-13 17:44:14 -04:00
David Wendt
bedf5cb459
Add a basic test for function calls.
2020-07-13 17:44:13 -04:00
David Wendt
a2dfffc56e
Add our first AVM2 regression test: hello world!
2020-07-13 17:44:09 -04:00
CUB3D
83cca044ad
core: Add tests for ContextMenu and ContextMenuItem
2020-07-12 15:25:58 -07:00
Mike Welsh
8715589f50
tests: Add setInterval test
2020-07-10 14:38:48 -07:00
Nathan Adams
8a0430d744
avm1: Implement Object.watch & Object.unwatch ( #268 )
2020-07-10 12:02:26 -07:00
Nathan Adams
ecbab536b5
avm1: Respect ScriptLimits for recursion depth, and use that in infinite_recursion_function
2020-07-08 14:47:38 -07:00
Nathan Adams
51ec5739c6
avm1: Throw errors when functions (user-called, or special) go too deep
2020-07-08 14:47:38 -07:00
Mike Welsh
2cbbe32412
tests: Add test for GetVariable/SetVariable on _x, etc.
2020-07-05 15:15:31 -07:00
Mike Welsh
804385347f
tests: Add test for virtual properties on prototype
2020-07-05 15:15:31 -07:00
Mike Welsh
fec8cf5e52
tests: Add tests for with from issue #792
2020-07-05 15:15:31 -07:00
CUB3D
ab58cff8b3
core: Add tests for ColorTransform and cleanup code
2020-07-05 13:49:59 -07:00
Mike Welsh
07814fdf53
tests: Add test for Error
2020-07-02 20:58:01 -07:00
Mike Welsh
3a4d432645
tests: Edit textfield_variable test for #777
2020-07-02 01:29:41 -07:00
Nathan Adams
d86761db5d
avm1: Implement try {..} catch {..} finally {..} - #731
2020-07-01 17:30:56 -07:00
Nathan Adams
7c0b0a7a57
avm1: Fix instanceof checks with primitives
2020-07-01 16:36:54 -07:00
Nathan Adams
d1732dd3d6
avm1: Returning from with{} should return from the parent activation
2020-07-01 16:21:43 -07:00
Mike Welsh
ef31a6bea4
text: Don't override TextField::set_matrix and other layout changes
...
Don't override set_matrix and set_x for TextFields, and leave the
bounds intact.
TODO: There are still some wrapping issues in the tests, but
this allows the simple case of single-line texts to render
correctly.
2020-06-28 18:36:10 -07:00
Mike Welsh
d97a515330
tests: Add text field variable test
2020-06-28 18:36:10 -07:00
Mike Welsh
8da0f43412
tests: Add test for DefineLocal and issue #760
2020-06-28 15:15:45 -07:00
Mike Welsh
0833c15e25
tests: Add test for enumerating array indices
2020-06-27 20:25:45 -07:00
Mike Welsh
478d88b22d
tests: Test hasOwnProperty for array indices in array_properties
2020-06-27 20:25:45 -07:00
Mike Welsh
8e3b96f1b1
tests: Add tests for non-string params in hasOwnProperty:
2020-06-27 20:25:45 -07:00
Mike Welsh
b37b74e0b6
tests: Add test for __constructor__ being DontEnum
2020-06-27 18:54:01 -07:00
Nathan Adams
463b79f063
avm1: Implement Action::Throw
2020-06-25 02:03:15 -07:00
Mike Welsh
81d75c6256
text: Text formatting for EditText fields (merge #615 )
...
First implementation of HTML parsing and formatting for text fields.
2020-06-24 23:06:11 -07:00
CUB3D
4e286b43ae
chore: Format
2020-06-24 01:46:06 +01:00
CUB3D
752ffc5cca
chore: Fix clippy lints and tests
2020-06-24 01:44:07 +01:00
David Wendt
c1ad37a0f6
Implement text span raising, sans list items.
...
During the raising process, we maintain a list of pointers to the lowest-most `textformat`, `p`, `font`, `a`, `b`, `i`, and `u` in the document that we are appending to. When we get a new one of any of those elements, we clear the rest off the stack. This forces us to add HTML in the same order Flash does.
LIs are not yet supported because they require us to process text line-by-line which doesn't mesh with this model.
There's also a test but the XML DOM generates HTML strings with the wrong attribute order, so the test fails spuriously.
2020-06-20 20:14:57 -04:00
David Wendt
e036d6594b
Add some entity support to HTML parsing.
2020-06-20 20:08:22 -04:00
David Wendt
88fcb98913
Allow disabling entity processing when parsing XML.
...
This necessitated a change to edittext_bullet, which turns out is accidentally an entity test, too. It now no longer uses entities so that it won't spuriously fail due to an entity related problem.
2020-06-20 20:06:21 -04:00
David Wendt
65f4d2cf1e
Add regression tests for `underline`.
...
We're within 4px in every case.
2020-06-20 19:56:01 -04:00
David Wendt
a2d69a69a3
Add a test for bullets.
...
As usual with most newline related things, we're 3px off no matter how many or how few lines we have.
2020-06-20 19:56:00 -04:00
David Wendt
8628261dc8
Add a bunch of necessary fixes to default text formatting and HTML format extraction.
...
This also replaces the `edittext_html_defaults` test with a more robust test that checks the default format and global format of SWF-based, text, and HTML test vectors.
2020-06-20 19:55:57 -04:00
David Wendt
9e56f10fd0
Approx the align and margins text by up to 3 pixels.
...
These tests currently have visual bugs in all cases, and measurement bugs in the justification case that require me to approx them.
2020-06-20 19:55:54 -04:00
David Wendt
3c9a43ea72
Add a regression test for newlines.
...
This test includes tests for HTML newlines, which causes the XML parser in Ruffle to throw errors. Hence why it's currently ignored.
2020-06-20 19:55:53 -04:00
David Wendt
6c44418b10
Add a test for tab_stops.
...
This test is currently inaccurate by up to 5 pixels, this is due to some behavior with really, really wide tabstops and word breaks that I don't entirely get yet.
2020-06-20 19:55:51 -04:00