[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/masks_t...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/masks_t... |
Date: |
Sat, 19 Jan 2008 16:03:56 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 08/01/19 16:03:56
Modified files:
. : ChangeLog
testsuite/misc-ming.all: masks_test.c masks_testrunner.cpp
Log message:
test hitTest effects on dynamic masks and maskees. See bug #21923.
NOTE: unexpectedly, the test runner returns now failure which should NOT
be introduced by the SWF. I suspect the reason for that is some
uninitialized memory use by the AGG backend.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5433&r2=1.5434
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-ming.all/masks_test.c?cvsroot=gnash&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-ming.all/masks_testrunner.cpp?cvsroot=gnash&r1=1.10&r2=1.11
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5433
retrieving revision 1.5434
diff -u -b -r1.5433 -r1.5434
--- ChangeLog 18 Jan 2008 18:18:12 -0000 1.5433
+++ ChangeLog 19 Jan 2008 16:03:55 -0000 1.5434
@@ -1,3 +1,8 @@
+2008-01-19 Sandro Santilli <address@hidden>
+
+ * testsuite/misc-ming.all/masks_test.c: test hitTest effects
+ on dynamic masks and maskees. See bug #21923.
+
2008-01-18 Sandro Santilli <address@hidden>
* cygnal/testsuite/cygnal.all/Makefile.am: don't build http.o
Index: testsuite/misc-ming.all/masks_test.c
===================================================================
RCS file: /sources/gnash/gnash/testsuite/misc-ming.all/masks_test.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- testsuite/misc-ming.all/masks_test.c 29 Oct 2007 21:23:16 -0000
1.4
+++ testsuite/misc-ming.all/masks_test.c 19 Jan 2008 16:03:56 -0000
1.5
@@ -122,7 +122,7 @@
Ming_init();
mo = newSWFMovieWithVersion(OUTPUT_VERSION);
SWFMovie_setDimension(mo, 800, 600);
- SWFMovie_setRate (mo, 0.3);
+ SWFMovie_setRate (mo, 1);
dejagnuclip = get_dejagnu_clip((SWFBlock)get_default_font(srcdir), 10,
0, 0, 800, 600);
it = SWFMovie_add(mo, (SWFBlock)dejagnuclip);
@@ -134,36 +134,149 @@
// this one seems to confuse the MM player
//add_static_mask(mo, "mask1", 1, 0, 150, 200, 100, 20);
+ // Red rect (staticmc2) is at 0,200-60,260
add_static_mc(mo, "staticmc2", 2, 0, 200, 60, 60, 255, 0, 0); // red
+
+ // Yellow rect (staticmc3) is at 30,200-90,260
add_static_mc(mo, "staticmc3", 3, 30, 200, 60, 60, 255, 255, 0); //
yellow
+
+ // Green rect (staticmc4) is at 200,200-260,260
add_static_mc(mo, "staticmc4", 4, 200, 200, 60, 60, 0, 255, 0); // green
+
+ // Cyan rect (staticmc5) is at 230,200-290,260
add_static_mc(mo, "staticmc5", 5, 230, 200, 60, 60, 0, 255, 255); //
cyan
+
+ // Blue rect (dynamicmc2) is at 0,300-60,360
add_dynamic_mc(mo, "dynamicmc2", 12, 0, 300, 60, 60, 0, 0, 255); // blue
+
+ // Violet rect (dynamicmc3) is at 30,300-90,360
add_dynamic_mc(mo, "dynamicmc3", 13, 30, 300, 60, 60, 255, 0, 255); //
violet
+
+ // Dark green rect (dynamicmc4) is at 200,300-260,360
add_dynamic_mc(mo, "dynamicmc4", 14, 200, 300, 60, 60, 0, 128, 0); //
dark green
+
+ // Light blue rect (dynamicmc5) is at 230,300-290,360
add_dynamic_mc(mo, "dynamicmc5", 15, 230, 300, 60, 60, 0, 128, 255); //
light blue
+ // Red rect
check_equals(mo, "staticmc2.getDepth()", "-16382");
+ check(mo, "staticmc2.hitTest(10, 210, true)");
+ check(mo, "staticmc2.hitTest(50, 250, true)");
+
+ // Yellow rect
check_equals(mo, "staticmc3.getDepth()", "-16381");
+ check(mo, "staticmc3.hitTest(40, 210, true)");
+ check(mo, "staticmc3.hitTest(80, 250, true)");
+
+ // Green rect
check_equals(mo, "staticmc4.getDepth()", "-16380");
+ check(mo, "staticmc4.hitTest(210, 210, true)");
+ check(mo, "staticmc4.hitTest(250, 250, true)");
+
+ // Cyan rect
check_equals(mo, "staticmc5.getDepth()", "-16379");
+ check(mo, "staticmc5.hitTest(240, 210, true)");
+ check(mo, "staticmc5.hitTest(280, 250, true)");
+
+ // Blue rect
check_equals(mo, "dynamicmc2.getDepth()", "12");
+ check(mo, "dynamicmc2.hitTest(10, 310, true)");
+ check(mo, "dynamicmc2.hitTest(50, 350, true)");
+
+ // Violet rect
check_equals(mo, "dynamicmc3.getDepth()", "13");
+ check(mo, "dynamicmc3.hitTest(40, 310, true)");
+ check(mo, "dynamicmc3.hitTest(80, 350, true)");
+
+ // Dark green rect
check_equals(mo, "dynamicmc4.getDepth()", "14");
+ check(mo, "dynamicmc4.hitTest(210, 310, true)");
+ check(mo, "dynamicmc4.hitTest(250, 350, true)");
+
+ // Light blue rect
check_equals(mo, "dynamicmc5.getDepth()", "15");
+ check(mo, "dynamicmc5.hitTest(240, 310, true)");
+ check(mo, "dynamicmc5.hitTest(280, 350, true)");
SWFMovie_nextFrame(mo); // FRAME 3 starts here
- add_actions(mo, "note('Using setMask on chars in the static depth range
2.mask(3) and 5.mask(5)');");
+ add_actions(mo, "note('Using setMask on chars in the static depth range
2.mask(3) and 5.mask(4)');");
add_actions(mo,
- "staticmc2.setMask(staticmc3);" // red masked by yellow
- "staticmc5.setMask(staticmc4);" // cyan masked by green
- "dynamicmc2.setMask(dynamicmc3);" // blue masked by violet
- "dynamicmc5.setMask(dynamicmc4);" // light blue masked by dark
green
+ "sm23 = staticmc2.setMask(staticmc3);" // red masked by yellow
+ "sm54 = staticmc5.setMask(staticmc4);" // cyan masked by green
+ "dm23 = dynamicmc2.setMask(dynamicmc3);" // blue masked by
violet
+ "dm54 = dynamicmc5.setMask(dynamicmc4);" // light blue masked
by dark green
);
+ xcheck_equals(mo, "typeof(sm23)", "'boolean'");
+ xcheck_equals(mo, "sm23", "true");
+ xcheck_equals(mo, "typeof(sm54)", "'boolean'");
+ xcheck_equals(mo, "sm54", "true");
+ xcheck_equals(mo, "typeof(dm23)", "'boolean'");
+ xcheck_equals(mo, "dm23", "true");
+ xcheck_equals(mo, "typeof(dm54)", "'boolean'");
+ xcheck_equals(mo, "dm54", "true");
+
+ // Red rect is now masked by yellow
+ // Red rect (staticmc2) is at 0,200-60,260
+ // Yellow rect (staticmc3) is at 30,200-90,260
+ xcheck(mo, "!staticmc2.hitTest(10, 210, true)");
+ check(mo, "staticmc2.hitTest(10, 210, false)"); // bounding box hitTest
not affected by masks
+ check(mo, "staticmc2.hitTest(50, 250, true)");
+
+ // Yellow rect is now a mask
+ // hitTest() using 'shape' semantic won't see it,
+ // while hitTest() using 'bounding box' semantic will
+ check(mo, "staticmc3.hitTest(40, 210, false)");
+ check(mo, "staticmc3.hitTest(80, 250, false)");
+ xcheck(mo, "!staticmc3.hitTest(40, 210, true)");
+ xcheck(mo, "!staticmc3.hitTest(80, 250, true)");
+
+ // Green rect is now a mask
+ // hitTest() using 'shape' semantic won't see it,
+ // while hitTest() using 'bounding box' semantic will
+ xcheck(mo, "!staticmc4.hitTest(210, 210, true)");
+ xcheck(mo, "!staticmc4.hitTest(250, 250, true)");
+ check(mo, "staticmc4.hitTest(210, 210, false)");
+ check(mo, "staticmc4.hitTest(250, 250, false)");
+
+ // Cyan rect is now masked by green
+ // Green rect (staticmc4) is at 200,200-260,260
+ // Cyan rect (staticmc5) is at 230,200-290,260
+ check(mo, "staticmc5.hitTest(240, 210, true)");
+ xcheck(mo, "!staticmc5.hitTest(280, 250, true)");
+ check(mo, "staticmc5.hitTest(280, 250, false)");
+
+ // Blue rect now is masked by Violet rect
+ // Violet rect (dynamicmc3) is at 30,300-90,360
+ // Blue rect (dynamicmc2) is at 0,300-60,360
+ xcheck(mo, "!dynamicmc2.hitTest(10, 310, true)");
+ check(mo, "dynamicmc2.hitTest(10, 310, false)");
+ check(mo, "dynamicmc2.hitTest(50, 350, true)");
+
+ // Violet rect is now a mask
+ // hitTest() using 'shape' semantic won't see it,
+ // while hitTest() using 'bounding box' semantic will
+ xcheck(mo, "!dynamicmc3.hitTest(40, 310, true)");
+ xcheck(mo, "!dynamicmc3.hitTest(80, 350, true)");
+ check(mo, "dynamicmc3.hitTest(40, 310, false)");
+ check(mo, "dynamicmc3.hitTest(80, 350, false)");
+
+ // Dark green rect is now a mask
+ xcheck(mo, "!dynamicmc4.hitTest(210, 310, true)");
+ xcheck(mo, "!dynamicmc4.hitTest(250, 350, true)");
+ check(mo, "dynamicmc4.hitTest(210, 310, false)");
+ check(mo, "dynamicmc4.hitTest(250, 350, false)");
+
+ // Light blue now masked by Dark green
+ // Light blue rect (dynamicmc5) is at 230,300-290,360
+ // Dark green rect (dynamicmc4) is at 200,300-260,360
+ check(mo, "dynamicmc5.hitTest(240, 310, true)");
+ xcheck(mo, "!dynamicmc5.hitTest(280, 350, true)");
+ check(mo, "dynamicmc5.hitTest(280, 350, false)");
+
SWFMovie_nextFrame(mo); // FRAME 4 starts here
add_actions(mo, "note('Swapping chars 2/3 and 4/5 to see if masks are
still in effect');");
@@ -184,7 +297,135 @@
check_equals(mo, "dynamicmc4.getDepth()", "15");
check_equals(mo, "dynamicmc5.getDepth()", "14");
- add_actions(mo, "_root.totals(); stop();");
+ // Depth swapping didn't change hitTest effects
+
+ // Red rect is now masked by yellow
+ // Red rect (staticmc2) is at 0,200-60,260
+ // Yellow rect (staticmc3) is at 30,200-90,260
+ xcheck(mo, "!staticmc2.hitTest(10, 210, true)");
+ check(mo, "staticmc2.hitTest(10, 210, false)"); // bounding box hitTest
not affected by masks
+ check(mo, "staticmc2.hitTest(50, 250, true)");
+
+ // Yellow rect is now a mask
+ // hitTest() using 'shape' semantic won't see it,
+ // while hitTest() using 'bounding box' semantic will
+ check(mo, "staticmc3.hitTest(40, 210, false)");
+ check(mo, "staticmc3.hitTest(80, 250, false)");
+ xcheck(mo, "!staticmc3.hitTest(40, 210, true)");
+ xcheck(mo, "!staticmc3.hitTest(80, 250, true)");
+
+ // Green rect is now a mask
+ // hitTest() using 'shape' semantic won't see it,
+ // while hitTest() using 'bounding box' semantic will
+ check(mo, "staticmc4.hitTest(210, 210, false)");
+ check(mo, "staticmc4.hitTest(250, 250, false)");
+ xcheck(mo, "!staticmc4.hitTest(210, 210, true)");
+ xcheck(mo, "!staticmc4.hitTest(250, 250, true)");
+
+ // Cyan rect is now masked by green
+ // Green rect (staticmc4) is at 200,200-260,260
+ // Cyan rect (staticmc5) is at 230,200-290,260
+ check(mo, "staticmc5.hitTest(240, 210, true)");
+ xcheck(mo, "!staticmc5.hitTest(280, 250, true)");
+ check(mo, "staticmc5.hitTest(280, 250, false)");
+
+ // Blue rect now is masked by Violet rect
+ // Violet rect (dynamicmc3) is at 30,300-90,360
+ // Blue rect (dynamicmc2) is at 0,300-60,360
+ xcheck(mo, "!dynamicmc2.hitTest(10, 310, true)");
+ check(mo, "dynamicmc2.hitTest(10, 310, false)");
+ check(mo, "dynamicmc2.hitTest(50, 350, true)");
+
+ // Violet rect is now a mask
+ // hitTest() using 'shape' semantic won't see it,
+ // while hitTest() using 'bounding box' semantic will
+ xcheck(mo, "!dynamicmc3.hitTest(40, 310, true)");
+ xcheck(mo, "!dynamicmc3.hitTest(80, 350, true)");
+ check(mo, "dynamicmc3.hitTest(40, 310, false)");
+ check(mo, "dynamicmc3.hitTest(80, 350, false)");
+
+ // Dark green rect is now a mask
+ xcheck(mo, "!dynamicmc4.hitTest(210, 310, true)");
+ xcheck(mo, "!dynamicmc4.hitTest(250, 350, true)");
+ check(mo, "dynamicmc4.hitTest(210, 310, false)");
+ check(mo, "dynamicmc4.hitTest(250, 350, false)");
+
+ // Light blue now masked by Dark green
+ // Light blue rect (dynamicmc5) is at 230,300-290,360
+ // Dark green rect (dynamicmc4) is at 200,300-260,360
+ check(mo, "dynamicmc5.hitTest(240, 310, true)");
+ xcheck(mo, "!dynamicmc5.hitTest(280, 350, true)");
+ check(mo, "dynamicmc5.hitTest(280, 350, false)");
+
+ SWFMovie_nextFrame(mo); // FRAME 5 starts here
+
+ add_actions(mo, "note('Making 3.mask(2) and 4.mask(5)');");
+
+ add_actions(mo,
+ "sm32 = staticmc3.setMask(staticmc2);" // yellow masked by red
+ "sm45 = staticmc4.setMask(staticmc5);" // green masked by cyan
+ "dm32 = dynamicmc3.setMask(dynamicmc2);" // violet masked by
blue
+ "dm45 = dynamicmc4.setMask(dynamicmc5);" // dark green masked
light blue
+ );
+
+ xcheck_equals(mo, "typeof(sm32)", "'boolean'");
+ xcheck_equals(mo, "sm32", "true");
+ xcheck_equals(mo, "typeof(sm45)", "'boolean'");
+ xcheck_equals(mo, "sm45", "true");
+ xcheck_equals(mo, "typeof(dm32)", "'boolean'");
+ xcheck_equals(mo, "dm32", "true");
+ xcheck_equals(mo, "typeof(dm45)", "'boolean'");
+ xcheck_equals(mo, "dm45", "true");
+
+ // Red rect is now a mask
+ xcheck(mo, "!staticmc2.hitTest(10, 210, true)");
+ xcheck(mo, "!staticmc2.hitTest(50, 250, true)");
+ check(mo, "staticmc2.hitTest(10, 210, false)");
+ check(mo, "staticmc2.hitTest(50, 250, false)");
+
+ // Yellow rect is now masked by Red rect
+ // TODO: why no hitTest ??
+ xcheck(mo, "!staticmc3.hitTest(40, 210, true)");
+ xcheck(mo, "!staticmc3.hitTest(80, 250, true)");
+ check(mo, "staticmc3.hitTest(80, 250, false)");
+ check(mo, "staticmc3.hitTest(40, 210, false)");
+
+ // Green rect is now masked by Cyan
+ // TODO: why no hitTest ??
+ xcheck(mo, "!staticmc4.hitTest(210, 210, true)");
+ xcheck(mo, "!staticmc4.hitTest(250, 250, true)");
+ check(mo, "staticmc4.hitTest(210, 210, false)");
+ check(mo, "staticmc4.hitTest(250, 250, false)");
+
+ // Cyan rect is now a mask
+ xcheck(mo, "!staticmc5.hitTest(240, 210, true)");
+ xcheck(mo, "!staticmc5.hitTest(280, 250, true)");
+ check(mo, "staticmc5.hitTest(240, 210, false)");
+ check(mo, "staticmc5.hitTest(280, 250, false)");
+
+ // Blue rect is now a mask
+ xcheck(mo, "!dynamicmc2.hitTest(10, 310, true)");
+ xcheck(mo, "!dynamicmc2.hitTest(50, 350, true)");
+ check(mo, "dynamicmc2.hitTest(10, 310, false)");
+ check(mo, "dynamicmc2.hitTest(50, 350, false)");
+
+ // Violet rect is now masked by Blue rect
+ check(mo, "dynamicmc3.hitTest(40, 310, true)");
+ xcheck(mo, "!dynamicmc3.hitTest(80, 350, true)");
+ check(mo, "dynamicmc3.hitTest(80, 350, false)");
+
+ // Dark green rect is masked by Light blue
+ xcheck(mo, "!dynamicmc4.hitTest(210, 310, true)");
+ check(mo, "dynamicmc4.hitTest(210, 310, false)");
+ check(mo, "dynamicmc4.hitTest(250, 350, true)");
+
+ // Light blue is now a mask
+ check(mo, "dynamicmc5.hitTest(240, 310, false)");
+ check(mo, "dynamicmc5.hitTest(280, 350, false)");
+ xcheck(mo, "!dynamicmc5.hitTest(240, 310, true)");
+ xcheck(mo, "!dynamicmc5.hitTest(280, 350, true)");
+
+ add_actions(mo, "_root.totals(134); stop();");
SWFMovie_nextFrame(mo);
Index: testsuite/misc-ming.all/masks_testrunner.cpp
===================================================================
RCS file: /sources/gnash/gnash/testsuite/misc-ming.all/masks_testrunner.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- testsuite/misc-ming.all/masks_testrunner.cpp 1 Dec 2007 00:15:02
-0000 1.10
+++ testsuite/misc-ming.all/masks_testrunner.cpp 19 Jan 2008 16:03:56
-0000 1.11
@@ -51,7 +51,7 @@
// FRAME 1 (start)
- check_equals(root->get_frame_count(), 4);
+ check_equals(root->get_frame_count(), 6);
check_equals(root->get_play_state(), sprite_instance::PLAY);
check_equals(root->get_current_frame(), 0);
check_equals(root->getDisplayList().size(), 1); // dejagnu clip
@@ -215,5 +215,10 @@
check( invalidated.contains(276, 331) );
check_pixel(276,331, 2, white, 2);
+ // FRAME 4
+ tester.advance();
+
+ // TODO: test setMask effects after swapping mask/maskee
+
}
- [Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/masks_t...,
Sandro Santilli <=