core: Add tests for ColorTransform and cleanup code

This commit is contained in:
CUB3D 2020-07-04 21:00:12 +01:00 committed by Mike Welsh
parent 0dcbd05f5d
commit ab58cff8b3
6 changed files with 52 additions and 29 deletions

View File

@ -67,7 +67,6 @@ impl<'gc> ColorTransformObject<'gc> {
gc_context: MutationContext<'gc, '_>,
proto: Option<Object<'gc>>,
) -> Self {
println!("Create new ct o");
ColorTransformObject(GcCell::allocate(
gc_context,
ColorTransformData {

View File

@ -140,8 +140,6 @@ pub fn set_rgb<'gc>(
this: Object<'gc>,
args: &[Value<'gc>],
) -> Result<Value<'gc>, 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<Value<'gc>, 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<Value<'gc>, 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);

View File

@ -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.

View File

@ -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)

Binary file not shown.

Binary file not shown.