[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/Makefil...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/Makefil... |
Date: |
Thu, 24 May 2007 12:08:04 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/05/24 12:08:04
Modified files:
. : ChangeLog
testsuite/misc-ming.all: Makefile.am replace_sprites1test.c
Added files:
testsuite/misc-ming.all: replace_buttons1test.c
replace_buttons1test_runner.cpp
Log message:
* testsuite/misc-ming.all/: Makefile.am,
replace_buttons1test.c, replace_buttons1test_runner.cpp:
New test for buttons replacement.
* testsuite/misc-ming.all/replace_sprites1test.c:
Add new test checking for _x.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3337&r2=1.3338
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-ming.all/Makefile.am?cvsroot=gnash&r1=1.129&r2=1.130
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-ming.all/replace_sprites1test.c?cvsroot=gnash&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-ming.all/replace_buttons1test.c?cvsroot=gnash&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-ming.all/replace_buttons1test_runner.cpp?cvsroot=gnash&rev=1.1
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3337
retrieving revision 1.3338
diff -u -b -r1.3337 -r1.3338
--- ChangeLog 24 May 2007 11:57:54 -0000 1.3337
+++ ChangeLog 24 May 2007 12:08:03 -0000 1.3338
@@ -1,5 +1,13 @@
2007-05-24 Sandro Santilli <address@hidden>
+ * testsuite/misc-ming.all/: Makefile.am,
+ replace_buttons1test.c, replace_buttons1test_runner.cpp:
+ New test for buttons replacement.
+ * testsuite/misc-ming.all/replace_sprites1test.c:
+ Add new test checking for _x.
+
+2007-05-24 Sandro Santilli <address@hidden>
+
* server/dlist.cpp (replace_character): always call ::construct
on the new character.
* backend/sound_handler_sdl.h: fix const-correctness
Index: testsuite/misc-ming.all/Makefile.am
===================================================================
RCS file: /sources/gnash/gnash/testsuite/misc-ming.all/Makefile.am,v
retrieving revision 1.129
retrieving revision 1.130
diff -u -b -r1.129 -r1.130
--- testsuite/misc-ming.all/Makefile.am 24 May 2007 07:31:45 -0000 1.129
+++ testsuite/misc-ming.all/Makefile.am 24 May 2007 12:08:03 -0000 1.130
@@ -163,6 +163,7 @@
check_PROGRAMS += \
replace_shapes1test \
replace_sprites1test \
+ replace_buttons1test \
$(NULL)
endif
@@ -237,6 +238,7 @@
check_PROGRAMS += \
replace_shapes1test_runner \
replace_sprites1test_runner \
+ replace_buttons1test_runner \
$(NULL)
endif
@@ -685,6 +687,27 @@
replace_sprites1test.swf \
$(NULL)
+replace_buttons1test_SOURCES = replace_buttons1test.c
+replace_buttons1test_LDADD = libgnashmingutils.la
+
+replace_buttons1test.swf: replace_buttons1test
+ ./replace_buttons1test $(top_srcdir)/testsuite/media
+
+replace_buttons1test_runner_SOURCES = \
+ replace_buttons1test_runner.cpp \
+ $(NULL)
+replace_buttons1test_runner_CXXFLAGS = \
+ -DTGTDIR='"$(abs_builddir)"' \
+ $(NULL)
+replace_buttons1test_runner_LDADD = \
+ $(top_builddir)/testsuite/libtestsuite.la \
+ $(NULL)
+replace_buttons1test_runner_DEPENDENCIES = \
+ $(top_builddir)/testsuite/libtestsuite.la \
+ replace_buttons1test.swf \
+ $(NULL)
+
+
masks_test_SOURCES = \
masks_test.c \
$(NULL)
@@ -1464,6 +1487,7 @@
TEST_CASES += \
replace_shapes1test_runner \
replace_sprites1test_runner \
+ replace_buttons1test_runner \
$(NULL)
endif
Index: testsuite/misc-ming.all/replace_sprites1test.c
===================================================================
RCS file: /sources/gnash/gnash/testsuite/misc-ming.all/replace_sprites1test.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- testsuite/misc-ming.all/replace_sprites1test.c 24 May 2007 06:45:29
-0000 1.5
+++ testsuite/misc-ming.all/replace_sprites1test.c 24 May 2007 12:08:04
-0000 1.6
@@ -42,9 +42,9 @@
*
* Expected behaviour:
*
- * A single "movieclip" instances have been constructed in total.
- * The instance contains a red shape at (100,300) initially, still a red shape
- * at (130,330) after the replace, a red shape at (100,300) again on
loop-back.
+ * In frame 2 we have a red square at (100,300), in frame 3 we have a red
square at (130,330),
+ * after the jump-back we have a red square at (100,300) again.
+ * The name specified in the PlaceObject2 tag in frame 2 always point to the
same instance
*/
#include "ming_utils.h"
@@ -180,6 +180,7 @@
xcheck_equals(mo, "typeof(static1)", "'movieclip'");
xcheck_equals(mo, "static1.name", "'static1'");
xcheck_equals(mo, "static1._target", "'/static1'");
+ xcheck_equals(mo, "static1._x", "130");
// While the new name results undefined...
xcheck_equals(mo, "typeof(static2)", "'undefined'");
Index: testsuite/misc-ming.all/replace_buttons1test.c
===================================================================
RCS file: testsuite/misc-ming.all/replace_buttons1test.c
diff -N testsuite/misc-ming.all/replace_buttons1test.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ testsuite/misc-ming.all/replace_buttons1test.c 24 May 2007 12:08:04
-0000 1.1
@@ -0,0 +1,242 @@
+/*
+ * Copyright (C) 2007 Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Sandro Santilli, address@hidden
+ *
+ * Test "Jump backward to start of lifetime after replacement with different
button"
+ *
+ * run as ./replace_buttons1test
+ *
+ * Timeline:
+ *
+ * Frame | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+ * --------+---+---+---+---+---+---+---+
+ * Event | |P* | X | J | | | |
+ *
+ * P = place (by PlaceObject2)
+ * X = replace (by PlaceObject2)
+ * J = jump
+ * * = jump target
+ *
+ * Description:
+ *
+ * frame2: button 1 placed at depth -16381 and position 100,300
+ * frame3: instance at depth -16381 replaced by button 2 at position 130,330
+ * frame4: jump back to frame 2 and stop
+ *
+ * Expected behaviour:
+ *
+ * In frame 2 we have a red square at (100,300), in frame 3 we have a red
square at (130,330),
+ * after the jump-back we have a red square at (100,300) again.
+ * The name specified in the PlaceObject2 tag in frame 2 always point to the
same instance
+ */
+
+#include "ming_utils.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <ming.h>
+
+#define OUTPUT_VERSION 6
+#define OUTPUT_FILENAME "replace_buttons1test.swf"
+
+SWFDisplayItem add_static_mc(SWFMovie mo, const char* name, int depth, int x,
int y, int width, int height);
+SWFMovieClip get_static_mc(int width, int height, int r, int g, int b);
+SWFShape get_shape(int width, int height, int r, int g, int b);
+SWFButton get_button(int width, int height, int r, int g, int b);
+
+SWFShape
+get_shape(int width, int height, int r, int g, int b)
+{
+ SWFShape sh;
+
+ /*sh = make_fill_square (-(width/2), -(height/2), width, height, r, g, b, r,
g, b);*/
+ sh = make_fill_square (0, 0, width, height, r, g, b, r, g, b);
+
+ return sh;
+}
+
+SWFButton
+get_button(int width, int height, int r, int g, int b)
+{
+ SWFButton bu = newSWFButton();
+ SWFShape sh;
+
+ sh = make_fill_square (0, 0, width, height, r, g, b, r, g, b);
+
+ SWFButton_addShape(bu, (SWFCharacter)sh, SWFBUTTON_UP );
+
+ return bu;
+}
+
+SWFMovieClip
+get_static_mc(int width, int height, int r, int g, int b)
+{
+ SWFShape sh = get_shape(width, height, r, g, b);
+ SWFMovieClip mc = newSWFMovieClip();
+
+ SWFMovieClip_add(mc, (SWFBlock)sh);
+
+ SWFMovieClip_nextFrame(mc);
+
+ return mc;
+
+}
+
+SWFDisplayItem
+add_static_mc(SWFMovie mo, const char* name, int depth, int x, int y, int
width, int height)
+{
+ SWFMovieClip mc;
+ SWFDisplayItem it;
+
+ mc = get_static_mc(width, height, 255, 0, 0);
+
+ it = SWFMovie_add(mo, (SWFBlock)mc);
+ SWFDisplayItem_setDepth(it, depth);
+ SWFDisplayItem_moveTo(it, x, y);
+ SWFDisplayItem_setName(it, name);
+
+ return it;
+}
+
+
+int
+main(int argc, char** argv)
+{
+ SWFMovie mo;
+ SWFMovieClip dejagnuclip;
+ SWFButton static1, static2;
+ SWFDisplayItem it1;
+
+
+ const char *srcdir=".";
+ if ( argc>1 )
+ srcdir=argv[1];
+ else
+ {
+ //fprintf(stderr, "Usage: %s <mediadir>\n", argv[0]);
+ //return 1;
+ }
+
+ Ming_init();
+ mo = newSWFMovieWithVersion(OUTPUT_VERSION);
+ SWFMovie_setDimension(mo, 800, 600);
+ SWFMovie_setRate (mo, 2);
+
+ static1 = get_button(60, 60, 255, 0, 0);
+ static2 = get_button(60, 60, 0, 255, 0);
+
+ dejagnuclip = get_dejagnu_clip((SWFBlock)get_default_font(srcdir), 10, 0, 0,
800, 600);
+ SWFMovie_add(mo, (SWFBlock)dejagnuclip);
+ SWFMovie_nextFrame(mo);
+
+ // Frame 2: place character at depth 3 (-16381)
+ it1 = SWFMovie_add(mo, (SWFBlock)static1);
+ SWFDisplayItem_setDepth(it1, 3);
+ SWFDisplayItem_moveTo(it1, 100, 300);
+ SWFDisplayItem_setName(it1, "static1");
+ SWFDisplayItem_addAction(it1, newSWFAction(
+ "_root.note(this+' onClipConstruct');"
+ " _root.check_equals(typeof(_root), 'movieclip');"
+ " if ( isNaN(_root.depth3Constructed) ) {"
+ " _root.depth3Constructed=1; "
+ " } else {"
+ " _root.depth3Constructed++;"
+ " }"
+ " _root.note('_root.depth3Constructed set to
'+_root.depth3Constructed);"
+ ), SWFACTION_CONSTRUCT);
+ add_actions(mo, "static1.name='static1';");
+
+ check_equals(mo, "typeof(static1)", "'object'");
+ check_equals(mo, "static1._target", "'/static1'");
+ check_equals(mo, "static1.name", "'static1'");
+
+ SWFMovie_nextFrame(mo);
+
+ // Frame 3: replace instance at depth -16381 with character 2
+ if ( SWFMovie_replace(mo, it1, (SWFBlock)static2) )
+ {
+ abort(); // grace and beauty...
+ }
+ SWFDisplayItem_moveTo(it1, 130, 330);
+ SWFDisplayItem_setName(it1, "static2");
+ SWFDisplayItem_addAction(it1, newSWFAction(
+ "_root.note(this+' onClipConstruct');"
+ " _root.check_equals(typeof(_root), 'movieclip');"
+ " if ( isNaN(_root.depth3Constructed) ) {"
+ " _root.depth3Constructed=1; "
+ " } else {"
+ " _root.depth3Constructed++;"
+ " }"
+ " _root.note('_root.depth3Constructed set to
'+_root.depth3Constructed);"
+ ), SWFACTION_CONSTRUCT);
+
+
+ // Can still reference the old character and it's variables, after replace
+ xcheck_equals(mo, "typeof(static2)", "'undefined'");
+ xcheck_equals(mo, "typeof(static1)", "'object'");
+ xcheck_equals(mo, "static1._target", "'/static1'");
+ xcheck_equals(mo, "static1.name", "'static1'");
+ xcheck_equals(mo, "static1._x", "130");
+
+ // While the new name results undefined...
+ xcheck_equals(mo, "typeof(static2)", "'undefined'"); // the name wasn't
changed
+
+ // Everything suggests that a new instance is NOT created on replace !!!
+ // Gnash here fails because it creates a NEW instance
+
+ // We can't check the color or the _x in a self-contained testcase
unfortunately,
+ // we'll need a MovieTester-based runner for this.
+ // It is expected the color of the current instane is GREEN, and the
boundaries
+ // are from 130 to 190 for X and 330 to 390 for Y.
+ // TODO: implement a MovieTester based runner !!
+
+ SWFMovie_nextFrame(mo);
+
+ // Frame 4: jump to frame 2, stop and check
+
+ add_actions(mo,
+
+ "gotoAndStop(2); "
+
+ // Shapes don't get their onConstruct event invoked !
+ "check_equals(typeof(_root.depth3Constructed), 'undefined');"
+
+ // Original character name is still referenceable
+ "check_equals(typeof(static1), 'object');"
+
+ // It's a new instance !
+ "check_equals(typeof(static1.name), 'undefined');"
+
+ // We can't check the color or the _x in a self-contained testcase
unfortunately,
+ // we'll need a MovieTester-based runner for this.
+ // It is expected the color of the current instance is RED, and the
boundaries
+ // are from 100 to 120 for both X and Y.
+ // TODO: implement a MovieTester based runner !!
+
+ "totals();"
+ );
+ SWFMovie_nextFrame(mo);
+
+ //Output movie
+ puts("Saving " OUTPUT_FILENAME );
+ SWFMovie_save(mo, OUTPUT_FILENAME);
+
+ return 0;
+}
Index: testsuite/misc-ming.all/replace_buttons1test_runner.cpp
===================================================================
RCS file: testsuite/misc-ming.all/replace_buttons1test_runner.cpp
diff -N testsuite/misc-ming.all/replace_buttons1test_runner.cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ testsuite/misc-ming.all/replace_buttons1test_runner.cpp 24 May 2007
12:08:04 -0000 1.1
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2007 Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ *
+ */
+
+#define INPUT_FILENAME "replace_buttons1test.swf"
+
+#include "MovieTester.h"
+#include "sprite_instance.h"
+#include "character.h"
+#include "dlist.h"
+#include "container.h"
+#include "log.h"
+
+#include "check.h"
+#include <string>
+#include <cassert>
+
+using namespace gnash;
+using namespace std;
+using namespace gnash::geometry;
+
+int
+main(int /*argc*/, char** /*argv*/)
+{
+ typedef gnash::geometry::SnappingRanges2d<int> Ranges;
+ typedef gnash::geometry::Range2d<int> Bounds;
+
+ string filename = string(TGTDIR) + string("/") + string(INPUT_FILENAME);
+ MovieTester tester(filename);
+
+ gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
+ dbglogfile.setVerbosity(1);
+
+ // Colors we'll use during the test
+ rgba red(255,0,0,255);
+ rgba white(255,255,255,255);
+
+ // Ranges we'll use during the test
+ Range2d<int> redRange1(100,300,160,360);
+ Range2d<int> redRange2(130,330,190,390);
+
+ Ranges invalidated;
+ sprite_instance* root = tester.getRootMovie();
+ assert(root);
+
+ // FRAME 1 (start)
+
+ check_equals(root->get_frame_count(), 4);
+ check_equals(root->get_play_state(), sprite_instance::PLAY);
+ check_equals(root->get_current_frame(), 0);
+ check_equals(root->getDisplayList().size(), 1); // dejagnu clip
+ invalidated = tester.getInvalidatedRanges();
+ check( invalidated.contains(76, 4) ); // the "-xtrace enabled-" label...
+
+ tester.advance(); // FRAME 2, place character
+ invalidated = tester.getInvalidatedRanges();
+
+ check_equals(root->get_play_state(), sprite_instance::PLAY);
+ check_equals(root->get_current_frame(), 1);
+ check_equals(root->getDisplayList().size(), 2); // dejagnu + red square
+
+ // check invalidated bounds contain the red square at (100,300 -
160,360)
+ check( invalidated.contains(redRange1) );
+
+ // check that we have a red square at (100,300 - 160,360)
+ check_pixel(104, 304, 2, red, 2); // UL
+ check_pixel(156, 304, 2, red, 2); // UR
+ check_pixel(156, 356, 2, red, 2); // LL
+ check_pixel(104, 356, 2, red, 2); // LR
+
+ // and nothing around it...
+ check_pixel( 96, 330, 2, white, 2); // Left
+ check_pixel(164, 330, 2, white, 2); // Right
+ check_pixel(130, 296, 2, white, 2); // Top
+ check_pixel(130, 364, 2, white, 2); // Bottom
+
+ tester.advance(); // FRAME 3, replace character
+ invalidated = tester.getInvalidatedRanges();
+
+ check_equals(root->get_play_state(), sprite_instance::PLAY);
+ check_equals(root->get_current_frame(), 2);
+ check_equals(root->getDisplayList().size(), 2); // dejagnu + red square
+
+ // check invalidated bounds to contain:
+ // - the red square (moved)
+ // - the red square (original)
+ //
+ check( invalidated.contains(redRange1) );
+ check( invalidated.contains(redRange2) );
+
+ // check that we have a red square at (130,330 - 190,390)
+ // Gnash fails here becase it does a *real* replace, while it
+ // seems we're not supposed to replace, just to move (who knows why?!)
+ xcheck_pixel(134, 334, 2, red, 2); // UL
+ xcheck_pixel(186, 334, 2, red, 2); // UR
+ xcheck_pixel(186, 386, 2, red, 2); // LL
+ xcheck_pixel(134, 386, 2, red, 2); // LR
+
+ // and nothing around it...
+ check_pixel(126, 360, 2, white, 2); // Left
+ check_pixel(194, 360, 2, white, 2); // Right
+ check_pixel(160, 326, 2, white, 2); // Top
+ check_pixel(160, 394, 2, white, 2); // Bottom
+
+ tester.advance(); // FRAME 4, jump to frame 2 and stop
+ invalidated = tester.getInvalidatedRanges();
+
+ check_equals(root->get_play_state(), sprite_instance::STOP);
+ check_equals(root->get_current_frame(), 1);
+ check_equals(root->getDisplayList().size(), 2); // dejagnu + red square
+
+ // check invalidated bounds to contain:
+ // - the red square (moved)
+ // - the red square (original)
+ //
+ check( invalidated.contains(redRange1) );
+ check( invalidated.contains(redRange2) );
+
+ // check that we have a red square at (100,300 - 160,360)
+ check_pixel(104, 304, 2, red, 2); // UL
+ check_pixel(156, 304, 2, red, 2); // UR
+ check_pixel(156, 356, 2, red, 2); // LL
+ check_pixel(104, 356, 2, red, 2); // LR
+
+ // and nothing around it...
+ check_pixel( 96, 330, 2, white, 2); // Left
+ check_pixel(164, 330, 2, white, 2); // Right
+ check_pixel(130, 296, 2, white, 2); // Top
+ check_pixel(130, 364, 2, white, 2); // Bottom
+
+}
+
- [Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/Makefil..., (continued)
- [Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/Makefil..., Sandro Santilli, 2007/05/14
- [Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/Makefil..., Sandro Santilli, 2007/05/14
- [Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/Makefil..., Sandro Santilli, 2007/05/16
- [Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/Makefil..., Sandro Santilli, 2007/05/18
- [Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/Makefil..., Sandro Santilli, 2007/05/18
- [Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/Makefil..., Sandro Santilli, 2007/05/18
- [Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/Makefil..., Sandro Santilli, 2007/05/21
- [Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/Makefil..., Sandro Santilli, 2007/05/23
- [Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/Makefil..., Sandro Santilli, 2007/05/23
- [Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/Makefil..., Sandro Santilli, 2007/05/23
- [Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/Makefil...,
Sandro Santilli <=
- [Gnash-commit] gnash ChangeLog testsuite/misc-ming.all/Makefil..., Zou Lunkai, 2007/05/29