From f6f084098e1613009a57c4e4bd9ce3530c6e63ae Mon Sep 17 00:00:00 2001 From: David Wendt Date: Fri, 25 Sep 2020 18:50:05 -0400 Subject: [PATCH] tests: Add a test for floating point errors in the AVM1 representation of `_xscale`, `_yscale`, and `_rotation`. --- core/tests/regression_tests.rs | 1 + .../stage_property_representation/output.txt | 586 ++++++++++++++++++ .../stage_property_representation/test.fla | Bin 0 -> 41472 bytes .../stage_property_representation/test.swf | Bin 0 -> 240 bytes 4 files changed, 587 insertions(+) create mode 100644 core/tests/swfs/avm1/stage_property_representation/output.txt create mode 100644 core/tests/swfs/avm1/stage_property_representation/test.fla create mode 100644 core/tests/swfs/avm1/stage_property_representation/test.swf diff --git a/core/tests/regression_tests.rs b/core/tests/regression_tests.rs index 918d15a61..72293d625 100644 --- a/core/tests/regression_tests.rs +++ b/core/tests/regression_tests.rs @@ -383,6 +383,7 @@ swf_tests! { (as3_array_sort, "avm2/array_sort", 1), (as3_array_sorton, "avm2/array_sorton", 1), (as3_array_hasownproperty, "avm2/array_hasownproperty", 1), + (stage_property_representation, "avm1/stage_property_representation", 1), } // TODO: These tests have some inaccuracies currently, so we use approx_eq to test that numeric values are close enough. diff --git a/core/tests/swfs/avm1/stage_property_representation/output.txt b/core/tests/swfs/avm1/stage_property_representation/output.txt new file mode 100644 index 000000000..93a1025e2 --- /dev/null +++ b/core/tests/swfs/avm1/stage_property_representation/output.txt @@ -0,0 +1,586 @@ +//(xscale = 20 through 420) +20 +22 +24 +26 +28 +30 +32 +34 +36 +38 +40 +42 +44 +46 +48 +50 +52 +54 +56 +58 +60 +62 +64 +66 +68 +70 +72 +74 +76 +78 +80 +82 +84 +86 +88 +90 +92 +94 +96 +98 +100 +102 +104 +106 +108 +110 +112 +114 +116 +118 +120 +122 +124 +126 +128 +130 +132 +134 +136 +138 +140 +142 +144 +146 +148 +150 +152 +154 +156 +158 +160 +162 +164 +166 +168 +170 +172 +174 +176 +178 +180 +182 +184 +186 +188 +190 +192 +194 +196 +198 +200 +202 +204 +206 +208 +210 +212 +214 +216 +218 +220 +222 +224 +226 +228 +230 +232 +234 +236 +238 +240 +242 +244 +246 +248 +250 +252 +254 +256 +258 +260 +262 +264 +266 +268 +270 +272 +274 +276 +278 +280 +282 +284 +286 +288 +290 +292 +294 +296 +298 +300 +302 +304 +306 +308 +310 +312 +314 +316 +318 +320 +322 +324 +326 +328 +330 +332 +334 +336 +338 +340 +342 +344 +346 +348 +350 +352 +354 +356 +358 +360 +362 +364 +366 +368 +370 +372 +374 +376 +378 +380 +382 +384 +386 +388 +390 +392 +394 +396 +398 +400 +402 +404 +406 +408 +410 +412 +414 +416 +418 +420 +//(_yscale = 20 through 420) +20 +22 +24 +26 +28 +30 +32 +34 +36 +38 +40 +42 +44 +46 +48 +50 +52 +54 +56 +58 +60 +62 +64 +66 +68 +70 +72 +74 +76 +78 +80 +82 +84 +86 +88 +90 +92 +94 +96 +98 +100 +102 +104 +106 +108 +110 +112 +114 +116 +118 +120 +122 +124 +126 +128 +130 +132 +134 +136 +138 +140 +142 +144 +146 +148 +150 +152 +154 +156 +158 +160 +162 +164 +166 +168 +170 +172 +174 +176 +178 +180 +182 +184 +186 +188 +190 +192 +194 +196 +198 +200 +202 +204 +206 +208 +210 +212 +214 +216 +218 +220 +222 +224 +226 +228 +230 +232 +234 +236 +238 +240 +242 +244 +246 +248 +250 +252 +254 +256 +258 +260 +262 +264 +266 +268 +270 +272 +274 +276 +278 +280 +282 +284 +286 +288 +290 +292 +294 +296 +298 +300 +302 +304 +306 +308 +310 +312 +314 +316 +318 +320 +322 +324 +326 +328 +330 +332 +334 +336 +338 +340 +342 +344 +346 +348 +350 +352 +354 +356 +358 +360 +362 +364 +366 +368 +370 +372 +374 +376 +378 +380 +382 +384 +386 +388 +390 +392 +394 +396 +398 +400 +402 +404 +406 +408 +410 +412 +414 +416 +418 +420 +//(_rotation = 180 through 180) +180 +-178 +-176 +-174 +-172 +-170 +-168 +-166 +-164 +-162 +-160 +-158 +-156 +-154 +-152 +-150 +-148 +-146 +-144 +-142 +-140 +-138 +-136 +-134 +-132 +-130 +-128 +-126 +-124 +-122 +-120 +-118 +-116 +-114 +-112 +-110 +-108 +-106 +-104 +-102 +-100 +-98 +-96 +-94 +-92 +-90 +-88 +-86 +-84 +-82 +-80 +-78 +-76 +-74 +-72 +-70 +-68 +-66 +-64 +-62 +-60 +-58 +-56 +-54 +-52 +-50 +-48 +-46 +-44 +-42 +-40 +-38 +-36 +-34 +-32 +-30 +-28 +-26 +-24 +-22 +-20 +-18 +-16 +-14 +-12 +-10 +-8 +-6 +-4 +-2 +0 +2 +4 +6 +8 +10 +12 +14 +16 +18 +20 +22 +24 +26 +28 +30 +32 +34 +36 +38 +40 +42 +44 +46 +48 +50 +52 +54 +56 +58 +60 +62 +64 +66 +68 +70 +72 +74 +76 +78 +80 +82 +84 +86 +88 +90 +92 +94 +96 +98 +100 +102 +104 +106 +108 +110 +112 +114 +116 +118 +120 +122 +124 +126 +128 +130 +132 +134 +136 +138 +140 +142 +144 +146 +148 +150 +152 +154 +156 +158 +160 +162 +164 +166 +168 +170 +172 +174 +176 +178 +180 diff --git a/core/tests/swfs/avm1/stage_property_representation/test.fla b/core/tests/swfs/avm1/stage_property_representation/test.fla new file mode 100644 index 0000000000000000000000000000000000000000..39d2d1a51227782576ad94ad25ee8122e2ef2896 GIT binary patch literal 41472 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 E10`JN;{X5v literal 0 HcmV?d00001 diff --git a/core/tests/swfs/avm1/stage_property_representation/test.swf b/core/tests/swfs/avm1/stage_property_representation/test.swf new file mode 100644 index 0000000000000000000000000000000000000000..d8af7e91c34d4c71f4dc6b5e88eabe694d99e997 GIT binary patch literal 240 zcmVNWS~%zQIubro}pl3WT45wkO`8Guf!z}k}S$ENi50C&jU&uS|H?s zY)yt~Obi?hYSVZaI2hTPfOfNs014%3>@dEP+B9wk4kk7RD6j!(V3L`}%D{dC$n_AK z%fw*MFpUqU9;OYX0K{-dHH!tP8LFKTBr7|UiDAuukeSR-M=+x~f|*1|Fhd-{jLi|u qgdD*Fbp#j45nB+B;KJ{SE$EKmf;fT;n