Test when Sprite.events are created just when the sprite is being closed

As app 'sitechange' event is generated when we close a sprite,
accessing Sprite.events on that event will re-create the
app::script::SpriteEvents instance associated with the sprite.
This commit is contained in:
David Capello 2022-07-16 13:11:05 -03:00
parent a03ff2280a
commit 02a2f1f933

View File

@ -109,3 +109,28 @@ do
-- listener instead of doing nothing.
expect_eq(2, i)
end
-- Accessing Sprite.events when closing the same sprite will call
-- push_sprite_events() creating a new app::script::SpriteEvents
-- instance again even when we've just destroyed the old one (because
-- we're just closing the sprite).
do
local s = Sprite(32, 32)
function onSpriteChange()
-- Do nothing
end
-- Here we access s.events for first time, creating the
-- app::script::SpriteEvents for this sprite.
s.events:on('change', onSpriteChange)
function onSiteChange()
-- Accessing s.events again on 'sitechange' when we're just
-- closing the sprite, re-generating its SpriteEvents instance.
-- We've to have special care of this case.
s.events:off(onSpriteChange)
end
app.events:on('sitechange', onSiteChange)
-- Closing the sprite will create a 'sitechange' event calling
-- onSiteChange() function.
s:close()
app.events:off(onSiteChange)
end