From ab58cff8b3bdcb9de70ae840d1011c4f32197317 Mon Sep 17 00:00:00 2001 From: CUB3D Date: Sat, 4 Jul 2020 21:00:12 +0100 Subject: [PATCH] core: Add tests for ColorTransform and cleanup code --- core/src/avm1/color_transform_object.rs | 1 - core/src/avm1/globals/color_transform.rs | 31 ++--------- core/tests/regression_tests.rs | 1 + .../swfs/avm1/color_transform/output.txt | 48 ++++++++++++++++++ core/tests/swfs/avm1/color_transform/test.fla | Bin 0 -> 4928 bytes core/tests/swfs/avm1/color_transform/test.swf | Bin 0 -> 1100 bytes 6 files changed, 52 insertions(+), 29 deletions(-) create mode 100644 core/tests/swfs/avm1/color_transform/output.txt create mode 100644 core/tests/swfs/avm1/color_transform/test.fla create mode 100644 core/tests/swfs/avm1/color_transform/test.swf diff --git a/core/src/avm1/color_transform_object.rs b/core/src/avm1/color_transform_object.rs index 61c5f3887..ef1749442 100644 --- a/core/src/avm1/color_transform_object.rs +++ b/core/src/avm1/color_transform_object.rs @@ -67,7 +67,6 @@ impl<'gc> ColorTransformObject<'gc> { gc_context: MutationContext<'gc, '_>, proto: Option>, ) -> Self { - println!("Create new ct o"); ColorTransformObject(GcCell::allocate( gc_context, ColorTransformData { diff --git a/core/src/avm1/globals/color_transform.rs b/core/src/avm1/globals/color_transform.rs index 7c5a0a708..68c76dd68 100644 --- a/core/src/avm1/globals/color_transform.rs +++ b/core/src/avm1/globals/color_transform.rs @@ -140,8 +140,6 @@ pub fn set_rgb<'gc>( this: Object<'gc>, args: &[Value<'gc>], ) -> Result, Error<'gc>> { - log::warn!("ColorTransform.set_rgb"); - let new_rgb = args .get(0) .unwrap_or(&Value::Undefined) @@ -173,7 +171,6 @@ macro_rules! color_transform_value_accessor { this: Object<'gc>, args: &[Value<'gc>], ) -> Result, Error<'gc>> { - //TODO: add validation let new_val = args .get(0) .unwrap_or(&Value::Undefined) @@ -190,7 +187,6 @@ macro_rules! color_transform_value_accessor { this: Object<'gc>, _args: &[Value<'gc>], ) -> Result, Error<'gc>> { - println!("This: {}, {:?}", stringify!($get_ident), this); let ct = this.as_color_transform_object().unwrap(); Ok(Value::Number(ct.$get_ident()).into()) } @@ -219,15 +215,15 @@ pub fn create_proto<'gc>( let mut object = color_transform_object.as_script_object().unwrap(); with_color_transform!(object, gc_context, - "rgb" => [get_rgb, set_rgb], + "alphaMultiplier" => [get_alpha_multiplier, set_alpha_multiplier], "redMultiplier" => [get_red_multiplier, set_red_multiplier], "greenMultiplier" => [get_green_multiplier, set_green_multiplier], "blueMultiplier" => [get_blue_multiplier, set_blue_multiplier], - "alphaMultiplier" => [get_alpha_multiplier, set_alpha_multiplier], + "alphaOffset" => [get_alpha_offset, set_alpha_offset], "redOffset" => [get_red_offset, set_red_offset], "greenOffset" => [get_green_offset, set_green_offset], "blueOffset" => [get_blue_offset, set_blue_offset], - "alphaOffset" => [get_alpha_offset, set_alpha_offset], + "rgb" => [get_rgb, set_rgb], ); object.force_set_function( @@ -299,27 +295,6 @@ fn concat<'gc>( let alpha_offset = (other_ct.get_alpha_offset() * this_ct.get_alpha_multiplier()) + this_ct.get_alpha_offset(); - // This appears to do nothing if values are out of range - if 0.0 > red_multiplier - || red_multiplier > 1.0 - || 0.0 > green_multiplier - || green_multiplier > 1.0 - || 0.0 > blue_multiplier - || blue_multiplier > 1.0 - || 0.0 > alpha_multiplier - || alpha_multiplier > 1.0 - || -255.0 > red_offset - || red_offset > 255.0 - || -255.0 > green_offset - || green_offset > 255.0 - || -255.0 > blue_offset - || blue_offset > 255.0 - || -255.0 > alpha_offset - || alpha_offset > 255.0 - { - return Ok(Value::Undefined); - } - this_ct.set_red_multiplier(context.gc_context, red_multiplier); this_ct.set_green_multiplier(context.gc_context, green_multiplier); this_ct.set_blue_multiplier(context.gc_context, blue_multiplier); diff --git a/core/tests/regression_tests.rs b/core/tests/regression_tests.rs index eb748bfd6..c8443a6c2 100644 --- a/core/tests/regression_tests.rs +++ b/core/tests/regression_tests.rs @@ -215,6 +215,7 @@ swf_tests! { (define_local, "avm1/define_local", 1), (textfield_variable, "avm1/textfield_variable", 8), (error, "avm1/error", 1), + (color_transform, "avm1/color_transform", 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/color_transform/output.txt b/core/tests/swfs/avm1/color_transform/output.txt new file mode 100644 index 000000000..8cbac2fea --- /dev/null +++ b/core/tests/swfs/avm1/color_transform/output.txt @@ -0,0 +1,48 @@ +ct +16718080 +(redMultiplier=1, greenMultiplier=1, blueMultiplier=1, alphaMultiplier=1, redOffset=255, greenOffset=25, blueOffset=0, alphaOffset=0) +(redMultiplier=0, greenMultiplier=0, blueMultiplier=0, alphaMultiplier=1, redOffset=255, greenOffset=0, blueOffset=0, alphaOffset=0) +ct2 +(redMultiplier=0.5, greenMultiplier=0.5, blueMultiplier=0.5, alphaMultiplier=0.5, redOffset=0, greenOffset=255, blueOffset=0, alphaOffset=50) +combine +(redMultiplier=0.25, greenMultiplier=0.25, blueMultiplier=0.25, alphaMultiplier=0.25, redOffset=35, greenOffset=50, blueOffset=65, alphaOffset=80) +oob constructor mult +(redMultiplier=1000, greenMultiplier=1000, blueMultiplier=1000, alphaMultiplier=1000, redOffset=1000.1, greenOffset=1000.1, blueOffset=1000.1, alphaOffset=1000.1) +(redMultiplier=250, greenMultiplier=250, blueMultiplier=250, alphaMultiplier=250, redOffset=36000.1, greenOffset=51000.1, blueOffset=66000.1, alphaOffset=81000.1) +36000.1 +51000.1 +66000.1 +250 +250 +250 +RGB +16777215 +2031615 +1984255 +1984080 +1984080 +RGB set +32 +48 +64 +0 +0 +123 +Bad concat +(redMultiplier=1, greenMultiplier=1, blueMultiplier=1, alphaMultiplier=1, redOffset=255, greenOffset=255, blueOffset=255, alphaOffset=255) +toString +concat +rgb +blueOffset +greenOffset +redOffset +alphaOffset +blueMultiplier +greenMultiplier +redMultiplier +alphaMultiplier +Large values +(redMultiplier=8589934592, greenMultiplier=1, blueMultiplier=1, alphaMultiplier=1, redOffset=0, greenOffset=0, blueOffset=0, alphaOffset=0) +Strange values +(redMultiplier=NaN, greenMultiplier=1, blueMultiplier=1, alphaMultiplier=1, redOffset=0, greenOffset=1000, blueOffset=0, alphaOffset=0) +(redMultiplier=0, greenMultiplier=0, blueMultiplier=0, alphaMultiplier=1, redOffset=0, greenOffset=0, blueOffset=0, alphaOffset=0) diff --git a/core/tests/swfs/avm1/color_transform/test.fla b/core/tests/swfs/avm1/color_transform/test.fla new file mode 100644 index 0000000000000000000000000000000000000000..8901b3cf31dfb0c45409cbb35d72b8ff62440b17 GIT binary patch literal 4928 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 SkV}bFY61Zjs{0>x;?dU^r6$V& literal 0 HcmV?d00001