Skip to content

Commit

Permalink
auto-test: for sprite update tests, added obj with view just in case
Browse files Browse the repository at this point in the history
  • Loading branch information
ivan-mogilko committed Apr 4, 2024
1 parent 82233c5 commit 8e47bb0
Show file tree
Hide file tree
Showing 4 changed files with 230 additions and 8 deletions.
44 changes: 41 additions & 3 deletions ags3/auto-test/Game.agf
Original file line number Diff line number Diff line change
Expand Up @@ -1772,12 +1772,50 @@
</Loop>
</Loops>
</View>
<View>
<ID>2</ID>
<Name>VDYNAMIC</Name>
<Loops>
<Loop>
<ID>0</ID>
<RunNextLoop>False</RunNextLoop>
<Frames>
<ViewFrame>
<Delay>0</Delay>
<Flipped>False</Flipped>
<ID>0</ID>
<Image>0</Image>
<Sound>0</Sound>
</ViewFrame>
<ViewFrame>
<Delay>0</Delay>
<Flipped>False</Flipped>
<ID>1</ID>
<Image>0</Image>
<Sound>0</Sound>
</ViewFrame>
<ViewFrame>
<Delay>0</Delay>
<Flipped>False</Flipped>
<ID>2</ID>
<Image>0</Image>
<Sound>0</Sound>
</ViewFrame>
<ViewFrame>
<Delay>0</Delay>
<Flipped>False</Flipped>
<ID>3</ID>
<Image>0</Image>
<Sound>0</Sound>
</ViewFrame>
</Frames>
</Loop>
</Loops>
</View>
</Views>
</ViewFolder>
</Views>
<DeletedViews>
<ViewID>2</ViewID>
</DeletedViews>
<DeletedViews />
<Scripts>
<ScriptFolder Name="Main">
<SubFolders>
Expand Down
75 changes: 74 additions & 1 deletion ags3/auto-test/test-enginerender.asc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Test EngineRender Module Script
int GetTestEngineRenderCount()
{
return 16;
return 20;
}

void _FillSprite(DynamicSprite *spr, int color)
Expand Down Expand Up @@ -287,5 +287,78 @@ void TestEngineRender()
dynspr.Delete();
}

//
// Object View Frame update after dynamic sprite change
//
{
int color1 = 10;
int color2 = 11;
Object* oDynamicObject = object[0];
DynamicSprite* dynspr = DynamicSprite.Create(10, 10, false);
_FillSprite(dynspr, color1);
ViewFrame *vf = Game.GetViewFrame(VDYNAMIC, 0, 0);
vf.Graphic = dynspr.Graphic;
oDynamicObject.SetView(VDYNAMIC);
oDynamicObject.X = 200;
oDynamicObject.Y = 100;
oDynamicObject.Visible = true;
Wait(1);
tap.ok(
_TakeScreenshotAndCompareRect(oDynamicObject.X, oDynamicObject.Y - dynspr.Height, dynspr.Width, dynspr.Height, dynspr),
"DynamicSprite update 5-1 (room object view frame) is matched");

oDynamicObject.Visible = false; // stop its render pass for a moment
_FillSprite(dynspr, color2); // change the sprite
Wait(1); // one pass with object disabled
oDynamicObject.Visible = true; // start render pass again
Wait(1); // let it render
tap.ok(
_TakeScreenshotAndCompareRect(oDynamicObject.X, oDynamicObject.Y - dynspr.Height, dynspr.Width, dynspr.Height, dynspr),
"DynamicSprite update 5-2 (room object view frame) is matched");

oDynamicObject.Visible = false;
oDynamicObject.Graphic = 0;
dynspr.Delete();
}

//
// Object View Frame update after dynamic sprite recreated
// with coincidentally the same sprite ID
//
{
int color1 = 10;
int color2 = 11;
DynamicSprite* dynspr = DynamicSprite.Create(10, 10, false);
Object* oDynamicObject = object[1];
_FillSprite(dynspr, color1);
ViewFrame *vf = Game.GetViewFrame(VDYNAMIC, 0, 0);
vf.Graphic = dynspr.Graphic;
oDynamicObject.SetView(VDYNAMIC);
oDynamicObject.X = 200;
oDynamicObject.Y = 100;
oDynamicObject.Visible = true;
Wait(1);
tap.ok(
_TakeScreenshotAndCompareRect(oDynamicObject.X, oDynamicObject.Y - dynspr.Height, dynspr.Width, dynspr.Height, dynspr),
"DynamicSprite recreate 5-1 (room object view frame) is matched");

oDynamicObject.Visible = false; // stop its render pass for a moment
dynspr.Delete(); // recreate the sprite
dynspr = DynamicSprite.Create(10, 10, false);
_FillSprite(dynspr, color2);
Wait(1); // one pass with object disabled
vf = Game.GetViewFrame(VDYNAMIC, 0, 0);
vf.Graphic = dynspr.Graphic;
oDynamicObject.Visible = true; // start render pass again
Wait(1); // let it render
tap.ok(
_TakeScreenshotAndCompareRect(oDynamicObject.X, oDynamicObject.Y - dynspr.Height, dynspr.Width, dynspr.Height, dynspr),
"DynamicSprite recreate 5-2 (room object view frame) is matched");

oDynamicObject.Visible = false;
oDynamicObject.Graphic = 0;
dynspr.Delete();
}

