@@ -1609,3 +1609,86 @@ TEST_F(LooksBlocksTest, SwitchBackdropTo_Stage)
16091609 thread.run ();
16101610 ASSERT_EQ (stage->costumeIndex (), 0 );
16111611}
1612+
1613+ TEST_F (LooksBlocksTest, GoToFrontBack_MoveSpriteToFront)
1614+ {
1615+ auto stage = std::make_shared<Stage>();
1616+ auto sprite = std::make_shared<Sprite>();
1617+ auto sprite1 = std::make_shared<Sprite>();
1618+ auto sprite2 = std::make_shared<Sprite>();
1619+ auto sprite3 = std::make_shared<Sprite>();
1620+ m_engine->setTargets ({ stage, sprite, sprite1, sprite2, sprite3 });
1621+ ScriptBuilder builder (m_extension.get (), m_engine, sprite);
1622+
1623+ builder.addBlock (" looks_gotofrontback" );
1624+ builder.addDropdownField (" FRONT_BACK" , " front" );
1625+ builder.build ();
1626+
1627+ m_engine->moveDrawableToBack (sprite.get ());
1628+
1629+ builder.run ();
1630+ std::initializer_list<int > layers = { sprite->layerOrder (), sprite1->layerOrder (), sprite2->layerOrder (), sprite3->layerOrder () };
1631+ ASSERT_EQ (sprite->layerOrder (), std::max (layers));
1632+
1633+ builder.run ();
1634+ ASSERT_EQ (sprite->layerOrder (), std::max (layers));
1635+ }
1636+
1637+ TEST_F (LooksBlocksTest, GoToFrontBack_MoveSpriteToBack)
1638+ {
1639+ auto stage = std::make_shared<Stage>();
1640+ auto sprite = std::make_shared<Sprite>();
1641+ auto sprite1 = std::make_shared<Sprite>();
1642+ auto sprite2 = std::make_shared<Sprite>();
1643+ auto sprite3 = std::make_shared<Sprite>();
1644+ m_engine->setTargets ({ stage, sprite, sprite1, sprite2, sprite3 });
1645+ ScriptBuilder builder (m_extension.get (), m_engine, sprite);
1646+
1647+ builder.addBlock (" looks_gotofrontback" );
1648+ builder.addDropdownField (" FRONT_BACK" , " back" );
1649+ builder.build ();
1650+
1651+ m_engine->moveDrawableToFront (sprite.get ());
1652+
1653+ builder.run ();
1654+ ASSERT_EQ (sprite->layerOrder (), 1 );
1655+
1656+ builder.run ();
1657+ ASSERT_EQ (sprite->layerOrder (), 1 );
1658+ }
1659+
1660+ TEST_F (LooksBlocksTest, GoToFrontBack_MoveStageToFront)
1661+ {
1662+ auto stage = std::make_shared<Stage>();
1663+ auto sprite = std::make_shared<Sprite>();
1664+ auto sprite1 = std::make_shared<Sprite>();
1665+ auto sprite2 = std::make_shared<Sprite>();
1666+ auto sprite3 = std::make_shared<Sprite>();
1667+ m_engine->setTargets ({ stage, sprite, sprite1, sprite2, sprite3 });
1668+ ScriptBuilder builder (m_extension.get (), m_engine, stage);
1669+
1670+ builder.addBlock (" looks_gotofrontback" );
1671+ builder.addDropdownField (" FRONT_BACK" , " front" );
1672+ builder.build ();
1673+
1674+ builder.run ();
1675+ ASSERT_EQ (stage->layerOrder (), 0 );
1676+ }
1677+
1678+ TEST_F (LooksBlocksTest, GoToFrontBack_MoveStageToBack)
1679+ {
1680+ auto stage = std::make_shared<Stage>();
1681+ auto sprite = std::make_shared<Sprite>();
1682+ auto sprite1 = std::make_shared<Sprite>();
1683+ auto sprite2 = std::make_shared<Sprite>();
1684+ auto sprite3 = std::make_shared<Sprite>();
1685+ m_engine->setTargets ({ stage, sprite, sprite1, sprite2, sprite3 });
1686+ ScriptBuilder builder (m_extension.get (), m_engine, stage);
1687+
1688+ builder.addBlock (" looks_gotofrontback" );
1689+ builder.addDropdownField (" FRONT_BACK" , " back" );
1690+ builder.build ();
1691+
1692+ builder.run ();
1693+ ASSERT_EQ (sprite->layerOrder (), 0 );
1694+ }
0 commit comments