@@ -1692,3 +1692,153 @@ TEST_F(LooksBlocksTest, GoToFrontBack_MoveStageToBack)
16921692 builder.run ();
16931693 ASSERT_EQ (sprite->layerOrder (), 0 );
16941694}
1695+
1696+ TEST_F (LooksBlocksTest, GoForwardBackwardLayers_MoveSpriteForwardPositive)
1697+ {
1698+ auto stage = std::make_shared<Stage>();
1699+ auto sprite = std::make_shared<Sprite>();
1700+ auto sprite1 = std::make_shared<Sprite>();
1701+ auto sprite2 = std::make_shared<Sprite>();
1702+ auto sprite3 = std::make_shared<Sprite>();
1703+ m_engine->setTargets ({ stage, sprite, sprite1, sprite2, sprite3 });
1704+ ScriptBuilder builder (m_extension.get (), m_engine, sprite);
1705+
1706+ builder.addBlock (" looks_goforwardbackwardlayers" );
1707+ builder.addDropdownField (" FORWARD_BACKWARD" , " forward" );
1708+ builder.addValueInput (" NUM" , 2 );
1709+ builder.build ();
1710+
1711+ // sprite, sprite1, sprite3, sprite2
1712+ m_engine->moveDrawableToFront (sprite1.get ());
1713+ m_engine->moveDrawableToFront (sprite3.get ());
1714+ m_engine->moveDrawableToFront (sprite2.get ());
1715+ m_engine->moveDrawableToBack (sprite.get ());
1716+
1717+ // sprite1, sprite3, sprite, sprite2
1718+ builder.run ();
1719+ ASSERT_GT (sprite->layerOrder (), sprite1->layerOrder ());
1720+ ASSERT_GT (sprite->layerOrder (), sprite3->layerOrder ());
1721+ ASSERT_LT (sprite->layerOrder (), sprite2->layerOrder ());
1722+ }
1723+
1724+ TEST_F (LooksBlocksTest, GoForwardBackwardLayers_MoveSpriteForwardNegative)
1725+ {
1726+ auto stage = std::make_shared<Stage>();
1727+ auto sprite = std::make_shared<Sprite>();
1728+ auto sprite1 = std::make_shared<Sprite>();
1729+ auto sprite2 = std::make_shared<Sprite>();
1730+ auto sprite3 = std::make_shared<Sprite>();
1731+ m_engine->setTargets ({ stage, sprite, sprite1, sprite2, sprite3 });
1732+ ScriptBuilder builder (m_extension.get (), m_engine, sprite);
1733+
1734+ builder.addBlock (" looks_goforwardbackwardlayers" );
1735+ builder.addDropdownField (" FORWARD_BACKWARD" , " forward" );
1736+ builder.addValueInput (" NUM" , -1 );
1737+ builder.build ();
1738+
1739+ // sprite1, sprite3, sprite2, sprite
1740+ m_engine->moveDrawableToFront (sprite1.get ());
1741+ m_engine->moveDrawableToFront (sprite3.get ());
1742+ m_engine->moveDrawableToFront (sprite2.get ());
1743+ m_engine->moveDrawableToFront (sprite.get ());
1744+
1745+ // sprite1, sprite3, sprite, sprite2
1746+ builder.run ();
1747+ ASSERT_GT (sprite->layerOrder (), sprite1->layerOrder ());
1748+ ASSERT_GT (sprite->layerOrder (), sprite3->layerOrder ());
1749+ ASSERT_LT (sprite->layerOrder (), sprite2->layerOrder ());
1750+ }
1751+
1752+ TEST_F (LooksBlocksTest, GoForwardBackwardLayers_MoveSpriteBackwardPositive)
1753+ {
1754+ auto stage = std::make_shared<Stage>();
1755+ auto sprite = std::make_shared<Sprite>();
1756+ auto sprite1 = std::make_shared<Sprite>();
1757+ auto sprite2 = std::make_shared<Sprite>();
1758+ auto sprite3 = std::make_shared<Sprite>();
1759+ m_engine->setTargets ({ stage, sprite, sprite1, sprite2, sprite3 });
1760+ ScriptBuilder builder (m_extension.get (), m_engine, sprite);
1761+
1762+ builder.addBlock (" looks_goforwardbackwardlayers" );
1763+ builder.addDropdownField (" FORWARD_BACKWARD" , " backward" );
1764+ builder.addValueInput (" NUM" , 1 );
1765+ builder.build ();
1766+
1767+ // sprite1, sprite3, sprite2, sprite
1768+ m_engine->moveDrawableToFront (sprite1.get ());
1769+ m_engine->moveDrawableToFront (sprite3.get ());
1770+ m_engine->moveDrawableToFront (sprite2.get ());
1771+ m_engine->moveDrawableToFront (sprite.get ());
1772+
1773+ // sprite1, sprite3, sprite, sprite2
1774+ builder.run ();
1775+ ASSERT_GT (sprite->layerOrder (), sprite1->layerOrder ());
1776+ ASSERT_GT (sprite->layerOrder (), sprite3->layerOrder ());
1777+ ASSERT_LT (sprite->layerOrder (), sprite2->layerOrder ());
1778+ }
1779+
1780+ TEST_F (LooksBlocksTest, GoForwardBackwardLayers_MoveSpriteBackwardNegative)
1781+ {
1782+ auto stage = std::make_shared<Stage>();
1783+ auto sprite = std::make_shared<Sprite>();
1784+ auto sprite1 = std::make_shared<Sprite>();
1785+ auto sprite2 = std::make_shared<Sprite>();
1786+ auto sprite3 = std::make_shared<Sprite>();
1787+ m_engine->setTargets ({ stage, sprite, sprite1, sprite2, sprite3 });
1788+ ScriptBuilder builder (m_extension.get (), m_engine, sprite);
1789+
1790+ builder.addBlock (" looks_goforwardbackwardlayers" );
1791+ builder.addDropdownField (" FORWARD_BACKWARD" , " backward" );
1792+ builder.addValueInput (" NUM" , -2 );
1793+ builder.build ();
1794+
1795+ // sprite, sprite1, sprite3, sprite2
1796+ m_engine->moveDrawableToFront (sprite1.get ());
1797+ m_engine->moveDrawableToFront (sprite3.get ());
1798+ m_engine->moveDrawableToFront (sprite2.get ());
1799+ m_engine->moveDrawableToBack (sprite.get ());
1800+
1801+ // sprite1, sprite3, sprite, sprite2
1802+ builder.run ();
1803+ ASSERT_GT (sprite->layerOrder (), sprite1->layerOrder ());
1804+ ASSERT_GT (sprite->layerOrder (), sprite3->layerOrder ());
1805+ ASSERT_LT (sprite->layerOrder (), sprite2->layerOrder ());
1806+ }
1807+
1808+ TEST_F (LooksBlocksTest, GoForwardBackwardLayers_MoveStageForward)
1809+ {
1810+ auto stage = std::make_shared<Stage>();
1811+ auto sprite = std::make_shared<Sprite>();
1812+ auto sprite1 = std::make_shared<Sprite>();
1813+ auto sprite2 = std::make_shared<Sprite>();
1814+ auto sprite3 = std::make_shared<Sprite>();
1815+ m_engine->setTargets ({ stage, sprite, sprite1, sprite2, sprite3 });
1816+ ScriptBuilder builder (m_extension.get (), m_engine, stage);
1817+
1818+ builder.addBlock (" looks_goforwardbackwardlayers" );
1819+ builder.addDropdownField (" FORWARD_BACKWARD" , " forward" );
1820+ builder.addValueInput (" NUM" , 3 );
1821+ builder.build ();
1822+
1823+ builder.run ();
1824+ ASSERT_EQ (stage->layerOrder (), 0 );
1825+ }
1826+
1827+ TEST_F (LooksBlocksTest, GoForwardBackwardLayers_MoveStageBackward)
1828+ {
1829+ auto stage = std::make_shared<Stage>();
1830+ auto sprite = std::make_shared<Sprite>();
1831+ auto sprite1 = std::make_shared<Sprite>();
1832+ auto sprite2 = std::make_shared<Sprite>();
1833+ auto sprite3 = std::make_shared<Sprite>();
1834+ m_engine->setTargets ({ stage, sprite, sprite1, sprite2, sprite3 });
1835+ ScriptBuilder builder (m_extension.get (), m_engine, stage);
1836+
1837+ builder.addBlock (" looks_goforwardbackwardlayers" );
1838+ builder.addDropdownField (" FORWARD_BACKWARD" , " backward" );
1839+ builder.addValueInput (" NUM" , 3 );
1840+ builder.build ();
1841+
1842+ builder.run ();
1843+ ASSERT_EQ (stage->layerOrder (), 0 );
1844+ }
0 commit comments