tap.Comment("end EngineRender tests");
}
44 changes: 41 additions & 3 deletions ags4/auto-test/Game.agf
Original file line number Diff line number Diff line change
Expand Up @@ -1276,12 +1276,50 @@
</Loop>
</Loops>
</View>
<View>
<ID>2</ID>
<Name>VDYNAMIC</Name>
<Loops>
<Loop>
<ID>0</ID>
<RunNextLoop>False</RunNextLoop>
<Frames>
<ViewFrame>
<Delay>0</Delay>
<Flipped>False</Flipped>
<ID>0</ID>
<Image>0</Image>
<Sound>0</Sound>
</ViewFrame>
<ViewFrame>
<Delay>0</Delay>
<Flipped>False</Flipped>
<ID>1</ID>
<Image>0</Image>
<Sound>0</Sound>
</ViewFrame>
<ViewFrame>
<Delay>0</Delay>
<Flipped>False</Flipped>
<ID>2</ID>
<Image>0</Image>
<Sound>0</Sound>
</ViewFrame>
<ViewFrame>
<Delay>0</Delay>
<Flipped>False</Flipped>
<ID>3</ID>
<Image>0</Image>
<Sound>0</Sound>
</ViewFrame>
</Frames>
</Loop>
</Loops>
</View>
</Views>
</ViewFolder>
</Views>
<DeletedViews>
<ViewID>2</ViewID>
</DeletedViews>
<DeletedViews />
<Scripts>
<ScriptFolder Name="Main">
<SubFolders>
Expand Down
75 changes: 74 additions & 1 deletion ags4/auto-test/test-enginerender.asc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Test EngineRender Module Script
int GetTestEngineRenderCount()
{
return 16;
return 20;
}

void _FillSprite(DynamicSprite *spr, int color)
Expand Down Expand Up @@ -287,5 +287,78 @@ void TestEngineRender()
dynspr.Delete();
}

//
// Object View Frame update after dynamic sprite change
//
{
int color1 = 10;
int color2 = 11;
Object* oDynamicObject = object[0];
DynamicSprite* dynspr = DynamicSprite.Create(10, 10);
_FillSprite(dynspr, color1);
ViewFrame *vf = Game.GetViewFrame(VDYNAMIC, 0, 0);
vf.Graphic = dynspr.Graphic;
oDynamicObject.SetView(VDYNAMIC);
oDynamicObject.X = 200;
oDynamicObject.Y = 100;
oDynamicObject.Visible = true;
Wait(1);
tap.ok(
_TakeScreenshotAndCompareRect(oDynamicObject.X, oDynamicObject.Y - dynspr.Height, dynspr.Width, dynspr.Height, dynspr),
"DynamicSprite update 5-1 (room object view frame) is matched");

oDynamicObject.Visible = false; // stop its render pass for a moment
_FillSprite(dynspr, color2); // change the sprite
Wait(1); // one pass with object disabled
oDynamicObject.Visible = true; // start render pass again
Wait(1); // let it render
tap.ok(
_TakeScreenshotAndCompareRect(oDynamicObject.X, oDynamicObject.Y - dynspr.Height, dynspr.Width, dynspr.Height, dynspr),
"DynamicSprite update 5-2 (room object view frame) is matched");

oDynamicObject.Visible = false;
oDynamicObject.Graphic = 0;
dynspr.Delete();
}

//
// Object View Frame update after dynamic sprite recreated
// with coincidentally the same sprite ID
//
{
int color1 = 10;
int color2 = 11;
DynamicSprite* dynspr = DynamicSprite.Create(10, 10);
Object* oDynamicObject = object[1];
_FillSprite(dynspr, color1);
ViewFrame *vf = Game.GetViewFrame(VDYNAMIC, 0, 0);
vf.Graphic = dynspr.Graphic;
oDynamicObject.SetView(VDYNAMIC);
oDynamicObject.X = 200;
oDynamicObject.Y = 100;
oDynamicObject.Visible = true;
Wait(1);
tap.ok(
_TakeScreenshotAndCompareRect(oDynamicObject.X, oDynamicObject.Y - dynspr.Height, dynspr.Width, dynspr.Height, dynspr),
"DynamicSprite recreate 5-1 (room object view frame) is matched");

oDynamicObject.Visible = false; // stop its render pass for a moment
dynspr.Delete(); // recreate the sprite
dynspr = DynamicSprite.Create(10, 10);
_FillSprite(dynspr, color2);
Wait(1); // one pass with object disabled
vf = Game.GetViewFrame(VDYNAMIC, 0, 0);
vf.Graphic = dynspr.Graphic;
oDynamicObject.Visible = true; // start render pass again
Wait(1); // let it render
tap.ok(
_TakeScreenshotAndCompareRect(oDynamicObject.X, oDynamicObject.Y - dynspr.Height, dynspr.Width, dynspr.Height, dynspr),
"DynamicSprite recreate 5-2 (room object view frame) is matched");

oDynamicObject.Visible = false;
oDynamicObject.Graphic = 0;
dynspr.Delete();
}

tap.Comment("end EngineRender tests");
}

0 comments on commit 8e47bb0

Please sign in to comment.